UNPKG

@hyrfilm/workhorse

Version:

Transactional task queue for the browser with support for OPFS, localStorage, sessionStorage, in-memory

2 lines 280 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var We=typeof document<"u"?document.currentScript:null,je=(a=>(a[a.queued=1]="queued",a[a.executing=2]="executing",a[a.successful=3]="successful",a[a.failed=4]="failed",a))(je||{}),Ut=(a=>(a.IGNORE="ignore",a.FORBID="forbid",a))(Ut||{}),kt=(a=>(a.SERIAL="serial",a.PARALLEL="parallel",a.DETACHED="detached",a))(kt||{});function pi(a){if(typeof a!="object"||a==null)throw new Error("Invalid TaskQueue row - is null");const o=a;if(typeof o.id!="number")throw new Error('Invalid row TaskQueue row - missing "id"');if(typeof o.task_id!="string")throw new Error('Invalid row TaskQueue row - missing "task_id"');if(typeof o.task_payload!="string")throw new Error('Invalid row TaskQueue row - missing "payload"')}function xt(a){if(a==null)throw new Error("Invalid TaskRow (missing)");if("id"in a&&typeof a.id!="number")throw new Error(`Invalid row - id: ${a.id}`);if("taskId"in a&&typeof a.taskId!="string")throw new Error(`Invalid row - taskId: ${a.taskId}`);if("payload"in a&&typeof a.payload!="object")throw new Error(`Invalid row - payload: ${a.payload}`)}const ms=a=>a,gs=a=>ms(1e3)*a,hi=a=>gs(60)*a;function ys(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var on={exports:{}},Yn;function mi(){return Yn||(Yn=1,function(a){var o=Object.prototype.hasOwnProperty,l="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(l=!1));function u(O,R,Q){this.fn=O,this.context=R,this.once=Q||!1}function h(O,R,Q,I,j){if(typeof Q!="function")throw new TypeError("The listener must be a function");var J=new u(Q,I||O,j),ie=l?l+R:R;return O._events[ie]?O._events[ie].fn?O._events[ie]=[O._events[ie],J]:O._events[ie].push(J):(O._events[ie]=J,O._eventsCount++),O}function y(O,R){--O._eventsCount===0?O._events=new n:delete O._events[R]}function S(){this._events=new n,this._eventsCount=0}S.prototype.eventNames=function(){var R=[],Q,I;if(this._eventsCount===0)return R;for(I in Q=this._events)o.call(Q,I)&&R.push(l?I.slice(1):I);return Object.getOwnPropertySymbols?R.concat(Object.getOwnPropertySymbols(Q)):R},S.prototype.listeners=function(R){var Q=l?l+R:R,I=this._events[Q];if(!I)return[];if(I.fn)return[I.fn];for(var j=0,J=I.length,ie=new Array(J);j<J;j++)ie[j]=I[j].fn;return ie},S.prototype.listenerCount=function(R){var Q=l?l+R:R,I=this._events[Q];return I?I.fn?1:I.length:0},S.prototype.emit=function(R,Q,I,j,J,ie){var ue=l?l+R:R;if(!this._events[ue])return!1;var ae=this._events[ue],he=arguments.length,Pe,ve;if(ae.fn){switch(ae.once&&this.removeListener(R,ae.fn,void 0,!0),he){case 1:return ae.fn.call(ae.context),!0;case 2:return ae.fn.call(ae.context,Q),!0;case 3:return ae.fn.call(ae.context,Q,I),!0;case 4:return ae.fn.call(ae.context,Q,I,j),!0;case 5:return ae.fn.call(ae.context,Q,I,j,J),!0;case 6:return ae.fn.call(ae.context,Q,I,j,J,ie),!0}for(ve=1,Pe=new Array(he-1);ve<he;ve++)Pe[ve-1]=arguments[ve];ae.fn.apply(ae.context,Pe)}else{var De=ae.length,Ae;for(ve=0;ve<De;ve++)switch(ae[ve].once&&this.removeListener(R,ae[ve].fn,void 0,!0),he){case 1:ae[ve].fn.call(ae[ve].context);break;case 2:ae[ve].fn.call(ae[ve].context,Q);break;case 3:ae[ve].fn.call(ae[ve].context,Q,I);break;case 4:ae[ve].fn.call(ae[ve].context,Q,I,j);break;default:if(!Pe)for(Ae=1,Pe=new Array(he-1);Ae<he;Ae++)Pe[Ae-1]=arguments[Ae];ae[ve].fn.apply(ae[ve].context,Pe)}}return!0},S.prototype.on=function(R,Q,I){return h(this,R,Q,I,!1)},S.prototype.once=function(R,Q,I){return h(this,R,Q,I,!0)},S.prototype.removeListener=function(R,Q,I,j){var J=l?l+R:R;if(!this._events[J])return this;if(!Q)return y(this,J),this;var ie=this._events[J];if(ie.fn)ie.fn===Q&&(!j||ie.once)&&(!I||ie.context===I)&&y(this,J);else{for(var ue=0,ae=[],he=ie.length;ue<he;ue++)(ie[ue].fn!==Q||j&&!ie[ue].once||I&&ie[ue].context!==I)&&ae.push(ie[ue]);ae.length?this._events[J]=ae.length===1?ae[0]:ae:y(this,J)}return this},S.prototype.removeAllListeners=function(R){var Q;return R?(Q=l?l+R:R,this._events[Q]&&y(this,Q)):(this._events=new n,this._eventsCount=0),this},S.prototype.off=S.prototype.removeListener,S.prototype.addListener=S.prototype.on,S.prefixed=l,S.EventEmitter=S,a.exports=S}(on)),on.exports}var gi=mi();const bs=ys(gi);function yi(){const a=new bs;return{on(o,l){a.on(o,l)},once(o,l){a.once(o,l)},off(o,l){a.off(o,l)},emit(o,l){a.emit(o,l)}}}const He=yi(),Ze={Task:{Added:"task.added",Success:"task.success",Failure:"task.failure"},TaskId:{Success:"taskid.success.",Failure:"taskid.failure."}},Bt={Poller:{Pause:"Poller.Pause",Resume:"Poller.Resume"}},bi={TaskMonitor:{Updated:"TaskMonitor.Updated"}},ws=vi(),qs=a=>`${Ze.TaskId.Success}${a}`,wi=(a,o)=>{ws.emitAnything(qs(a),o)},qi=a=>new Promise(o=>{ws.once(qs(a),l=>{o(l)})});function vi(){const a=new bs;return{once:(o,l)=>{a.once(o,l)},emitAnything:(o,...l)=>{a.emit(o,...l)}}}var Mt={exports:{}},Ei=Mt.exports,Xn;function Si(){return Xn||(Xn=1,function(a){(function(o,l){a.exports?a.exports=l():o.log=l()})(Ei,function(){var o=function(){},l="undefined",n=typeof window!==l&&typeof window.navigator!==l&&/Trident\/|MSIE /.test(window.navigator.userAgent),u=["trace","debug","info","warn","error"],h={},y=null;function S(ue,ae){var he=ue[ae];if(typeof he.bind=="function")return he.bind(ue);try{return Function.prototype.bind.call(he,ue)}catch{return function(){return Function.prototype.apply.apply(he,[ue,arguments])}}}function O(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function R(ue){return ue==="debug"&&(ue="log"),typeof console===l?!1:ue==="trace"&&n?O:console[ue]!==void 0?S(console,ue):console.log!==void 0?S(console,"log"):o}function Q(){for(var ue=this.getLevel(),ae=0;ae<u.length;ae++){var he=u[ae];this[he]=ae<ue?o:this.methodFactory(he,ue,this.name)}if(this.log=this.debug,typeof console===l&&ue<this.levels.SILENT)return"No console available for logging"}function I(ue){return function(){typeof console!==l&&(Q.call(this),this[ue].apply(this,arguments))}}function j(ue,ae,he){return R(ue)||I.apply(this,arguments)}function J(ue,ae){var he=this,Pe,ve,De,Ae="loglevel";typeof ue=="string"?Ae+=":"+ue:typeof ue=="symbol"&&(Ae=void 0);function $e(Le){var Ne=(u[Le]||"silent").toUpperCase();if(!(typeof window===l||!Ae)){try{window.localStorage[Ae]=Ne;return}catch{}try{window.document.cookie=encodeURIComponent(Ae)+"="+Ne+";"}catch{}}}function Ue(){var Le;if(!(typeof window===l||!Ae)){try{Le=window.localStorage[Ae]}catch{}if(typeof Le===l)try{var Ne=window.document.cookie,nt=encodeURIComponent(Ae),wt=Ne.indexOf(nt+"=");wt!==-1&&(Le=/^([^;]+)/.exec(Ne.slice(wt+nt.length+1))[1])}catch{}return he.levels[Le]===void 0&&(Le=void 0),Le}}function ke(){if(!(typeof window===l||!Ae)){try{window.localStorage.removeItem(Ae)}catch{}try{window.document.cookie=encodeURIComponent(Ae)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function Te(Le){var Ne=Le;if(typeof Ne=="string"&&he.levels[Ne.toUpperCase()]!==void 0&&(Ne=he.levels[Ne.toUpperCase()]),typeof Ne=="number"&&Ne>=0&&Ne<=he.levels.SILENT)return Ne;throw new TypeError("log.setLevel() called with invalid level: "+Le)}he.name=ue,he.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},he.methodFactory=ae||j,he.getLevel=function(){return De??ve??Pe},he.setLevel=function(Le,Ne){return De=Te(Le),Ne!==!1&&$e(De),Q.call(he)},he.setDefaultLevel=function(Le){ve=Te(Le),Ue()||he.setLevel(Le,!1)},he.resetLevel=function(){De=null,ke(),Q.call(he)},he.enableAll=function(Le){he.setLevel(he.levels.TRACE,Le)},he.disableAll=function(Le){he.setLevel(he.levels.SILENT,Le)},he.rebuild=function(){if(y!==he&&(Pe=Te(y.getLevel())),Q.call(he),y===he)for(var Le in h)h[Le].rebuild()},Pe=Te(y?y.getLevel():"WARN");var Be=Ue();Be!=null&&(De=Te(Be)),Q.call(he)}y=new J,y.getLogger=function(ae){if(typeof ae!="symbol"&&typeof ae!="string"||ae==="")throw new TypeError("You must supply a name when creating a logger.");var he=h[ae];return he||(he=h[ae]=new J(ae,y.methodFactory)),he};var ie=typeof window!==l?window.log:void 0;return y.noConflict=function(){return typeof window!==l&&window.log===y&&(window.log=ie),y},y.getLoggers=function(){return h},y.default=y,y})}(Mt)),Mt.exports}var xi=Si();const Ke=ys(xi),En="[workhorse]: ",ki=a=>{Ke.setLevel(a)},At=(...a)=>{Ke.debug(En,...a)},Ai=(...a)=>{Ke.info(En,...a)},vs=(...a)=>{Ke.error(En,"ERROR - ",...a)};class Es{name="TaskMonitor";allTaskIds=new Set;remainingTaskIds=new Set;notify=()=>{const o=this.allTaskIds.size,l=this.remainingTaskIds.size;let n=0;o>0&&(n=(o-l)/o),He.emit(bi.TaskMonitor.Updated,{total:o,remaining:l,progress:n})};add=o=>{this.allTaskIds.add(o.taskId),this.remainingTaskIds.add(o.taskId),this.notify()};remove=o=>{this.remainingTaskIds.delete(o.taskId),this.notify()};onStart(){At(this.name," starting"),He.on(Ze.Task.Added,this.add),He.on(Ze.Task.Success,this.remove)}onStop(){He.off(Ze.Task.Added,this.add),He.off(Ze.Task.Success,this.remove)}}const Ii={concurrency:1,taskExecution:kt.SERIAL,logLevel:"info",poll:{auto:!1,interval:ms(100),pre:{wait:"ready"}},backoff:{initial:gs(.5),multiplier:2.5,maxTime:hi(15)},duplicates:Ut.IGNORE,defaultPlugins:[new Es],plugins:[]},Ss=()=>Ii,Zn="function",ht="64e10b34-2bf7-4616-9668-f99de5aa046e",Ti="get",Pi="has",Oi="set",{isArray:Nt}=Array;let{SharedArrayBuffer:zt,window:Fi}=globalThis,{notify:xs,wait:ks,waitAsync:Wt}=Atomics,As=null;Wt||(Wt=a=>({value:new Promise(o=>{let l=new Worker("data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))");l.onmessage=o,l.postMessage(a)})}));try{new zt(4)}catch{zt=ArrayBuffer;const o=new WeakMap;if(Fi){const l=new Map,{prototype:{postMessage:n}}=Worker,u=h=>{const y=h.data?.[ht];if(!Nt(y)){h.stopImmediatePropagation();const{id:S,sb:O}=y;l.get(S)(O)}};As=function(h,...y){const S=h?.[ht];if(Nt(S)){const[O,R]=S;o.set(R,O),this.addEventListener("message",u)}return n.call(this,h,...y)},Wt=h=>({value:new Promise(y=>{l.set(o.get(h),y)}).then(y=>{l.delete(o.get(h)),o.delete(h);for(let S=0;S<y.length;S++)h[S]=y[S];return"ok"})})}else{const l=(n,u)=>({[ht]:{id:n,sb:u}});xs=n=>{postMessage(l(o.get(n),n))},addEventListener("message",n=>{const u=n.data?.[ht];if(Nt(u)){const[h,y]=u;o.set(y,h)}})}}const{Int32Array:pn,Map:es,Uint16Array:hn}=globalThis,{BYTES_PER_ELEMENT:ts}=pn,{BYTES_PER_ELEMENT:Li}=hn,Ci=(a,o,l)=>{for(;ks(a,0,0,o)==="timed-out";)l()},mn=new WeakSet,an=new WeakMap,Ri={value:{then:a=>a()}};let Di=0;const Sn=(a,{parse:o=JSON.parse,stringify:l=JSON.stringify,transform:n,interrupt:u}=JSON)=>{if(!an.has(a)){const h=As||a.postMessage,y=(j,...J)=>h.call(a,{[ht]:J},{transfer:j}),S=typeof u===Zn?u:u?.handler,O=u?.delay||42,R=new TextDecoder("utf-16"),Q=(j,J)=>j?Wt(J,0):(S?Ci(J,O,S):ks(J,0),Ri);let I=!1;an.set(a,new Proxy(new es,{[Pi]:(j,J)=>typeof J=="string"&&!J.startsWith("_"),[Ti]:(j,J)=>J==="then"?null:(...ie)=>{const ue=Di++;let ae=new pn(new zt(ts*2)),he=[];mn.has(ie.at(-1)||he)&&mn.delete(he=ie.pop()),y(he,ue,ae,J,n?ie.map(n):ie);const Pe=a!==globalThis;let ve=0;return I&&Pe&&(ve=setTimeout(console.warn,1e3,`💀🔒 - Possible deadlock if proxy.${J}(...args) is awaited`)),Q(Pe,ae).value.then(()=>{clearTimeout(ve);const De=ae[1];if(!De)return;const Ae=Li*De;return ae=new pn(new zt(Ae+Ae%ts)),y([],ue,ae),Q(Pe,ae).value.then(()=>o(R.decode(new hn(ae.buffer).slice(0,De))))})},[Oi](j,J,ie){const ue=typeof ie;if(ue!==Zn)throw new Error(`Unable to assign ${J} as ${ue}`);if(!j.size){const ae=new es;a.addEventListener("message",async he=>{const Pe=he.data?.[ht];if(Nt(Pe)){he.stopImmediatePropagation();const[ve,De,...Ae]=Pe;let $e;if(Ae.length){const[Ue,ke]=Ae;if(j.has(Ue)){I=!0;try{const Te=await j.get(Ue)(...ke);if(Te!==void 0){const Be=l(n?n(Te):Te);ae.set(ve,Be),De[1]=Be.length}}catch(Te){$e=Te}finally{I=!1}}else $e=new Error(`Unsupported action: ${Ue}`);De[0]=1}else{const Ue=ae.get(ve);ae.delete(ve);for(let ke=new hn(De.buffer),Te=0;Te<Ue.length;Te++)ke[Te]=Ue.charCodeAt(Te)}if(xs(De,0),$e)throw $e}})}return!!j.set(J,ie)}}))}return an.get(a)};Sn.transfer=(...a)=>(mn.add(a),a);var xn=(()=>{var a=typeof document>"u"?require("url").pathToFileURL(__filename).href:We&&We.tagName.toUpperCase()==="SCRIPT"&&We.src||new URL("workhorse.cjs",document.baseURI).href;return function(o={}){var l,n=o,u,h,y=new Promise((e,t)=>{u=e,h=t}),S=typeof window=="object",O=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;const R=globalThis.sqlite3InitModuleState||Object.assign(Object.create(null),{debugModule:()=>{}});delete globalThis.sqlite3InitModuleState,R.debugModule("globalThis.location =",globalThis.location);var Q=Object.assign({},n),I="./this.program",j="";function J(e){return n.locateFile?n.locateFile(e,j):j+e}var ie,ue;(S||O)&&(O?j=self.location.href:typeof document<"u"&&document.currentScript&&(j=document.currentScript.src),a&&(j=a),j.startsWith("blob:")?j="":j=j.substr(0,j.replace(/[?#].*/,"").lastIndexOf("/")+1),O&&(ue=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ie=e=>fetch(e,{credentials:"same-origin"}).then(t=>t.ok?t.arrayBuffer():Promise.reject(new Error(t.status+" : "+t.url))));var ae=n.print||console.log.bind(console),he=n.printErr||console.error.bind(console);Object.assign(n,Q),Q=null,n.arguments&&n.arguments,n.thisProgram&&(I=n.thisProgram);var Pe=n.wasmBinary,ve,De=!1,Ae,$e,Ue,ke,Te,Be;function Le(){var e=ve.buffer;n.HEAP8=Ae=new Int8Array(e),n.HEAP16=Ue=new Int16Array(e),n.HEAPU8=$e=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAP32=ke=new Int32Array(e),n.HEAPU32=Te=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e),n.HEAP64=Be=new BigInt64Array(e),n.HEAPU64=new BigUint64Array(e)}if(n.wasmMemory)ve=n.wasmMemory;else{var Ne=n.INITIAL_MEMORY||16777216;ve=new WebAssembly.Memory({initial:Ne/65536,maximum:32768})}Le();var nt=[],wt=[],Tt=[];function Ys(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)er(n.preRun.shift());Zt(nt)}function Xs(){!n.noFSInit&&!_.initialized&&_.init(),_.ignorePermissions=!1,Zt(wt)}function Zs(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)nr(n.postRun.shift());Zt(Tt)}function er(e){nt.unshift(e)}function tr(e){wt.unshift(e)}function nr(e){Tt.unshift(e)}var st=0,qt=null;function Ma(e){return e}function Yt(e){st++,n.monitorRunDependencies?.(st)}function Pt(e){if(st--,n.monitorRunDependencies?.(st),st==0&&qt){var t=qt;qt=null,t()}}function Xt(e){n.onAbort?.(e),e="Aborted("+e+")",he(e),De=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw h(t),t}var sr="data:application/octet-stream;base64,",Mn=e=>e.startsWith(sr);function rr(){if(n.locateFile){var e="sqlite3.wasm";return Mn(e)?e:J(e)}return new URL(""+(typeof document>"u"?require("url").pathToFileURL(__dirname+"/assets/sqlite3-CgX3seBP.wasm").href:new URL("assets/sqlite3-CgX3seBP.wasm",document.currentScript&&document.currentScript.tagName.toUpperCase()==="SCRIPT"&&document.currentScript.src||document.baseURI).href),typeof document>"u"?require("url").pathToFileURL(__filename).href:We&&We.tagName.toUpperCase()==="SCRIPT"&&We.src||new URL("workhorse.cjs",document.baseURI).href).href}var Ot;function Nn(e){if(e==Ot&&Pe)return new Uint8Array(Pe);if(ue)return ue(e);throw"both async and sync fetching of the wasm failed"}function ir(e){return Pe?Promise.resolve().then(()=>Nn(e)):ie(e).then(t=>new Uint8Array(t),()=>Nn(e))}function jn(e,t,s){return ir(e).then(r=>WebAssembly.instantiate(r,t)).then(s,r=>{he(`failed to asynchronously prepare wasm: ${r}`),Xt(r)})}function or(e,t,s,r){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Mn(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(i=>{var c=WebAssembly.instantiateStreaming(i,s);return c.then(r,function(q){return he(`wasm streaming compile failed: ${q}`),he("falling back to ArrayBuffer instantiation"),jn(t,s,r)})}):jn(t,s,r)}function ar(){return{env:Vn,wasi_snapshot_preview1:Vn}}function lr(){var e=ar();function t(r,i){return E=r.exports,tr(E.__wasm_call_ctors),Pt(),E}Yt();function s(r){t(r.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(r){he(`Module.instantiateWasm callback failed with error: ${r}`),h(r)}return Ot||(Ot=rr()),or(Pe,Ot,e,s).catch(h),{}}var Zt=e=>{for(;e.length>0;)e.shift()(n)};n.noExitRuntime;var Oe={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var s=0,r=e.length-1;r>=0;r--){var i=e[r];i==="."?e.splice(r,1):i===".."?(e.splice(r,1),s++):s&&(e.splice(r,1),s--)}if(t)for(;s;s--)e.unshift("..");return e},normalize:e=>{var t=Oe.isAbs(e),s=e.substr(-1)==="/";return e=Oe.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),!e&&!t&&(e="."),e&&s&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Oe.splitPath(e),s=t[0],r=t[1];return!s&&!r?".":(r&&(r=r.substr(0,r.length-1)),s+r)},basename:e=>{if(e==="/")return"/";e=Oe.normalize(e),e=e.replace(/\/$/,"");var t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},join:(...e)=>Oe.normalize(e.join("/")),join2:(e,t)=>Oe.normalize(e+"/"+t)},cr=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return e=>crypto.getRandomValues(e);Xt("initRandomDevice")},Un=e=>(Un=cr())(e),Je={resolve:(...e)=>{for(var t="",s=!1,r=e.length-1;r>=-1&&!s;r--){var i=r>=0?e[r]:_.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,s=Oe.isAbs(i)}return t=Oe.normalizeArray(t.split("/").filter(c=>!!c),!s).join("/"),(s?"/":"")+t||"."},relative:(e,t)=>{e=Je.resolve(e).substr(1),t=Je.resolve(t).substr(1);function s(V){for(var ee=0;ee<V.length&&V[ee]==="";ee++);for(var se=V.length-1;se>=0&&V[se]==="";se--);return ee>se?[]:V.slice(ee,se-ee+1)}for(var r=s(e.split("/")),i=s(t.split("/")),c=Math.min(r.length,i.length),q=c,x=0;x<c;x++)if(r[x]!==i[x]){q=x;break}for(var z=[],x=q;x<r.length;x++)z.push("..");return z=z.concat(i.slice(q)),z.join("/")}},Bn=typeof TextDecoder<"u"?new TextDecoder:void 0,ct=(e,t,s)=>{for(var r=t+s,i=t;e[i]&&!(i>=r);)++i;if(i-t>16&&e.buffer&&Bn)return Bn.decode(e.subarray(t,i));for(var c="";t<i;){var q=e[t++];if(!(q&128)){c+=String.fromCharCode(q);continue}var x=e[t++]&63;if((q&224)==192){c+=String.fromCharCode((q&31)<<6|x);continue}var z=e[t++]&63;if((q&240)==224?q=(q&15)<<12|x<<6|z:q=(q&7)<<18|x<<12|z<<6|e[t++]&63,q<65536)c+=String.fromCharCode(q);else{var V=q-65536;c+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return c},en=[],Ft=e=>{for(var t=0,s=0;s<e.length;++s){var r=e.charCodeAt(s);r<=127?t++:r<=2047?t+=2:r>=55296&&r<=57343?(t+=4,++s):t+=3}return t},tn=(e,t,s,r)=>{if(!(r>0))return 0;for(var i=s,c=s+r-1,q=0;q<e.length;++q){var x=e.charCodeAt(q);if(x>=55296&&x<=57343){var z=e.charCodeAt(++q);x=65536+((x&1023)<<10)|z&1023}if(x<=127){if(s>=c)break;t[s++]=x}else if(x<=2047){if(s+1>=c)break;t[s++]=192|x>>6,t[s++]=128|x&63}else if(x<=65535){if(s+2>=c)break;t[s++]=224|x>>12,t[s++]=128|x>>6&63,t[s++]=128|x&63}else{if(s+3>=c)break;t[s++]=240|x>>18,t[s++]=128|x>>12&63,t[s++]=128|x>>6&63,t[s++]=128|x&63}}return t[s]=0,s-i};function zn(e,t,s){var r=Ft(e)+1,i=new Array(r),c=tn(e,i,0,i.length);return i.length=c,i}var ur=()=>{if(!en.length){var e=null;if(typeof window<"u"&&typeof window.prompt=="function"&&(e=window.prompt("Input: "),e!==null&&(e+=` `)),!e)return null;en=zn(e)}return en.shift()},rt={ttys:[],init(){},shutdown(){},register(e,t){rt.ttys[e]={input:[],output:[],ops:t},_.registerDevice(e,rt.stream_ops)},stream_ops:{open(e){var t=rt.ttys[e.node.rdev];if(!t)throw new _.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,s,r,i){if(!e.tty||!e.tty.ops.get_char)throw new _.ErrnoError(60);for(var c=0,q=0;q<r;q++){var x;try{x=e.tty.ops.get_char(e.tty)}catch{throw new _.ErrnoError(29)}if(x===void 0&&c===0)throw new _.ErrnoError(6);if(x==null)break;c++,t[s+q]=x}return c&&(e.node.timestamp=Date.now()),c},write(e,t,s,r,i){if(!e.tty||!e.tty.ops.put_char)throw new _.ErrnoError(60);try{for(var c=0;c<r;c++)e.tty.ops.put_char(e.tty,t[s+c])}catch{throw new _.ErrnoError(29)}return r&&(e.node.timestamp=Date.now()),c}},default_tty_ops:{get_char(e){return ur()},put_char(e,t){t===null||t===10?(ae(ct(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(ae(ct(e.output,0)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,s){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(he(ct(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(he(ct(e.output,0)),e.output=[])}}},fr=(e,t)=>($e.fill(0,e,e+t),e),Wn=(e,t)=>Math.ceil(e/t)*t,Qn=e=>{e=Wn(e,65536);var t=Gn(65536,e);return t?fr(t,e):0},Ee={ops_table:null,mount(e){return Ee.createNode(null,"/",16895,0)},createNode(e,t,s,r){if(_.isBlkdev(s)||_.isFIFO(s))throw new _.ErrnoError(63);Ee.ops_table||={dir:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr,lookup:Ee.node_ops.lookup,mknod:Ee.node_ops.mknod,rename:Ee.node_ops.rename,unlink:Ee.node_ops.unlink,rmdir:Ee.node_ops.rmdir,readdir:Ee.node_ops.readdir,symlink:Ee.node_ops.symlink},stream:{llseek:Ee.stream_ops.llseek}},file:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr},stream:{llseek:Ee.stream_ops.llseek,read:Ee.stream_ops.read,write:Ee.stream_ops.write,allocate:Ee.stream_ops.allocate,mmap:Ee.stream_ops.mmap,msync:Ee.stream_ops.msync}},link:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr,readlink:Ee.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr},stream:_.chrdev_stream_ops}};var i=_.createNode(e,t,s,r);return _.isDir(i.mode)?(i.node_ops=Ee.ops_table.dir.node,i.stream_ops=Ee.ops_table.dir.stream,i.contents={}):_.isFile(i.mode)?(i.node_ops=Ee.ops_table.file.node,i.stream_ops=Ee.ops_table.file.stream,i.usedBytes=0,i.contents=null):_.isLink(i.mode)?(i.node_ops=Ee.ops_table.link.node,i.stream_ops=Ee.ops_table.link.stream):_.isChrdev(i.mode)&&(i.node_ops=Ee.ops_table.chrdev.node,i.stream_ops=Ee.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[t]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){var s=e.contents?e.contents.length:0;if(!(s>=t)){var r=1024*1024;t=Math.max(t,s*(s<r?2:1.125)>>>0),s!=0&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var s=e.contents;e.contents=new Uint8Array(t),s&&e.contents.set(s.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=_.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,_.isDir(e.mode)?t.size=4096:_.isFile(e.mode)?t.size=e.usedBytes:_.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&Ee.resizeFileStorage(e,t.size)},lookup(e,t){throw _.genericErrors[44]},mknod(e,t,s,r){return Ee.createNode(e,t,s,r)},rename(e,t,s){if(_.isDir(e.mode)){var r;try{r=_.lookupNode(t,s)}catch{}if(r)for(var i in r.contents)throw new _.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=s,t.contents[s]=e,t.timestamp=e.parent.timestamp},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var s=_.lookupNode(e,t);for(var r in s.contents)throw new _.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var s of Object.keys(e.contents))t.push(s);return t},symlink(e,t,s){var r=Ee.createNode(e,t,41471,0);return r.link=s,r},readlink(e){if(!_.isLink(e.mode))throw new _.ErrnoError(28);return e.link}},stream_ops:{read(e,t,s,r,i){var c=e.node.contents;if(i>=e.node.usedBytes)return 0;var q=Math.min(e.node.usedBytes-i,r);if(q>8&&c.subarray)t.set(c.subarray(i,i+q),s);else for(var x=0;x<q;x++)t[s+x]=c[i+x];return q},write(e,t,s,r,i,c){if(t.buffer===Ae.buffer&&(c=!1),!r)return 0;var q=e.node;if(q.timestamp=Date.now(),t.subarray&&(!q.contents||q.contents.subarray)){if(c)return q.contents=t.subarray(s,s+r),q.usedBytes=r,r;if(q.usedBytes===0&&i===0)return q.contents=t.slice(s,s+r),q.usedBytes=r,r;if(i+r<=q.usedBytes)return q.contents.set(t.subarray(s,s+r),i),r}if(Ee.expandFileStorage(q,i+r),q.contents.subarray&&t.subarray)q.contents.set(t.subarray(s,s+r),i);else for(var x=0;x<r;x++)q.contents[i+x]=t[s+x];return q.usedBytes=Math.max(q.usedBytes,i+r),r},llseek(e,t,s){var r=t;if(s===1?r+=e.position:s===2&&_.isFile(e.node.mode)&&(r+=e.node.usedBytes),r<0)throw new _.ErrnoError(28);return r},allocate(e,t,s){Ee.expandFileStorage(e.node,t+s),e.node.usedBytes=Math.max(e.node.usedBytes,t+s)},mmap(e,t,s,r,i){if(!_.isFile(e.node.mode))throw new _.ErrnoError(43);var c,q,x=e.node.contents;if(!(i&2)&&x&&x.buffer===Ae.buffer)q=!1,c=x.byteOffset;else{if(q=!0,c=Qn(t),!c)throw new _.ErrnoError(48);x&&((s>0||s+t<x.length)&&(x.subarray?x=x.subarray(s,s+t):x=Array.prototype.slice.call(x,s,s+t)),Ae.set(x,c))}return{ptr:c,allocated:q}},msync(e,t,s,r,i){return Ee.stream_ops.write(e,t,0,r,s,!1),0}}},_r=(e,t,s,r)=>{var i=`al ${e}`;ie(e).then(c=>{t(new Uint8Array(c)),i&&Pt()},c=>{if(s)s();else throw`Loading data file "${e}" failed.`}),i&&Yt()},dr=(e,t,s,r,i,c)=>{_.createDataFile(e,t,s,r,i,c)},pr=n.preloadPlugins||[],hr=(e,t,s,r)=>{typeof Browser<"u"&&Browser.init();var i=!1;return pr.forEach(c=>{i||c.canHandle(t)&&(c.handle(e,t,s,r),i=!0)}),i},mr=(e,t,s,r,i,c,q,x,z,V)=>{var ee=t?Je.resolve(Oe.join2(e,t)):e;function se(U){function C($){V?.(),x||dr(e,t,$,r,i,z),c?.(),Pt()}hr(U,ee,C,()=>{q?.(),Pt()})||C(U)}Yt(),typeof s=="string"?_r(s,se,q):se(s)},gr=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},s=t[e];if(typeof s>"u")throw new Error(`Unknown file open mode: ${e}`);return s},nn=(e,t)=>{var s=0;return e&&(s|=365),t&&(s|=146),s},_={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(e){this.name="ErrnoError",this.errno=e}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{constructor(e,t,s,r){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=_.nextInode++,this.name=t,this.mode=s,this.node_ops={},this.stream_ops={},this.rdev=r,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return _.isDir(this.mode)}get isDevice(){return _.isChrdev(this.mode)}},lookupPath(e,t={}){if(e=Je.resolve(e),!e)return{path:"",node:null};var s={follow_mount:!0,recurse_count:0};if(t=Object.assign(s,t),t.recurse_count>8)throw new _.ErrnoError(32);for(var r=e.split("/").filter(se=>!!se),i=_.root,c="/",q=0;q<r.length;q++){var x=q===r.length-1;if(x&&t.parent)break;if(i=_.lookupNode(i,r[q]),c=Oe.join2(c,r[q]),_.isMountpoint(i)&&(!x||x&&t.follow_mount)&&(i=i.mounted.root),!x||t.follow)for(var z=0;_.isLink(i.mode);){var V=_.readlink(c);c=Je.resolve(Oe.dirname(c),V);var ee=_.lookupPath(c,{recurse_count:t.recurse_count+1});if(i=ee.node,z++>40)throw new _.ErrnoError(32)}}return{path:c,node:i}},getPath(e){for(var t;;){if(_.isRoot(e)){var s=e.mount.mountpoint;return t?s[s.length-1]!=="/"?`${s}/${t}`:s+t:s}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var s=0,r=0;r<t.length;r++)s=(s<<5)-s+t.charCodeAt(r)|0;return(e+s>>>0)%_.nameTable.length},hashAddNode(e){var t=_.hashName(e.parent.id,e.name);e.name_next=_.nameTable[t],_.nameTable[t]=e},hashRemoveNode(e){var t=_.hashName(e.parent.id,e.name);if(_.nameTable[t]===e)_.nameTable[t]=e.name_next;else for(var s=_.nameTable[t];s;){if(s.name_next===e){s.name_next=e.name_next;break}s=s.name_next}},lookupNode(e,t){var s=_.mayLookup(e);if(s)throw new _.ErrnoError(s);for(var r=_.hashName(e.id,t),i=_.nameTable[r];i;i=i.name_next){var c=i.name;if(i.parent.id===e.id&&c===t)return i}return _.lookup(e,t)},createNode(e,t,s,r){var i=new _.FSNode(e,t,s,r);return _.hashAddNode(i),i},destroyNode(e){_.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions(e,t){return _.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){if(!_.isDir(e.mode))return 54;var t=_.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{var s=_.lookupNode(e,t);return 20}catch{}return _.nodePermissions(e,"wx")},mayDelete(e,t,s){var r;try{r=_.lookupNode(e,t)}catch(c){return c.errno}var i=_.nodePermissions(e,"wx");if(i)return i;if(s){if(!_.isDir(r.mode))return 54;if(_.isRoot(r)||_.getPath(r)===_.cwd())return 10}else if(_.isDir(r.mode))return 31;return 0},mayOpen(e,t){return e?_.isLink(e.mode)?32:_.isDir(e.mode)&&(_.flagsToPermissionString(t)!=="r"||t&512)?31:_.nodePermissions(e,_.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=_.MAX_OPEN_FDS;e++)if(!_.streams[e])return e;throw new _.ErrnoError(33)},getStreamChecked(e){var t=_.getStream(e);if(!t)throw new _.ErrnoError(8);return t},getStream:e=>_.streams[e],createStream(e,t=-1){return e=Object.assign(new _.FSStream,e),t==-1&&(t=_.nextfd()),e.fd=t,_.streams[t]=e,e},closeStream(e){_.streams[e]=null},dupStream(e,t=-1){var s=_.createStream(e,t);return s.stream_ops?.dup?.(s),s},chrdev_stream_ops:{open(e){var t=_.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new _.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){_.devices[e]={stream_ops:t}},getDevice:e=>_.devices[e],getMounts(e){for(var t=[],s=[e];s.length;){var r=s.pop();t.push(r),s.push(...r.mounts)}return t},syncfs(e,t){typeof e=="function"&&(t=e,e=!1),_.syncFSRequests++,_.syncFSRequests>1&&he(`warning: ${_.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var s=_.getMounts(_.root.mount),r=0;function i(q){return _.syncFSRequests--,t(q)}function c(q){if(q)return c.errored?void 0:(c.errored=!0,i(q));++r>=s.length&&i(null)}s.forEach(q=>{if(!q.type.syncfs)return c(null);q.type.syncfs(q,e,c)})},mount(e,t,s){var r=s==="/",i=!s,c;if(r&&_.root)throw new _.ErrnoError(10);if(!r&&!i){var q=_.lookupPath(s,{follow_mount:!1});if(s=q.path,c=q.node,_.isMountpoint(c))throw new _.ErrnoError(10);if(!_.isDir(c.mode))throw new _.ErrnoError(54)}var x={type:e,opts:t,mountpoint:s,mounts:[]},z=e.mount(x);return z.mount=x,x.root=z,r?_.root=z:c&&(c.mounted=x,c.mount&&c.mount.mounts.push(x)),z},unmount(e){var t=_.lookupPath(e,{follow_mount:!1});if(!_.isMountpoint(t.node))throw new _.ErrnoError(28);var s=t.node,r=s.mounted,i=_.getMounts(r);Object.keys(_.nameTable).forEach(q=>{for(var x=_.nameTable[q];x;){var z=x.name_next;i.includes(x.mount)&&_.destroyNode(x),x=z}}),s.mounted=null;var c=s.mount.mounts.indexOf(r);s.mount.mounts.splice(c,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,s){var r=_.lookupPath(e,{parent:!0}),i=r.node,c=Oe.basename(e);if(!c||c==="."||c==="..")throw new _.ErrnoError(28);var q=_.mayCreate(i,c);if(q)throw new _.ErrnoError(q);if(!i.node_ops.mknod)throw new _.ErrnoError(63);return i.node_ops.mknod(i,c,t,s)},create(e,t){return t=t!==void 0?t:438,t&=4095,t|=32768,_.mknod(e,t,0)},mkdir(e,t){return t=t!==void 0?t:511,t&=1023,t|=16384,_.mknod(e,t,0)},mkdirTree(e,t){for(var s=e.split("/"),r="",i=0;i<s.length;++i)if(s[i]){r+="/"+s[i];try{_.mkdir(r,t)}catch(c){if(c.errno!=20)throw c}}},mkdev(e,t,s){return typeof s>"u"&&(s=t,t=438),t|=8192,_.mknod(e,t,s)},symlink(e,t){if(!Je.resolve(e))throw new _.ErrnoError(44);var s=_.lookupPath(t,{parent:!0}),r=s.node;if(!r)throw new _.ErrnoError(44);var i=Oe.basename(t),c=_.mayCreate(r,i);if(c)throw new _.ErrnoError(c);if(!r.node_ops.symlink)throw new _.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var s=Oe.dirname(e),r=Oe.dirname(t),i=Oe.basename(e),c=Oe.basename(t),q,x,z;if(q=_.lookupPath(e,{parent:!0}),x=q.node,q=_.lookupPath(t,{parent:!0}),z=q.node,!x||!z)throw new _.ErrnoError(44);if(x.mount!==z.mount)throw new _.ErrnoError(75);var V=_.lookupNode(x,i),ee=Je.relative(e,r);if(ee.charAt(0)!==".")throw new _.ErrnoError(28);if(ee=Je.relative(t,s),ee.charAt(0)!==".")throw new _.ErrnoError(55);var se;try{se=_.lookupNode(z,c)}catch{}if(V!==se){var U=_.isDir(V.mode),C=_.mayDelete(x,i,U);if(C)throw new _.ErrnoError(C);if(C=se?_.mayDelete(z,c,U):_.mayCreate(z,c),C)throw new _.ErrnoError(C);if(!x.node_ops.rename)throw new _.ErrnoError(63);if(_.isMountpoint(V)||se&&_.isMountpoint(se))throw new _.ErrnoError(10);if(z!==x&&(C=_.nodePermissions(x,"w"),C))throw new _.ErrnoError(C);_.hashRemoveNode(V);try{x.node_ops.rename(V,z,c),V.parent=z}catch($){throw $}finally{_.hashAddNode(V)}}},rmdir(e){var t=_.lookupPath(e,{parent:!0}),s=t.node,r=Oe.basename(e),i=_.lookupNode(s,r),c=_.mayDelete(s,r,!0);if(c)throw new _.ErrnoError(c);if(!s.node_ops.rmdir)throw new _.ErrnoError(63);if(_.isMountpoint(i))throw new _.ErrnoError(10);s.node_ops.rmdir(s,r),_.destroyNode(i)},readdir(e){var t=_.lookupPath(e,{follow:!0}),s=t.node;if(!s.node_ops.readdir)throw new _.ErrnoError(54);return s.node_ops.readdir(s)},unlink(e){var t=_.lookupPath(e,{parent:!0}),s=t.node;if(!s)throw new _.ErrnoError(44);var r=Oe.basename(e),i=_.lookupNode(s,r),c=_.mayDelete(s,r,!1);if(c)throw new _.ErrnoError(c);if(!s.node_ops.unlink)throw new _.ErrnoError(63);if(_.isMountpoint(i))throw new _.ErrnoError(10);s.node_ops.unlink(s,r),_.destroyNode(i)},readlink(e){var t=_.lookupPath(e),s=t.node;if(!s)throw new _.ErrnoError(44);if(!s.node_ops.readlink)throw new _.ErrnoError(28);return Je.resolve(_.getPath(s.parent),s.node_ops.readlink(s))},stat(e,t){var s=_.lookupPath(e,{follow:!t}),r=s.node;if(!r)throw new _.ErrnoError(44);if(!r.node_ops.getattr)throw new _.ErrnoError(63);return r.node_ops.getattr(r)},lstat(e){return _.stat(e,!0)},chmod(e,t,s){var r;if(typeof e=="string"){var i=_.lookupPath(e,{follow:!s});r=i.node}else r=e;if(!r.node_ops.setattr)throw new _.ErrnoError(63);r.node_ops.setattr(r,{mode:t&4095|r.mode&-4096,timestamp:Date.now()})},lchmod(e,t){_.chmod(e,t,!0)},fchmod(e,t){var s=_.getStreamChecked(e);_.chmod(s.node,t)},chown(e,t,s,r){var i;if(typeof e=="string"){var c=_.lookupPath(e,{follow:!r});i=c.node}else i=e;if(!i.node_ops.setattr)throw new _.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,t,s){_.chown(e,t,s,!0)},fchown(e,t,s){var r=_.getStreamChecked(e);_.chown(r.node,t,s)},truncate(e,t){if(t<0)throw new _.ErrnoError(28);var s;if(typeof e=="string"){var r=_.lookupPath(e,{follow:!0});s=r.node}else s=e;if(!s.node_ops.setattr)throw new _.ErrnoError(63);if(_.isDir(s.mode))throw new _.ErrnoError(31);if(!_.isFile(s.mode))throw new _.ErrnoError(28);var i=_.nodePermissions(s,"w");if(i)throw new _.ErrnoError(i);s.node_ops.setattr(s,{size:t,timestamp:Date.now()})},ftruncate(e,t){var s=_.getStreamChecked(e);if((s.flags&2097155)===0)throw new _.ErrnoError(28);_.truncate(s.node,t)},utime(e,t,s){var r=_.lookupPath(e,{follow:!0}),i=r.node;i.node_ops.setattr(i,{timestamp:Math.max(t,s)})},open(e,t,s){if(e==="")throw new _.ErrnoError(44);t=typeof t=="string"?gr(t):t,t&64?(s=typeof s>"u"?438:s,s=s&4095|32768):s=0;var r;if(typeof e=="object")r=e;else{e=Oe.normalize(e);try{var i=_.lookupPath(e,{follow:!(t&131072)});r=i.node}catch{}}var c=!1;if(t&64)if(r){if(t&128)throw new _.ErrnoError(20)}else r=_.mknod(e,s,0),c=!0;if(!r)throw new _.ErrnoError(44);if(_.isChrdev(r.mode)&&(t&=-513),t&65536&&!_.isDir(r.mode))throw new _.ErrnoError(54);if(!c){var q=_.mayOpen(r,t);if(q)throw new _.ErrnoError(q)}t&512&&!c&&_.truncate(r,0),t&=-131713;var x=_.createStream({node:r,path:_.getPath(r),flags:t,seekable:!0,position:0,stream_ops:r.stream_ops,ungotten:[],error:!1});return x.stream_ops.open&&x.stream_ops.open(x),n.logReadFiles&&!(t&1)&&(_.readFiles||(_.readFiles={}),e in _.readFiles||(_.readFiles[e]=1)),x},close(e){if(_.isClosed(e))throw new _.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(t){throw t}finally{_.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,t,s){if(_.isClosed(e))throw new _.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new _.ErrnoError(70);if(s!=0&&s!=1&&s!=2)throw new _.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,s),e.ungotten=[],e.position},read(e,t,s,r,i){if(r<0||i<0)throw new _.ErrnoError(28);if(_.isClosed(e))throw new _.ErrnoError(8);if((e.flags&2097155)===1)throw new _.ErrnoError(8);if(_.isDir(e.node.mode))throw new _.ErrnoError(31);if(!e.stream_ops.read)throw new _.ErrnoError(28);var c=typeof i<"u";if(!c)i=e.position;else if(!e.seekable)throw new _.ErrnoError(70);var q=e.stream_ops.read(e,t,s,r,i);return c||(e.position+=q),q},write(e,t,s,r,i,c){if(r<0||i<0)throw new _.ErrnoError(28);if(_.isClosed(e))throw new _.ErrnoError(8);if((e.flags&2097155)===0)throw new _.ErrnoError(8);if(_.isDir(e.node.mode))throw new _.ErrnoError(31);if(!e.stream_ops.write)throw new _.ErrnoError(28);e.seekable&&e.flags&1024&&_.llseek(e,0,2);var q=typeof i<"u";if(!q)i=e.position;else if(!e.seekable)throw new _.ErrnoError(70);var x=e.stream_ops.write(e,t,s,r,i,c);return q||(e.position+=x),x},allocate(e,t,s){if(_.isClosed(e))throw new _.ErrnoError(8);if(t<0||s<=0)throw new _.ErrnoError(28);if((e.flags&2097155)===0)throw new _.ErrnoError(8);if(!_.isFile(e.node.mode)&&!_.isDir(e.node.mode))throw new _.ErrnoError(43);if(!e.stream_ops.allocate)throw new _.ErrnoError(138);e.stream_ops.allocate(e,t,s)},mmap(e,t,s,r,i){if((r&2)!==0&&(i&2)===0&&(e.flags&2097155)!==2)throw new _.ErrnoError(2);if((e.flags&2097155)===1)throw new _.ErrnoError(2);if(!e.stream_ops.mmap)throw new _.ErrnoError(43);if(!t)throw new _.ErrnoError(28);return e.stream_ops.mmap(e,t,s,r,i)},msync(e,t,s,r,i){return e.stream_ops.msync?e.stream_ops.msync(e,t,s,r,i):0},ioctl(e,t,s){if(!e.stream_ops.ioctl)throw new _.ErrnoError(59);return e.stream_ops.ioctl(e,t,s)},readFile(e,t={}){if(t.flags=t.flags||0,t.encoding=t.encoding||"binary",t.encoding!=="utf8"&&t.encoding!=="binary")throw new Error(`Invalid encoding type "${t.encoding}"`);var s,r=_.open(e,t.flags),i=_.stat(e),c=i.size,q=new Uint8Array(c);return _.read(r,q,0,c,0),t.encoding==="utf8"?s=ct(q,0):t.encoding==="binary"&&(s=q),_.close(r),s},writeFile(e,t,s={}){s.flags=s.flags||577;var r=_.open(e,s.flags,s.mode);if(typeof t=="string"){var i=new Uint8Array(Ft(t)+1),c=tn(t,i,0,i.length);_.write(r,i,0,c,void 0,s.canOwn)}else if(ArrayBuffer.isView(t))_.write(r,t,0,t.byteLength,void 0,s.canOwn);else throw new Error("Unsupported data type");_.close(r)},cwd:()=>_.currentPath,chdir(e){var t=_.lookupPath(e,{follow:!0});if(t.node===null)throw new _.ErrnoError(44);if(!_.isDir(t.node.mode))throw new _.ErrnoError(54);var s=_.nodePermissions(t.node,"x");if(s)throw new _.ErrnoError(s);_.currentPath=t.path},createDefaultDirectories(){_.mkdir("/tmp"),_.mkdir("/home"),_.mkdir("/home/web_user")},createDefaultDevices(){_.mkdir("/dev"),_.registerDevice(_.makedev(1,3),{read:()=>0,write:(r,i,c,q,x)=>q}),_.mkdev("/dev/null",_.makedev(1,3)),rt.register(_.makedev(5,0),rt.default_tty_ops),rt.register(_.makedev(6,0),rt.default_tty1_ops),_.mkdev("/dev/tty",_.makedev(5,0)),_.mkdev("/dev/tty1",_.makedev(6,0));var e=new Uint8Array(1024),t=0,s=()=>(t===0&&(t=Un(e).byteLength),e[--t]);_.createDevice("/dev","random",s),_.createDevice("/dev","urandom",s),_.mkdir("/dev/shm"),_.mkdir("/dev/shm/tmp")},createSpecialDirectories(){_.mkdir("/proc");var e=_.mkdir("/proc/self");_.mkdir("/proc/self/fd"),_.mount({mount(){var t=_.createNode(e,"fd",16895,73);return t.node_ops={lookup(s,r){var i=+r,c=_.getStreamChecked(i),q={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>c.path}};return q.parent=q,q}},t}},{},"/proc/self/fd")},createStandardStreams(e,t,s){e?_.createDevice("/dev","stdin",e):_.symlink("/dev/tty","/dev/stdin"),t?_.createDevice("/dev","stdout",null,t):_.symlink("/dev/tty","/dev/stdout"),s?_.createDevice("/dev","stderr",null,s):_.symlink("/dev/tty1","/dev/stderr"),_.open("/dev/stdin",0),_.open("/dev/stdout",1),_.open("/dev/stderr",1)},staticInit(){[44].forEach(e=>{_.genericErrors[e]=new _.ErrnoError(e),_.genericErrors[e].stack="<generic error, no stack>"}),_.nameTable=new Array(4096),_.mount(Ee,{},"/"),_.createDefaultDirectories(),_.createDefaultDevices(),_.createSpecialDirectories(),_.filesystems={MEMFS:Ee}},init(e,t,s){_.initialized=!0,e??=n.stdin,t??=n.stdout,s??=n.stderr,_.createStandardStreams(e,t,s)},quit(){_.initialized=!1;for(var e=0;e<_.streams.length;e++){var t=_.streams[e];t&&_.close(t)}},findObject(e,t){var s=_.analyzePath(e,t);return s.exists?s.object:null},analyzePath(e,t){try{var s=_.lookupPath(e,{follow:!t});e=s.path}catch{}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var s=_.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=s.path,r.parentObject=s.node,r.name=Oe.basename(e),s=_.lookupPath(e,{follow:!t}),r.exists=!0,r.path=s.path,r.object=s.node,r.name=s.node.name,r.isRoot=s.path==="/"}catch(i){r.error=i.errno}return r},createPath(e,t,s,r){e=typeof e=="string"?e:_.getPath(e);for(var i=t.split("/").reverse();i.length;){var c=i.pop();if(c){var q=Oe.join2(e,c);try{_.mkdir(q)}catch{}e=q}}return q},createFile(e,t,s,r,i){var c=Oe.join2(typeof e=="string"?e:_.getPath(e),t),q=nn(r,i);return _.create(c,q)},createDataFile(e,t,s,r,i,c){var q=t;e&&(e=typeof e=="string"?e:_.getPath(e),q=t?Oe.join2(e,t):e);var x=nn(r,i),z=_.create(q,x);if(s){if(typeof s=="string"){for(var V=new Array(s.length),ee=0,se=s.length;ee<se;++ee)V[ee]=s.charCodeAt(ee);s=V}_.chmod(z,x|146);var U=_.open(z,577);_.write(U,s,0,s.length,0,c),_.close(U),_.chmod(z,x)}},createDevice(e,t,s,r){var i=Oe.join2(typeof e=="string"?e:_.getPath(e),t),c=nn(!!s,!!r);_.createDevice.major||(_.createDevice.major=64);var q=_.makedev(_.createDevice.major++,0);return _.registerDevice(q,{open(x){x.seekable=!1},close(x){r?.buffer?.length&&r(10)},read(x,z,V,ee,se){for(var U=0,C=0;C<ee;C++){var $;try{$=s()}catch{throw new _.ErrnoError(29)}if($===void 0&&U===0)throw new _.ErrnoError(6);if($==null)break;U++,z[V+C]=$}return U&&(x.node.timestamp=Date.now()),U},write(x,z,V,ee,se){for(var U=0;U<ee;U++)try{r(z[V+U])}catch{throw new _.ErrnoError(29)}return ee&&(x.node.timestamp=Date.now()),U}}),_.mkdev(i,c,q)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");try{e.contents=ue(e.url),e.usedBytes=e.contents.length}catch{throw new _.ErrnoError(29)}},createLazyFile(e,t,s,r,i){class c{constructor(){this.lengthKnown=!1,this.chunks=[]}get(C){if(!(C>this.length-1||C<0)){var $=C%this.chunkSize,k=C/this.chunkSize|0;return this.getter(k)[$]}}setDataGetter(C){this.getter=C}cacheLength(){var C=new XMLHttpRequest;if(C.open("HEAD",s,!1),C.send(null),!(C.status>=200&&C.status<300||C.status===304))throw new Error("Couldn't load "+s+". Status: "+C.status);var $=Number(C.getResponseHeader("Content-length")),k,P=(k=C.getResponseHeader("Accept-Ranges"))&&k==="bytes",F=(k=C.getResponseHeader("Content-Encoding"))&&k==="gzip",G=1024*1024;P||(G=$);var H=(W,fe)=>{if(W>fe)throw new Error("invalid range ("+W+", "+fe+") or no bytes requested!");if(fe>$-1)throw new Error("only "+$+" bytes available! programmer error!");var d=new XMLHttpRequest;if(d.open("GET",s,!1),$!==G&&d.setRequestHeader("Range","bytes="+W+"-"+fe),d.responseType="arraybuffer",d.overrideMimeType&&d.overrideMimeType("text/plain; charset=x-user-defined"),d.send(null),!(d.status>=200&&d.status<300||d.status===304))throw new Error("Couldn't load "+s+". Status: "+d.status);return d.response!==void 0?new Uint8Array(d.response||[]):zn(d.responseText||"")},L=this;L.setDataGetter(W=>{var fe=W*G,d=(W+1)*G-1;if(d=Math.min(d,$-1),typeof L.chunks[W]>"u"&&(L.chunks[W]=H(fe,d)),typeof L.chunks[W]>"u")throw new Error("doXHR failed!");return L.chunks[W]}),(F||!$)&&(G=$=1,$=this.getter(0).length,G=$,ae("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=$,this._chunkSize=G,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!O)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var q=new c,x={isDevice:!1,contents:q}}else var x={isDevice:!1,url:s};var z=_.createFile(e,t,x,r,i);x.contents?z.contents=x.contents:x.url&&(z.contents=null,z.url=x.url),Object.defineProperties(z,{usedBytes:{get:function(){return this.contents.length}}});var V={},ee=Object.keys(z.stream_ops);ee.forEach(U=>{var C=z.stream_ops[U];V[U]=(...$)=>(_.forceLoadFile(z),C(...$))});function se(U,C,$,k,P){var F=U.node.contents;if(P>=F.length)return 0;var G=Math.min(F.length-P,k);if(F.slice)for(var H=0;H<G;H++)C[$+H]=F[P+H];else for(var H=0;H<G;H++)C[$+H]=F.get(P+H);return G}return V.read=(U,C,$,k,P)=>(_.forceLoadFile(z),se(U,C,$,k,P)),V.mmap=(U,C,$,k,P)=>{_.forceLoadFile(z);var F=Qn(C);if(!F)throw new _.ErrnoError(48);return se(U,Ae,F,C,$),{ptr:F,allocated:!0}},z.stream_ops=V,z}},yr=(e,t)=>e?ct($e,e,t):"",xe={DEFAULT_POLLMASK:5,calculateAt(e,t,s){if(Oe.isAbs(t))return t;var r;if(e===-100)r=_.cwd();else{var i=xe.getStreamFromFD(e);r=i.path}if(t.length==0){if(!s)throw new _.ErrnoError(44);return r}return Oe.join2(r,t)},doStat(e,t,s){var r=e(t);ke[s>>2]=r.dev,ke[s+4>>2]=r.mode,Te[s+8>>2]=r.nlink,ke[s+12>>2]=r.uid,ke[s+16>>2]=r.gid,ke[s+20>>2]=r.rdev,Be[s+24>>3]=BigInt(r.size),ke[s+32>>2]=4096,ke[s+36>>2]=r.blocks;var i=r.atime.getTime(),c=r.mtime.getTime(),q=r.ctime.getTime();return Be[s+40>>3]=BigInt(Math.floor(i/1e3)),Te[s+48>>2]=i%1e3*1e3*1e3,Be[s+56>>3]=BigInt(Math.floor(c/1e3)),Te[s+64>>2]=c%1e3*1e3*1e3,Be[s+72>>3]=BigInt(Math.floor(q/1e3)),Te[s+80>>2]=q%1e3*1e3*1e3,Be[s+88>>3]=BigInt(r.ino),0},doMsync(e,t,s,r,i){if(!_.isFile(t.node.mode))throw new _.ErrnoError(43);if(r&2)return 0;var c=$e.slice(e,e+s);_.msync(t,c,i,s,r)},getStreamFromFD(e){var t=_.getStreamChecked(e);return t},varargs:void 0,getStr(e){var t=yr(e);return t}};function br(e,t){try{return e=xe.getStr(e),_.chmod(e,t),0}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}function wr(e,t,s,r){try{if(t=xe.getStr(t),t=xe.calculateAt(e,t),s&-8)return-28;var i=_.lookupPath(t,{follow:!0}),c=i.node;if(!c)return-44;var q="";return s&4&&(q+="r"),s&2&&(q+="w"),s&1&&(q+="x"),q&&_.nodePermissions(c,q)?-2:0}catch(x){if(typeof _>"u"||x.name!=="ErrnoError")throw x;return-x.errno}}function qr(e,t){try{return _.fchmod(e,t),0}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}function vr(e,t,s){try{return _.fchown(e,t,s),0}catch(r){if(typeof _>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}function Lt(){var e=ke[+xe.varargs>>2];return xe.varargs+=4,e}var ut=Lt;function Er(e,t,s){xe.varargs=s;try{var r=xe.getStreamFromFD(e);switch(t){case 0:{var i=Lt();if(i<0)return-28;for(;_.streams[i];)i++;var c;return c=_.dupStream(r,i),c.fd}case 1:case 2:return 0;case 3:return r.flags;case 4:{var i=Lt();return r.flags|=i,0}case 12:{var i=ut(),q=0;return Ue[i+q>>1]=2,0}case 13:case 14:return 0}return-28}catch(x){if(typeof _>"u"||x.name!=="ErrnoError")throw x;return-x.errno}}function Sr(e,t){try{var s=xe.getStreamFromFD(e);return xe.doStat(_.stat,s.path,t)}catch(r){if(typeof _>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}var xr=9007199254740992,kr=-9007199254740992,vt=e=>e<kr||e>xr?NaN:Number(e);function Ar(e,t){t=vt(t);try{return isNaN(t)?61:(_.ftruncate(e,t),0)}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}var ft=(e,t,s)=>tn(e,$e,t,s);function Ir(e,t){try{if(t===0)return-28;var s=_.cwd(),r=Ft(s)+1;return t<r?-68:(ft(s,e,t),r)}catch(i){if(typeof _>"u"||i.name!=="ErrnoError")throw i;return-i.errno}}function Tr(e,t,s){xe.varargs=s;try{var r=xe.getStreamFromFD(e);switch(t){case 21509:return r.tty?0:-59;case 21505:{if(!r.tty)return-59;if(r.tty.ops.ioctl_tcgets){var i=r.tty.ops.ioctl_tcgets(r),c=ut();ke[c>>2]=i.c_iflag||0,ke[c+4>>2]=i.c_oflag||0,ke[c+8>>2]=i.c_cflag||0,ke[c+12>>2]=i.c_lflag||0;for(var q=0;q<32;q++)Ae[c+q+17]=i.c_cc[q]||0;return 0}return 0}case 21510:case 21511:case 21512:return r.tty?0:-59;case 21506:case 21507:case 21508:{if(!r.tty)return-59;if(r.tty.ops.ioctl_tcsets){for(var c=ut(),x=ke[c>>2],z=ke[c+4>>2],V=ke[c+8>>2],ee=ke[c+12>>2],se=[],q=0;q<32;q++)se.push(Ae[c+q+17]);