@volter/browser-substrate 0.1.111 → 0.1.113

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/dist/shell/assets/browser-opfs-filesystem-worker-TLQsaODy.js +3 -0
  2. package/dist/shell/assets/{browser-sandbox-bridge-hBxWLqQk.js → browser-sandbox-bridge-CmMlTDpO.js} +1 -1
  3. package/dist/shell/assets/{filesystem-host-9LBfR1Rt.js → filesystem-host-D98WfBoD.js} +1 -1
  4. package/dist/shell/assets/{filesystem-host-DxNGFCTZ.js → filesystem-host-EfkgP9Jh.js} +1 -1
  5. package/dist/shell/assets/{filesystem-worker-BVj1pBBE.js → filesystem-worker-51BLqPs5.js} +1 -1
  6. package/dist/shell/assets/{fork-worker-BqCN8ifL.js → fork-worker-hBikLg_q.js} +1 -1
  7. package/dist/shell/assets/{node-execution-worker-f4687130227370e7.js → node-execution-worker-910d4c0de0f26c97.js} +3 -3
  8. package/dist/shell/assets/{runtime-worker-CTPA-1k9.js → runtime-worker-DJbG60eD.js} +15 -1
  9. package/dist/shell/assets/{sandbox-BpNms5kO.js → sandbox-qgjYY5Gr.js} +1 -1
  10. package/dist/shell/assets/{shell-C-vckSqy.js → shell-C0qfPTpQ.js} +4 -4
  11. package/dist/shell/assets/{worker-USPIYmiu.js → worker-BZ-Txq9L.js} +1 -1
  12. package/dist/shell/assets/{worker-program-worker-qGFOwXwD.js → worker-program-worker-B_u8gbzh.js} +2 -2
  13. package/dist/shell/bundler-worker.js +2 -2
  14. package/dist/shell/index.html +2 -2
  15. package/dist/shell/node-execution-worker.js +2 -2
  16. package/dist/shell/python-execution-worker.js +1 -1
  17. package/dist/shell/python-runtime-snapshot.bin +0 -0
  18. package/dist/shell/python-runtime-snapshot.json +1 -1
  19. package/dist/shell/rolldown/factory.mjs +31 -3
  20. package/dist/shell/sandbox.html +2 -2
  21. package/package.json +1 -1
  22. package/dist/shell/assets/browser-opfs-filesystem-worker-BcQkS5Ea.js +0 -3
@@ -1,4 +1,4 @@
1
- const Gs=["file","directory","symlink"],lc=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u,fc=new TextEncoder,hc=new TextDecoder;function na(s){let e=2166136261;for(let t=0;t<s.length;t+=1)e^=s.charCodeAt(t),e=Math.imul(e,16777619);return e>>>0}function Mi(s,e){const t=[...s.keys()];for(const v of t)if(lc.test(v))throw new Error("A path in the store is not well-formed UTF-16.");const r=new Map;for(let v=0;v<t.length;v+=1)r.set(t[v],v);for(const v of e.keys())r.has(v)||(r.set(v,t.length),t.push(v));const n=t.length,i=new Map,o=new Uint32Array(n);let a=0;for(let v=0;v<n;v+=1){const U=t[v];let X=!0;for(let Se=0;Se<U.length;Se+=1)if(U.charCodeAt(Se)>=128){X=!1;break}X||i.set(v,fc.encode(U)),o[v]=X?U.length:i.get(v).length,a+=o[v]}let c=0;for(const v of e.values())c+=v.size;let f=1;for(;f<n*2;)f<<=1;const d=24,y=js(d+n*6*4,8),p=y+n*3*8,b=p+f*4,S=b+c*4,I=new SharedArrayBuffer(js(S+a,8));new Uint32Array(I,0,6).set([2019846480,n,f,c,a,s.size]);const x=new Uint32Array(I,d,n*6),L=new Float64Array(I,y,n*3),W=new Uint32Array(I,p,f),de=new Uint32Array(I,b,c),se=new Uint8Array(I,S,a);let ie=0,D=0;for(let v=0;v<n;v+=1){const U=t[v],X=v*6,Se=i.get(v);if(Se)se.set(Se,ie);else for(let T=0;T<U.length;T+=1)se[ie+T]=U.charCodeAt(T);const O=o[v];x[X+0]=ie,x[X+1]=O,ie+=O;let fe=Se?0:32;const ue=s.get(U);if(ue){fe|=1|Gs.indexOf(ue.type)<<3,ue.pack&&(fe|=4),x[X+3]=ue.mode;const T=v*3;L[T+0]=ue.mtimeMs,L[T+1]=ue.offset,L[T+2]=ue.length}const V=e.get(U);if(V){fe|=2,x[X+4]=D,x[X+5]=V.size;for(const T of V){const G=r.get(`${U}/${T}`);if(G===void 0)throw new Error(`The store's children name ${U}/${T}, which its index does not hold.`);de[D++]=G}}x[X+2]=fe;let me=na(U)&f-1;for(;W[me]!==0;)me=me+1&f-1;W[me]=v+1}if(D!==c)throw new Error("The shared index's children did not add up.");return I}function js(s,e){return Math.ceil(s/e)*e}class Ft{buffer;count;entryCount;records;numbers;table;childList;strings;mask;constructor(e){const t=new Uint32Array(e,0,6);if(t[0]!==2019846480)throw new Error("Not a shared store index.");const[,r,n,i,o,a]=t;this.buffer=e,this.count=r,this.entryCount=a;const c=24,f=js(c+r*6*4,8),d=f+r*3*8,y=d+n*4,p=y+i*4;this.records=new Uint32Array(e,c,r*6),this.numbers=new Float64Array(e,f,r*3),this.table=new Uint32Array(e,d,n),this.childList=new Uint32Array(e,y,i),this.strings=new Uint8Array(e,p,o),this.mask=n-1}find(e){let t=na(e)&this.mask;for(;;){const r=this.table[t];if(r===0)return-1;if(this.pathIs(r-1,e))return r-1;t=t+1&this.mask}}entry(e){const t=e*6,r=this.records[t+2];if(!(r&1))return;const n=e*3,i={type:Gs[r>>>3&3],mode:this.records[t+3],mtimeMs:this.numbers[n+0],offset:this.numbers[n+1],length:this.numbers[n+2]};return r&4&&(i.pack="packages"),i}typeAt(e){const t=this.records[e*6+2];return t&1?Gs[t>>>3&3]:void 0}hasEntry(e){return(this.records[e*6+2]&1)!==0}childNames(e){const t=e*6;if(!(this.records[t+2]&2))return;const r=this.records[t+4],n=this.records[t+1]+1,i=[];for(let o=0;o<this.records[t+5];o+=1){const a=this.childList[r+o]*6;i.push(this.decode(this.records[a+0]+n,this.records[a+1]-n,(this.records[a+2]&32)!==0))}return i}path(e){const t=e*6;return this.decode(this.records[t+0],this.records[t+1],(this.records[t+2]&32)!==0)}decode(e,t,r){if(!r)return hc.decode(this.strings.slice(e,e+t));let n="";for(let i=e,o=e+t;i<o;i+=4096)n+=String.fromCharCode.apply(null,this.strings.subarray(i,Math.min(o,i+4096)));return n}pathIs(e,t){const r=e*6,n=this.records[r+0],i=this.records[r+1];if(!(this.records[r+2]&32))return this.path(e)===t;if(i!==t.length)return!1;for(let o=0;o<i;o+=1)if(this.strings[n+o]!==t.charCodeAt(o))return!1;return!0}}const Ze=Symbol("deleted");function sa(s,e){return s===e||!!s&&!!e&&s.type===e.type&&s.offset===e.offset&&s.length===e.length&&s.pack===e.pack&&s.mode===e.mode&&s.mtimeMs===e.mtimeMs&&s.capacity===e.capacity}class qt{base;overlay=new Map;delta=0;constructor(e){this.base=e}get[Symbol.toStringTag](){return"Map"}get size(){return this.base.entryCount+this.delta}get(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t;const r=this.base.find(e);return r<0?void 0:this.base.entry(r)}typeOf(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t.type;const r=this.base.find(e);return r<0?void 0:this.base.typeAt(r)}has(e){const t=this.overlay.get(e);if(t!==void 0)return t!==Ze;const r=this.base.find(e);return r>=0&&this.base.hasEntry(r)}set(e,t){this.has(e)||(this.delta+=1);const r=this.base.find(e);return r>=0&&sa(this.base.entry(r),t)?this.overlay.delete(e):this.overlay.set(e,t),this}delete(e){if(!this.has(e))return!1;const t=this.base.find(e);return t>=0&&this.base.hasEntry(t)?this.overlay.set(e,Ze):this.overlay.delete(e),this.delta-=1,!0}clear(){throw new Error("A reader's index is not cleared; it is replaced.")}*entries(){for(const[e,t]of this.overlay)t!==Ze&&(yield[e,t]);for(let e=0;e<this.base.count;e+=1){if(!this.base.hasEntry(e))continue;const t=this.base.path(e);this.overlay.has(t)||(yield[t,this.base.entry(e)])}}*keys(){for(const[e]of this.entries())yield e}*values(){for(const[,e]of this.entries())yield e}[Symbol.iterator](){return this.entries()}forEach(e,t){for(const[r,n]of this.entries())e.call(t,n,r,this)}*changed(){for(const[e,t]of this.overlay)t!==Ze&&(yield[e,t])}*changes(){for(const[e,t]of this.overlay)yield[e,t===Ze?null:t]}get overlaid(){return this.overlay.size}boundedChanges(){if(this.overlay.size>65536)return;const e=[];let t=0;for(const[r,n]of this.changes()){if(t+=r.length*2+128,t>8*1024*1024)return;e.push([r,n])}return e}}class jr{base;overlay=new Map;constructor(e){this.base=e}get(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t;const r=this.base.find(e),n=r<0?void 0:this.base.childNames(r);return n?new Set(n):void 0}mutable(e){const t=this.overlay.get(e);if(t!==void 0&&t!==Ze)return t;const r=new Set(t===Ze?[]:this.get(e)??[]);return this.overlay.set(e,r),r}delete(e){this.overlay.set(e,Ze)}}function xi(s){const e=s.lastIndexOf("/");return e<=0?"/":s.slice(0,e)}function ur(s){return s==="/"?"":s}const dc="/opt/tree";function uc(s){return`volter-tree-store-use:${s}`}function mc(s,e=globalThis.navigator?.locks){if(!e)return Promise.resolve();let t=Li.get(e);t||Li.set(e,t=new Map);let r=t.get(s);if(!r){r=new Promise((i,o)=>{e.request(uc(s),{mode:"shared"},()=>(i(),new Promise(()=>{}))).catch(o)});const n=t;r.catch(()=>n.delete(s)),t.set(s,r)}return r}const Li=new WeakMap;function yc(s,e){const t=new Ft(s.index),r=new qt(t),n=new jr(t),i={childrenOf:a=>[...n.get(ur(a))??[]].sort(),descendants(a){const c=[],f=d=>{const y=r.get(d);y&&c.push([d,y]);for(const p of n.get(ur(d))??[])f(`${ur(d)}/${p}`)};return f(a),c}};if(s.store!==void 0){const a=e?.get(s.store),c=s.roots?.[0]??"/",f=s.storeRoot??c,d=p=>f+p.slice(c==="/"?0:c.length),y=p=>{const b=r.get(p);if(!b||b.type==="directory")throw new Error(`The shared layer holds no file at ${p}.`);if(!a)throw new Error(`${p} is in the store ${s.store}, which this realm did not open.`);return a};return{entries:r,read:p=>y(p).read(d(p)),readRange:(p,b,S)=>y(p).readRange(d(p),b,S),readsByRange:()=>!0,...i}}if(!s.bytes)throw new Error("A shared layer holds neither its bytes nor a store of them.");const o=new Uint8Array(s.bytes);return{entries:r,read(a){const c=r.get(a);if(!c||c.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);return o.slice(c.offset,c.offset+c.length)},view(a){const c=r.get(a);if(!c||c.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);return o.subarray(c.offset,c.offset+c.length)},readRange(a,c,f){const d=r.get(a);if(!d||d.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);const y=Math.min(Math.max(0,c),d.length);return o.slice(d.offset+y,d.offset+Math.min(d.length,y+Math.max(0,f)))},childrenOf:a=>[...n.get(ur(a))??[]].sort(),descendants(a){const c=[],f=d=>{const y=r.get(d);y&&c.push([d,y]);for(const p of n.get(ur(d))??[])f(`${ur(d)}/${p}`)};return f(a),c}}}function wc(s){if(s.length===1)return s[0];const e=(o,a)=>{if(o===0)return!1;for(let c=xi(a);;c=xi(c)){for(let f=0;f<o;f+=1){const d=s[f].entries.get(c);if(d&&d.type!=="directory")return!0}if(c==="/")return!1}},t=o=>{for(let a=0;a<s.length;a+=1)if(s[a].entries.has(o)&&!e(a,o))return a;return-1},r=o=>s[t(o)],n={get:o=>r(o)?.entries.get(o),has:o=>t(o)>=0,get size(){let o=0;for(const a of n)o+=1;return o},*[Symbol.iterator](){const o=new Set;for(let a=0;a<s.length;a+=1)for(const[c,f]of s[a].entries)o.has(c)||t(c)!==a||(o.add(c),yield[c,f])},*entries(){yield*n[Symbol.iterator]()},*keys(){for(const[o]of n)yield o},*values(){for(const[,o]of n)yield o},forEach(o){for(const[a,c]of n)o(c,a,n)}},i=o=>{const a=r(o)?.entries.get(o);return a&&a.type!=="directory"?[]:s.filter((c,f)=>{const d=c.entries.get(o);return(!d||d.type==="directory")&&!e(f,o)})};return{entries:n,read:o=>{const a=r(o);if(!a)throw new Error(`No lower tree holds ${o}.`);return a.read(o)},view:o=>{const a=r(o);if(!a)throw new Error(`No lower tree holds ${o}.`);return a.view?a.view(o):a.read(o)},readRange:(o,a,c)=>{const f=r(o);if(!f)throw new Error(`No lower tree holds ${o}.`);if(f.readRange)return f.readRange(o,a,c);const d=f.read(o),y=Math.min(Math.max(0,a),d.byteLength);return d.slice(y,Math.min(d.byteLength,y+Math.max(0,c)))},readsByRange:o=>r(o)?.readsByRange?.(o)??!1,childrenOf:o=>[...new Set(i(o).flatMap(a=>a.childrenOf(o)))].sort(),descendants:o=>{const a=[],c=new Set;for(const d of s)for(const[y]of d.descendants(o)){if(c.has(y))continue;c.add(y);const p=n.get(y);p&&a.push([y,p])}const f=a.findIndex(([d])=>d===o);return f>0&&a.unshift(...a.splice(f,1)),a}}}function Pi(s,e,t){const r=[...s?[s]:[],...(e??[]).map(n=>yc(n,t))];return r.length===0?void 0:wc(r)}const pc="supercode-browser-filesystems",Bt="packages",gc="state.json",Ri="/image-range-worker.js",vi="image-ranges.json",Sc=2;function as(s){const e=s;if(!e||e.version!==1||!Number.isSafeInteger(e.bytes)||e.bytes<0||!Array.isArray(e.parts)||e.image!==void 0&&(typeof e.image!="string"||!/^[a-f0-9]{16,64}$/u.test(e.image))||e.parts.length>1e5)throw new Error("Invalid immutable image ranges.");let t=0;for(const r of e.parts){if(!r||r.offset!==t||!Number.isSafeInteger(r.raw)||r.raw<0||!Number.isSafeInteger(r.bytes)||r.bytes<0||r.bytes>1024*1024*1024||r.raw>1024*1024*1024||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/u.test(r.sha256)||typeof r.url!="string"||!/^\/substrate\/[A-Za-z0-9._/-]+$/u.test(r.url)||r.url.split("/").some(n=>n==="."||n===".."))throw new Error("Invalid immutable image part.");if(t+=r.raw,!Number.isSafeInteger(t))throw new Error("Immutable image ranges exceed the offset limit.")}if(t!==e.bytes)throw new Error("Immutable image ranges do not cover their reservation.");return e}const Ti=new Map;class bc{ranges;directory;identity;receiptKey;client;worker;port;prefetchers=[];state;completed;firstRead;closed=!1;ready=!1;startup;cancelStartup;sharedCompletion;constructor(e,t,r,n,i,o){if(this.ranges=e,this.directory=t,this.identity=r,this.receiptKey=i,this.client=o,typeof Worker>"u"||typeof SharedArrayBuffer>"u")throw new Error("This browser cannot materialize an immutable image during a synchronous read.");if(this.state=new Int32Array(o?.state??new SharedArrayBuffer(e.parts.length*Int32Array.BYTES_PER_ELEMENT)),this.state.length!==e.parts.length)throw new Error("The image reader's line has the wrong range count.");const a=e.parts.length,c=n??new SharedArrayBuffer((2*a+1)*Int32Array.BYTES_PER_ELEMENT);if(c.byteLength!==a*Int32Array.BYTES_PER_ELEMENT&&c.byteLength!==(2*a+1)*Int32Array.BYTES_PER_ELEMENT)throw new Error("The image completion seed has the wrong range count.");this.completed=new Int32Array(c,0,a),this.firstRead=c.byteLength>a*Int32Array.BYTES_PER_ELEMENT?new Int32Array(c,a*Int32Array.BYTES_PER_ELEMENT,a+1):void 0,this.sharedCompletion=n!==void 0;for(const f of e.parts)Object.freeze(f);Object.freeze(e.parts),Object.freeze(e)}get completionBuffer(){return this.completed.buffer}get verifiedRanges(){return this.ranges}async initialize(){if(this.closed)throw new Error("This immutable image reader is closed.");if(this.ready)return;if(this.startup)return this.startup;let e=!1;for(let t=0;t<this.completed.length;t+=1)if(Atomics.load(this.completed,t)!==2){e=!0;break}if(!e){this.ready=!0,this.client?.port.close();return}if(this.client){const t=this.port=this.client.port;t.onmessage=r=>{r.data?.type!=="closing"||this.port!==t||(t.close(),this.port=void 0,this.closed||this.startMaterializer().catch(n=>console.warn("This process's image reader could not start its own materializer after its line closed.",n)))},t.start(),this.ready=!0;return}return this.startMaterializer()}startMaterializer(){const e=Date.now(),t=new Worker(Ri,{type:"module",name:"immutable-image-materializer"}),r=this.ready;return r||(this.worker=t),t.addEventListener("error",()=>this.fail()),t.addEventListener("messageerror",()=>this.fail()),this.startup=new Promise((n,i)=>{const o=()=>{clearTimeout(d),t.removeEventListener("message",f),t.removeEventListener("error",a),t.removeEventListener("messageerror",a),this.cancelStartup=void 0},a=()=>c(new Error("The immutable image materializer could not initialize; reload to retry.")),c=y=>{o(),t.terminate(),r||(this.closed=!0,this.fail()),i(y)},f=y=>{if(y.data?.identity===this.identity){if(y.data.type==="init-error"){c(new Error(`The immutable image materializer could not initialize: ${String(y.data.error)}`));return}y.data.type==="ready"&&(console.log(`[boot-trace] ${JSON.stringify({event:"materializer-ready",at:Date.now(),ms:Date.now()-e})}`),o(),this.ready=!0,this.worker=t,n())}},d=setTimeout(()=>c(new Error("The immutable image materializer did not initialize within 10 seconds; reload to retry.")),1e4);this.cancelStartup=c,t.addEventListener("message",f),t.addEventListener("error",a),t.addEventListener("messageerror",a);try{t.postMessage({type:"init",ranges:this.ranges,directory:this.directory,identity:this.identity,state:this.state.buffer,completed:this.completed.buffer,sharedCompletion:this.sharedCompletion,...this.receiptKey?{receiptKey:this.receiptKey}:{}})}catch(y){c(y instanceof Error?y:new Error(String(y)))}}),this.startup}readDigests(){const e=this.firstRead;if(!e)return;const t=this.ranges.parts.length,r=[];for(let n=0;n<t;n+=1){const i=Atomics.load(e,n),o=this.ranges.parts[n];i>0&&o.raw>0&&r.push([i,o.sha256])}return r.sort((n,i)=>n[0]-i[0]).map(([,n])=>n)}completedDigests(){const e=[];for(let t=0;t<this.completed.length;t+=1){const r=this.ranges.parts[t];r.raw>0&&Atomics.load(this.completed,t)===2&&e.push(r.sha256)}return e}prefetch(e,t=[]){if(this.closed||!this.ready||!this.worker)return{queued:0,done:Promise.resolve()};const r=new Map;for(let a=0;a<this.ranges.parts.length;a+=1){const c=this.ranges.parts[a];if(c.raw===0)continue;const f=r.get(c.sha256);f?f.push(a):r.set(c.sha256,[a])}const n=[];for(const a of new Set(e))for(const c of r.get(a)??[])Atomics.load(this.completed,c)!==2&&n.push(c);const i=t.length>0&&n.length>0?Math.min(t.length,8):Math.min(Sc,Math.ceil(n.length/32)),o=[];for(let a=0;a<i;a+=1){const c=n.filter((p,b)=>b%i===a),f=new Worker(Ri,{type:"module",name:"immutable-image-prefetch"});this.prefetchers.push(f);let d;o.push(new Promise(p=>{d=p}));const y=()=>{f.terminate(),this.prefetchers=this.prefetchers.filter(p=>p!==f),d()};f.addEventListener("error",y),f.addEventListener("messageerror",y),f.addEventListener("message",p=>{p.data?.identity===this.identity&&(p.data.type==="ready"?f.postMessage(t.length>0?{type:"prefetch-stream",url:t[a]}:{type:"prefetch",indices:c}):(p.data.type==="prefetched"||p.data.type==="init-error")&&y())}),f.postMessage({type:"init",ranges:this.ranges,directory:this.directory,identity:this.identity,state:new SharedArrayBuffer(this.state.byteLength),completed:this.completed.buffer,sharedCompletion:!0,...this.receiptKey?{receiptKey:this.receiptKey}:{}})}return{queued:n.length,done:Promise.all(o).then(()=>{})}}ensure(e,t){if(this.closed)throw new Error("This immutable image reader is closed.");if(!this.ready)throw new Error("This immutable image reader has not finished asynchronous initialization.");if(t===0||e>=this.ranges.bytes)return;const r=Math.min(e+t,this.ranges.bytes);let n=0,i=this.ranges.parts.length;for(;n<i;){const o=n+i>>>1,a=this.ranges.parts[o];a.offset+a.raw<=e?n=o+1:i=o}for(let o=n;o<this.ranges.parts.length;o+=1){const a=this.ranges.parts[o];if(a.offset>=r)break;const c=this.firstRead;if(c&&Atomics.load(c,o)===0&&Atomics.compareExchange(c,o,0,Atomics.add(c,this.ranges.parts.length,1)+1),Atomics.load(this.completed,o)===2)continue;const f=this.worker??this.port;if(!f)throw new Error("This immutable image reader's line closed and its own materializer is still starting; retry the read.");f.postMessage({type:"read",index:o});const d=performance.now(),y=d+3e4;for(;Atomics.load(this.state,o)===0;){const S=y-performance.now();if(S<=0||Atomics.wait(this.state,o,0,S)==="timed-out")throw this.close(),new Error(`The image's immutable part ${a.url} did not arrive within 30 seconds; reload to retry.`)}const p=performance.now()-d,b=Ti.get(this.identity)??{ranges:0,ms:0};if(b.ranges+=1,b.ms+=p,Ti.set(this.identity,b),console.log(`[boot-trace] ${JSON.stringify({event:"image-blocked",at:Date.now(),reader:this.identity,index:o,range:a.sha256.slice(0,16),ms:Math.round(p)})}`),Atomics.load(this.state,o)!==2)throw new Error(`The image's immutable part ${a.url} could not be verified or stored; see the worker error and reload to retry.`)}}lineForReader(){const e=this.worker??this.port;if(this.closed||!this.ready||!e)return;const t=new MessageChannel,r=new SharedArrayBuffer(this.ranges.parts.length*Int32Array.BYTES_PER_ELEMENT);return e.postMessage({type:"client",port:t.port1,state:r},[t.port1]),{port:t.port2,state:r}}fail(){for(let e=0;e<this.state.length;e+=1)Atomics.compareExchange(this.state,e,0,-1)===0&&Atomics.notify(this.state,e)}close(){if(this.closed)return;if(this.closed=!0,this.cancelStartup){this.cancelStartup(new Error("This immutable image reader closed during initialization."));return}this.fail(),this.port?.close();const e=this.worker;e&&(e.postMessage({type:"closing"}),setTimeout(()=>e.terminate(),250));for(const t of this.prefetchers)t.dispatchEvent(new Event("error"));this.prefetchers=[]}}const cs="/packages",Sn="supercode-browser-packages",Kt=new TextEncoder,mr=new TextDecoder("utf-8",{fatal:!0}),Ec=pc,bn="generations",Fi="atomic-staging",yr=gc,it="index.json",ls="index-log.bin",wr="pack.bin",En=8,Bi=64*1024*1024,We=1024*1024*1024,Oi=4*1024*1024*1024,Ac=16*1024*1024*1024,ia=["/workspace","/home","/opt"],Xt=0,Yi=1,fs=1e6,Di=8*1024*1024,Ci=250,_c=64*1024*1024,Nc=256*1024*1024,Ui=4*1024*1024,pr=493,An=420;function Ks(s,e={}){const t=e.limits?.maxBytes??Oi,r=e.limits?.maxEntries??fs;if(!Number.isSafeInteger(t)||t<1||t>Oi||!Number.isSafeInteger(r)||r<1||r>fs)throw new Error("Invalid OPFS workspace limits.");let n,i=!1,o=!1,a=!1,c,f=0,d=0,y,p,b,S=new Map,I=new _n,k,x,L,W,de,se,ie=0,D,v=0;const U=new Map,X=256*1024,Se=32;let O=0,fe,ue=-1/0,V=0,me=0,T=0,G=0,pe=0,ve=0,Oe=0,Ie,dt,Te,Ut=!1,ut,nn=Promise.resolve(),mt=0,K=!1,ke=!1,he,oe=0,He=!1;function et(){if(!(!he||He)){if(T>2147483647){ne();return}Atomics.store(he,Yi,T)}}function ne(){!he||He||(He=!0,(Atomics.load(he,Xt)&1)===0&&Atomics.add(he,Xt,1))}function Ye(){oe+=1,oe===1&&he&&!He&&Atomics.add(he,Xt,1)}function Me(){oe-=1,!(oe>0||!he||He)&&(et(),He||Atomics.add(he,Xt,1))}function tt(){if(o)throw new Error("A store open for reading follows its owner's clock; it has none of its own.");return he||(he=new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT)),he[Xt]=oe>0||He?1:0,et()),he.buffer}let be;const sn=8*1024*1024;let xr=!1;function on(l){if(o||!he||!b||Ut||oe>0||He||K)return;const h=Atomics.load(he,Xt);if(h&1)return;if(l?.overlays&&S instanceof qt){const w=S.boundedChanges();if(w)return Ee({generation:b,index:S.base.buffer,changes:w,packBytes:O,logBytes:T,epoch:h,liveBytes:G,linked:f,linkedBytes:d})}if(be&&be.generation===b&&be.epoch===h&&T>=be.logBytes&&T-be.logBytes<=(l?.current?0:sn))return Ee(be);let u;try{u=Mi(S,qn())}catch(w){console.warn(`[pack-store] no reader seed: ${w instanceof Error?w.message:String(w)}`);return}return be={generation:b,index:u,packBytes:O,logBytes:T,epoch:h,liveBytes:G,linked:f,linkedBytes:d},Qn(u),Ee(be)}function Ee(l){const h=e.packages?.imageCompletionSeed();return h?{...l,packagesImage:h}:l}function nr(){if(!(!L||!x||!b||Ut||oe>0||K))return{generation:b,rangesDigest:x,completed:L.completionBuffer,...L.receiptKey?{metadata:{ranges:L.verifiedRanges,receiptKey:L.receiptKey}}:{}}}function Qn(l){const h=[];if(S instanceof qt)for(const[w,m]of S.changed())m.capacity!==void 0&&h.push([w,m]);else for(const[w,m]of S)m.capacity!==void 0&&h.push([w,m]);const u=new Ft(l);S=new qt(u),I=new jr(u);for(const[w,m]of h)S.set(w,m)}function qn(){if(I instanceof _n)return I.map;const l=new Map;for(const h of S.keys()){const u=Gt(h);if(u===h)continue;let w=l.get(u);w||(w=new Set,l.set(u,w)),w.add(h.slice(u.length+1))}return l}function an(){!o||a||K||!D||wt(T)}async function sr(l){if(K)throw new Error("This OPFS workspace is closing.");mt+=1;let h,u=!1;try{return await l()}catch(w){throw u=!0,h=w,w}finally{if(mt-=1,K&&mt===0)try{Ni()}catch(w){throw u?new AggregateError([h,w],"OPFS operation and deferred close both failed."):w}}}async function Wt(l){return nt(),mt!==0?Promise.reject(new Error("Wait for the current OPFS storage operation before replacing its generation.")):(ke=!0,sr(async()=>{try{return await l()}finally{ke=!1}}))}function cn(l){if(K)throw new Error("This OPFS workspace is closing.");const h=S.get(l);if(!h||h.type==="directory")throw new Error(`OPFS workspace file does not exist: ${l}`);return zt(h)}function $t(l,h,u){if(K)throw new Error("This OPFS workspace is closing.");const w=S.get(l);if(!w||w.type==="directory")throw new Error(`OPFS workspace file does not exist: ${l}`);const m=Math.min(Math.max(0,h),w.length),E=Math.min(Math.max(0,u),w.length-m);if(w.pack){const A=e.packages;if(!A)throw new Error("This store has no shared package store to read from.");return A.readExtent(w.offset+m,E)}return De(w.offset+m,E)}function zt(l){if(l.pack){const h=e.packages;if(!h)throw new Error("This store has no shared package store to read from.");return h.readExtent(l.offset,l.length)}return De(l.offset,l.length)}function De(l,h){if(K)throw new Error("This OPFS workspace is closing.");const u=k;if(!u)throw new Error("OPFS filesystem worker is not initialized.");const w=new Uint8Array(h);if(h>0&&h<=X&&l>=0&&l+h<=v){let m=0;for(;m<h;){const E=l+m,A=Math.floor(E/X)*X;let _=U.get(A);if(!_&&(_=new Uint8Array(Math.min(X,v-A)),L?.ensure(A,_.byteLength),u.read(_,{at:A})!==_.byteLength))throw new Error("An OPFS package range could not be read completely.");U.delete(A),U.set(A,_),U.size>Se&&U.delete(U.keys().next().value);const M=E-A,R=Math.min(h-m,_.byteLength-M);w.set(_.subarray(M,M+R),m),m+=R}return w}if(L?.ensure(l,h),h>0&&u.read(w,{at:l})!==h)throw new Error("An OPFS workspace file could not be read completely.");return w}async function ir(l,h={}){if(K&&n||!n&&mt!==0)throw new Error("Wait for this OPFS workspace to finish closing before opening it again.");if(Ut)throw new Error("This OPFS store is already opening a workspace.");if(n){if(p!==fn(l))throw new Error("Close this OPFS store before opening another workspace.");return S.size>0}Ut=!0,K=!1;const u=new AbortController;ut=u;try{S=new Map,I=new _n,b=void 0,x=void 0,c=void 0,Ie=void 0,Te=void 0,O=T=G=pe=f=d=0,Ce=void 0,ve=Oe=V=me=0,ue=-1/0,p=fn(l),o=h.readOnly===!0,de=o?h.imageCompletion:void 0,se=o?h.imageLine:void 0,a=o&&h.extentsOnly===!0,i=h.shared===!0||o,i||await ts(u.signal),u.signal.throwIfAborted();const w=await es();u.signal.throwIfAborted();try{const A=await w.getDirectoryHandle(Ec,{create:!o});u.signal.throwIfAborted(),n=await A.getDirectoryHandle(p,{create:!o})}catch(A){if(u.signal.throwIfAborted(),o&&dr(A))return!1;throw A}u.signal.throwIfAborted();let m=pn(await Vt(n,yr));if(u.signal.throwIfAborted(),!m&&o)return await Rr(),!1;if(!m&&i&&(await s.navigator.locks.request(Sn,{mode:"exclusive",signal:u.signal},async()=>{u.signal.throwIfAborted(),m=pn(await Vt(n,yr)),u.signal.throwIfAborted(),m||(await Rr(),await hi({files:[],pack:new ArrayBuffer(0)}),await Mc(n))}),u.signal.throwIfAborted(),!m))return c=await Ae(b,!1),u.signal.throwIfAborted(),!1;if(!m)return await Rr(),u.signal.throwIfAborted(),!1;const E=async A=>{let _;try{_=await Ae(A.generation,!1)}catch(B){throw u.signal.throwIfAborted(),dr(B)?new Error("The committed OPFS workspace generation is missing. Stored generations were retained.",{cause:B}):B}if(u.signal.throwIfAborted(),b=A.generation,ie=A.initializedAt,x=A.imageRanges,c=_,a)return p===Bt&&s.navigator.locks?await s.navigator.locks.request(Sn,{mode:"shared",signal:u.signal},async()=>{await rt(_),v=k.getSize()}):await rt(_),u.signal.throwIfAborted(),!0;const M=o?h.seed:void 0;if(M&&M.generation===A.generation){const B=new Ft(M.index);return S=new qt(B),I=new jr(B),O=M.packBytes,M.changes&&Lr({packBytes:M.packBytes,changes:M.changes}),await rt(_),u.signal.throwIfAborted(),T=M.logBytes,{liveBytes:G,linked:f,linkedBytes:d}=M,pe=Math.max(0,O-G),xr=!0,S.size>0}const R=o?void 0:await tc(_);if(u.signal.throwIfAborted(),R){const B=new Ft(R.index);S=new qt(B),I=new jr(B),{packBytes:O,liveBytes:G,linked:f,linkedBytes:d}=R;const F=Atomics.load(new Int32Array(tt()),Xt);be={generation:b,index:R.index,packBytes:O,liveBytes:G,linked:f,linkedBytes:d,logBytes:0,epoch:F}}else S=ss(await Vt(_,it)),u.signal.throwIfAborted(),ae(),O=Ht(S);await rt(_),u.signal.throwIfAborted();const C=R?await rc(R):0;return u.signal.throwIfAborted(),C&&(Ce={generation:b,bytes:C},be&&(be.logBytes=C)),wt(C,!!R),R?pe=Math.max(0,O-G):Ge(),gt(),i&&!o&&!R&&S.size>=1e4&&(Pt(),await Tr(_,S,{access:D,bytes:T,packBytes:O})),i||(k.truncate(O),await yi(n,Fi,!0),await ar(b),u.signal.throwIfAborted(),pe>_c&&pe>G&&await Va()),u.signal.throwIfAborted(),S.size>0};return i&&!o?await s.navigator.locks.request(Sn,{mode:"exclusive",signal:u.signal},async()=>{if(m=pn(await Vt(n,yr)),!m)throw new Error("The committed package store state is missing. Stored data was retained.");return E(m)}):await E(m)}catch(w){const m=[w];try{Ve()}catch(E){m.push(E)}try{y?.()}catch(E){m.push(E)}throw y=void 0,n=void 0,m.length>1?new AggregateError(m,"OPFS workspace open and cleanup failed."):w}finally{Ut=!1,ut=void 0}}function or(l){return sr(()=>yt(l?.whole===!0))}async function yt(l=!1){if(a)throw new Error("A store opened for its extents alone has no index to follow.");if(o&&n){const E=pn(await Vt(n,yr));if(!E)throw new Error("The committed OPFS workspace state is missing. Stored data was retained.");if(E.generation!==b||l){const A=await Ae(E.generation,!1),_=ss(await Vt(A,it));O=Ht(_),E.generation!==b&&(b=E.generation,ie=E.initializedAt,x=E.imageRanges,await rt(A)),b=E.generation,c=A,S=_,ae(),wt(),Ge();return}}const h=D;if(!h||!c)return;const u=h.getSize();let w=!1;u<T&&(S=ss(await Vt(c,it)),ae(),O=Ht(S),T=0,w=!0);const m=T;wt(T),(w||T!==m)&&Ge()}async function es(){let l;for(let h=0;h<10;h+=1){ut?.signal.throwIfAborted();try{return await s.navigator.storage.getDirectory()}catch(u){l=u,await new Promise(w=>setTimeout(w,200))}}throw l instanceof Error?l:new Error("This browser workspace's storage is unavailable.")}const ln=1e4;async function ee(l,h){let u;const w=ut?.signal;for(let E=0;E<2;E+=1){w?.throwIfAborted();const A=l.createSyncAccessHandle({mode:"readwrite-unsafe"});let _,M,R=!1;try{const C=new Promise((F,re)=>{M=()=>re(w?.reason??new DOMException("Workspace open was cancelled.","AbortError")),w?.addEventListener("abort",M,{once:!0}),w?.aborted&&M()}),B=await Promise.race([A.then(F=>({access:F})).catch(F=>{u=F}),new Promise(F=>{_=setTimeout(()=>F(void 0),ln)}),C]);if(w?.throwIfAborted(),B)return R=!0,B.access}finally{_!==void 0&&clearTimeout(_),M&&w?.removeEventListener("abort",M),R||A.then(C=>C.close(),()=>{}).catch(C=>console.error("Late workspace handle cleanup failed.",C))}if(u instanceof TypeError)throw new Error(`This browser cannot share a workspace's files between pages: its file access handles have no readwrite-unsafe mode (Chrome 121 or newer has one). ${u.message}`);await new Promise(C=>setTimeout(C,500))}const m=u instanceof Error?` (${u.message})`:"";throw new Error(`This browser workspace's ${h} is held by another page${m}.`)}async function rt(l){Ve();const h=await l.getFileHandle(wr);k=await ee(h,"store");try{if(k.getSize()<O)throw new Error("The committed OPFS workspace pack is incomplete. Stored data was retained.");const u=await l.getFileHandle(ls);if(D=await ee(u,"record of changes"),T=D.getSize(),x){const w=de,m=w&&w.generation===b&&w.rangesDigest===x?w:void 0;let E,A;if(m?.metadata){if(E=as(m.metadata.ranges),A=m.metadata.receiptKey,!/^[a-f0-9]{64}$/u.test(A))throw new Error("The owner's immutable receipt key is invalid.")}else{const M=await(await l.getFileHandle(vi)).getFile(),R=new Uint8Array(await M.arrayBuffer());if(await St(R)!==x)throw new Error("The committed immutable image ranges have changed. Stored data was retained.");E=as(JSON.parse(mr.decode(R))),A=await St(Kt.encode(JSON.stringify(E)))}if(E.bytes>k.getSize())throw new Error("The immutable image reservation is incomplete. Stored data was retained.");const _=m?se:void 0;_||se?.port.close(),se=void 0,L=new bc(E,l,`${p}.${b}`,m?.completed,A,_),console.log(`[boot-trace] ${JSON.stringify({event:"image-reader-open",at:Date.now(),reader:`${p}.${b}`,offered:w!==void 0,shared:m!==void 0,...w&&!m?{offeredGeneration:w.generation,generation:b,rangesMatch:w.rangesDigest===x}:{}})}`),await L.initialize(),W=E.image}}catch(u){throw Ve(),u}}function Ve(){L?.close(),L=void 0,W=void 0;const l=k,h=D;k=void 0,D=void 0,T=0,v=0,U.clear();try{l?.close()}finally{h?.close()}}function wt(l=0,h=!1){const u=D;if(!u)throw new Error("OPFS filesystem worker is not initialized.");const w=u.getSize();if(w<=l){T=w;return}const m=new Uint8Array(w-l);if(u.read(m,{at:l})!==m.byteLength)throw new Error("The OPFS workspace index log could not be read.");const E=k?.getSize()??1/0,A=new DataView(m.buffer);let _=0;const M=m.byteLength;for(;_+En<=M;){const R=A.getUint32(_,!0),C=A.getUint32(_+4,!0),B=_+En;if(R===0||R>Bi||B+R>M)break;const F=m.subarray(B,B+R);if(Ei(F)!==C)break;let re;try{re=ic(JSON.parse(mr.decode(F)))}catch{break}if(re.packBytes>E)break;Lr(re,h),_=B+R}_!==M&&!i&&u.truncate(l+_),T=l+_}function Lr(l,h=!1){for(const[u,w]of l.changes){const m=S.get(u);if(w&&sa(m,w)){te(u);continue}h&&(m?.pack?(f-=1,d-=m.length):m&&(G-=m.length),w?.pack?(f+=1,d+=w.length):w&&(G+=w.length)),w===null?(S.delete(u),ye(u)):(S.set(u,w),te(u))}O=Math.max(O,l.packBytes)}function Ge(){G=0,f=0,d=0;for(const l of S.values())l.pack?(f+=1,d+=l.length):G+=l.length;pe=Math.max(0,O-G)}function Ht(l){let h=0;for(const u of l.values())u.pack||(h=Math.max(h,u.offset+u.length));return h}const Pr=5e3;async function ts(l){if(!s.navigator.locks)return;if(!p)throw new Error("OPFS filesystem project is not initialized.");const h=new AbortController,u=setTimeout(()=>h.abort(),Pr);try{await new Promise((w,m)=>{s.navigator.locks.request(`supercode-browser-filesystem-${p}`,{mode:"exclusive",signal:l?AbortSignal.any([l,h.signal]):h.signal},async()=>{clearTimeout(u),w(),await new Promise(E=>{y=E})}).catch(()=>m(l?.aborted?l.reason:new Error("This browser workspace is already open in another tab.")))})}finally{clearTimeout(u)}}function fn(l){if(typeof l!="string"||!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/u.test(l))throw new Error("OPFS filesystem projectId is invalid.");return l}async function Nt(){if(!n)throw new Error("OPFS filesystem worker is not initialized.");return n}async function Ae(l,h){return(await(await Nt()).getDirectoryHandle(bn,{create:h})).getDirectoryHandle(l,{create:h})}async function Rr(){let l;try{l=await(await Nt()).getDirectoryHandle(bn)}catch(h){if(dr(h))return;throw h}for await(const h of l.entries())throw new Error("OPFS workspace state is missing but stored generations exist. Stored data was retained.")}async function ar(l){const h=await Nt();let u;try{u=await h.getDirectoryHandle(bn)}catch(w){if(dr(w))return;throw w}for await(const[w]of u.entries())w!==l&&await wi(u,w)}function nt(){if(K)throw new Error("This OPFS workspace is closing.");if(ke)throw new Error("This OPFS workspace is replacing its generation; wait for that operation before writing.");if(o)throw new Error("This store is open for reading; its owner writes it.");if(Te)throw Te}async function hn(l){Ai(l)}let cr=!1,It=0,Ce,g=!1;function N(){if(It>0)return;const l=Ce&&Ce.generation===b&&Ce.bytes<=T?Ce.bytes:0;T-l>Di&&!cr&&(cr=!0,(i?s.navigator.locks.request(Sn,{mode:"exclusive"},async()=>{if(!n||K)return;await yt();const u=Ce,w=u&&u.generation===b&&u.bytes<=T?u.bytes:0;T-w>Di&&await un()}):un()).catch(u=>console.error("The workspace's log could not be checkpointed; it is replayed at the next open.",u)).finally(()=>{cr=!1})),!i&&!g&&pe>Nc&&pe>G&&(g=!0,sr(Ga).catch(h=>console.error("The workspace could not be compacted; it keeps its generation.",h)).finally(()=>{g=!1}))}async function P(l){nt(),It+=1;try{return await l()}finally{It-=1,It===0&&!K&&n&&N()}}function $(l,h){const u=bt(l.path);if(l.operation==="write"){if(S.get(u)?.type==="directory")throw new Error(`OPFS write target is a directory: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS write requires file content.");const m=l.content;if(m.byteLength>We)throw new Error(`${u} is ${m.byteLength} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,m.byteLength),_e(u,h);const E=dn(m);z(u,{type:l.symlink?"symlink":"file",mode:l.mode??S.get(u)?.mode??An,mtimeMs:l.mtimeMs??Date.now(),offset:E,length:m.byteLength},h);return}if(l.operation==="append"){const m=S.get(u);if(m&&m.type!=="file")throw new Error(`OPFS append target is not a file: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS append requires file content.");const E=l.content,A=(m?.length??0)+E.byteLength;if(A>We)throw new Error(`${u} is ${A} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,A),_e(u,h);const _=l.mode??m?.mode??An,M=l.mtimeMs??Date.now(),R=m&&!m.pack?m.capacity??m.length:0;if(p!==Bt&&m&&!m.pack&&m.length>0&&(A<=R||m.offset+R===O)){Lt(m.offset+m.length,E),z(u,{...m,mode:_,mtimeMs:M,length:A,capacity:Math.max(R,A)},h),pe-=Math.max(m.length,m.capacity??0),ve-=1,Oe-=m.length;return}const C=new Uint8Array(A);m&&m.length>0&&C.set(zt(m),0),C.set(E,A-E.byteLength);const B=dn(C),F=Math.min(We,Math.max(A,A*2,64*1024));F>A&&fi(B+F),z(u,{type:"file",mode:_,mtimeMs:M,offset:B,length:A,capacity:F},h);return}if(l.operation==="write-at"){const m=S.get(u);if(m&&m.type!=="file")throw new Error(`OPFS write target is not a file: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS write requires file content.");const E=l.content,A=l.position,_=m?.length??0;if(E.byteLength===0&&m)return;const M=E.byteLength===0?_:Math.max(_,A+E.byteLength);if(M>We)throw new Error(`${u} is ${M} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,M),_e(u,h);const R=l.mode??m?.mode??An,C=l.mtimeMs??Date.now(),B=m&&!m.pack?m.capacity??m.length:0;if(p!==Bt&&m&&!m.pack&&_>0&&(M<=B||m.offset+B===O)){if(A>_&&Lt(m.offset+_,new Uint8Array(A-_)),dt&&A<_){const Ue=Math.min(_,A+E.byteLength);dt.push([m.offset+A,De(m.offset+A,Ue-A)])}Lt(m.offset+A,E),z(u,{...m,mode:R,mtimeMs:C,length:M,capacity:Math.max(B,M)},h),M!==_&&(pe-=Math.max(m.length,m.capacity??0),ve-=1,Oe-=m.length);return}const F=new Uint8Array(M);m&&_>0&&F.set(zt(m),0),E.byteLength>0&&F.set(E,A);const re=dn(F),ce=Math.min(We,Math.max(M,M*2,64*1024));ce>M&&fi(re+ce),z(u,{type:"file",mode:R,mtimeMs:C,offset:re,length:M,capacity:ce},h);return}if(l.operation==="mkdir"){_e(u,h);const m=S.get(u);if(m&&m.type!=="directory")throw new Error(`OPFS path is a file: ${u}`);z(u,{type:"directory",mode:l.mode??m?.mode??pr,mtimeMs:l.mtimeMs??m?.mtimeMs??Date.now(),offset:0,length:0},h);return}if(l.operation==="remove"){lr(u,h),Fe().includes(u)&&z(u,{type:"directory",mode:pr,mtimeMs:Date.now(),offset:0,length:0},h);return}if(l.operation==="link"){xt(u,hr(l.source),h);return}if(l.operation==="rename"){fr(u,bt(l.destination),h);return}const w=S.get(u);if(!w)throw new Error(`OPFS metadata target does not exist: ${u}`);z(u,{...w,mode:l.mode??w.mode,mtimeMs:l.mtimeMs??w.mtimeMs},h)}function z(l,h,u){const w=S.get(l);Ie&&!Ie.has(l)&&Ie.set(l,w);const m=w!==void 0&&w.type===h.type&&w.offset===h.offset&&w.length===h.length&&w.pack===h.pack;w&&!m&&(kt(w),w.type!=="directory"&&h.type!=="directory"&&w.length>0&&!w.pack&&(ve+=1,Oe+=w.length)),S.set(l,h),te(l),m||(h.pack?(f+=1,d+=h.length):G+=h.length),u.push([l,h])}function te(l){const h=Gt(l);h!==l&&I.mutable(h).add(l.slice(h.length+1))}function ye(l){const h=Gt(l);I.get(h)?.has(l.slice(h.length+1))&&I.mutable(h).delete(l.slice(h.length+1)),I.delete(l)}function ae(){I=new _n;for(const l of S.keys())te(l)}function xe(l){const h=[],u=w=>{const m=S.get(w);if(!m)return;h.push([w,m]);const E=I.get(w);if(E)for(const A of E)u(`${w}/${A}`)};return u(l),h}function kt(l,h){if(l.pack){f-=1,d-=l.length;return}G-=l.length,pe+=Math.max(l.length,l.capacity??0)}function Mt(l,h){const u=S.get(l);u&&(Ie&&!Ie.has(l)&&Ie.set(l,u),S.delete(l),ye(l),kt(u),h.push([l,null]))}function xt(l,h,u){const w=e.packages;if(!w)throw new Error("This store has no shared package store to link from.");const m=hr(h),E=w.descendants(m);if(E.length===0)throw new Error(`The shared package store does not hold ${h}.`);_e(l,u),lr(l,u),Le(S.size+E.length);for(const[A,_]of E){const M=A===m?l:`${l}${A.slice(m.length)}`;z(M,_.type==="directory"?{type:"directory",mode:_.mode,mtimeMs:_.mtimeMs,offset:0,length:0}:{type:_.type,mode:_.mode,mtimeMs:_.mtimeMs,offset:_.offset,length:_.length,pack:Bt},u)}}function _e(l,h){const u=Gt(l);if(u!==l&&S.get(u)?.type==="directory"){Le(S.size+(S.has(l)?0:1));return}const w=[];let m=st(l)??Fe()[0];if(S.has(m)||w.push(m),l!==m)for(const A of is(Si(Gt(l)))){m=`${m}/${A}`;const _=S.get(m);if(_&&_.type!=="directory")throw new Error(`OPFS path parent is a file: ${m}`);_||w.push(m)}Le(S.size+w.length+(S.has(l)?0:1));const E=Date.now();for(const A of w)z(A,{type:"directory",mode:pr,mtimeMs:E,offset:0,length:0},h)}function lr(l,h){for(const[u]of xe(l))Mt(u,h)}function fr(l,h,u){if(l===h)return;if(h.startsWith(`${l}/`))throw new Error("An OPFS rename cannot move a directory into itself.");const w=xe(l);if(w.length===0){if(S.has(h))return;throw new Error(`OPFS rename source does not exist: ${l}`)}_e(h,u),lr(h,u);for(const[m]of w)Mt(m,u);for(const[m,E]of w)z(`${h}${m.slice(l.length)}`,E,u);Le(S.size)}function hr(l){if(typeof l!="string"||!l.startsWith(`${cs}/`)||l.includes("\0")||l.length>4096)throw new Error("Invalid shared store path.");return is(l.slice(cs.length+1)),l}function Fe(){return p===Bt?[cs]:ia}function st(l){return Fe().find(h=>l===h||l.startsWith(`${h}/`))}function pt(l,h){const u=S.get(l),w=u&&!u.pack?u.length:0,m=i?Ac:t;if(G-w+h>m){const E=i?"the origin's shared packages":"the project's own files";throw new Error(`OPFS workspace exceeds its byte limit: writing ${l} (${h} bytes) would take ${E} past ${m} bytes (${G} bytes held, ${w} replaced).`)}}function Le(l){if(l>r)throw new Error("OPFS workspace exceeds its entry limit.")}function gt(){if(Le(S.size),G>t)throw new Error(`OPFS workspace exceeds its byte limit: the project's own files hold ${G} bytes, past ${t}.`)}function Lt(l,h){const u=k;if(!u)throw new Error("OPFS filesystem worker is not initialized.");let w=0;for(;w<h.byteLength;){const m=u.write(h.subarray(w),{at:l+w});if(m<=0)throw new Error("An OPFS workspace file could not be written completely.");w+=m}O=Math.max(O,l+h.byteLength)}function fi(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");l<=O||(h.truncate(l),O=l)}function dn(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");const u=O;let w=0;for(;w<l.byteLength;){const m=h.write(l.subarray(w),{at:u+w});if(m<=0)throw new Error("An OPFS workspace file could not be written completely.");w+=m}return O=u+l.byteLength,u}function Wa(l){const h=k;if(h.getSize()>=O&&l.getSize()>=T)return;h.flush(),l.flush();const u=h.getSize(),w=l.getSize();if(!(u>=O&&w>=T))throw Object.assign(new Error(`This browser is keeping less than the tab wrote (the store's pack holds ${u} of ${O} bytes, its log ${w} of ${T}): its storage is full, as a private window's is well below its quota.`),{name:"QuotaExceededError",code:"ENOSPC"})}function $a(l,h={}){const u=D;if(!u||!k)throw new Error("OPFS filesystem worker is not initialized.");if(l.length===0)return;const w=Kt.encode(JSON.stringify({packBytes:O,changes:l}));if(w.byteLength>Bi)throw new Error("An OPFS workspace index record exceeds its size limit.");const m=new Uint8Array(En+w.byteLength),E=new DataView(m.buffer);E.setUint32(0,w.byteLength,!0),E.setUint32(4,Ei(w),!0),m.set(w,En);let A=0;for(;A<m.byteLength;){const _=u.write(m.subarray(A),{at:T+A});if(_<=0)throw new Error("The OPFS workspace index log could not be written completely.");A+=_}T+=m.byteLength,Wa(u),h.publish!==!1&&et(),performance.now()-ue>=Ci?Pt():fe===void 0&&(fe=setTimeout(Pt,Ci))}function Pt(){if(fe!==void 0&&(clearTimeout(fe),fe=void 0),Te)throw Te;const l=performance.now();k?.flush(),D?.flush(),ue=performance.now(),V+=1,me+=ue-l}function un(){const l=nn,h=sr(()=>l.catch(()=>{}).then(za));return nn=h,h}async function za(){if(nt(),!b)return;const l=b,h=D,u=await Ae(l,!1);if(!h||h!==D||l!==b)throw new Error("OPFS workspace changed generations before its checkpoint could start.");Pt();const w=T;if(await Tr(u,S,{access:h,bytes:w,packBytes:O}),l===b&&(Ce={generation:l,bytes:w}),h===D&&l===b&&w===T){Ye();try{h.truncate(0),h.flush(),T=0,Ce={generation:l,bytes:0}}finally{Me()}}}function hi(l){return Wt(()=>Ha(rs(l)))}async function Ha(l){const h=crypto.randomUUID(),u=await Ae(h,!0),w=await u.getFileHandle(wr,{create:!0}),m=await ee(w,"store"),E=new Map;let A=0;try{for(const M of l.files){let R=0,C=0;if(M.type!=="directory"){const B=new Uint8Array(l.pack,M.offset??0,M.length??0);R=A,C=B.byteLength;let F=0;for(;F<C;){const re=m.write(B.subarray(F),{at:R+F});if(re<=0)throw new Error("An OPFS workspace file could not be written completely.");F+=re}A+=C}E.set(M.path,{type:M.type,mode:M.mode??(M.type==="directory"?pr:An),mtimeMs:M.mtimeMs??Date.now(),offset:R,length:C})}for(const M of Fe())E.has(M)||E.set(M,{type:"directory",mode:pr,mtimeMs:Date.now(),offset:0,length:0});Le(E.size),m.truncate(A),m.flush()}finally{m.close()}const _=await Tr(u,E);await mn(h,u,E,A,_)}async function Va(){await di(()=>!0)}async function Ga(){let l=!1,h=!1,u=!1;try{await ja(()=>{l=!0},()=>{h=!0},()=>{u=!0})}finally{l&&(h||u)?Me():l&&ne()}}async function ja(l,h,u){const w=crypto.randomUUID(),m=await Ae(w,!0),E=await ee(await m.getFileHandle(wr,{create:!0}),"store");let A,_=!1;try{A=await ee(await m.getFileHandle(ls,{create:!0}),"record of changes"),A.truncate(0);const M=new Uint8Array(Ui);let R=0;const C=Z=>{if(Z.pack)return{...Z};if(Z.type==="directory"||Z.length===0)return{...Z,offset:0,length:0};const Ne=k;if(!Ne)throw new Error("OPFS filesystem worker is not initialized.");const jt=R;let je=0;for(;je<Z.length;){const Fr=Math.min(M.byteLength,Z.length-je),Ii=M.subarray(0,Fr);if(L?.ensure(Z.offset+je,Fr),Ne.read(Ii,{at:Z.offset+je})!==Fr)throw new Error("An OPFS workspace file could not be read completely.");let gn=0;for(;gn<Fr;){const ki=E.write(Ii.subarray(gn),{at:jt+je+gn});if(ki<=0)throw new Error("An OPFS workspace file could not be written completely.");gn+=ki}je+=Fr}R+=Z.length;const{capacity:os,...cc}=Z;return{...cc,offset:jt}},B=new Map;let F=performance.now();for(const[Z,Ne]of[...S]){if(K||ke)return;S.get(Z)===Ne&&(B.set(Ne,C(Ne)),performance.now()-F>8&&(await new Promise(jt=>setTimeout(jt,0)),F=performance.now()))}if(K||ke||!k||!D)return;Ye(),l();const re=new Map;for(const[Z,Ne]of S)re.set(Z,B.get(Ne)??C(Ne));E.truncate(R),E.flush(),A.flush(),Pt();const ce={pack:k,log:D};k=E,D=A,T=0,S=re,ae(),O=R,b=w,c=m,Ge(),_=!0;const Ue=new Map(re);try{ce.pack.close()}finally{ce.log.close()}try{await Tr(m,Ue);const Z={storageVersion:4,generation:w,initializedAt:Date.now()};await vr(await Nt(),yr,Z)}catch(Z){throw Te=new Error("The workspace moved to a compacted generation it could not record; it takes no more writes, which its next open would discard.",{cause:Z}),Te}h(),await ar(w)}finally{if(!_){u();try{E.close()}finally{A?.close()}await wi(await(await Nt()).getDirectoryHandle(bn),w)}}}async function Ka(l){nt(),Ye();try{await Xa(l)}finally{Me()}}async function Xa(l){let h=!1;for(const[u,w]of S){if(!w.pack||w.length===0)continue;const m=l.get(w.offset);if(m===void 0)throw new Error(`The shared store no longer holds the bytes of ${u}.`);m!==w.offset&&(S.set(u,{...w,offset:m}),h=!0)}h&&await un()}function di(l){return Wt(()=>Ja(l))}async function Ja(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");const u=new Map,w=crypto.randomUUID(),m=await Ae(w,!0),E=await m.getFileHandle(wr,{create:!0}),A=await ee(E,"store"),_=new Map,M=new Uint8Array(Ui);let R=0;try{for(const[B,F]of S){if(!l(B,F))continue;if(F.pack){_.set(B,{...F});continue}if(F.type==="directory"||F.length===0){_.set(B,{...F,offset:0,length:0});continue}const re=R;u.set(F.offset,re);let ce=0;for(;ce<F.length;){const Ne=Math.min(M.byteLength,F.length-ce),jt=M.subarray(0,Ne);if(L?.ensure(F.offset+ce,Ne),h.read(jt,{at:F.offset+ce})!==Ne)throw new Error("An OPFS workspace file could not be read completely.");let je=0;for(;je<Ne;){const os=A.write(jt.subarray(je),{at:re+ce+je});if(os<=0)throw new Error("An OPFS workspace file could not be written completely.");je+=os}ce+=Ne}R+=F.length;const{capacity:Ue,...Z}=F;_.set(B,{...Z,offset:re,length:F.length})}A.truncate(R),A.flush()}finally{A.close()}const C=await Tr(m,_);return await mn(w,m,_,R,C),u}async function mn(l,h,u,w,m,E){Ye();try{await Za(l,h,u,w,m,E)}finally{Me()}}async function Za(l,h,u,w,m,E){const A=await h.getFileHandle(ls,{create:!0}),_=await ee(A,"record of changes");try{_.truncate(0),_.flush()}finally{_.close()}const M={storageVersion:E?5:4,generation:l,initializedAt:Date.now(),...E?{imageRanges:E}:{}};if(await vr(await Nt(),yr,M),Ve(),b=l,ie=M.initializedAt,x=E,m){const R=new Ft(m.index);S=new qt(R),I=new jr(R),be=void 0}else S=u,ae();O=w,c=h,await rt(h),m?({liveBytes:G,linked:f,linkedBytes:d}=m,pe=Math.max(0,O-G)):Ge(),i||await ar(l)}async function Qa(l,h,u,w,m=!1){if(nt(),!i||p!==Bt)throw new Error("Only the shared package store can reserve immutable image extents.");if(O!==0||[...S.values()].some(B=>B.type!=="directory"))return!1;const E=as(w);if(E.bytes!==l.packBytes||l.entries>fs||l.liveBytes>l.packBytes||h.byteLength!==l.json.raw||u.byteLength!==l.binary.raw||!await wn(h,l.json.sha256,m)||!await wn(u,l.binary.sha256,m))throw new Error("The image's prepared metadata does not match its document.");const A=h.subarray(0,4096).indexOf(10);if(A<0)throw new Error("The prepared index has no bounded retained header.");const _=JSON.parse(`${mr.decode(h.subarray(0,A-1))}}`),M={packBytes:l.packBytes,liveBytes:l.liveBytes,linked:0,linkedBytes:0},R=_.retainedIndex;if(R.version!==1||R.digest!==await ui(l.binary.sha256,M)||R.packBytes!==M.packBytes||R.liveBytes!==M.liveBytes||R.linked!==0||R.linkedBytes!==0)throw new Error("The prepared index's retained measures are inconsistent.");const C=new SharedArrayBuffer(u.byteLength);if(new Uint8Array(C).set(u),new Ft(C).entryCount!==l.entries)throw new Error("The prepared index has the wrong number of entries.");return Wt(async()=>{const B=crypto.randomUUID(),F=await Ae(B,!0),re=await F.getFileHandle(wr,{create:!0}),ce=await ee(re,"immutable image reservation");try{ce.truncate(l.packBytes),ce.flush()}finally{ce.close()}const Ue=Kt.encode(JSON.stringify(E));return await Rt(F,vi,Ue),await Rt(F,yn,u),await Rt(F,it,h),await mn(B,F,new Map,l.packBytes,{index:C,...M},await St(Ue)),!0})}async function qa(l,h,u,w=!1,m){if(nt(),i||!e.packages||!m&&!e.packages.deferredImage)throw new Error("Prepared project paths require a verified shared image.");if(O!==0||[...S.values()].some(R=>R.type!=="directory"))return!1;if(h.byteLength!==l.json.raw||u.byteLength!==l.binary.raw||!await wn(h,l.json.sha256,w)||!await wn(u,l.binary.sha256,w))throw new Error("The image's prepared project does not match its descriptor.");const E=h.subarray(0,4096).indexOf(10);if(E<0)throw new Error("The prepared project has no bounded retained header.");const A=JSON.parse(`${mr.decode(h.subarray(0,E-1))}}`).retainedIndex,_={packBytes:0,liveBytes:0,linked:l.linked,linkedBytes:l.linkedBytes};if(A.version!==1||A.digest!==await ui(l.binary.sha256,_)||A.packBytes!==0||A.liveBytes!==0||A.linked!==l.linked||A.linkedBytes!==l.linkedBytes)throw new Error("The prepared project's retained measures are inconsistent.");const M=new SharedArrayBuffer(u.byteLength);if(new Uint8Array(M).set(u),new Ft(M).entryCount!==l.entries||l.entries>r)throw new Error("The prepared project has invalid entry bounds.");return Wt(async()=>{const R=crypto.randomUUID(),C=await Ae(R,!0),B=await C.getFileHandle(wr,{create:!0}),F=await ee(B,"prepared project");try{F.truncate(0),F.flush()}finally{F.close()}if(await Rt(C,yn,u),await Rt(C,it,h),m&&!await m)return!1;if(!e.packages?.deferredImage)throw new Error("Prepared project paths require a verified shared image.");return await mn(R,C,new Map,0,{index:M,..._}),!0})}async function ec(){if(K)throw new Error("This OPFS workspace is closing.");if(!k)throw new Error("OPFS filesystem worker is not initialized.");const l=[],h=[...S.keys()].sort((A,_)=>bi(A)-bi(_)||(A<_?-1:1));let u=0;for(const A of S.values())A.type!=="directory"&&(u+=A.length);const w=new ArrayBuffer(u),m=new Uint8Array(w);let E=0;for(const A of h){const _=S.get(A);if(_.type==="directory"){l.push({path:A,type:"directory",mode:_.mode,mtimeMs:_.mtimeMs});continue}_.length>0&&m.set(zt(_),E),l.push({path:A,type:_.type,offset:E,length:_.length,mode:_.mode,mtimeMs:_.mtimeMs}),E+=_.length}for(const A of[...Fe()].reverse())S.has(A)||l.unshift({path:A,type:"directory",mode:pr,mtimeMs:Date.now()});return rs({files:l,pack:w})}async function vr(l,h,u){await Rt(l,h,Kt.encode(JSON.stringify(u)))}async function Rt(l,h,u){const w=await(await Nt()).getDirectoryHandle(Fi,{create:!0}),m=crypto.randomUUID(),E=await w.getFileHandle(m,{create:!0}),A=await ee(E,"index");try{let _=0;for(;_<u.byteLength;){const M=A.write(u.subarray(_),{at:_});if(M<=0)throw new Error("An OPFS workspace file could not be written completely.");_+=M}A.truncate(u.byteLength),A.flush()}finally{A.close()}try{await E.move(l,h)}finally{await yi(w,m,!1)}}const yn="index.shared";async function St(l){const h=await crypto.subtle.digest("SHA-256",l);return Array.from(new Uint8Array(h),u=>u.toString(16).padStart(2,"0")).join("")}async function wn(l,h,u){return u||await St(l)===h}function ui(l,h){const{packBytes:u,liveBytes:w,linked:m,linkedBytes:E,journalPrefix:A}=h;return St(Kt.encode(`${JSON.stringify({packBytes:u,liveBytes:w,linked:m,linkedBytes:E,...A?{journalPrefix:A}:{}})}:${l}`))}async function mi(l,h){const{packBytes:u,liveBytes:w,linked:m,linkedBytes:E,journalPrefix:A}=h;return St(Kt.encode(`${JSON.stringify({packBytes:u,liveBytes:w,linked:m,linkedBytes:E,...A?{journalPrefix:A}:{}})}:${await St(l)}`))}async function Tr(l,h,u){const w=sc(h);if(typeof SharedArrayBuffer>"u"||h.size<1e4){await vr(l,it,w);return}const m=new Map(w.entries),E=new Map,A={packBytes:u?.packBytes??0,liveBytes:0,linked:0,linkedBytes:0};for(const[re,ce]of m){const Ue=Gt(re);if(Ue!==re){let Z=E.get(Ue);Z||(Z=new Set,E.set(Ue,Z)),Z.add(re.slice(Ue.length+1))}ce.pack?(A.linked+=1,A.linkedBytes+=ce.length):(A.liveBytes+=ce.length,A.packBytes=Math.max(A.packBytes,ce.offset+ce.length))}let _;try{_=Mi(m,E)}catch{await vr(l,it,w);return}const M=JSON.stringify(w.entries),R=u?new Uint8Array(u.bytes):void 0;if(R&&u.access.read(R,{at:0})!==R.byteLength)throw new Error("The checkpoint's journal prefix could not be read completely.");const C=R?{bytes:R.byteLength,digest:await St(R)}:void 0,B=new Uint8Array(_).slice(),F={version:C?2:1,digest:await mi(B,{...A,...C?{journalPrefix:C}:{}}),...A,...C?{journalPrefix:C}:{}};try{await Rt(l,yn,B)}catch{await vr(l,it,{entries:JSON.parse(M)});return}return await Rt(l,it,Kt.encode(`{"retainedIndex":${JSON.stringify(F)},
1
+ const Gs=["file","directory","symlink"],lc=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u,fc=new TextEncoder,hc=new TextDecoder;function na(s){let e=2166136261;for(let t=0;t<s.length;t+=1)e^=s.charCodeAt(t),e=Math.imul(e,16777619);return e>>>0}function Mi(s,e){const t=[...s.keys()];for(const v of t)if(lc.test(v))throw new Error("A path in the store is not well-formed UTF-16.");const r=new Map;for(let v=0;v<t.length;v+=1)r.set(t[v],v);for(const v of e.keys())r.has(v)||(r.set(v,t.length),t.push(v));const n=t.length,i=new Map,o=new Uint32Array(n);let a=0;for(let v=0;v<n;v+=1){const U=t[v];let X=!0;for(let Se=0;Se<U.length;Se+=1)if(U.charCodeAt(Se)>=128){X=!1;break}X||i.set(v,fc.encode(U)),o[v]=X?U.length:i.get(v).length,a+=o[v]}let c=0;for(const v of e.values())c+=v.size;let f=1;for(;f<n*2;)f<<=1;const d=24,y=js(d+n*6*4,8),p=y+n*3*8,b=p+f*4,S=b+c*4,I=new SharedArrayBuffer(js(S+a,8));new Uint32Array(I,0,6).set([2019846480,n,f,c,a,s.size]);const x=new Uint32Array(I,d,n*6),L=new Float64Array(I,y,n*3),W=new Uint32Array(I,p,f),de=new Uint32Array(I,b,c),se=new Uint8Array(I,S,a);let ie=0,D=0;for(let v=0;v<n;v+=1){const U=t[v],X=v*6,Se=i.get(v);if(Se)se.set(Se,ie);else for(let T=0;T<U.length;T+=1)se[ie+T]=U.charCodeAt(T);const O=o[v];x[X+0]=ie,x[X+1]=O,ie+=O;let fe=Se?0:32;const ue=s.get(U);if(ue){fe|=1|Gs.indexOf(ue.type)<<3,ue.pack&&(fe|=4),x[X+3]=ue.mode;const T=v*3;L[T+0]=ue.mtimeMs,L[T+1]=ue.offset,L[T+2]=ue.length}const V=e.get(U);if(V){fe|=2,x[X+4]=D,x[X+5]=V.size;for(const T of V){const G=r.get(`${U}/${T}`);if(G===void 0)throw new Error(`The store's children name ${U}/${T}, which its index does not hold.`);de[D++]=G}}x[X+2]=fe;let me=na(U)&f-1;for(;W[me]!==0;)me=me+1&f-1;W[me]=v+1}if(D!==c)throw new Error("The shared index's children did not add up.");return I}function js(s,e){return Math.ceil(s/e)*e}class Ft{buffer;count;entryCount;records;numbers;table;childList;strings;mask;constructor(e){const t=new Uint32Array(e,0,6);if(t[0]!==2019846480)throw new Error("Not a shared store index.");const[,r,n,i,o,a]=t;this.buffer=e,this.count=r,this.entryCount=a;const c=24,f=js(c+r*6*4,8),d=f+r*3*8,y=d+n*4,p=y+i*4;this.records=new Uint32Array(e,c,r*6),this.numbers=new Float64Array(e,f,r*3),this.table=new Uint32Array(e,d,n),this.childList=new Uint32Array(e,y,i),this.strings=new Uint8Array(e,p,o),this.mask=n-1}find(e){let t=na(e)&this.mask;for(;;){const r=this.table[t];if(r===0)return-1;if(this.pathIs(r-1,e))return r-1;t=t+1&this.mask}}entry(e){const t=e*6,r=this.records[t+2];if(!(r&1))return;const n=e*3,i={type:Gs[r>>>3&3],mode:this.records[t+3],mtimeMs:this.numbers[n+0],offset:this.numbers[n+1],length:this.numbers[n+2]};return r&4&&(i.pack="packages"),i}typeAt(e){const t=this.records[e*6+2];return t&1?Gs[t>>>3&3]:void 0}hasEntry(e){return(this.records[e*6+2]&1)!==0}childNames(e){const t=e*6;if(!(this.records[t+2]&2))return;const r=this.records[t+4],n=this.records[t+1]+1,i=[];for(let o=0;o<this.records[t+5];o+=1){const a=this.childList[r+o]*6;i.push(this.decode(this.records[a+0]+n,this.records[a+1]-n,(this.records[a+2]&32)!==0))}return i}path(e){const t=e*6;return this.decode(this.records[t+0],this.records[t+1],(this.records[t+2]&32)!==0)}decode(e,t,r){if(!r)return hc.decode(this.strings.slice(e,e+t));let n="";for(let i=e,o=e+t;i<o;i+=4096)n+=String.fromCharCode.apply(null,this.strings.subarray(i,Math.min(o,i+4096)));return n}pathIs(e,t){const r=e*6,n=this.records[r+0],i=this.records[r+1];if(!(this.records[r+2]&32))return this.path(e)===t;if(i!==t.length)return!1;for(let o=0;o<i;o+=1)if(this.strings[n+o]!==t.charCodeAt(o))return!1;return!0}}const Ze=Symbol("deleted");function sa(s,e){return s===e||!!s&&!!e&&s.type===e.type&&s.offset===e.offset&&s.length===e.length&&s.pack===e.pack&&s.mode===e.mode&&s.mtimeMs===e.mtimeMs&&s.capacity===e.capacity}class qt{base;overlay=new Map;delta=0;constructor(e){this.base=e}get[Symbol.toStringTag](){return"Map"}get size(){return this.base.entryCount+this.delta}get(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t;const r=this.base.find(e);return r<0?void 0:this.base.entry(r)}typeOf(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t.type;const r=this.base.find(e);return r<0?void 0:this.base.typeAt(r)}has(e){const t=this.overlay.get(e);if(t!==void 0)return t!==Ze;const r=this.base.find(e);return r>=0&&this.base.hasEntry(r)}set(e,t){this.has(e)||(this.delta+=1);const r=this.base.find(e);return r>=0&&sa(this.base.entry(r),t)?this.overlay.delete(e):this.overlay.set(e,t),this}delete(e){if(!this.has(e))return!1;const t=this.base.find(e);return t>=0&&this.base.hasEntry(t)?this.overlay.set(e,Ze):this.overlay.delete(e),this.delta-=1,!0}clear(){throw new Error("A reader's index is not cleared; it is replaced.")}*entries(){for(const[e,t]of this.overlay)t!==Ze&&(yield[e,t]);for(let e=0;e<this.base.count;e+=1){if(!this.base.hasEntry(e))continue;const t=this.base.path(e);this.overlay.has(t)||(yield[t,this.base.entry(e)])}}*keys(){for(const[e]of this.entries())yield e}*values(){for(const[,e]of this.entries())yield e}[Symbol.iterator](){return this.entries()}forEach(e,t){for(const[r,n]of this.entries())e.call(t,n,r,this)}*changed(){for(const[e,t]of this.overlay)t!==Ze&&(yield[e,t])}*changes(){for(const[e,t]of this.overlay)yield[e,t===Ze?null:t]}get overlaid(){return this.overlay.size}boundedChanges(){if(this.overlay.size>65536)return;const e=[];let t=0;for(const[r,n]of this.changes()){if(t+=r.length*2+128,t>8*1024*1024)return;e.push([r,n])}return e}}class jr{base;overlay=new Map;constructor(e){this.base=e}get(e){const t=this.overlay.get(e);if(t!==void 0)return t===Ze?void 0:t;const r=this.base.find(e),n=r<0?void 0:this.base.childNames(r);return n?new Set(n):void 0}mutable(e){const t=this.overlay.get(e);if(t!==void 0&&t!==Ze)return t;const r=new Set(t===Ze?[]:this.get(e)??[]);return this.overlay.set(e,r),r}delete(e){this.overlay.set(e,Ze)}}function xi(s){const e=s.lastIndexOf("/");return e<=0?"/":s.slice(0,e)}function ur(s){return s==="/"?"":s}const dc="/opt/tree";function uc(s){return`volter-tree-store-use:${s}`}function mc(s,e=globalThis.navigator?.locks){if(!e)return Promise.resolve();let t=Li.get(e);t||Li.set(e,t=new Map);let r=t.get(s);if(!r){r=new Promise((i,o)=>{e.request(uc(s),{mode:"shared"},()=>(i(),new Promise(()=>{}))).catch(o)});const n=t;r.catch(()=>n.delete(s)),t.set(s,r)}return r}const Li=new WeakMap;function yc(s,e){const t=new Ft(s.index),r=new qt(t),n=new jr(t),i={childrenOf:a=>[...n.get(ur(a))??[]].sort(),descendants(a){const c=[],f=d=>{const y=r.get(d);y&&c.push([d,y]);for(const p of n.get(ur(d))??[])f(`${ur(d)}/${p}`)};return f(a),c}};if(s.store!==void 0){const a=e?.get(s.store),c=s.roots?.[0]??"/",f=s.storeRoot??c,d=p=>f+p.slice(c==="/"?0:c.length),y=p=>{const b=r.get(p);if(!b||b.type==="directory")throw new Error(`The shared layer holds no file at ${p}.`);if(!a)throw new Error(`${p} is in the store ${s.store}, which this realm did not open.`);return a};return{entries:r,read:p=>y(p).read(d(p)),readRange:(p,b,S)=>y(p).readRange(d(p),b,S),readsByRange:()=>!0,...i}}if(!s.bytes)throw new Error("A shared layer holds neither its bytes nor a store of them.");const o=new Uint8Array(s.bytes);return{entries:r,read(a){const c=r.get(a);if(!c||c.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);return o.slice(c.offset,c.offset+c.length)},view(a){const c=r.get(a);if(!c||c.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);return o.subarray(c.offset,c.offset+c.length)},readRange(a,c,f){const d=r.get(a);if(!d||d.type==="directory")throw new Error(`The shared layer holds no file at ${a}.`);const y=Math.min(Math.max(0,c),d.length);return o.slice(d.offset+y,d.offset+Math.min(d.length,y+Math.max(0,f)))},childrenOf:a=>[...n.get(ur(a))??[]].sort(),descendants(a){const c=[],f=d=>{const y=r.get(d);y&&c.push([d,y]);for(const p of n.get(ur(d))??[])f(`${ur(d)}/${p}`)};return f(a),c}}}function wc(s){if(s.length===1)return s[0];const e=(o,a)=>{if(o===0)return!1;for(let c=xi(a);;c=xi(c)){for(let f=0;f<o;f+=1){const d=s[f].entries.get(c);if(d&&d.type!=="directory")return!0}if(c==="/")return!1}},t=o=>{for(let a=0;a<s.length;a+=1)if(s[a].entries.has(o)&&!e(a,o))return a;return-1},r=o=>s[t(o)],n={get:o=>r(o)?.entries.get(o),has:o=>t(o)>=0,get size(){let o=0;for(const a of n)o+=1;return o},*[Symbol.iterator](){const o=new Set;for(let a=0;a<s.length;a+=1)for(const[c,f]of s[a].entries)o.has(c)||t(c)!==a||(o.add(c),yield[c,f])},*entries(){yield*n[Symbol.iterator]()},*keys(){for(const[o]of n)yield o},*values(){for(const[,o]of n)yield o},forEach(o){for(const[a,c]of n)o(c,a,n)}},i=o=>{const a=r(o)?.entries.get(o);return a&&a.type!=="directory"?[]:s.filter((c,f)=>{const d=c.entries.get(o);return(!d||d.type==="directory")&&!e(f,o)})};return{entries:n,read:o=>{const a=r(o);if(!a)throw new Error(`No lower tree holds ${o}.`);return a.read(o)},view:o=>{const a=r(o);if(!a)throw new Error(`No lower tree holds ${o}.`);return a.view?a.view(o):a.read(o)},readRange:(o,a,c)=>{const f=r(o);if(!f)throw new Error(`No lower tree holds ${o}.`);if(f.readRange)return f.readRange(o,a,c);const d=f.read(o),y=Math.min(Math.max(0,a),d.byteLength);return d.slice(y,Math.min(d.byteLength,y+Math.max(0,c)))},readsByRange:o=>r(o)?.readsByRange?.(o)??!1,childrenOf:o=>[...new Set(i(o).flatMap(a=>a.childrenOf(o)))].sort(),descendants:o=>{const a=[],c=new Set;for(const d of s)for(const[y]of d.descendants(o)){if(c.has(y))continue;c.add(y);const p=n.get(y);p&&a.push([y,p])}const f=a.findIndex(([d])=>d===o);return f>0&&a.unshift(...a.splice(f,1)),a}}}function Pi(s,e,t){const r=[...s?[s]:[],...(e??[]).map(n=>yc(n,t))];return r.length===0?void 0:wc(r)}const pc="supercode-browser-filesystems",Bt="packages",gc="state.json",Ri="/image-range-worker.js",vi="image-ranges.json",Sc=2;function as(s){const e=s;if(!e||e.version!==1||!Number.isSafeInteger(e.bytes)||e.bytes<0||!Array.isArray(e.parts)||e.image!==void 0&&(typeof e.image!="string"||!/^[a-f0-9]{16,64}$/u.test(e.image))||e.parts.length>1e5)throw new Error("Invalid immutable image ranges.");let t=0;for(const r of e.parts){if(!r||r.offset!==t||!Number.isSafeInteger(r.raw)||r.raw<0||!Number.isSafeInteger(r.bytes)||r.bytes<0||r.bytes>1024*1024*1024||r.raw>1024*1024*1024||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/u.test(r.sha256)||typeof r.url!="string"||!/^\/substrate\/[A-Za-z0-9._/-]+$/u.test(r.url)||r.url.split("/").some(n=>n==="."||n===".."))throw new Error("Invalid immutable image part.");if(t+=r.raw,!Number.isSafeInteger(t))throw new Error("Immutable image ranges exceed the offset limit.")}if(t!==e.bytes)throw new Error("Immutable image ranges do not cover their reservation.");return e}const Ti=new Map;class bc{ranges;directory;identity;receiptKey;client;worker;port;prefetchers=[];state;completed;firstRead;closed=!1;ready=!1;startup;cancelStartup;sharedCompletion;constructor(e,t,r,n,i,o){if(this.ranges=e,this.directory=t,this.identity=r,this.receiptKey=i,this.client=o,typeof Worker>"u"||typeof SharedArrayBuffer>"u")throw new Error("This browser cannot materialize an immutable image during a synchronous read.");if(this.state=new Int32Array(o?.state??new SharedArrayBuffer(e.parts.length*Int32Array.BYTES_PER_ELEMENT)),this.state.length!==e.parts.length)throw new Error("The image reader's line has the wrong range count.");const a=e.parts.length,c=n??new SharedArrayBuffer((2*a+1)*Int32Array.BYTES_PER_ELEMENT);if(c.byteLength!==a*Int32Array.BYTES_PER_ELEMENT&&c.byteLength!==(2*a+1)*Int32Array.BYTES_PER_ELEMENT)throw new Error("The image completion seed has the wrong range count.");this.completed=new Int32Array(c,0,a),this.firstRead=c.byteLength>a*Int32Array.BYTES_PER_ELEMENT?new Int32Array(c,a*Int32Array.BYTES_PER_ELEMENT,a+1):void 0,this.sharedCompletion=n!==void 0;for(const f of e.parts)Object.freeze(f);Object.freeze(e.parts),Object.freeze(e)}get completionBuffer(){return this.completed.buffer}get verifiedRanges(){return this.ranges}async initialize(){if(this.closed)throw new Error("This immutable image reader is closed.");if(this.ready)return;if(this.startup)return this.startup;let e=!1;for(let t=0;t<this.completed.length;t+=1)if(Atomics.load(this.completed,t)!==2){e=!0;break}if(!e){this.ready=!0,this.client?.port.close();return}if(this.client){const t=this.port=this.client.port;t.onmessage=r=>{r.data?.type!=="closing"||this.port!==t||(t.close(),this.port=void 0,this.closed||this.startMaterializer().catch(n=>console.warn("This process's image reader could not start its own materializer after its line closed.",n)))},t.start(),this.ready=!0;return}return this.startMaterializer()}startMaterializer(){const e=Date.now(),t=new Worker(Ri,{type:"module",name:"immutable-image-materializer"}),r=this.ready;return r||(this.worker=t),t.addEventListener("error",()=>this.fail()),t.addEventListener("messageerror",()=>this.fail()),this.startup=new Promise((n,i)=>{const o=()=>{clearTimeout(d),t.removeEventListener("message",f),t.removeEventListener("error",a),t.removeEventListener("messageerror",a),this.cancelStartup=void 0},a=()=>c(new Error("The immutable image materializer could not initialize; reload to retry.")),c=y=>{o(),t.terminate(),r||(this.closed=!0,this.fail()),i(y)},f=y=>{if(y.data?.identity===this.identity){if(y.data.type==="init-error"){c(new Error(`The immutable image materializer could not initialize: ${String(y.data.error)}`));return}y.data.type==="ready"&&(console.log(`[boot-trace] ${JSON.stringify({event:"materializer-ready",at:Date.now(),ms:Date.now()-e})}`),o(),this.ready=!0,this.worker=t,n())}},d=setTimeout(()=>c(new Error("The immutable image materializer did not initialize within 10 seconds; reload to retry.")),1e4);this.cancelStartup=c,t.addEventListener("message",f),t.addEventListener("error",a),t.addEventListener("messageerror",a);try{t.postMessage({type:"init",ranges:this.ranges,directory:this.directory,identity:this.identity,state:this.state.buffer,completed:this.completed.buffer,sharedCompletion:this.sharedCompletion,...this.receiptKey?{receiptKey:this.receiptKey}:{}})}catch(y){c(y instanceof Error?y:new Error(String(y)))}}),this.startup}readDigests(){const e=this.firstRead;if(!e)return;const t=this.ranges.parts.length,r=[];for(let n=0;n<t;n+=1){const i=Atomics.load(e,n),o=this.ranges.parts[n];i>0&&o.raw>0&&r.push([i,o.sha256])}return r.sort((n,i)=>n[0]-i[0]).map(([,n])=>n)}completedDigests(){const e=[];for(let t=0;t<this.completed.length;t+=1){const r=this.ranges.parts[t];r.raw>0&&Atomics.load(this.completed,t)===2&&e.push(r.sha256)}return e}prefetch(e,t=[]){if(this.closed||!this.ready||!this.worker)return{queued:0,done:Promise.resolve()};const r=new Map;for(let a=0;a<this.ranges.parts.length;a+=1){const c=this.ranges.parts[a];if(c.raw===0)continue;const f=r.get(c.sha256);f?f.push(a):r.set(c.sha256,[a])}const n=[];for(const a of new Set(e))for(const c of r.get(a)??[])Atomics.load(this.completed,c)!==2&&n.push(c);const i=t.length>0&&n.length>0?Math.min(t.length,8):Math.min(Sc,Math.ceil(n.length/32)),o=[];for(let a=0;a<i;a+=1){const c=n.filter((p,b)=>b%i===a),f=new Worker(Ri,{type:"module",name:"immutable-image-prefetch"});this.prefetchers.push(f);let d;o.push(new Promise(p=>{d=p}));const y=()=>{f.terminate(),this.prefetchers=this.prefetchers.filter(p=>p!==f),d()};f.addEventListener("error",y),f.addEventListener("messageerror",y),f.addEventListener("message",p=>{p.data?.identity===this.identity&&(p.data.type==="ready"?f.postMessage(t.length>0?{type:"prefetch-stream",url:t[a]}:{type:"prefetch",indices:c}):(p.data.type==="prefetched"||p.data.type==="init-error")&&y())}),f.postMessage({type:"init",ranges:this.ranges,directory:this.directory,identity:this.identity,state:new SharedArrayBuffer(this.state.byteLength),completed:this.completed.buffer,sharedCompletion:!0,...this.receiptKey?{receiptKey:this.receiptKey}:{}})}return{queued:n.length,done:Promise.all(o).then(()=>{})}}ensure(e,t){if(this.closed)throw new Error("This immutable image reader is closed.");if(!this.ready)throw new Error("This immutable image reader has not finished asynchronous initialization.");if(t===0||e>=this.ranges.bytes)return;const r=Math.min(e+t,this.ranges.bytes);let n=0,i=this.ranges.parts.length;for(;n<i;){const o=n+i>>>1,a=this.ranges.parts[o];a.offset+a.raw<=e?n=o+1:i=o}for(let o=n;o<this.ranges.parts.length;o+=1){const a=this.ranges.parts[o];if(a.offset>=r)break;const c=this.firstRead;if(c&&Atomics.load(c,o)===0&&Atomics.compareExchange(c,o,0,Atomics.add(c,this.ranges.parts.length,1)+1),Atomics.load(this.completed,o)===2)continue;const f=this.worker??this.port;if(!f)throw new Error("This immutable image reader's line closed and its own materializer is still starting; retry the read.");f.postMessage({type:"read",index:o});const d=performance.now(),y=d+3e4;for(;Atomics.load(this.state,o)===0;){const S=y-performance.now();if(S<=0||Atomics.wait(this.state,o,0,S)==="timed-out")throw this.close(),new Error(`The image's immutable part ${a.url} did not arrive within 30 seconds; reload to retry.`)}const p=performance.now()-d,b=Ti.get(this.identity)??{ranges:0,ms:0};if(b.ranges+=1,b.ms+=p,Ti.set(this.identity,b),console.log(`[boot-trace] ${JSON.stringify({event:"image-blocked",at:Date.now(),reader:this.identity,index:o,range:a.sha256.slice(0,16),ms:Math.round(p)})}`),Atomics.load(this.state,o)!==2)throw new Error(`The image's immutable part ${a.url} could not be verified or stored; see the worker error and reload to retry.`)}}lineForReader(){const e=this.worker??this.port;if(this.closed||!this.ready||!e)return;const t=new MessageChannel,r=new SharedArrayBuffer(this.ranges.parts.length*Int32Array.BYTES_PER_ELEMENT);return e.postMessage({type:"client",port:t.port1,state:r},[t.port1]),{port:t.port2,state:r}}fail(){for(let e=0;e<this.state.length;e+=1)Atomics.compareExchange(this.state,e,0,-1)===0&&Atomics.notify(this.state,e)}close(){if(this.closed)return;if(this.closed=!0,this.cancelStartup){this.cancelStartup(new Error("This immutable image reader closed during initialization."));return}this.fail(),this.port?.close();const e=this.worker;e&&(e.postMessage({type:"closing"}),setTimeout(()=>e.terminate(),250));for(const t of this.prefetchers)t.dispatchEvent(new Event("error"));this.prefetchers=[]}}const cs="/packages",Sn="supercode-browser-packages",Kt=new TextEncoder,mr=new TextDecoder("utf-8",{fatal:!0}),Ec=pc,bn="generations",Fi="atomic-staging",yr=gc,it="index.json",ls="index-log.bin",wr="pack.bin",En=8,Bi=64*1024*1024,We=1024*1024*1024,Oi=10*1024*1024*1024,Ac=16*1024*1024*1024,ia=["/workspace","/home","/opt"],Xt=0,Yi=1,fs=1e6,Di=8*1024*1024,Ci=250,_c=64*1024*1024,Nc=256*1024*1024,Ui=4*1024*1024,pr=493,An=420;function Ks(s,e={}){const t=e.limits?.maxBytes??Oi,r=e.limits?.maxEntries??fs;if(!Number.isSafeInteger(t)||t<1||t>Oi||!Number.isSafeInteger(r)||r<1||r>fs)throw new Error("Invalid OPFS workspace limits.");let n,i=!1,o=!1,a=!1,c,f=0,d=0,y,p,b,S=new Map,I=new _n,k,x,L,W,de,se,ie=0,D,v=0;const U=new Map,X=256*1024,Se=32;let O=0,fe,ue=-1/0,V=0,me=0,T=0,G=0,pe=0,ve=0,Oe=0,Ie,dt,Te,Ut=!1,ut,nn=Promise.resolve(),mt=0,K=!1,ke=!1,he,oe=0,He=!1;function et(){if(!(!he||He)){if(T>2147483647){ne();return}Atomics.store(he,Yi,T)}}function ne(){!he||He||(He=!0,(Atomics.load(he,Xt)&1)===0&&Atomics.add(he,Xt,1))}function Ye(){oe+=1,oe===1&&he&&!He&&Atomics.add(he,Xt,1)}function Me(){oe-=1,!(oe>0||!he||He)&&(et(),He||Atomics.add(he,Xt,1))}function tt(){if(o)throw new Error("A store open for reading follows its owner's clock; it has none of its own.");return he||(he=new Int32Array(new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT)),he[Xt]=oe>0||He?1:0,et()),he.buffer}let be;const sn=8*1024*1024;let xr=!1;function on(l){if(o||!he||!b||Ut||oe>0||He||K)return;const h=Atomics.load(he,Xt);if(h&1)return;if(l?.overlays&&S instanceof qt){const w=S.boundedChanges();if(w)return Ee({generation:b,index:S.base.buffer,changes:w,packBytes:O,logBytes:T,epoch:h,liveBytes:G,linked:f,linkedBytes:d})}if(be&&be.generation===b&&be.epoch===h&&T>=be.logBytes&&T-be.logBytes<=(l?.current?0:sn))return Ee(be);let u;try{u=Mi(S,qn())}catch(w){console.warn(`[pack-store] no reader seed: ${w instanceof Error?w.message:String(w)}`);return}return be={generation:b,index:u,packBytes:O,logBytes:T,epoch:h,liveBytes:G,linked:f,linkedBytes:d},Qn(u),Ee(be)}function Ee(l){const h=e.packages?.imageCompletionSeed();return h?{...l,packagesImage:h}:l}function nr(){if(!(!L||!x||!b||Ut||oe>0||K))return{generation:b,rangesDigest:x,completed:L.completionBuffer,...L.receiptKey?{metadata:{ranges:L.verifiedRanges,receiptKey:L.receiptKey}}:{}}}function Qn(l){const h=[];if(S instanceof qt)for(const[w,m]of S.changed())m.capacity!==void 0&&h.push([w,m]);else for(const[w,m]of S)m.capacity!==void 0&&h.push([w,m]);const u=new Ft(l);S=new qt(u),I=new jr(u);for(const[w,m]of h)S.set(w,m)}function qn(){if(I instanceof _n)return I.map;const l=new Map;for(const h of S.keys()){const u=Gt(h);if(u===h)continue;let w=l.get(u);w||(w=new Set,l.set(u,w)),w.add(h.slice(u.length+1))}return l}function an(){!o||a||K||!D||wt(T)}async function sr(l){if(K)throw new Error("This OPFS workspace is closing.");mt+=1;let h,u=!1;try{return await l()}catch(w){throw u=!0,h=w,w}finally{if(mt-=1,K&&mt===0)try{Ni()}catch(w){throw u?new AggregateError([h,w],"OPFS operation and deferred close both failed."):w}}}async function Wt(l){return nt(),mt!==0?Promise.reject(new Error("Wait for the current OPFS storage operation before replacing its generation.")):(ke=!0,sr(async()=>{try{return await l()}finally{ke=!1}}))}function cn(l){if(K)throw new Error("This OPFS workspace is closing.");const h=S.get(l);if(!h||h.type==="directory")throw new Error(`OPFS workspace file does not exist: ${l}`);return zt(h)}function $t(l,h,u){if(K)throw new Error("This OPFS workspace is closing.");const w=S.get(l);if(!w||w.type==="directory")throw new Error(`OPFS workspace file does not exist: ${l}`);const m=Math.min(Math.max(0,h),w.length),E=Math.min(Math.max(0,u),w.length-m);if(w.pack){const A=e.packages;if(!A)throw new Error("This store has no shared package store to read from.");return A.readExtent(w.offset+m,E)}return De(w.offset+m,E)}function zt(l){if(l.pack){const h=e.packages;if(!h)throw new Error("This store has no shared package store to read from.");return h.readExtent(l.offset,l.length)}return De(l.offset,l.length)}function De(l,h){if(K)throw new Error("This OPFS workspace is closing.");const u=k;if(!u)throw new Error("OPFS filesystem worker is not initialized.");const w=new Uint8Array(h);if(h>0&&h<=X&&l>=0&&l+h<=v){let m=0;for(;m<h;){const E=l+m,A=Math.floor(E/X)*X;let _=U.get(A);if(!_&&(_=new Uint8Array(Math.min(X,v-A)),L?.ensure(A,_.byteLength),u.read(_,{at:A})!==_.byteLength))throw new Error("An OPFS package range could not be read completely.");U.delete(A),U.set(A,_),U.size>Se&&U.delete(U.keys().next().value);const M=E-A,R=Math.min(h-m,_.byteLength-M);w.set(_.subarray(M,M+R),m),m+=R}return w}if(L?.ensure(l,h),h>0&&u.read(w,{at:l})!==h)throw new Error("An OPFS workspace file could not be read completely.");return w}async function ir(l,h={}){if(K&&n||!n&&mt!==0)throw new Error("Wait for this OPFS workspace to finish closing before opening it again.");if(Ut)throw new Error("This OPFS store is already opening a workspace.");if(n){if(p!==fn(l))throw new Error("Close this OPFS store before opening another workspace.");return S.size>0}Ut=!0,K=!1;const u=new AbortController;ut=u;try{S=new Map,I=new _n,b=void 0,x=void 0,c=void 0,Ie=void 0,Te=void 0,O=T=G=pe=f=d=0,Ce=void 0,ve=Oe=V=me=0,ue=-1/0,p=fn(l),o=h.readOnly===!0,de=o?h.imageCompletion:void 0,se=o?h.imageLine:void 0,a=o&&h.extentsOnly===!0,i=h.shared===!0||o,i||await ts(u.signal),u.signal.throwIfAborted();const w=await es();u.signal.throwIfAborted();try{const A=await w.getDirectoryHandle(Ec,{create:!o});u.signal.throwIfAborted(),n=await A.getDirectoryHandle(p,{create:!o})}catch(A){if(u.signal.throwIfAborted(),o&&dr(A))return!1;throw A}u.signal.throwIfAborted();let m=pn(await Vt(n,yr));if(u.signal.throwIfAborted(),!m&&o)return await Rr(),!1;if(!m&&i&&(await s.navigator.locks.request(Sn,{mode:"exclusive",signal:u.signal},async()=>{u.signal.throwIfAborted(),m=pn(await Vt(n,yr)),u.signal.throwIfAborted(),m||(await Rr(),await hi({files:[],pack:new ArrayBuffer(0)}),await Mc(n))}),u.signal.throwIfAborted(),!m))return c=await Ae(b,!1),u.signal.throwIfAborted(),!1;if(!m)return await Rr(),u.signal.throwIfAborted(),!1;const E=async A=>{let _;try{_=await Ae(A.generation,!1)}catch(B){throw u.signal.throwIfAborted(),dr(B)?new Error("The committed OPFS workspace generation is missing. Stored generations were retained.",{cause:B}):B}if(u.signal.throwIfAborted(),b=A.generation,ie=A.initializedAt,x=A.imageRanges,c=_,a)return p===Bt&&s.navigator.locks?await s.navigator.locks.request(Sn,{mode:"shared",signal:u.signal},async()=>{await rt(_),v=k.getSize()}):await rt(_),u.signal.throwIfAborted(),!0;const M=o?h.seed:void 0;if(M&&M.generation===A.generation){const B=new Ft(M.index);return S=new qt(B),I=new jr(B),O=M.packBytes,M.changes&&Lr({packBytes:M.packBytes,changes:M.changes}),await rt(_),u.signal.throwIfAborted(),T=M.logBytes,{liveBytes:G,linked:f,linkedBytes:d}=M,pe=Math.max(0,O-G),xr=!0,S.size>0}const R=o?void 0:await tc(_);if(u.signal.throwIfAborted(),R){const B=new Ft(R.index);S=new qt(B),I=new jr(B),{packBytes:O,liveBytes:G,linked:f,linkedBytes:d}=R;const F=Atomics.load(new Int32Array(tt()),Xt);be={generation:b,index:R.index,packBytes:O,liveBytes:G,linked:f,linkedBytes:d,logBytes:0,epoch:F}}else S=ss(await Vt(_,it)),u.signal.throwIfAborted(),ae(),O=Ht(S);await rt(_),u.signal.throwIfAborted();const C=R?await rc(R):0;return u.signal.throwIfAborted(),C&&(Ce={generation:b,bytes:C},be&&(be.logBytes=C)),wt(C,!!R),R?pe=Math.max(0,O-G):Ge(),gt(),i&&!o&&!R&&S.size>=1e4&&(Pt(),await Tr(_,S,{access:D,bytes:T,packBytes:O})),i||(k.truncate(O),await yi(n,Fi,!0),await ar(b),u.signal.throwIfAborted(),pe>_c&&pe>G&&await Va()),u.signal.throwIfAborted(),S.size>0};return i&&!o?await s.navigator.locks.request(Sn,{mode:"exclusive",signal:u.signal},async()=>{if(m=pn(await Vt(n,yr)),!m)throw new Error("The committed package store state is missing. Stored data was retained.");return E(m)}):await E(m)}catch(w){const m=[w];try{Ve()}catch(E){m.push(E)}try{y?.()}catch(E){m.push(E)}throw y=void 0,n=void 0,m.length>1?new AggregateError(m,"OPFS workspace open and cleanup failed."):w}finally{Ut=!1,ut=void 0}}function or(l){return sr(()=>yt(l?.whole===!0))}async function yt(l=!1){if(a)throw new Error("A store opened for its extents alone has no index to follow.");if(o&&n){const E=pn(await Vt(n,yr));if(!E)throw new Error("The committed OPFS workspace state is missing. Stored data was retained.");if(E.generation!==b||l){const A=await Ae(E.generation,!1),_=ss(await Vt(A,it));O=Ht(_),E.generation!==b&&(b=E.generation,ie=E.initializedAt,x=E.imageRanges,await rt(A)),b=E.generation,c=A,S=_,ae(),wt(),Ge();return}}const h=D;if(!h||!c)return;const u=h.getSize();let w=!1;u<T&&(S=ss(await Vt(c,it)),ae(),O=Ht(S),T=0,w=!0);const m=T;wt(T),(w||T!==m)&&Ge()}async function es(){let l;for(let h=0;h<10;h+=1){ut?.signal.throwIfAborted();try{return await s.navigator.storage.getDirectory()}catch(u){l=u,await new Promise(w=>setTimeout(w,200))}}throw l instanceof Error?l:new Error("This browser workspace's storage is unavailable.")}const ln=1e4;async function ee(l,h){let u;const w=ut?.signal;for(let E=0;E<2;E+=1){w?.throwIfAborted();const A=l.createSyncAccessHandle({mode:"readwrite-unsafe"});let _,M,R=!1;try{const C=new Promise((F,re)=>{M=()=>re(w?.reason??new DOMException("Workspace open was cancelled.","AbortError")),w?.addEventListener("abort",M,{once:!0}),w?.aborted&&M()}),B=await Promise.race([A.then(F=>({access:F})).catch(F=>{u=F}),new Promise(F=>{_=setTimeout(()=>F(void 0),ln)}),C]);if(w?.throwIfAborted(),B)return R=!0,B.access}finally{_!==void 0&&clearTimeout(_),M&&w?.removeEventListener("abort",M),R||A.then(C=>C.close(),()=>{}).catch(C=>console.error("Late workspace handle cleanup failed.",C))}if(u instanceof TypeError)throw new Error(`This browser cannot share a workspace's files between pages: its file access handles have no readwrite-unsafe mode (Chrome 121 or newer has one). ${u.message}`);await new Promise(C=>setTimeout(C,500))}const m=u instanceof Error?` (${u.message})`:"";throw new Error(`This browser workspace's ${h} is held by another page${m}.`)}async function rt(l){Ve();const h=await l.getFileHandle(wr);k=await ee(h,"store");try{if(k.getSize()<O)throw new Error("The committed OPFS workspace pack is incomplete. Stored data was retained.");const u=await l.getFileHandle(ls);if(D=await ee(u,"record of changes"),T=D.getSize(),x){const w=de,m=w&&w.generation===b&&w.rangesDigest===x?w:void 0;let E,A;if(m?.metadata){if(E=as(m.metadata.ranges),A=m.metadata.receiptKey,!/^[a-f0-9]{64}$/u.test(A))throw new Error("The owner's immutable receipt key is invalid.")}else{const M=await(await l.getFileHandle(vi)).getFile(),R=new Uint8Array(await M.arrayBuffer());if(await St(R)!==x)throw new Error("The committed immutable image ranges have changed. Stored data was retained.");E=as(JSON.parse(mr.decode(R))),A=await St(Kt.encode(JSON.stringify(E)))}if(E.bytes>k.getSize())throw new Error("The immutable image reservation is incomplete. Stored data was retained.");const _=m?se:void 0;_||se?.port.close(),se=void 0,L=new bc(E,l,`${p}.${b}`,m?.completed,A,_),console.log(`[boot-trace] ${JSON.stringify({event:"image-reader-open",at:Date.now(),reader:`${p}.${b}`,offered:w!==void 0,shared:m!==void 0,...w&&!m?{offeredGeneration:w.generation,generation:b,rangesMatch:w.rangesDigest===x}:{}})}`),await L.initialize(),W=E.image}}catch(u){throw Ve(),u}}function Ve(){L?.close(),L=void 0,W=void 0;const l=k,h=D;k=void 0,D=void 0,T=0,v=0,U.clear();try{l?.close()}finally{h?.close()}}function wt(l=0,h=!1){const u=D;if(!u)throw new Error("OPFS filesystem worker is not initialized.");const w=u.getSize();if(w<=l){T=w;return}const m=new Uint8Array(w-l);if(u.read(m,{at:l})!==m.byteLength)throw new Error("The OPFS workspace index log could not be read.");const E=k?.getSize()??1/0,A=new DataView(m.buffer);let _=0;const M=m.byteLength;for(;_+En<=M;){const R=A.getUint32(_,!0),C=A.getUint32(_+4,!0),B=_+En;if(R===0||R>Bi||B+R>M)break;const F=m.subarray(B,B+R);if(Ei(F)!==C)break;let re;try{re=ic(JSON.parse(mr.decode(F)))}catch{break}if(re.packBytes>E)break;Lr(re,h),_=B+R}_!==M&&!i&&u.truncate(l+_),T=l+_}function Lr(l,h=!1){for(const[u,w]of l.changes){const m=S.get(u);if(w&&sa(m,w)){te(u);continue}h&&(m?.pack?(f-=1,d-=m.length):m&&(G-=m.length),w?.pack?(f+=1,d+=w.length):w&&(G+=w.length)),w===null?(S.delete(u),ye(u)):(S.set(u,w),te(u))}O=Math.max(O,l.packBytes)}function Ge(){G=0,f=0,d=0;for(const l of S.values())l.pack?(f+=1,d+=l.length):G+=l.length;pe=Math.max(0,O-G)}function Ht(l){let h=0;for(const u of l.values())u.pack||(h=Math.max(h,u.offset+u.length));return h}const Pr=5e3;async function ts(l){if(!s.navigator.locks)return;if(!p)throw new Error("OPFS filesystem project is not initialized.");const h=new AbortController,u=setTimeout(()=>h.abort(),Pr);try{await new Promise((w,m)=>{s.navigator.locks.request(`supercode-browser-filesystem-${p}`,{mode:"exclusive",signal:l?AbortSignal.any([l,h.signal]):h.signal},async()=>{clearTimeout(u),w(),await new Promise(E=>{y=E})}).catch(()=>m(l?.aborted?l.reason:new Error("This browser workspace is already open in another tab.")))})}finally{clearTimeout(u)}}function fn(l){if(typeof l!="string"||!/^[a-z0-9](?:[a-z0-9._-]{0,62}[a-z0-9])?$/u.test(l))throw new Error("OPFS filesystem projectId is invalid.");return l}async function Nt(){if(!n)throw new Error("OPFS filesystem worker is not initialized.");return n}async function Ae(l,h){return(await(await Nt()).getDirectoryHandle(bn,{create:h})).getDirectoryHandle(l,{create:h})}async function Rr(){let l;try{l=await(await Nt()).getDirectoryHandle(bn)}catch(h){if(dr(h))return;throw h}for await(const h of l.entries())throw new Error("OPFS workspace state is missing but stored generations exist. Stored data was retained.")}async function ar(l){const h=await Nt();let u;try{u=await h.getDirectoryHandle(bn)}catch(w){if(dr(w))return;throw w}for await(const[w]of u.entries())w!==l&&await wi(u,w)}function nt(){if(K)throw new Error("This OPFS workspace is closing.");if(ke)throw new Error("This OPFS workspace is replacing its generation; wait for that operation before writing.");if(o)throw new Error("This store is open for reading; its owner writes it.");if(Te)throw Te}async function hn(l){Ai(l)}let cr=!1,It=0,Ce,g=!1;function N(){if(It>0)return;const l=Ce&&Ce.generation===b&&Ce.bytes<=T?Ce.bytes:0;T-l>Di&&!cr&&(cr=!0,(i?s.navigator.locks.request(Sn,{mode:"exclusive"},async()=>{if(!n||K)return;await yt();const u=Ce,w=u&&u.generation===b&&u.bytes<=T?u.bytes:0;T-w>Di&&await un()}):un()).catch(u=>console.error("The workspace's log could not be checkpointed; it is replayed at the next open.",u)).finally(()=>{cr=!1})),!i&&!g&&pe>Nc&&pe>G&&(g=!0,sr(Ga).catch(h=>console.error("The workspace could not be compacted; it keeps its generation.",h)).finally(()=>{g=!1}))}async function P(l){nt(),It+=1;try{return await l()}finally{It-=1,It===0&&!K&&n&&N()}}function $(l,h){const u=bt(l.path);if(l.operation==="write"){if(S.get(u)?.type==="directory")throw new Error(`OPFS write target is a directory: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS write requires file content.");const m=l.content;if(m.byteLength>We)throw new Error(`${u} is ${m.byteLength} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,m.byteLength),_e(u,h);const E=dn(m);z(u,{type:l.symlink?"symlink":"file",mode:l.mode??S.get(u)?.mode??An,mtimeMs:l.mtimeMs??Date.now(),offset:E,length:m.byteLength},h);return}if(l.operation==="append"){const m=S.get(u);if(m&&m.type!=="file")throw new Error(`OPFS append target is not a file: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS append requires file content.");const E=l.content,A=(m?.length??0)+E.byteLength;if(A>We)throw new Error(`${u} is ${A} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,A),_e(u,h);const _=l.mode??m?.mode??An,M=l.mtimeMs??Date.now(),R=m&&!m.pack?m.capacity??m.length:0;if(p!==Bt&&m&&!m.pack&&m.length>0&&(A<=R||m.offset+R===O)){Lt(m.offset+m.length,E),z(u,{...m,mode:_,mtimeMs:M,length:A,capacity:Math.max(R,A)},h),pe-=Math.max(m.length,m.capacity??0),ve-=1,Oe-=m.length;return}const C=new Uint8Array(A);m&&m.length>0&&C.set(zt(m),0),C.set(E,A-E.byteLength);const B=dn(C),F=Math.min(We,Math.max(A,A*2,64*1024));F>A&&fi(B+F),z(u,{type:"file",mode:_,mtimeMs:M,offset:B,length:A,capacity:F},h);return}if(l.operation==="write-at"){const m=S.get(u);if(m&&m.type!=="file")throw new Error(`OPFS write target is not a file: ${u}`);if(!(l.content instanceof Uint8Array))throw new Error("OPFS write requires file content.");const E=l.content,A=l.position,_=m?.length??0;if(E.byteLength===0&&m)return;const M=E.byteLength===0?_:Math.max(_,A+E.byteLength);if(M>We)throw new Error(`${u} is ${M} bytes; an OPFS workspace file holds at most ${We}.`);pt(u,M),_e(u,h);const R=l.mode??m?.mode??An,C=l.mtimeMs??Date.now(),B=m&&!m.pack?m.capacity??m.length:0;if(p!==Bt&&m&&!m.pack&&_>0&&(M<=B||m.offset+B===O)){if(A>_&&Lt(m.offset+_,new Uint8Array(A-_)),dt&&A<_){const Ue=Math.min(_,A+E.byteLength);dt.push([m.offset+A,De(m.offset+A,Ue-A)])}Lt(m.offset+A,E),z(u,{...m,mode:R,mtimeMs:C,length:M,capacity:Math.max(B,M)},h),M!==_&&(pe-=Math.max(m.length,m.capacity??0),ve-=1,Oe-=m.length);return}const F=new Uint8Array(M);m&&_>0&&F.set(zt(m),0),E.byteLength>0&&F.set(E,A);const re=dn(F),ce=Math.min(We,Math.max(M,M*2,64*1024));ce>M&&fi(re+ce),z(u,{type:"file",mode:R,mtimeMs:C,offset:re,length:M,capacity:ce},h);return}if(l.operation==="mkdir"){_e(u,h);const m=S.get(u);if(m&&m.type!=="directory")throw new Error(`OPFS path is a file: ${u}`);z(u,{type:"directory",mode:l.mode??m?.mode??pr,mtimeMs:l.mtimeMs??m?.mtimeMs??Date.now(),offset:0,length:0},h);return}if(l.operation==="remove"){lr(u,h),Fe().includes(u)&&z(u,{type:"directory",mode:pr,mtimeMs:Date.now(),offset:0,length:0},h);return}if(l.operation==="link"){xt(u,hr(l.source),h);return}if(l.operation==="rename"){fr(u,bt(l.destination),h);return}const w=S.get(u);if(!w)throw new Error(`OPFS metadata target does not exist: ${u}`);z(u,{...w,mode:l.mode??w.mode,mtimeMs:l.mtimeMs??w.mtimeMs},h)}function z(l,h,u){const w=S.get(l);Ie&&!Ie.has(l)&&Ie.set(l,w);const m=w!==void 0&&w.type===h.type&&w.offset===h.offset&&w.length===h.length&&w.pack===h.pack;w&&!m&&(kt(w),w.type!=="directory"&&h.type!=="directory"&&w.length>0&&!w.pack&&(ve+=1,Oe+=w.length)),S.set(l,h),te(l),m||(h.pack?(f+=1,d+=h.length):G+=h.length),u.push([l,h])}function te(l){const h=Gt(l);h!==l&&I.mutable(h).add(l.slice(h.length+1))}function ye(l){const h=Gt(l);I.get(h)?.has(l.slice(h.length+1))&&I.mutable(h).delete(l.slice(h.length+1)),I.delete(l)}function ae(){I=new _n;for(const l of S.keys())te(l)}function xe(l){const h=[],u=w=>{const m=S.get(w);if(!m)return;h.push([w,m]);const E=I.get(w);if(E)for(const A of E)u(`${w}/${A}`)};return u(l),h}function kt(l,h){if(l.pack){f-=1,d-=l.length;return}G-=l.length,pe+=Math.max(l.length,l.capacity??0)}function Mt(l,h){const u=S.get(l);u&&(Ie&&!Ie.has(l)&&Ie.set(l,u),S.delete(l),ye(l),kt(u),h.push([l,null]))}function xt(l,h,u){const w=e.packages;if(!w)throw new Error("This store has no shared package store to link from.");const m=hr(h),E=w.descendants(m);if(E.length===0)throw new Error(`The shared package store does not hold ${h}.`);_e(l,u),lr(l,u),Le(S.size+E.length);for(const[A,_]of E){const M=A===m?l:`${l}${A.slice(m.length)}`;z(M,_.type==="directory"?{type:"directory",mode:_.mode,mtimeMs:_.mtimeMs,offset:0,length:0}:{type:_.type,mode:_.mode,mtimeMs:_.mtimeMs,offset:_.offset,length:_.length,pack:Bt},u)}}function _e(l,h){const u=Gt(l);if(u!==l&&S.get(u)?.type==="directory"){Le(S.size+(S.has(l)?0:1));return}const w=[];let m=st(l)??Fe()[0];if(S.has(m)||w.push(m),l!==m)for(const A of is(Si(Gt(l)))){m=`${m}/${A}`;const _=S.get(m);if(_&&_.type!=="directory")throw new Error(`OPFS path parent is a file: ${m}`);_||w.push(m)}Le(S.size+w.length+(S.has(l)?0:1));const E=Date.now();for(const A of w)z(A,{type:"directory",mode:pr,mtimeMs:E,offset:0,length:0},h)}function lr(l,h){for(const[u]of xe(l))Mt(u,h)}function fr(l,h,u){if(l===h)return;if(h.startsWith(`${l}/`))throw new Error("An OPFS rename cannot move a directory into itself.");const w=xe(l);if(w.length===0){if(S.has(h))return;throw new Error(`OPFS rename source does not exist: ${l}`)}_e(h,u),lr(h,u);for(const[m]of w)Mt(m,u);for(const[m,E]of w)z(`${h}${m.slice(l.length)}`,E,u);Le(S.size)}function hr(l){if(typeof l!="string"||!l.startsWith(`${cs}/`)||l.includes("\0")||l.length>4096)throw new Error("Invalid shared store path.");return is(l.slice(cs.length+1)),l}function Fe(){return p===Bt?[cs]:ia}function st(l){return Fe().find(h=>l===h||l.startsWith(`${h}/`))}function pt(l,h){const u=S.get(l),w=u&&!u.pack?u.length:0,m=i?Ac:t;if(G-w+h>m){const E=i?"the origin's shared packages":"the project's own files";throw new Error(`OPFS workspace exceeds its byte limit: writing ${l} (${h} bytes) would take ${E} past ${m} bytes (${G} bytes held, ${w} replaced).`)}}function Le(l){if(l>r)throw new Error("OPFS workspace exceeds its entry limit.")}function gt(){if(Le(S.size),G>t)throw new Error(`OPFS workspace exceeds its byte limit: the project's own files hold ${G} bytes, past ${t}.`)}function Lt(l,h){const u=k;if(!u)throw new Error("OPFS filesystem worker is not initialized.");let w=0;for(;w<h.byteLength;){const m=u.write(h.subarray(w),{at:l+w});if(m<=0)throw new Error("An OPFS workspace file could not be written completely.");w+=m}O=Math.max(O,l+h.byteLength)}function fi(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");l<=O||(h.truncate(l),O=l)}function dn(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");const u=O;let w=0;for(;w<l.byteLength;){const m=h.write(l.subarray(w),{at:u+w});if(m<=0)throw new Error("An OPFS workspace file could not be written completely.");w+=m}return O=u+l.byteLength,u}function Wa(l){const h=k;if(h.getSize()>=O&&l.getSize()>=T)return;h.flush(),l.flush();const u=h.getSize(),w=l.getSize();if(!(u>=O&&w>=T))throw Object.assign(new Error(`This browser is keeping less than the tab wrote (the store's pack holds ${u} of ${O} bytes, its log ${w} of ${T}): its storage is full, as a private window's is well below its quota.`),{name:"QuotaExceededError",code:"ENOSPC"})}function $a(l,h={}){const u=D;if(!u||!k)throw new Error("OPFS filesystem worker is not initialized.");if(l.length===0)return;const w=Kt.encode(JSON.stringify({packBytes:O,changes:l}));if(w.byteLength>Bi)throw new Error("An OPFS workspace index record exceeds its size limit.");const m=new Uint8Array(En+w.byteLength),E=new DataView(m.buffer);E.setUint32(0,w.byteLength,!0),E.setUint32(4,Ei(w),!0),m.set(w,En);let A=0;for(;A<m.byteLength;){const _=u.write(m.subarray(A),{at:T+A});if(_<=0)throw new Error("The OPFS workspace index log could not be written completely.");A+=_}T+=m.byteLength,Wa(u),h.publish!==!1&&et(),performance.now()-ue>=Ci?Pt():fe===void 0&&(fe=setTimeout(Pt,Ci))}function Pt(){if(fe!==void 0&&(clearTimeout(fe),fe=void 0),Te)throw Te;const l=performance.now();k?.flush(),D?.flush(),ue=performance.now(),V+=1,me+=ue-l}function un(){const l=nn,h=sr(()=>l.catch(()=>{}).then(za));return nn=h,h}async function za(){if(nt(),!b)return;const l=b,h=D,u=await Ae(l,!1);if(!h||h!==D||l!==b)throw new Error("OPFS workspace changed generations before its checkpoint could start.");Pt();const w=T;if(await Tr(u,S,{access:h,bytes:w,packBytes:O}),l===b&&(Ce={generation:l,bytes:w}),h===D&&l===b&&w===T){Ye();try{h.truncate(0),h.flush(),T=0,Ce={generation:l,bytes:0}}finally{Me()}}}function hi(l){return Wt(()=>Ha(rs(l)))}async function Ha(l){const h=crypto.randomUUID(),u=await Ae(h,!0),w=await u.getFileHandle(wr,{create:!0}),m=await ee(w,"store"),E=new Map;let A=0;try{for(const M of l.files){let R=0,C=0;if(M.type!=="directory"){const B=new Uint8Array(l.pack,M.offset??0,M.length??0);R=A,C=B.byteLength;let F=0;for(;F<C;){const re=m.write(B.subarray(F),{at:R+F});if(re<=0)throw new Error("An OPFS workspace file could not be written completely.");F+=re}A+=C}E.set(M.path,{type:M.type,mode:M.mode??(M.type==="directory"?pr:An),mtimeMs:M.mtimeMs??Date.now(),offset:R,length:C})}for(const M of Fe())E.has(M)||E.set(M,{type:"directory",mode:pr,mtimeMs:Date.now(),offset:0,length:0});Le(E.size),m.truncate(A),m.flush()}finally{m.close()}const _=await Tr(u,E);await mn(h,u,E,A,_)}async function Va(){await di(()=>!0)}async function Ga(){let l=!1,h=!1,u=!1;try{await ja(()=>{l=!0},()=>{h=!0},()=>{u=!0})}finally{l&&(h||u)?Me():l&&ne()}}async function ja(l,h,u){const w=crypto.randomUUID(),m=await Ae(w,!0),E=await ee(await m.getFileHandle(wr,{create:!0}),"store");let A,_=!1;try{A=await ee(await m.getFileHandle(ls,{create:!0}),"record of changes"),A.truncate(0);const M=new Uint8Array(Ui);let R=0;const C=Z=>{if(Z.pack)return{...Z};if(Z.type==="directory"||Z.length===0)return{...Z,offset:0,length:0};const Ne=k;if(!Ne)throw new Error("OPFS filesystem worker is not initialized.");const jt=R;let je=0;for(;je<Z.length;){const Fr=Math.min(M.byteLength,Z.length-je),Ii=M.subarray(0,Fr);if(L?.ensure(Z.offset+je,Fr),Ne.read(Ii,{at:Z.offset+je})!==Fr)throw new Error("An OPFS workspace file could not be read completely.");let gn=0;for(;gn<Fr;){const ki=E.write(Ii.subarray(gn),{at:jt+je+gn});if(ki<=0)throw new Error("An OPFS workspace file could not be written completely.");gn+=ki}je+=Fr}R+=Z.length;const{capacity:os,...cc}=Z;return{...cc,offset:jt}},B=new Map;let F=performance.now();for(const[Z,Ne]of[...S]){if(K||ke)return;S.get(Z)===Ne&&(B.set(Ne,C(Ne)),performance.now()-F>8&&(await new Promise(jt=>setTimeout(jt,0)),F=performance.now()))}if(K||ke||!k||!D)return;Ye(),l();const re=new Map;for(const[Z,Ne]of S)re.set(Z,B.get(Ne)??C(Ne));E.truncate(R),E.flush(),A.flush(),Pt();const ce={pack:k,log:D};k=E,D=A,T=0,S=re,ae(),O=R,b=w,c=m,Ge(),_=!0;const Ue=new Map(re);try{ce.pack.close()}finally{ce.log.close()}try{await Tr(m,Ue);const Z={storageVersion:4,generation:w,initializedAt:Date.now()};await vr(await Nt(),yr,Z)}catch(Z){throw Te=new Error("The workspace moved to a compacted generation it could not record; it takes no more writes, which its next open would discard.",{cause:Z}),Te}h(),await ar(w)}finally{if(!_){u();try{E.close()}finally{A?.close()}await wi(await(await Nt()).getDirectoryHandle(bn),w)}}}async function Ka(l){nt(),Ye();try{await Xa(l)}finally{Me()}}async function Xa(l){let h=!1;for(const[u,w]of S){if(!w.pack||w.length===0)continue;const m=l.get(w.offset);if(m===void 0)throw new Error(`The shared store no longer holds the bytes of ${u}.`);m!==w.offset&&(S.set(u,{...w,offset:m}),h=!0)}h&&await un()}function di(l){return Wt(()=>Ja(l))}async function Ja(l){const h=k;if(!h)throw new Error("OPFS filesystem worker is not initialized.");const u=new Map,w=crypto.randomUUID(),m=await Ae(w,!0),E=await m.getFileHandle(wr,{create:!0}),A=await ee(E,"store"),_=new Map,M=new Uint8Array(Ui);let R=0;try{for(const[B,F]of S){if(!l(B,F))continue;if(F.pack){_.set(B,{...F});continue}if(F.type==="directory"||F.length===0){_.set(B,{...F,offset:0,length:0});continue}const re=R;u.set(F.offset,re);let ce=0;for(;ce<F.length;){const Ne=Math.min(M.byteLength,F.length-ce),jt=M.subarray(0,Ne);if(L?.ensure(F.offset+ce,Ne),h.read(jt,{at:F.offset+ce})!==Ne)throw new Error("An OPFS workspace file could not be read completely.");let je=0;for(;je<Ne;){const os=A.write(jt.subarray(je),{at:re+ce+je});if(os<=0)throw new Error("An OPFS workspace file could not be written completely.");je+=os}ce+=Ne}R+=F.length;const{capacity:Ue,...Z}=F;_.set(B,{...Z,offset:re,length:F.length})}A.truncate(R),A.flush()}finally{A.close()}const C=await Tr(m,_);return await mn(w,m,_,R,C),u}async function mn(l,h,u,w,m,E){Ye();try{await Za(l,h,u,w,m,E)}finally{Me()}}async function Za(l,h,u,w,m,E){const A=await h.getFileHandle(ls,{create:!0}),_=await ee(A,"record of changes");try{_.truncate(0),_.flush()}finally{_.close()}const M={storageVersion:E?5:4,generation:l,initializedAt:Date.now(),...E?{imageRanges:E}:{}};if(await vr(await Nt(),yr,M),Ve(),b=l,ie=M.initializedAt,x=E,m){const R=new Ft(m.index);S=new qt(R),I=new jr(R),be=void 0}else S=u,ae();O=w,c=h,await rt(h),m?({liveBytes:G,linked:f,linkedBytes:d}=m,pe=Math.max(0,O-G)):Ge(),i||await ar(l)}async function Qa(l,h,u,w,m=!1){if(nt(),!i||p!==Bt)throw new Error("Only the shared package store can reserve immutable image extents.");if(O!==0||[...S.values()].some(B=>B.type!=="directory"))return!1;const E=as(w);if(E.bytes!==l.packBytes||l.entries>fs||l.liveBytes>l.packBytes||h.byteLength!==l.json.raw||u.byteLength!==l.binary.raw||!await wn(h,l.json.sha256,m)||!await wn(u,l.binary.sha256,m))throw new Error("The image's prepared metadata does not match its document.");const A=h.subarray(0,4096).indexOf(10);if(A<0)throw new Error("The prepared index has no bounded retained header.");const _=JSON.parse(`${mr.decode(h.subarray(0,A-1))}}`),M={packBytes:l.packBytes,liveBytes:l.liveBytes,linked:0,linkedBytes:0},R=_.retainedIndex;if(R.version!==1||R.digest!==await ui(l.binary.sha256,M)||R.packBytes!==M.packBytes||R.liveBytes!==M.liveBytes||R.linked!==0||R.linkedBytes!==0)throw new Error("The prepared index's retained measures are inconsistent.");const C=new SharedArrayBuffer(u.byteLength);if(new Uint8Array(C).set(u),new Ft(C).entryCount!==l.entries)throw new Error("The prepared index has the wrong number of entries.");return Wt(async()=>{const B=crypto.randomUUID(),F=await Ae(B,!0),re=await F.getFileHandle(wr,{create:!0}),ce=await ee(re,"immutable image reservation");try{ce.truncate(l.packBytes),ce.flush()}finally{ce.close()}const Ue=Kt.encode(JSON.stringify(E));return await Rt(F,vi,Ue),await Rt(F,yn,u),await Rt(F,it,h),await mn(B,F,new Map,l.packBytes,{index:C,...M},await St(Ue)),!0})}async function qa(l,h,u,w=!1,m){if(nt(),i||!e.packages||!m&&!e.packages.deferredImage)throw new Error("Prepared project paths require a verified shared image.");if(O!==0||[...S.values()].some(R=>R.type!=="directory"))return!1;if(h.byteLength!==l.json.raw||u.byteLength!==l.binary.raw||!await wn(h,l.json.sha256,w)||!await wn(u,l.binary.sha256,w))throw new Error("The image's prepared project does not match its descriptor.");const E=h.subarray(0,4096).indexOf(10);if(E<0)throw new Error("The prepared project has no bounded retained header.");const A=JSON.parse(`${mr.decode(h.subarray(0,E-1))}}`).retainedIndex,_={packBytes:0,liveBytes:0,linked:l.linked,linkedBytes:l.linkedBytes};if(A.version!==1||A.digest!==await ui(l.binary.sha256,_)||A.packBytes!==0||A.liveBytes!==0||A.linked!==l.linked||A.linkedBytes!==l.linkedBytes)throw new Error("The prepared project's retained measures are inconsistent.");const M=new SharedArrayBuffer(u.byteLength);if(new Uint8Array(M).set(u),new Ft(M).entryCount!==l.entries||l.entries>r)throw new Error("The prepared project has invalid entry bounds.");return Wt(async()=>{const R=crypto.randomUUID(),C=await Ae(R,!0),B=await C.getFileHandle(wr,{create:!0}),F=await ee(B,"prepared project");try{F.truncate(0),F.flush()}finally{F.close()}if(await Rt(C,yn,u),await Rt(C,it,h),m&&!await m)return!1;if(!e.packages?.deferredImage)throw new Error("Prepared project paths require a verified shared image.");return await mn(R,C,new Map,0,{index:M,..._}),!0})}async function ec(){if(K)throw new Error("This OPFS workspace is closing.");if(!k)throw new Error("OPFS filesystem worker is not initialized.");const l=[],h=[...S.keys()].sort((A,_)=>bi(A)-bi(_)||(A<_?-1:1));let u=0;for(const A of S.values())A.type!=="directory"&&(u+=A.length);const w=new ArrayBuffer(u),m=new Uint8Array(w);let E=0;for(const A of h){const _=S.get(A);if(_.type==="directory"){l.push({path:A,type:"directory",mode:_.mode,mtimeMs:_.mtimeMs});continue}_.length>0&&m.set(zt(_),E),l.push({path:A,type:_.type,offset:E,length:_.length,mode:_.mode,mtimeMs:_.mtimeMs}),E+=_.length}for(const A of[...Fe()].reverse())S.has(A)||l.unshift({path:A,type:"directory",mode:pr,mtimeMs:Date.now()});return rs({files:l,pack:w})}async function vr(l,h,u){await Rt(l,h,Kt.encode(JSON.stringify(u)))}async function Rt(l,h,u){const w=await(await Nt()).getDirectoryHandle(Fi,{create:!0}),m=crypto.randomUUID(),E=await w.getFileHandle(m,{create:!0}),A=await ee(E,"index");try{let _=0;for(;_<u.byteLength;){const M=A.write(u.subarray(_),{at:_});if(M<=0)throw new Error("An OPFS workspace file could not be written completely.");_+=M}A.truncate(u.byteLength),A.flush()}finally{A.close()}try{await E.move(l,h)}finally{await yi(w,m,!1)}}const yn="index.shared";async function St(l){const h=await crypto.subtle.digest("SHA-256",l);return Array.from(new Uint8Array(h),u=>u.toString(16).padStart(2,"0")).join("")}async function wn(l,h,u){return u||await St(l)===h}function ui(l,h){const{packBytes:u,liveBytes:w,linked:m,linkedBytes:E,journalPrefix:A}=h;return St(Kt.encode(`${JSON.stringify({packBytes:u,liveBytes:w,linked:m,linkedBytes:E,...A?{journalPrefix:A}:{}})}:${l}`))}async function mi(l,h){const{packBytes:u,liveBytes:w,linked:m,linkedBytes:E,journalPrefix:A}=h;return St(Kt.encode(`${JSON.stringify({packBytes:u,liveBytes:w,linked:m,linkedBytes:E,...A?{journalPrefix:A}:{}})}:${await St(l)}`))}async function Tr(l,h,u){const w=sc(h);if(typeof SharedArrayBuffer>"u"||h.size<1e4){await vr(l,it,w);return}const m=new Map(w.entries),E=new Map,A={packBytes:u?.packBytes??0,liveBytes:0,linked:0,linkedBytes:0};for(const[re,ce]of m){const Ue=Gt(re);if(Ue!==re){let Z=E.get(Ue);Z||(Z=new Set,E.set(Ue,Z)),Z.add(re.slice(Ue.length+1))}ce.pack?(A.linked+=1,A.linkedBytes+=ce.length):(A.liveBytes+=ce.length,A.packBytes=Math.max(A.packBytes,ce.offset+ce.length))}let _;try{_=Mi(m,E)}catch{await vr(l,it,w);return}const M=JSON.stringify(w.entries),R=u?new Uint8Array(u.bytes):void 0;if(R&&u.access.read(R,{at:0})!==R.byteLength)throw new Error("The checkpoint's journal prefix could not be read completely.");const C=R?{bytes:R.byteLength,digest:await St(R)}:void 0,B=new Uint8Array(_).slice(),F={version:C?2:1,digest:await mi(B,{...A,...C?{journalPrefix:C}:{}}),...A,...C?{journalPrefix:C}:{}};try{await Rt(l,yn,B)}catch{await vr(l,it,{entries:JSON.parse(M)});return}return await Rt(l,it,Kt.encode(`{"retainedIndex":${JSON.stringify(F)},
2
2
  "entries":${M}}`)),{index:_,...A}}async function tc(l){if(!(typeof SharedArrayBuffer>"u"))try{const h=await l.getFileHandle(it),u=await ee(h,"index");let w;try{const B=new Uint8Array(Math.min(512,u.getSize())),F=u.read(B,{at:0});w=mr.decode(B.subarray(0,F))}finally{u.close()}const m=w.split(`
3
3
  `,1)[0];if(!m.startsWith('{"retainedIndex":')||!m.endsWith(","))return;const E=JSON.parse(m.slice(0,-1)+"}").retainedIndex;if(E.version!==1&&E.version!==2||!/^[a-f0-9]{64}$/u.test(E.digest)||![E.packBytes,E.liveBytes,E.linked,E.linkedBytes].every(B=>Number.isSafeInteger(B)&&B>=0)||E.version===1&&E.journalPrefix!==void 0||E.version===2&&(!E.journalPrefix||!Number.isSafeInteger(E.journalPrefix.bytes)||E.journalPrefix.bytes<0||!/^[a-f0-9]{64}$/u.test(E.journalPrefix.digest)))return;const A=await l.getFileHandle(yn),_=await ee(A,"index");let M;try{const B=_.getSize();if(B>256*1024*1024||(M=new Uint8Array(B),_.read(M,{at:0})!==B))return}finally{_.close()}if(await mi(M,E)!==E.digest)return;const R=new SharedArrayBuffer(M.byteLength);new Uint8Array(R).set(M);const C=new Ft(R);return Le(C.entryCount),{...E,index:R}}catch{return}}async function rc(l){const h=l.journalPrefix;if(!h||!D||!k||h.bytes>D.getSize()||l.packBytes>k.getSize())return 0;const u=new Uint8Array(h.bytes);return D.read(u,{at:0})!==u.byteLength?0:await St(u)===h.digest?h.bytes:0}async function Vt(l,h){let u;try{u=await l.getFileHandle(h)}catch(E){if(dr(E))return;throw E}let w;if(o){w=await(await u.getFile()).text();try{return JSON.parse(w)}catch(E){throw new Error(`Invalid OPFS workspace metadata (${h}). Stored data was retained.`,{cause:E})}}const m=await ee(u,"index");try{const E=m.getSize(),A=new Uint8Array(E);if(E>0&&m.read(A,{at:0})!==E)throw new Error("An OPFS workspace file could not be read completely.");w=mr.decode(A)}finally{m.close()}try{return JSON.parse(w)}catch(E){throw new Error(`Invalid OPFS workspace metadata (${h}). Stored data was retained.`,{cause:E})}}async function yi(l,h,u){try{await l.removeEntry(h,{recursive:u})}catch(w){if(!dr(w))throw w}}async function wi(l,h){try{await l.removeEntry(h,{recursive:!0})}catch{}}function pi(l){if(!l||typeof l!="object"||Array.isArray(l))throw new Error("Invalid OPFS filesystem mutation.");if(l.operation!=="write"&&l.operation!=="append"&&l.operation!=="write-at"&&l.operation!=="mkdir"&&l.operation!=="remove"&&l.operation!=="rename"&&l.operation!=="metadata"&&l.operation!=="link")throw new Error("Invalid OPFS filesystem mutation.");if(bt(l.path),l.operation==="rename"&&bt(l.destination),(l.operation==="write"||l.operation==="append"||l.operation==="write-at")&&!(l.content instanceof Uint8Array))throw new Error("Invalid OPFS file content.");if(l.operation==="write-at"&&(!Number.isSafeInteger(l.position)||l.position<0))throw new Error("Invalid OPFS write position.");return ns(l),l}function nc(l){if(!Array.isArray(l)||l.length===0||l.length>128)throw new Error("Invalid OPFS filesystem mutation batch.");return l.map(h=>pi(h))}function rs(l){if(!l||!Array.isArray(l.files)||l.files.length>r||!(l.pack instanceof ArrayBuffer))throw new Error("Invalid OPFS workspace snapshot.");const h=new Set,u=new Map(Fe().map(m=>[m,"directory"]));let w=0;for(const m of l.files){if(!m||typeof m!="object")throw new Error("Invalid OPFS workspace snapshot entry.");if(bt(m.path),m.type!=="file"&&m.type!=="directory"&&m.type!=="symlink"||h.has(m.path))throw new Error("Invalid or duplicate OPFS workspace entry.");if(h.add(m.path),u.set(m.path,m.type),Fe().includes(m.path)&&m.type!=="directory")throw new Error("The OPFS workspace root must be a directory.");if(m.type!=="directory"){const E=m.offset??0,A=m.length??0;if(!Number.isSafeInteger(E)||!Number.isSafeInteger(A)||E<0||A<0||A>We||E+A>l.pack.byteLength)throw new Error("Invalid OPFS workspace file.");if(w+=A,w>t)throw new Error("OPFS workspace exceeds its byte limit.")}else if((m.offset??0)!==0||(m.length??0)!==0)throw new Error("An OPFS workspace directory cannot contain file bytes.");ns(m)}Le(u.size);for(const m of l.files)if(!Fe().includes(m.path)&&u.get(Gt(m.path))!=="directory")throw new Error(`An OPFS workspace snapshot has no directory parent for ${m.path}.`);return l}function ns(l){if(l.mode!==void 0&&(!Number.isSafeInteger(l.mode)||l.mode<0||l.mode>4095))throw new Error("Invalid OPFS file mode.");if(l.mtimeMs!==void 0&&(typeof l.mtimeMs!="number"||!Number.isFinite(l.mtimeMs)||l.mtimeMs<0))throw new Error("Invalid OPFS modification time.")}function sc(l){return{entries:[...l]}}function ss(l){const h=new Map;if(l===void 0)throw new Error("The committed OPFS workspace index is missing. Stored data was retained.");if(!l||typeof l!="object"||!Array.isArray(l.entries))throw new Error("Invalid OPFS workspace index.");const u=l.entries;Le(u.length);for(const w of u){if(!Array.isArray(w)||w.length!==2)throw new Error("Invalid OPFS workspace index entry.");const m=bt(w[0]);if(h.has(m))throw new Error("Duplicate OPFS workspace index entry.");h.set(m,gi(w[1]))}return h}function gi(l){if(!l||typeof l!="object"||Array.isArray(l))throw new Error("Invalid OPFS workspace index entry.");const h=l;if(h.type!=="file"&&h.type!=="directory"&&h.type!=="symlink")throw new Error("Invalid OPFS workspace index entry.");if(ns(h),h.mode===void 0||h.mtimeMs===void 0)throw new Error("Invalid OPFS workspace index entry.");if(!Number.isSafeInteger(h.offset)||h.offset<0||!Number.isSafeInteger(h.length)||h.length<0||h.length>We)throw new Error("Invalid OPFS workspace index extent.");if(h.pack!==void 0&&h.pack!==Bt)throw new Error("Invalid OPFS workspace index entry.");return{type:h.type,mode:h.mode,mtimeMs:h.mtimeMs,offset:h.offset,length:h.length,...h.pack?{pack:h.pack}:{}}}function ic(l){if(!l||typeof l!="object"||Array.isArray(l))throw new Error("Invalid OPFS workspace index record.");const h=l;if(!Number.isSafeInteger(h.packBytes)||h.packBytes<0||!Array.isArray(h.changes))throw new Error("Invalid OPFS workspace index record.");const u=[];for(const w of h.changes){if(!Array.isArray(w)||w.length!==2)throw new Error("Invalid OPFS workspace index record.");u.push([bt(w[0]),w[1]===null?null:gi(w[1])])}return{packBytes:h.packBytes,changes:u}}function pn(l){if(l===void 0)return;if(!l||typeof l!="object"||Array.isArray(l))throw new Error("Invalid OPFS workspace state. Stored data was retained.");const h=l;if(h.storageVersion!==4&&h.storageVersion!==5||h.storageVersion===5&&(typeof h.imageRanges!="string"||!/^[a-f0-9]{64}$/u.test(h.imageRanges))||h.storageVersion===4&&h.imageRanges!==void 0||typeof h.generation!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(h.generation)||typeof h.initializedAt!="number"||!Number.isFinite(h.initializedAt))throw new Error("Invalid or unsupported OPFS workspace state. Stored data was retained.");return h}function bt(l){if(typeof l!="string"||st(l)===void 0||l.includes("\0")||l.length>4096)throw new Error("Invalid OPFS workspace path.");return Si(l),l}function Si(l){const h=st(l);if(h===void 0)throw new Error("Invalid OPFS workspace path.");const u=l===h?"":l.slice(h.length+1);return is(u),u}function is(l){const h=l===""?[]:l.split("/");if(h.some(u=>!u||u==="."||u===".."||u.includes("\0")))throw new Error("Invalid OPFS workspace path segment.");return h}function Gt(l){const h=l.slice(0,l.lastIndexOf("/"));return h===""||st(h)===void 0?st(l)??l:h}function bi(l){let h=1;for(let u=0;u<l.length;u+=1)l.charCodeAt(u)===47&&(h+=1);return h}function dr(l){return l instanceof DOMException&&l.name==="NotFoundError"}function Ei(l){let h=2166136261;for(let u=0;u<l.byteLength;u+=1)h^=l[u],h=Math.imul(h,16777619);return h>>>0}typeof addEventListener=="function"&&addEventListener("close",()=>{k?.flush(),D?.flush(),Ve(),y?.()});function Ai(l,h={}){if(nt(),Ie)throw new Error("An OPFS mutation batch cannot be nested.");for(const u of l)pi(u);return l.length?_i(u=>{for(const w of l)$(w,u)},h):[]}function oc(l,h,u={}){if(nt(),Ie)throw new Error("An OPFS mutation batch cannot be nested.");for(const w of h){if(bt(w.path),w.type!=="file"&&w.type!=="directory"&&w.type!=="symlink")throw new Error(`OPFS extent ${w.path} has no valid type.`);if(w.type==="directory")continue;const{offset:m,length:E}=w;if(m===void 0||E===void 0||!Number.isSafeInteger(m)||!Number.isSafeInteger(E)||m<0||E<0||m+E>l.byteLength)throw new Error(`OPFS extent ${w.path} lies outside its bytes.`);if(E>We)throw new Error(`${w.path} is ${E} bytes; an OPFS workspace file holds at most ${We}.`)}return h.length?_i(w=>{const m=l.byteLength>0?dn(l):O;for(const E of h){const A=bt(E.path);_e(A,w);const _=S.get(A);if(E.type==="directory"){if(_&&_.type!=="directory")throw new Error(`OPFS path is a file: ${A}`);z(A,{type:"directory",mode:E.mode,mtimeMs:E.mtimeMs,offset:0,length:0},w);continue}if(_?.type==="directory")throw new Error(`OPFS write target is a directory: ${A}`);pt(A,E.length),z(A,{type:E.type,mode:E.mode,mtimeMs:E.mtimeMs,offset:m+E.offset,length:E.length},w)}},u):[]}function _i(l,h){if(!k||!D)throw new Error("OPFS filesystem worker is not initialized.");const u={packBytes:O,logBytes:T,liveBytes:G,deadBytes:pe,rewrites:ve,rewrittenBytes:Oe,linked:f,linkedBytes:d},w=new Map;Ie=w;const m=[];dt=m;const E=[];try{return l(E),gt(),$a(E,{publish:!h.durable}),h.durable&&(Pt(),et()),N(),E}catch(A){const _=he!==void 0&&!He&&Atomics.load(he,Yi)!==u.logBytes;_&&Ye();for(const[M,R]of w)R===void 0?S.delete(M):S.set(M,R);ae();try{for(let M=m.length-1;M>=0;M-=1)Lt(m[M][0],m[M][1])}catch(M){A=new AggregateError([A,M],"OPFS could not restore bytes a failed batch wrote over.")}({packBytes:O,logBytes:T,liveBytes:G,deadBytes:pe,rewrites:ve,rewrittenBytes:Oe,linked:f,linkedBytes:d}=u),fe!==void 0&&(clearTimeout(fe),fe=void 0);try{D.truncate(T),D.flush(),k.truncate(O),k.flush()}catch(M){throw ne(),Te=new AggregateError([A,M],"OPFS could not roll back a failed batch; reopen this workspace before writing again."),Te}throw _&&Me(),A}finally{Ie=void 0,dt=void 0}}function ac(){if(Ut){ut?.abort(new DOMException("The workspace was closed while opening.","AbortError"));return}K||(K=!0,mt===0&&Ni())}function Ni(){ne();try{Pt()}finally{try{Ve()}finally{const l=y;y=void 0,n=void 0;try{l?.()}finally{e.ownsPackages&&e.packages?.close()}}}}return{initialize:ir,opened:()=>n!==void 0&&!K,stats:()=>({entries:S.size,liveBytes:G,deadBytes:pe,packBytes:O,rewrites:ve,rewrittenBytes:Oe,linked:f,linkedBytes:d,flushes:V,flushMs:me}),applyNow:Ai,applyExtentsNow:oc,close:ac,readExtent:De,descendants:xe,retain:di,remapLinks:Ka,childrenOf:l=>[...I.get(l)??[]].sort(),refresh:or,follow:an,clock:tt,readerSeed:on,imageCompletionSeed:nr,imageLine:()=>L?.lineForReader()??e.packages?.imageLine(),imageStartupSet:()=>L?.readDigests()??L?.completedDigests()??[],prefetchImage:(l,h)=>L?.prefetch(l,h)??{queued:0,done:Promise.resolve()},seeded:()=>xr,get logBytes(){return T},checkpoint:un,deferMaintenance:P,installPreparedImage:Qa,installPreparedProject:qa,get deferredImage(){return W},get imagePlacedAt(){return n&&x?ie:void 0},get entries(){return S},get packBytes(){return O},read:cn,readRange:$t,snapshot:ec,replace:hi,apply:hn,flush:()=>{if(K||!n)throw new Error("This OPFS workspace is not open.");if(ke)throw new Error("Wait for the OPFS generation replacement before flushing it.");Pt()},validateSnapshot:rs,validateMutationBatch:nc}}async function Ic(s,e,t,r){const n=Ks(s);await n.initialize(Bt,{readOnly:!0,extentsOnly:!0});const i=Ks(s,{packages:n,ownsPackages:!0});let o;try{o=await i.initialize(e,{readOnly:!0,...t?{seed:t}:{}})}catch(a){throw i.close(),n.close(),a}if(!o&&!i.opened()){n.close();return}return i}const kc="sweep.json";async function Mc(s){const t=await(await s.getFileHandle(kc,{create:!0})).createWritable();await t.write(JSON.stringify({at:Date.now()})),await t.close()}class _n{map=new Map;get(e){return this.map.get(e)}mutable(e){let t=this.map.get(e);return t||(t=new Set,this.map.set(e,t)),t}delete(e){this.map.delete(e)}}let Be;function Wi(s){Be=s}const xc=5,Lc=20;function Nr(s,e,t,r,n){if(!Be)return Atomics.wait(s,e,t,r);const i=r===void 0?Number.POSITIVE_INFINITY:performance.now()+r,o=n===void 0?xc:Lc;for(;;){const a=Atomics.load(Be.doorbell,0);if(Be.pump(),Atomics.load(s,e)!==t)return"not-equal";const c=i-performance.now();if(c<=0)return"timed-out";if(n!==void 0&&Atomics.store(Be.doorbell,1,n+1),Atomics.load(Be.doorbell,0)!==a){n!==void 0&&Atomics.store(Be.doorbell,1,0);continue}let f;try{f=Atomics.wait(s,e,t,Math.min(o,c))}finally{n!==void 0&&Atomics.store(Be.doorbell,1,0)}if(f!=="timed-out")return f}}function Pc(s){if(!Be)return!1;for(;;){const e=Atomics.load(Be.doorbell,0);Be.pump();const t=s-performance.now();if(t<=0)return!0;Atomics.load(Be.doorbell,0)===e&&Atomics.wait(Be.doorbell,0,e,Math.min(100,t))}}const Kr=24,oa=12,aa=4,$i=17,Rc=0x10000000n,Qr=s=>1n<<BigInt(s-1),vc=Qr(9)|Qr(19),Tc=new Set([17,18,19,20,21,22,23,28]),Fc=s=>!Tc.has(s);function Bc(){return new SharedArrayBuffer((aa+64*oa)*4)}class hs{buffer;words;constructor(e){this.buffer=e,this.words=new Int32Array(e)}offset(e){return aa+(e-1)*oa}locked(e){for(;Atomics.compareExchange(this.words,0,0,1)!==0;)Atomics.wait(this.words,0,1);try{return e()}finally{Atomics.store(this.words,0,0),Atomics.notify(this.words,0)}}changed(){Atomics.add(this.words,1,1),Atomics.notify(this.words,1)}action(e,t){return this.locked(()=>{const r=this.offset(e),n=new Uint8Array(this.buffer,(r+1)*4,Kr),i=Uint8Array.from(n);return t&&(n.set(t),new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0)<=1&&Atomics.exchange(this.words,r,0)!==0&&Atomics.sub(this.words,2,1),this.changed()),i})}raise(e,t=0,r=0){return this.locked(()=>{const n=this.offset(e),i=Atomics.load(this.words,n+1)>>>0;return i<=1?i===1?"ignored":"default":(Atomics.load(this.words,n)!==0||(Atomics.store(this.words,n+7,t),Atomics.store(this.words,n+8,r),Atomics.store(this.words,n,1),Atomics.add(this.words,2,1),this.changed()),"handled")})}anyPending(){return Atomics.load(this.words,2)!==0}pending(){if(Atomics.load(this.words,2)===0)return 0n;let e=0n;for(let t=1;t<=64;t++)Atomics.load(this.words,this.offset(t))&&(e|=Qr(t));return e}take(e){if((this.pending()&~e)!==0n)return this.locked(()=>{for(let t=1;t<=64;t++){const r=this.offset(t);if((e&Qr(t))!==0n||Atomics.load(this.words,r)===0)continue;Atomics.store(this.words,r,0),Atomics.sub(this.words,2,1);const n=Uint8Array.from(new Uint8Array(this.buffer,(r+1)*4,Kr));return(new DataView(n.buffer).getBigUint64(4,!0)&0x80000000n)!==0n&&Atomics.store(this.words,r+1,0),{signal:t,action:n,pid:Atomics.load(this.words,r+7),status:Atomics.load(this.words,r+8)}}})}}class Oc{signals;memory;table;allocateScratch;held;mask=0n;delivering=!1;scratch=0;constructor(e,t,r,n,i=()=>!1){this.signals=e,this.memory=t,this.table=r,this.allocateScratch=n,this.held=i}range(e,t){return Number.isSafeInteger(e)&&e>0&&e+t<=this.memory().buffer.byteLength}imports(){return{SYS_rt_sigaction:(e,t,r,n)=>{const i=Number(e),o=Number(t),a=Number(r);if(i<1||i>64||Number(n)!==8||o!==0&&[9,19].includes(i))return-22n;if(o&&!this.range(o,Kr)||a&&!this.range(a,Kr))return-14n;const c=o?new Uint8Array(this.memory().buffer).slice(o,o+Kr):void 0;if(c){const d=new DataView(c.buffer),y=d.getUint32(0,!0),p=d.getBigUint64(4,!0);if(i===$i&&(y===1||(p&2n)!==0n)||y>1&&(p&(0x08000000n|0x40000000n))!==0n)return-95n}const f=this.signals.action(i,c);return a&&new Uint8Array(this.memory().buffer).set(f,a),0n},SYS_rt_sigprocmask:(e,t,r,n)=>{const i=Number(t),o=Number(r),a=Number(e);if(Number(n)!==8||i&&![0,1,2].includes(a))return-22n;if(i&&!this.range(i,8)||o&&!this.range(o,8))return-14n;const c=new DataView(this.memory().buffer),f=i?c.getBigUint64(i,!0):0n;return o&&c.setBigUint64(o,this.mask,!0),i&&(this.mask=(a===0?this.mask|f:a===1?this.mask&~f:f)&~vc,this.signals.changed()),0n},SYS_rt_sigpending:(e,t)=>Number(t)!==8?-22n:this.range(Number(e),8)?(new DataView(this.memory().buffer).setBigUint64(Number(e),this.signals.pending(),!0),0n):-14n}}deliver(e=!1){if(this.delivering||!this.signals.anyPending()||(this.signals.pending()&~this.mask)===0n||!e&&this.held())return!1;this.delivering=!0;let t=!1,r=!0;try{for(let n=0;n<64;n++){const i=this.signals.take(this.mask);if(!i)return t&&r;const o=new DataView(i.action.buffer),a=o.getUint32(0,!0);if(a<=1)continue;t=!0,(o.getBigUint64(4,!0)&Rc)===0n&&(r=!1);const c=this.table()?.get(a);if(typeof c!="function")throw new Error(`Invalid WALI signal handler ${a}.`);const f=this.mask;this.mask|=o.getBigUint64(16,!0)|Qr(i.signal);try{if((o.getBigUint64(4,!0)&4n)!==0n){if(this.scratch||(this.scratch=this.allocateScratch()),this.scratch<=0)throw new Error("Cannot allocate WALI signal information.");new Uint8Array(this.memory().buffer).fill(0,this.scratch,this.scratch+128);const d=new DataView(this.memory().buffer);d.setInt32(this.scratch,i.signal,!0),d.setInt32(this.scratch+8,i.signal===$i?1:0,!0),d.setInt32(this.scratch+16,i.pid,!0),d.setInt32(this.scratch+20,1e3,!0),d.setInt32(this.scratch+24,i.status,!0),c(i.signal,this.scratch,0)}else c(i.signal)}finally{this.mask=f}}return t&&r}finally{this.delivering=!1}}}function Yc(s,e){let t;return()=>{if(t===void 0){const r=s()?.__wali_private_tree_busy;if(typeof r!="function")return!1;t=Number(r())>>>2}return Atomics.load(new Int32Array(e().buffer),t)!==0}}function er(s){if(!s||typeof s!="object"||Object.keys(s).some(t=>t!=="writableRoots")||!Array.isArray(s.writableRoots)||s.writableRoots.length>128)throw new TypeError("Invalid process filesystem policy: expected up to 128 writableRoots.");const e=[...new Set(Array.from(s.writableRoots,ca))].sort();return Object.freeze({writableRoots:Object.freeze(e.filter(t=>!e.some(r=>r!==t&&Hn(t,r))))})}function Dc(s,e){const t=er(s);if(e===void 0)return t;const r=er(e);return er({writableRoots:t.writableRoots.flatMap(n=>r.writableRoots.flatMap(i=>Hn(n,i)?[n]:Hn(i,n)?[i]:[]))})}function Cc(s,e){const t=er(e),r=n=>t.writableRoots.some(i=>Hn(n,i));return n=>{const i=ca(n);r(i)||ds(i);let o="";for(const a of i.split("/").filter(Boolean)){o+=`/${a}`;try{s.lstatSync(o).isSymbolicLink()&&ds(i)}catch(c){if(c.code!=="ENOENT")throw c;r(o)||ds(o)}}return i}}function ca(s){if(typeof s!="string"||!s.startsWith("/")||s.includes("\0")||s.length>8192)throw new TypeError("Filesystem policy paths must be absolute paths without NUL bytes.");const e=[];for(const t of s.split("/"))t===".."?e.pop():t&&t!=="."&&e.push(t);return`/${e.join("/")}`}function Hn(s,e){return e==="/"||s===e||s.startsWith(`${e}/`)}function ds(s){throw Object.assign(new Error(`EACCES: process filesystem policy denies mutation of '${s}'`),{code:"EACCES",path:s})}function Uc(s,e,t){return(...r)=>{if(!e())return-95;if(r.length!==9)return-22;const n=Number(r[7]),i=Number(r[8]);if(!Number.isSafeInteger(i)||i<1||i>65536)return-22;const o=s().buffer;if(!Number.isSafeInteger(n)||n<=0||n>o.byteLength-i)return-14;let a;try{const c=new Uint8Array(o,n,i).slice();a=er(JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(c)))}catch{return-22}return t(r.slice(0,7),a)}}const Wc=new Set(["_Unwind_Backtrace","_Unwind_FindEnclosingFunction","_Unwind_GetCFA"]);function $c(s){return s.module==="env"&&(s.kind==="function"&&Wc.has(s.name)||s.kind==="memory"&&s.name==="memory")}async function zc(s){if(s instanceof WebAssembly.Module)return s;const e=s instanceof Uint8Array?s:new Uint8Array(s);return WebAssembly.compile(e)}function Hc(s){return WebAssembly.Module.imports(s).map(({module:e,name:t,kind:r})=>({module:e,name:t,kind:r}))}function Vc(s){const e=s.filter(t=>!(t.kind==="function"&&t.module==="wali"||$c(t)));if(e.length!==0)throw new Error(`Not a supported WALI module: ${e.map(Gc).join(", ")}`)}function Gc(s){return`${s.module}.${s.name} (${s.kind})`}const jc=new Set(["SYS_rt_sigreturn","SYS_futex","SYS_pause","SYS_rt_sigsuspend"]),Kc=-38n;function Xc(s){return!s.startsWith("SYS_")||jc.has(s)}class ni{nextId=1;pipeMetadata;constructor(e=new SharedArrayBuffer(65536*3*4)){this.pipeMetadata=new Int32Array(e)}descriptions=new Map;create(e,t,r){for(;this.nextId<65536&&this.descriptions.has(this.nextId);)this.nextId++;if(this.nextId>=65536){for(this.nextId=1;this.descriptions.has(this.nextId);)this.nextId++;if(this.nextId>=65536)throw new Error("EMFILE")}const n={id:this.nextId++,kind:e,value:t,references:0,release:r};return this.descriptions.set(n.id,n),e==="special"&&typeof t=="object"&&t!==null&&"stdio"in t&&Atomics.store(this.pipeMetadata,n.id*3+2,Number(t.stdio)+1),n}get(e){return this.descriptions.get(e)}retain(e){const t=this.descriptions.get(e);if(!t)throw new Error(`Unknown open description ${e}`);t.references++}release(e){const t=this.descriptions.get(e);if(!t||t.references<=0)throw new Error(`Unbalanced description release ${e}`);--t.references===0&&(this.descriptions.delete(e),Atomics.store(this.pipeMetadata,e*3,0),Atomics.store(this.pipeMetadata,e*3+1,0),Atomics.store(this.pipeMetadata,e*3+2,0),t.release?.())}}class rn{registry;entries=[];named=new Map;sharedEntries;constructor(e,t=new SharedArrayBuffer(65536*4)){this.registry=e,this.sharedEntries=new Int32Array(t)}get(e){const t=this.entries[e];return t&&this.registry.get(t.description)}set(e,t,r=0){this.registry.retain(t.id),this.close(e),this.entries[e]={description:t.id,flags:r},this.named.set(t.id,(this.named.get(t.id)??0)+1),Atomics.store(this.sharedEntries,e,t.id)}close(e){const t=this.entries[e];if(!t)return!1;delete this.entries[e];const r=(this.named.get(t.description)??1)-1;return r>0?this.named.set(t.description,r):this.named.delete(t.description),Atomics.store(this.sharedEntries,e,0),this.registry.release(t.description),!0}names(e){return this.named.has(e)}copy(){const e=new rn(this.registry);return this.entries.forEach((t,r)=>{t&&e.set(r,this.registry.get(t.description),t.flags)}),e}exec(){this.entries.forEach((e,t)=>{e&&e.flags&1&&this.close(t)})}exit(){this.entries.forEach((e,t)=>{e&&this.close(t)})}view(e,t){return new Jc(this,e,t)}}class Jc{table;kind;release;constructor(e,t,r){this.table=e,this.kind=t,this.release=r}resolvedEntries=[];resolvedValues=[];resolvedOwn=[];resolve(e){const t=this.table.entries[e];if(t===void 0)return this.resolvedEntries[e]!==void 0&&(this.resolvedEntries[e]=void 0,this.resolvedValues[e]=void 0),!1;if(this.resolvedEntries[e]!==t){const r=this.table.registry.get(t.description),n=r?.kind===this.kind;this.resolvedEntries[e]=t,this.resolvedValues[e]=n?r.value:void 0,this.resolvedOwn[e]=n}return this.resolvedOwn[e]}get(e){return this.resolve(e)?this.resolvedValues[e]:void 0}has(e){return this.resolve(e)}set(e,t){const r=this.table.registry.create(this.kind,t,()=>this.release?.(t));this.table.set(e,r)}delete(e){return this.has(e)?(this.resolvedEntries[e]=void 0,this.resolvedValues[e]=void 0,this.table.close(e)):!1}*values(){for(let e=0;e<this.table.entries.length;e++)this.has(e)&&(yield this.get(e))}}function Vn(){return typeof performance>"u"?Date.now():performance.timeOrigin+performance.now()}function ge(){return typeof performance>"u"?Date.now():performance.timeOrigin+performance.now()}const us=0,zi=1,Hi=2,Br=3,Zc=4,Qc=5,ms=6;class Xs{buffer;control;bytes;constructor(e){if(this.buffer=e,e.byteLength<=Int32Array.BYTES_PER_ELEMENT*ms+1)throw new Error("WALI stdin shared buffer is too small.");this.control=new Int32Array(e,0,ms),this.bytes=new Uint8Array(e,Int32Array.BYTES_PER_ELEMENT*ms)}read(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("WALI stdin read length is invalid.");if(e===0)return new Uint8Array;for(;;){const t=Atomics.load(this.control,us),r=Atomics.load(this.control,zi),n=Vi(t,r,this.bytes.byteLength);if(n>0){const o=Math.min(e,n),a=new Uint8Array(o);for(let c=0;c<o;c+=1)a[c]=this.bytes[(t+c)%this.bytes.byteLength];return Atomics.store(this.control,us,(t+o)%this.bytes.byteLength),a}if(Atomics.load(this.control,Hi)!==0)return new Uint8Array;const i=Atomics.load(this.control,Br);Nr(this.control,Br,i)}}poll(){return Atomics.load(this.control,Hi)!==0||this.available()>0}wait(e){if(this.poll())return!0;const t=Atomics.load(this.control,Br);return this.poll()?!0:(Nr(this.control,Br,t,e<0?void 0:Math.max(0,e)),this.poll())}available(){return Vi(Atomics.load(this.control,us),Atomics.load(this.control,zi),this.bytes.byteLength)}generation(){return Atomics.load(this.control,Br)}terminalSize(){return{columns:Atomics.load(this.control,Qc)||80,rows:Atomics.load(this.control,Zc)||24}}}class la{bytes;offset=0;constructor(e){this.bytes=e}read(e){const t=this.bytes.slice(this.offset,this.offset+Math.max(0,e));return this.offset+=t.byteLength,t}poll(){return this.offset<this.bytes.byteLength}wait(){return this.poll()}available(){return Math.max(0,this.bytes.byteLength-this.offset)}}function Vi(s,e,t){return e>=s?e-s:t-s+e}const le=new TextEncoder().encode("\0supercode-wali-symlink-v1\0"),fa=40,Gn=4096;function qc(s,e,t){if(s.existsSync(t))throw jn("EEXIST");const r=new TextEncoder().encode(e);if(r.byteLength>=Gn)throw jn("ENAMETOOLONG");const n=new Uint8Array(le.byteLength+r.byteLength);n.set(le),n.set(r,le.byteLength),s.writeFileSync(t,n)}function Yn(s,e){if(s.linkTargetSync)return s.linkTargetSync(e,le.byteLength,le.byteLength+Gn,ha);if(!s.existsSync(e))return;const t=s.statSync(e);if(!t.isFile()||t.size<le.byteLength||t.size>le.byteLength+Gn)return;if(s.readRangeSync){const n=s.readRangeSync(e,0,le.byteLength);for(let i=0;i<le.byteLength;i+=1)if(n[i]!==le[i])return}const r=s.readFileSync(e);if(!(r.byteLength<le.byteLength)){for(let n=0;n<le.byteLength;n+=1)if(r[n]!==le[n])return;return new TextDecoder("utf-8",{fatal:!0}).decode(r.subarray(le.byteLength,da(r)))}}function ha(s){if(!(s.byteLength<le.byteLength)){for(let e=0;e<le.byteLength;e+=1)if(s[e]!==le[e])return;return new TextDecoder("utf-8",{fatal:!0}).decode(s.slice(le.byteLength,da(s)))}}function da(s){const e=s.indexOf(0,le.byteLength);return e<0?s.byteLength:e}function el(s,e,t=!0){if(s.linkTargetSync&&rl(e))return tl(s,e,t);let r=e;for(let n=0;n<fa;n+=1){const i=r.split("/").filter(Boolean);let o=!1;for(let a=0;a<i.length&&!(!t&&a===i.length-1);a+=1){const c=`/${i.slice(0,a+1).join("/")}`,f=Yn(s,c);if(f===void 0)continue;const d=`/${i.slice(0,a).join("/")}`,y=f.startsWith("/")?Ar(f):Ar(`${d}/${f}`);r=Ar(`${y}/${i.slice(a+1).join("/")}`),o=!0;break}if(!o)return r}throw jn("ELOOP")}function tl(s,e,t){let r=e;for(let n=0;n<fa;n+=1){let i=!1,o=1;for(;o<=r.length;){const a=r.indexOf("/",o),c=a===-1;if(!t&&c)break;const f=c?r:r.slice(0,a),d=f.length>1?s.linkTargetSync(f,le.byteLength,le.byteLength+Gn,ha,!0):void 0;if(d!==void 0){const y=f.slice(0,f.lastIndexOf("/"))||"/",p=d.startsWith("/")?Ar(d):Ar(`${y}/${d}`);r=Ar(c?p:`${p}/${r.slice(a+1)}`),i=!0;break}if(c)break;o=a+1}if(!i)return r}throw jn("ELOOP")}function rl(s){if(s.charCodeAt(0)!==47)return!1;if(s.length===1)return!0;let e=1;for(let t=1;t<=s.length;t+=1){const r=t<s.length?s.charCodeAt(t):47;if(r===92)return!1;if(r!==47)continue;const n=t-e;if(n===0||s.charCodeAt(e)===46&&(n===1||n===2&&s.charCodeAt(e+1)===46))return!1;e=t+1}return!0}function Ar(s){const e=[];for(const t of s.replaceAll("\\","/").split("/"))!t||t==="."||(t===".."?e.pop():e.push(t));return`/${e.join("/")}`}function jn(s){return Object.assign(new Error(s),{code:s})}const ua=1463897161,nl=1,sl=2,il=3,ol=4,Xr=5e4,Js=4096,al=1<<24,ma=827479120;function ze(s){return s>=Xr&&s<Xr+Js}function cl(s,e=[]){const t=new TextEncoder,r=s.map(b=>t.encode(b.path)),n=e.map(b=>t.encode(b.path));let i=12;s.forEach((b,S)=>{i+=4+r[S].byteLength+4+4+8+8+8+4+(b.directory?0:b.content.byteLength)}),e.forEach((b,S)=>{i+=16+n[S].byteLength+4+8+4});const o=new Uint8Array(i),a=new DataView(o.buffer);let c=0;const f=b=>{a.setUint32(c,b,!0),c+=4},d=b=>{a.setFloat64(c,b,!0),c+=8},y=b=>{a.setBigUint64(c,BigInt(b),!0),c+=8},p=b=>{o.set(b,c),c+=b.byteLength};return f(ma),f(s.length),f(e.length),s.forEach((b,S)=>{f(r[S].byteLength),p(r[S]),f(b.directory?1:0),f(b.mode),d(b.atimeMs),d(b.mtimeMs),y(b.ino);const I=b.directory?new Uint8Array:b.content;f(I.byteLength),p(I)}),e.forEach((b,S)=>{f(b.fd),f(b.group),f(b.closeOnExec?1:0),f(n[S].byteLength),p(n[S]),f(b.flags>>>0),d(b.position),f(b.directory?1:0)}),o}function ll(s,e){const t=new DataView(s.buffer,s.byteOffset,s.byteLength),r=new TextDecoder("utf-8",{fatal:!0});let n=0;const i=I=>{if(I<0||n+I>s.byteLength)throw Or()},o=()=>{i(4);const I=t.getUint32(n,!0);return n+=4,I},a=()=>{i(8);const I=t.getFloat64(n,!0);return n+=8,I},c=()=>{i(8);const I=Number(t.getBigUint64(n,!0));return n+=8,I},f=I=>{i(I);const k=s.slice(n,n+I);return n+=I,k},d=()=>{const I=r.decode(f(o()));if(I!==e&&!I.startsWith(`${e}/`))throw Or();return I};if(o()!==ma)throw Or();const y=o(),p=o(),b=[];for(let I=0;I<y;I+=1){const k=d(),x=o()===1,L=o(),W=a(),de=a(),se=c(),ie=f(o());b.push({path:k,directory:x,mode:L,atimeMs:W,mtimeMs:de,ino:se,content:ie})}const S=[];for(let I=0;I<p;I+=1){const k=o(),x=o(),L=o()===1,W=d(),de=o()|0,se=a(),ie=o()===1;if(!ze(k)||!ze(x)||x>k||!Number.isSafeInteger(se)||se<0)throw Or();S.push({fd:k,group:x,closeOnExec:L,path:W,flags:de,position:se,directory:ie})}if(n!==s.byteLength)throw Or();return{nodes:b,descriptors:S}}function Or(){return Object.assign(new Error("EINVAL: the private tree handed back is not one"),{errnoName:"EINVAL"})}let Gi=!1;const ys=-100,vt=3,ji=1,fl=2,ws=64,hl=128,dl=512,Yr=1024,ul=2048,ml=65536,ps=0,Ki=1,Xi=2,Ji=524288,gs=5,yl=6,Zi=7,Nn=36,wl=37,Qi=38,Ss=2,qi=0,eo=1,pl=1,gl=2,Sl=4,bl=8,gr=256,to=512,El=0x3fffffffn,Al=0x3ffffffen,_l=32768,Nl=16384,Il=40960;function kl(){const s=new Int32Array(new SharedArrayBuffer(65536*Int32Array.BYTES_PER_ELEMENT));return s.fill(-1),s[0]=0,s[1]=1,s[2]=2,s}class Kn{options;descriptors;files;specialDescriptors;stdioAliases;descriptorStatusFlags=new Map;stdin;nextDescription=1;cwd;guestFilesystem;assertWritable;privateTree;privateTreeDeclined=!1;constructor(e){this.options=e,this.descriptors=e.descriptors??new rn(new ni),this.files=this.descriptors.view("file"),this.specialDescriptors=this.descriptors.view("special",r=>r.close?.()),this.stdioAliases=this.descriptors.view("stdio"),this.cwd=Sr("/",e.cwd);const t=e.filesystem;if(this.assertWritable=e.filesystemPolicy?Cc({lstatSync:r=>{if(!t)throw Y("ENOSYS");const n=t.lstatSync?.(r)??t.statSync(r);return{isSymbolicLink:()=>n.isSymbolicLink?.()===!0||Yn(t,r)!==void 0}}},e.filesystemPolicy):r=>r,this.guestFilesystem=t&&e.filesystemPolicy?{existsSync:t.existsSync.bind(t),statSync:t.statSync.bind(t),...t.lstatSync?{lstatSync:t.lstatSync.bind(t)}:{},readFileSync:t.readFileSync.bind(t),readFile:t.readFile.bind(t),readdirSync:t.readdirSync.bind(t),writeFileSync:(r,n)=>t.writeFileSync(this.assertWritable(r),n),...t.readRangeSync?{readRangeSync:t.readRangeSync.bind(t)}:{},...t.linkTargetSync?{linkTargetSync:t.linkTargetSync.bind(t)}:{},...t.viewRangeSync?{viewRangeSync:t.viewRangeSync.bind(t)}:{},...t.writeRangeSync?{writeRangeSync:(r,n,i)=>t.writeRangeSync(this.assertWritable(r),n,i)}:{},...t.truncateSync?{truncateSync:(r,n)=>t.truncateSync(this.assertWritable(r),n)}:{},mkdirSync:(r,n)=>t.mkdirSync(this.assertWritable(r),n),unlinkSync:r=>t.unlinkSync(this.assertWritable(r)),rmdirSync:r=>t.rmdirSync(this.assertWritable(r)),renameSync:(r,n)=>t.renameSync(this.assertWritable(r),this.assertWritable(n)),...t.chmodSync?{chmodSync:(r,n)=>t.chmodSync(this.assertWritable(r),n)}:{},...t.utimesSync?{utimesSync:(r,n,i)=>t.utimesSync(this.assertWritable(r),n,i)}:{},...t.reserveInodes?{reserveInodes:t.reserveInodes.bind(t)}:{},...t.restoreNodeSync?{restoreNodeSync:(r,n)=>t.restoreNodeSync(this.assertWritable(r),n)}:{}}:t,this.stdin="read"in e.stdin?e.stdin:new la(e.stdin),e.descriptors){if(this.descriptors.entries.length===0&&!e.descriptorState)for(const r of[0,1,2])this.specialDescriptors.set(r,{stdio:r})}else for(const r of[0,1,2])this.specialDescriptors.set(r,{stdio:r})}ownsFile(e){return this.files.has(e)}imports(){return{SYS_open:(e,t,r)=>this.open(this.readCString(Number(e)),Number(t),Number(r)),SYS_openat:(e,t,r,n)=>this.openAt(Number(e),this.readCString(Number(t)),Number(r),Number(n)),SYS_close:e=>this.close(Number(e)),SYS_read:(e,t,r)=>this.read(Number(e),Number(t),Number(r)),SYS_pread64:(e,t,r,n)=>this.pread(Number(e),Number(t),Number(r),Number(n)),SYS_write:(e,t,r)=>this.write(Number(e),Number(t),Number(r)),SYS_pwrite64:(e,t,r,n)=>this.pwrite(Number(e),Number(t),Number(r),Number(n)),SYS_readv:(e,t,r)=>this.readv(Number(e),Number(t),Number(r)),SYS_writev:(e,t,r)=>this.writev(Number(e),Number(t),Number(r)),SYS_preadv:(e,t,r,n,i)=>this.preadv(Number(e),Number(t),Number(r),ro(n,i)),SYS_pwritev:(e,t,r,n,i)=>this.pwritev(Number(e),Number(t),Number(r),ro(n,i)),SYS_lseek:(e,t,r)=>this.lseek(Number(e),Number(t),Number(r)),SYS_ftruncate:(e,t)=>this.ftruncate(Number(e),Number(t)),SYS_fstat:(e,t)=>this.fstat(Number(e),Number(t)),SYS_stat:(e,t)=>this.stat(this.readCString(Number(e)),Number(t),!1),SYS_lstat:(e,t)=>this.stat(this.readCString(Number(e)),Number(t),!0),SYS_newfstatat:(e,t,r,n)=>this.statAt(Number(e),this.readCString(Number(t)),Number(r),Number(n)),SYS_access:e=>this.access(this.readCString(Number(e))),SYS_faccessat:(e,t)=>this.accessAt(Number(e),this.readCString(Number(t))),SYS_faccessat2:(e,t)=>this.accessAt(Number(e),this.readCString(Number(t))),SYS_chmod:(e,t)=>this.chmod(this.readCString(Number(e)),Number(t)),SYS_fchmod:(e,t)=>this.fchmod(Number(e),Number(t)),SYS_fchmodat:(e,t,r,n)=>this.chmodAt(Number(e),this.readCString(Number(t)),Number(r),Number(n)),SYS_chdir:e=>this.chdir(this.readCString(Number(e))),SYS_fchdir:e=>this.fchdir(Number(e)),SYS_getcwd:(e,t)=>this.getcwd(Number(e),Number(t)),SYS_mkdir:(e,t)=>this.mkdir(this.readCString(Number(e)),Number(t)),SYS_mkdirat:(e,t,r)=>this.mkdirAt(Number(e),this.readCString(Number(t)),Number(r)),SYS_statfs:(e,t)=>this.statfs(this.readCString(Number(e)),Number(t)),SYS_fstatfs:(e,t)=>this.fstatfs(Number(e),Number(t)),SYS_inotify_init:()=>this.inotifyInit(),SYS_inotify_init1:()=>this.inotifyInit(),SYS_inotify_add_watch:(e,t)=>this.inotifyAddWatch(Number(e),this.readCString(Number(t))),SYS_inotify_rm_watch:e=>this.specialDescriptors.has(Number(e))?0n:-9n,SYS_rmdir:e=>this.mutate(()=>this.fs().rmdirSync(this.resolveFilesystemPath(this.resolve(this.readCString(Number(e))),!1))),SYS_unlink:e=>this.mutate(()=>this.fs().unlinkSync(this.resolveFilesystemPath(this.resolve(this.readCString(Number(e))),!1))),SYS_unlinkat:(e,t,r)=>this.unlinkAt(Number(e),this.readCString(Number(t)),Number(r)),SYS_rename:(e,t)=>this.rename(this.readCString(Number(e)),this.readCString(Number(t))),SYS_utimensat:(e,t,r,n)=>this.utimensat(Number(e),Number(t),Number(r),Number(n)),SYS_symlink:(e,t)=>this.symlink(this.readCString(Number(e)),this.readCString(Number(t)),ys),SYS_symlinkat:(e,t,r)=>this.symlink(this.readCString(Number(e)),this.readCString(Number(r)),Number(t)),SYS_readlink:(e,t,r)=>this.readlink(this.readCString(Number(e)),Number(t),Number(r),ys),SYS_readlinkat:(e,t,r,n)=>this.readlink(this.readCString(Number(t)),Number(r),Number(n),Number(e)),SYS_dup:e=>this.dup(Number(e)),SYS_dup2:(e,t)=>this.dup(Number(e),Number(t)),SYS_dup3:(e,t,r)=>{const n=Number(r);return(n&~Ji)!==0||Number(e)===Number(t)?-22n:this.markCloseOnExec(this.dup(Number(e),Number(t)),n)},SYS_fcntl:(e,t,r)=>this.fcntl(Number(e),Number(t),Ll(r)),SYS_poll:(e,t,r)=>this.poll(Number(e),Number(t),Number(r)),SYS_getdents64:(e,t,r)=>this.getdents64(Number(e),Number(t),Number(r)),SYS_fsync:e=>this.hasFd(Number(e))?0n:-9n,SYS_fdatasync:e=>this.hasFd(Number(e))?0n:-9n,SYS_flock:(e,t)=>this.flock(Number(e),Number(t)),SYS_prctl:(e,t,r,n)=>Number(e)===ua?this.privateTreeCall(Number(t),Number(r),Number(n)):0n}}writeEnvironmentFile(e,t){if(!this.options.filesystem||Object.keys(e).length===0)return;const r=`/tmp/.browser-runtime-wali-env-${t}-${crypto.randomUUID()}`;try{this.options.filesystem.mkdirSync("/tmp",{recursive:!0})}catch{}const n=[],i=[];for(const[o,a]of Object.entries(e)){if(!/^[A-Za-z_][A-Za-z0-9_]*$/u.test(o)||/[\u0000\r\n]/u.test(a)){n.push(o);continue}i.push(`${o}=${a}`)}return n.length>0&&!Gi&&(Gi=!0,console.warn(`[WALI] environment entries a process cannot receive were dropped: ${n.join(", ")}`)),this.options.filesystem.writeFileSync(r,`${i.join(`
4
4
  `)}
@@ -8,7 +8,7 @@ const Gs=["file","directory","symlink"],lc=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(
8
8
  WALI pthread ${e.tid??"unknown"} error summary:
9
9
  ${t}
10
10
  `))}}spawn(e,t,r=0n){const n=this.slots.find(a=>Atomics.compareExchange(this.slotStates,a.index,0,1)===0);if(!n)return-11;const i=Atomics.add(this.nextTid,0,1),o={kind:"start",functionPointer:e,argumentPointer:t,tid:i,signalMask:r};return n.worker?n.worker.postMessage(o):this.coordinator.postMessage({...o,slotIndex:n.index}),i}diagnostics(e){const t=new TextDecoder,r=32,n=480;return this.slots.filter(i=>e===void 0||i.index===e).flatMap(i=>{const o=Atomics.load(new Int32Array(i.diagnostic,0,1),0);if(o<=0)return[];const a=new Uint8Array(i.diagnostic,Int32Array.BYTES_PER_ELEMENT),c=[];for(let f=Math.max(0,o-r);f<o;f+=1){const d=f%r*n,y=Math.min(a[d]|a[d+1]<<8,n-2);c.push(t.decode(Uint8Array.from(a.subarray(d+2,d+2+y))))}return[`slot ${i.index+1}: ${c.join(`
11
- `)}`]})}terminate(){this.coordinator?.terminate(),this.coordinator=void 0;for(const e of this.slots)e.worker?.terminate();this.slots.length=0}}function Sf(s){if(!Number.isSafeInteger(s)||s<1||s>64)throw new Error("WALI threadPoolSize must be an integer between 1 and 64.");return s}function ft(s){const e=s.toBase64;if(typeof e=="function")return e.call(s);let t="";for(let r=0;r<s.byteLength;r+=32768)t+=String.fromCharCode(...s.subarray(r,r+32768));return btoa(t)}function tr(s){const e=Uint8Array.fromBase64;if(typeof e=="function")return e(s);const t=atob(s),r=new Uint8Array(t.length);for(let n=0;n<t.length;n+=1)r[n]=t.charCodeAt(n);return r}function bf(s,e,t){const{appended:r,superseded:n}=t?Ef(s,e,t):{appended:new Map,superseded:new Set},i=[...e.removed].sort((a,c)=>Pn(c)-Pn(a));for(const a of i)s.existsSync(a)&&(s.statSync(a).isDirectory()?s.rmdirSync(a):s.unlinkSync(a));const o=[...e.files].filter(a=>!n.has(a.path)).sort((a,c)=>Pn(a.path)-Pn(c.path));for(const a of o){if(a.type==="directory")s.existsSync(a.path)&&!s.statSync(a.path).isDirectory()&&s.unlinkSync(a.path),s.mkdirSync(a.path,{recursive:!0});else if(rr(a)){s.existsSync(a.path)&&s.statSync(a.path).isDirectory()&&s.rmdirSync(a.path);const c=a.path.slice(0,a.path.lastIndexOf("/"))||"/";c!=="/"&&!s.existsSync(c)&&s.mkdirSync(c,{recursive:!0});const f=s.existsSync(a.path)?s.statSync(a.path).mode:void 0,d=f!==void 0&&(f&128)===0;d&&s.chmodSync?.(a.path,f&4095|128),s.writeFileSync(a.path,r.get(a.path)??en(a)),d&&a.mode===void 0&&s.chmodSync?.(a.path,f&4095)}else if(!s.existsSync(a.path)||s.statSync(a.path).isDirectory())continue;a.mode!==void 0&&s.chmodSync?.(a.path,a.mode),a.mtimeMs!==void 0&&s.utimesSync?.(a.path,new Date(a.mtimeMs),new Date(a.mtimeMs))}}function Ef(s,e,t){const r=new Map,n=new Set,i=t.byPath,o=i instanceof Map?i:new Map(t.files.map(f=>[f.path,f])),a=new Map(e.files.map(f=>[f.path,f])),c=new Set([...e.files.map(f=>f.path),...e.removed]);for(const f of c){const d=o.get(f),y=Nf(s,f);if(d!==void 0&&Fs(d,a.get(f))||y===void 0&&a.get(f)!==void 0)continue;const p=a.get(f);if(!(y!==void 0&&p!==void 0&&p.type===y.type&&(J(p).mtimeMs??0)>(J(y).mtimeMs??0))&&!(d!==void 0&&y!==void 0&&d.type===y.type&&(J(y).mtimeMs??0)<(J(d).mtimeMs??0))&&!Fs(d,y)&&!Fs(a.get(f),y)){if(_f(d,y,a.get(f)))continue;const b=Af(s,f,d,y,a.get(f),t.bytesOf?.bind(t));if(b){r.set(f,b);continue}const S=a.get(f);if(d!==void 0&&y!==void 0&&S!==void 0&&S.type===y.type&&(J(S).mtimeMs??0)>=(J(d).mtimeMs??0)&&(J(y).mtimeMs??0)>(J(S).mtimeMs??0)&&(J(y).mtimeMs??0)>(J(d).mtimeMs??0)){n.add(f);continue}throw new Error(`Browser filesystem write conflict at ${f}. ${JSON.stringify({base:Ts(d),current:Ts(y),proposed:Ts(a.get(f))})}`)}}return{appended:r,superseded:n}}function Af(s,e,t,r,n,i){if(t?.type!=="file"||r?.type!=="file"||n?.type!=="file"||!rr(n)||!s.readFileSync||J(r).mode!==J(n).mode)return;const o=rr(t)?en(t):i?.(e);if(!o||o.length===0)return;const a=en(n),c=s.readFileSync(e),f=typeof c=="string"?new TextEncoder().encode(c):c,d=p=>p.length>=o.length&&ka(p.subarray(0,o.length),o);if(a.length<=o.length||!d(a)||!d(f))return;const y=new Uint8Array(f.length+a.length-o.length);return y.set(f,0),y.set(a.subarray(o.length),f.length),y}function Ts(s){return s?{type:s.type,...J(s)}:null}function _f(s,e,t){return e?.type!=="directory"||t?.type!=="directory"?!1:s===void 0?J(e).mode===J(t).mode:J(e).mode===J(t).mode&&s.type==="directory"&&J(s).mode===J(e).mode}function Mo(s,e,t={}){const r=new Map(s.files.map(i=>[i.path,i])),n=new Map(e.files.map(i=>[i.path,i]));return{files:e.files.filter(i=>{const o=r.get(i.path);return i.path==="/"&&!o?!1:!o||o.type!==i.type||!Ia(o,i)||t.written===!0&&i.type==="file"&&!rr(o)&&rr(i)||J(o).mode!==J(i).mode||J(o).mtimeMs!==J(i).mtimeMs}),removed:s.files.flatMap(i=>n.has(i.path)?[]:[i.path])}}function Pn(s){let e=1;for(let t=0;t<s.length;t+=1)s.charCodeAt(t)===47&&(e+=1);return e}function Nf(s,e){if(!s.existsSync(e))return;const t=s.statSync(e),r={...t.mode!==void 0?{mode:t.mode}:{},...t.mtimeMs!==void 0?{mtimeMs:t.mtimeMs}:{}};return t.isDirectory()?{path:e,type:"directory",...r}:{path:e,type:"file",...t.size!==void 0?{size:t.size}:{},...r}}function Fs(s,e){return s===void 0?e===void 0:e!==void 0&&s.type===e.type&&Ia(s,e)&&J(s).mode===J(e).mode&&J(s).mtimeMs===J(e).mtimeMs}function J(s){const e=s;return{...e.mode===void 0?{}:{mode:e.mode&4095},...e.mtimeMs===void 0?{}:{mtimeMs:e.mtimeMs}}}function Ia(s,e){return s.type!=="file"||e.type!=="file"?!0:s.content!==void 0&&e.content!==void 0?s.content===e.content:rr(s)&&rr(e)?ka(en(s),en(e)):xo(s)===xo(e)}function xo(s){if(s.size!==void 0)return s.size;if(s.bytes!==void 0)return s.bytes.byteLength;if(s.content===void 0)return;const e=s.content.endsWith("==")?2:s.content.endsWith("=")?1:0;return Math.floor(s.content.length*3/4)-e}function rr(s){return s!==void 0&&(s.bytes!==void 0||s.content!==void 0)}function en(s){return s.bytes??(s.content===void 0?void 0:tr(s.content))}function ka(s,e){if(s===e)return!0;if(s.byteLength!==e.byteLength)return!1;let t=0;if(s.byteOffset%4===0&&e.byteOffset%4===0){const r=s.byteLength>>>2,n=new Uint32Array(s.buffer,s.byteOffset,r),i=new Uint32Array(e.buffer,e.byteOffset,r);for(let o=0;o<r;o+=1)if(n[o]!==i[o])return!1;t=r<<2}for(;t<s.byteLength;t+=1)if(s[t]!==e[t])return!1;return!0}const Lo=0,Po=1,ht=2,Ir=3,kr=4,Ma=5,xa=6,Zs=16*1024*1024,If=1024*1024;function kf(){const s=new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),e=new SharedArrayBuffer(If),t=new Int32Array(s);return Atomics.store(t,Ir,1),Atomics.store(t,kr,1),{reader:{control:s,payload:e,role:"reader"},writer:{control:s,payload:e,role:"writer"}}}function La(s){const e=Mr(s);return Atomics.add(e,s.role==="reader"?Ir:kr,1),s}function Zr(s){const e=Mr(s),t=s.role==="reader"?Ir:kr;Atomics.sub(e,t,1)<=1&&Atomics.store(e,t,0),Atomics.add(e,s.role==="reader"?xa:Ma,1),Atomics.notify(e,ht)}function Pa(s,e){const t=Mr(s),r=Atomics.load(t,ht);let n=0;return s.role==="reader"?(e&1&&(r>0||Atomics.load(t,kr)===0)&&(n|=1),Atomics.load(t,kr)===0&&(n|=16)):(e&4&&Atomics.load(t,Ir)>0&&r<xf(s)&&(n|=4),Atomics.load(t,Ir)===0&&(n|=16)),n}function oi(s,e){if(s.role!=="reader")return-9n;if(e===0)return new Uint8Array;const t=Mr(s),r=va(s),n=Atomics.load(t,ht);if(n===0)return Atomics.load(t,kr)===0?new Uint8Array:-11n;const i=Math.min(Math.max(0,e),n),o=Atomics.load(t,Lo),a=Math.min(i,r.byteLength-o),c=new Uint8Array(i);return c.set(r.subarray(o,o+a)),a<i&&c.set(r.subarray(0,i-a),a),Atomics.store(t,Lo,(o+i)%r.byteLength),Atomics.sub(t,ht,i),i>0&&Atomics.add(t,xa,1),Atomics.notify(t,ht),c}function Mf(s,e){const t=Mr(s);for(;;){const r=oi(s,e);if(r!==-11n)return r;Nr(t,ht,0,50)}}function Ra(s,e){if(s.role!=="writer")return-9n;const t=Mr(s),r=va(s);let n=0;for(;n<e.byteLength;){if(Atomics.load(t,Ir)===0)return n>0?BigInt(n):-32n;const i=Atomics.load(t,ht),o=r.byteLength-i;if(o===0){Nr(t,ht,i,50);continue}const a=Atomics.load(t,Po),c=Math.min(e.byteLength-n,o,r.byteLength-a);r.set(e.subarray(n,n+c),a),Atomics.store(t,Po,(a+c)%r.byteLength),Atomics.add(t,ht,c),Atomics.add(t,Ma,1),Atomics.notify(t,ht),n+=c}return BigInt(n)}const Ro=new WeakMap;function Mr(s){const e=s.controlOffset??0;let t=Ro.get(s.control);t||(t=new Map,Ro.set(s.control,t));let r=t.get(e);return r||(r=new Int32Array(s.control,e,8),t.set(e,r)),r}function xf(s){return s.payloadLength??s.payload.byteLength-(s.payloadOffset??0)}function va(s){const e=s.payloadOffset??0,t=s.payloadLength??s.payload.byteLength-e;return new Uint8Array(s.payload,e,t)}function Lf(s){const e=Atomics.load(new Int32Array(s.control),2);if(e<=0||e>s.response.byteLength)return;const t=Uint8Array.from(new Uint8Array(s.response,0,e));return JSON.parse(new TextDecoder().decode(t))}const Pf=1,Rf=15,vf=1,Tf=97n,Ff=93n,Bf=11n,Of=32n,vo=1,To=4,Yf=16;class Df{memory;descriptors;constructor(e,t){this.memory=e,this.descriptors=t}imports(){return{SYS_socketpair:(e,t,r,n)=>this.socketpair(Number(e),Number(t),Number(r),Number(n)),SYS_pipe:e=>this.pipe(Number(e),0),SYS_pipe2:(e,t)=>this.pipe(Number(e),Number(t))}}pipe(e,t){if((t&-526337)!==0)return-22n;if(!Number.isSafeInteger(e)||e<0||e+8>this.memory().buffer.byteLength)return-14n;const r=kf(),n=this.descriptors.allocateSpecial(this.pipeEndpoint(r.reader)),i=this.descriptors.allocateSpecial(this.pipeEndpoint(r.writer)),o=new DataView(this.memory().buffer);return o.setInt32(e,n,!0),o.setInt32(e+4,i,!0),0n}pipeEndpoint(e){return{browserProcessPipe:e,read:t=>oi(e,t),write:t=>Ra(e,t),poll:t=>Pa(e,t),fcntl:t=>t===3?0x800n:[1,2,4].includes(t)?0n:-22n,duplicate:t=>(La(e),BigInt(this.descriptors.allocateSpecial(this.pipeEndpoint(e),t))),close:()=>Zr(e)}}socketpair(e,t,r,n){if(e!==Pf)return-Tf;if((t&Rf)!==vf||r!==0)return-Ff;if(!Number.isSafeInteger(n)||n<0||n+8>this.memory().buffer.byteLength)return-14n;const i={chunks:[],byteLength:0,closed:!1,peerClosed:!1,references:1},o={chunks:[],byteLength:0,closed:!1,peerClosed:!1,references:1};i.peer=o,o.peer=i;const a=this.descriptors.allocateSpecial(this.endpoint(i)),c=this.descriptors.allocateSpecial(this.endpoint(o)),f=new DataView(this.memory().buffer);return f.setInt32(n,a,!0),f.setInt32(n+4,c,!0),0n}endpoint(e){return{read:t=>Cf(e,t),write:t=>Uf(e,t),poll:t=>Wf(e,t),fcntl:t=>t===3?0x802n:[1,2,4].includes(t)?0n:-22n,duplicate:t=>{const r=this.descriptors.allocateSpecial(this.endpoint(e),t);return e.references+=1,BigInt(r)},close:()=>{e.references-=1,!(e.references>0||e.closed)&&(e.closed=!0,e.peer&&(e.peer.peerClosed=!0))}}}}function Cf(s,e){if(s.closed)return-9n;if(e<0)return-22n;if(s.byteLength===0)return s.peerClosed?new Uint8Array:-Bf;const t=new Uint8Array(Math.min(e,s.byteLength));let r=0;for(;r<t.byteLength;){const n=s.chunks[0],i=Math.min(n.byteLength,t.byteLength-r);t.set(n.subarray(0,i),r),r+=i,s.byteLength-=i,i===n.byteLength?s.chunks.shift():s.chunks[0]=n.subarray(i)}return t}function Uf(s,e){if(s.closed)return-9n;const t=s.peer;if(!t||t.closed)return-Of;const r=e.slice();return t.chunks.push(r),t.byteLength+=r.byteLength,BigInt(r.byteLength)}function Wf(s,e){let t=s.peerClosed?Yf:0;return e&vo&&(s.byteLength>0||s.peerClosed)&&(t|=vo),e&To&&!s.peerClosed&&(t|=To),t}const $f=2e4,Ta=256*1024;var H;(function(s){s[s.Socket=1]="Socket",s[s.Connect=2]="Connect",s[s.Send=3]="Send",s[s.Receive=4]="Receive",s[s.Close=5]="Close",s[s.Fcntl=6]="Fcntl",s[s.Poll=7]="Poll",s[s.Shutdown=8]="Shutdown",s[s.Duplicate=9]="Duplicate",s[s.SocketName=10]="SocketName",s[s.EpollControl=11]="EpollControl",s[s.EpollWait=12]="EpollWait",s[s.EpollCreate=13]="EpollCreate",s[s.EventFd=14]="EventFd",s[s.SocketPair=15]="SocketPair",s[s.TimerFdCreate=16]="TimerFdCreate",s[s.TimerFdSetTime=17]="TimerFdSetTime",s[s.Bind=18]="Bind",s[s.Listen=19]="Listen",s[s.Accept=20]="Accept",s[s.ChildRegister=21]="ChildRegister",s[s.ChildForget=22]="ChildForget",s[s.ChildWait=23]="ChildWait",s[s.ChildExists=24]="ChildExists",s[s.PidFdOpen=25]="PidFdOpen",s[s.PollMany=26]="PollMany"})(H||(H={}));const Bs=new Map;function Fa(s,e){const t=Bs.get(s);Bs.delete(s);const r=t??e();return Bs.set(s,e()),r}const Tt=9n,we=22n,Fo=16,Et=38n;class ai{worker;constructor(e){this.worker=e}static async create(e,t,r,n,i){if(typeof Worker>"u"||typeof SharedArrayBuffer>"u")throw new Error("WALI networking requires Web Workers and SharedArrayBuffer.");const o=[...new Set(e?.allowedHosts.map(f=>f.toLowerCase())??[])];if(e&&(!e.loopbackPort&&o.length===0||o.some(f=>!/^[a-z0-9.-]+$/u.test(f))))throw new Error("WALI networking requires a loopback attachment or at least one valid hostname.");if(e&&(!Number.isSafeInteger(e.maxConnections)||e.maxConnections<1||e.maxConnections>1024||!Number.isSafeInteger(e.maxBytes)||e.maxBytes<1024||e.maxBytes>1024*1024*1024))throw new Error("WALI networking requires bounded connection and byte quotas.");const a=Fa("network",()=>qr(new Worker(new URL("/assets/network-worker-DuuxEt8T.js",import.meta.url),{type:"module",name:"wali-network"}))),c=new ai(a);return await new Promise((f,d)=>{const y=p=>{p.data.kind==="ready"&&(a.removeEventListener("message",y),f()),p.data.kind==="error"&&(a.removeEventListener("message",y),d(new Error(p.data.message)))};a.addEventListener("message",y),a.addEventListener("error",p=>d(p.error??new Error(p.message)),{once:!0}),a.postMessage({kind:"initialize",allowedHosts:o,relayUrl:e?.relayUrl??"/api/wali/tcp",maxConnections:e?.maxConnections??0,maxBytes:e?.maxBytes??0,...t?{sharedPipes:t}:{},...r?{stdin:r}:{},...n?{stdioAliasRegistry:n}:{},...i?{signals:i}:{},...e?.loopbackPort?{loopbackPort:e.loopbackPort}:{}},e?.loopbackPort?[e.loopbackPort]:[])}).catch(f=>{throw a.terminate(),f}),c}createChannel(){const e=new MessageChannel,t={port:e.port1,control:new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT*16),payload:new SharedArrayBuffer(Ta)};return this.worker.postMessage({kind:"attach",port:e.port2,control:t.control,payload:t.payload},[e.port2]),t.port.start(),t}terminate(){this.worker.terminate()}}class zf{channel;control;payload;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}call(e,t=[],r,n){if((r?.byteLength??0)>this.payload.byteLength)return{result:-Number(we),output:new Uint8Array};if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI network RPC on one pthread channel.");const i=this.nextRequestId;this.nextRequestId=i>=2147483645?1:i+2,this.control.fill(0),Atomics.store(this.control,1,e),Atomics.store(this.control,3,r?.byteLength??0),t.slice(0,10).forEach((d,y)=>Atomics.store(this.control,5+y,d|0)),r&&this.payload.set(r),Atomics.store(this.control,0,i),this.channel.port.postMessage(n?{requestId:i,process:n}:i);const o=Date.now()+3e4;for(;;){const d=Atomics.load(this.control,0);if(d===i+1)break;if(d!==i&&d!==-i)throw new Error(`Invalid WALI network RPC state ${d} for request ${i}.`);const y=Math.max(0,o-Date.now());if(y===0&&d===i&&Atomics.compareExchange(this.control,0,i,0)===i)return{result:-110,output:new Uint8Array};try{Nr(this.control,0,d,d===-i?void 0:y)}catch{if(Atomics.compareExchange(this.control,0,i,0)===i)return{result:-Number(Et),output:new Uint8Array}}}const a=Atomics.load(this.control,2),c=Atomics.load(this.control,4),f=this.payload.slice(0,Math.max(0,c));return Atomics.store(this.control,0,0),{result:a,output:f}}}class Hf{memory;signals;client;waitBuffer;constructor(e,t,r){this.memory=e,this.signals=r,this.client=new zf(t)}isNetworkFd(e){return e>=$f&&!ze(e)}registerChild(e,t){return this.client.call(H.ChildRegister,[e],void 0,t).result}forgetChild(e){this.client.call(H.ChildForget,[e])}hasChild(e){return this.client.call(H.ChildExists,[e]).result===1}waitChild(e,t,r=0n){const n=this.waitBuffer??={control:new SharedArrayBuffer(32),response:new SharedArrayBuffer(Zs)};return{result:this.client.call(H.ChildWait,[e,t,Number(r&0xffffffffn),Number(r>>32n)],void 0,n).result,process:n}}imports(e={}){const t=(r,n)=>e[r]?.(...n)??-Et;return{SYS_pidfd_open:(r,n)=>BigInt(this.client.call(H.PidFdOpen,[Number(r),Number(n)]).result),SYS_dup:r=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Duplicate,[Number(r)]).result):e.SYS_dup?.(r)??-Et,SYS_socket:(r,n,i)=>BigInt(this.client.call(H.Socket,[Number(r),Number(n),Number(i)]).result),SYS_socketpair:(r,n,i,o)=>this.socketPair(Number(r),Number(n),Number(i),Number(o)),SYS_connect:(r,n,i)=>this.withAddress(Number(r),Number(n),Number(i)),SYS_bind:(r,n,i)=>this.bind(Number(r),Number(n),Number(i),()=>t("SYS_bind",[r,n,i])),SYS_listen:(r,n)=>this.networkOr(Number(r),()=>this.client.call(H.Listen,[Number(r),Number(n)]).result,()=>t("SYS_listen",[r,n])),SYS_accept:(r,n,i)=>this.accept(Number(r),Number(n),Number(i),0,()=>t("SYS_accept",[r,n,i])),SYS_accept4:(r,n,i,o)=>this.accept(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_accept4",[r,n,i,o])),SYS_send:(r,n,i,o)=>this.send(Number(r),Number(n),Number(i),Number(o)),SYS_sendto:(r,n,i,o)=>this.send(Number(r),Number(n),Number(i),Number(o)),SYS_recv:(r,n,i,o)=>this.receive(Number(r),Number(n),Number(i),Number(o)),SYS_recvfrom:(r,n,i,o,a,c)=>this.receiveFrom(Number(r),Number(n),Number(i),Number(o),Number(a),Number(c)),SYS_sendmsg:(r,n,i)=>this.sendMessage(Number(r),Number(n),Number(i)),SYS_recvmsg:(r,n,i)=>this.receiveMessage(Number(r),Number(n),Number(i)),SYS_shutdown:(r,n)=>this.networkOr(Number(r),()=>this.client.call(H.Shutdown,[Number(r),Number(n)]).result,()=>t("SYS_shutdown",[r,n])),SYS_setsockopt:(r,n,i,o,a)=>this.isNetworkFd(Number(r))?0n:t("SYS_setsockopt",[r,n,i,o,a]),SYS_getsockopt:(r,n,i,o,a)=>this.getSocketOption(Number(r),Number(o),Number(a)),SYS_getsockname:(r,n,i)=>this.getSocketName(Number(r),Number(n),Number(i)),SYS_getpeername:(r,n,i)=>this.getSocketName(Number(r),Number(n),Number(i)),SYS_close:r=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Close,[Number(r)]).result):e.SYS_close?.(r)??-Et,SYS_read:(r,n,i)=>this.isNetworkFd(Number(r))?this.receive(Number(r),Number(n),Number(i),0):e.SYS_read?.(r,n,i)??-Et,SYS_write:(r,n,i)=>this.isNetworkFd(Number(r))?this.send(Number(r),Number(n),Number(i),0):e.SYS_write?.(r,n,i)??-Et,SYS_readv:(r,n,i)=>this.isNetworkFd(Number(r))?this.readv(Number(r),Number(n),Number(i)):e.SYS_readv?.(r,n,i)??-Et,SYS_writev:(r,n,i)=>this.isNetworkFd(Number(r))?this.writev(Number(r),Number(n),Number(i)):e.SYS_writev?.(r,n,i)??-Et,SYS_fcntl:(r,n,i)=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Fcntl,[Number(r),Number(n),Vf(i)]).result):e.SYS_fcntl?.(r,n,i)??-Et,SYS_poll:(r,n,i)=>this.poll(Number(r),Number(n),Number(i),()=>t("SYS_poll",[r,n,0])),SYS_epoll_create:r=>Number(r)>0?BigInt(this.client.call(H.EpollCreate).result):-we,SYS_epoll_create1:()=>BigInt(this.client.call(H.EpollCreate).result),SYS_eventfd:r=>BigInt(this.client.call(H.EventFd,[Number(r),0]).result),SYS_eventfd2:(r,n)=>BigInt(this.client.call(H.EventFd,[Number(r),Number(n)]).result),SYS_timerfd_create:(r,n)=>BigInt(this.client.call(H.TimerFdCreate,[Number(r),Number(n)]).result),SYS_timerfd_settime:(r,n,i,o)=>this.setTimerFd(Number(r),Number(n),Number(i),Number(o)),SYS_epoll_ctl:(r,n,i,o)=>this.epollControl(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_ctl",[r,n,i,o])),SYS_epoll_wait:(r,n,i,o)=>this.epollWait(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_wait",[r,n,i,o])),SYS_epoll_pwait:(r,n,i,o,a,c)=>{const f=()=>this.epollWait(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_pwait",[r,n,i,o,a,c]));if(!a)return f();if(!this.signals)return-38n;const d=this.signals.mask,y=this.signals.imports().SYS_rt_sigprocmask(2,a,0,c);if(y!==0n)return y;try{const p=f();return this.signals.deliver(p===-4n),p}finally{this.signals.mask=d}}}}pollFd(e,t){return this.isNetworkFd(e)?this.client.call(H.Poll,[e,t]).result:32}bytes(){return new Uint8Array(this.memory().buffer)}view(){return new DataView(this.memory().buffer)}copy(e,t){if(e<0||t<0||e+t>this.bytes().byteLength)throw new WebAssembly.RuntimeError("WALI network memory access is out of bounds.");return this.bytes().slice(e,e+t)}networkOr(e,t,r){return this.isNetworkFd(e)?BigInt(t()):r()}withAddress(e,t,r){return this.isNetworkFd(e)?BigInt(this.client.call(H.Connect,[e],this.copy(t,r)).result):-Tt}bind(e,t,r,n){return this.isNetworkFd(e)?BigInt(this.client.call(H.Bind,[e],this.copy(t,r)).result):n()}accept(e,t,r,n,i){if(!this.isNetworkFd(e))return i();if(t!==0&&(r<=0||r+4>this.bytes().byteLength))return-we;const o=t===0?0:this.view().getUint32(r,!0);if(t!==0&&(t<0||t+o>this.bytes().byteLength))return-we;const{result:a,output:c}=this.client.call(H.Accept,[e,n]);return a<0||t===0||(this.bytes().set(c.subarray(0,o),t),this.view().setUint32(r,c.byteLength,!0)),BigInt(a)}socketPair(e,t,r,n){const{result:i,output:o}=this.client.call(H.SocketPair,[e,t,r]);if(i===0){if(n<0||n+8>this.bytes().byteLength)return-we;this.bytes().set(o,n)}return BigInt(i)}setTimerFd(e,t,r,n){if(!this.isNetworkFd(e)||r<0||r+32>this.bytes().byteLength)return-Tt;const{result:i,output:o}=this.client.call(H.TimerFdSetTime,[e,t],this.copy(r,32));if(i===0&&n!==0){if(n<0||n+32>this.bytes().byteLength||o.byteLength!==32)return-we;this.bytes().set(o,n)}return BigInt(i)}send(e,t,r,n){return this.isNetworkFd(e)?BigInt(this.client.call(H.Send,[e,n],this.copy(t,r)).result):-Tt}receive(e,t,r,n){if(!this.isNetworkFd(e))return-Tt;const{result:i,output:o}=this.client.call(H.Receive,[e,r,n]);return i>0&&this.bytes().set(o.subarray(0,i),t),BigInt(i)}receiveFrom(e,t,r,n,i,o){const a=this.receive(e,t,r,n);if(a<0n||i===0||o===0)return a;if(o<0||o+4>this.bytes().byteLength)return-we;const c=this.view().getUint32(o,!0);return this.writeDnsPeer(i,c)?(this.view().setUint32(o,16,!0),a):-we}sendMessage(e,t,r){if(!this.isNetworkFd(e)||t<0||t+28>this.bytes().byteLength)return-Tt;const n=this.view().getUint32(t+8,!0),i=this.view().getUint32(t+12,!0);if(i>1024)return-we;const o=[];let a=0;for(let d=0;d<i;d+=1){const y=n+d*8,p=this.copy(this.view().getUint32(y,!0),this.view().getUint32(y+4,!0));o.push(p),a+=p.byteLength}const c=new Uint8Array(a);let f=0;for(const d of o)c.set(d,f),f+=d.byteLength;return BigInt(this.client.call(H.Send,[e,r],c).result)}receiveMessage(e,t,r){if(!this.isNetworkFd(e)||t<0||t+28>this.bytes().byteLength)return-Tt;const n=this.view().getUint32(t+8,!0),i=this.view().getUint32(t+12,!0);if(i>1024)return-we;let o=0;for(let p=0;p<i;p+=1)o+=this.view().getUint32(n+p*8+4,!0);const{result:a,output:c}=this.client.call(H.Receive,[e,o,r]);if(a<=0)return BigInt(a);let f=0;for(let p=0;p<i&&f<a;p+=1){const b=n+p*8,S=this.view().getUint32(b,!0),I=Math.min(this.view().getUint32(b+4,!0),a-f);this.bytes().set(c.subarray(f,f+I),S),f+=I}const d=this.view().getUint32(t,!0),y=this.view().getUint32(t+4,!0);return d!==0&&this.writeDnsPeer(d,y)&&this.view().setUint32(t+4,16,!0),this.view().setUint32(t+20,0,!0),this.view().setInt32(t+24,0,!0),BigInt(a)}writeDnsPeer(e,t){return t<16||e<0||e+16>this.bytes().byteLength?!1:(this.bytes().fill(0,e,e+16),this.view().setUint16(e,2,!0),this.view().setUint16(e+2,53,!1),this.bytes().set([127,0,0,1],e+4),!0)}getSocketOption(e,t,r){return this.isNetworkFd(e)?r<=0||r+4>this.bytes().byteLength||this.view().getUint32(r,!0)<4||t<0||t+4>this.bytes().byteLength?-we:(this.view().setInt32(t,0,!0),this.view().setUint32(r,4,!0),0n):-Tt}getSocketName(e,t,r){if(!this.isNetworkFd(e))return-Tt;if(r<0||r+4>this.bytes().byteLength)return-we;const n=this.view().getUint32(r,!0),{result:i,output:o}=this.client.call(H.SocketName,[e]);return i<0?BigInt(i):n<o.byteLength||t<0||t+o.byteLength>this.bytes().byteLength?-we:(this.bytes().set(o,t),this.view().setUint32(r,o.byteLength,!0),0n)}writev(e,t,r){if(r<0||r>1024)return-we;const n=[];let i=0;for(let c=0;c<r;c+=1){const f=t+c*8,d=this.copy(this.view().getUint32(f,!0),this.view().getUint32(f+4,!0));n.push(d),i+=d.byteLength}const o=new Uint8Array(i);let a=0;for(const c of n)o.set(c,a),a+=c.byteLength;return BigInt(this.client.call(H.Send,[e,0],o).result)}readv(e,t,r){if(r<0||r>1024)return-we;let n=0;for(let c=0;c<r;c+=1)n+=this.view().getUint32(t+c*8+4,!0);const{result:i,output:o}=this.client.call(H.Receive,[e,n,0]);if(i<=0)return BigInt(i);let a=0;for(let c=0;c<r&&a<i;c+=1){const f=t+c*8,d=this.view().getUint32(f,!0),y=Math.min(this.view().getUint32(f+4,!0),i-a);this.bytes().set(o.subarray(a,a+y),d),a+=y}return BigInt(i)}poll(e,t,r,n){if(t<0||t>Ta/8)return-we;this.copy(e,t*8),n();const i=this.signals?.mask??0n,{result:o,output:a}=this.client.call(H.PollMany,[r,Number(i&0xffffffffn),Number(i>>32n)],this.copy(e,t*8));return o>=0&&this.bytes().set(a,e),BigInt(o)}epollControl(e,t,r,n,i){if(!this.isNetworkFd(e)&&!this.isNetworkFd(r))return i();const o=t===2?void 0:this.copy(n,Fo);return BigInt(this.client.call(H.EpollControl,[e,t,r],o).result)}epollWait(e,t,r,n,i){if(r<=0)return-we;const o=this.signals?.mask??0n,{result:a,output:c}=this.client.call(H.EpollWait,[e,r,n,Number(o&0xffffffffn),Number(o>>32n)]);return a===-9?i():(a>0&&this.bytes().set(c.subarray(0,a*Fo),t),BigInt(a))}}function Vf(s){return typeof s=="bigint"?Number(BigInt.asIntN(32,s)):s|0}const Bo=-4,Os=3;class Qe{channel;control;payload;encoder=new TextEncoder;decoder=new TextDecoder("utf-8",{fatal:!0});nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}static waited={calls:0,ms:0};request(e){const t=performance.now();try{return this.requestNow(e)}finally{Qe.waited.calls+=1,Qe.waited.ms+=performance.now()-t}}requestNow(e){if(Atomics.load(this.control,Os))return{result:Bo};const t=this.encoder.encode(JSON.stringify(e));if(t.byteLength>this.payload.byteLength)return{result:-90};if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent file-lock RPC on one channel.");const r=this.nextRequestId;this.nextRequestId=r>=1073741821?1:r+2,this.control.fill(0,0,Os),this.payload.set(t),Atomics.store(this.control,1,t.byteLength),Atomics.store(this.control,0,r);try{for(this.channel.port.postMessage(r);Atomics.load(this.control,0)!==r+1;){if(Atomics.load(this.control,Os))return{result:Bo};const o=Atomics.load(this.control,0);o!==r+1&&Atomics.wait(this.control,0,o)}const n=Atomics.load(this.control,2);if(n<1||n>this.payload.byteLength)return{result:-5};const i=JSON.parse(this.decoder.decode(this.payload.slice(0,n)));return!i||!Number.isSafeInteger(i.result)?{result:-5}:i}finally{Atomics.store(this.control,0,0)}}}class Qs{channel;control;payload;encoder=new TextEncoder;decoder=new TextDecoder;nextRequestId=1;bell;wakeMemory;directSyscall(e){const t=this.channel.local;if(!(!t||e==="SYS_flock"||e==="SYS_fcntl"))return r=>{const{imports:n,errno:i}=t.handlers(),o=n[e];if(!o)throw lt(-38);let a;try{a=o(...r)}catch(c){throw lt(i(c))}return typeof a=="bigint"?a:BigInt(a??0)}}ownsLocalFile(e){const t=this.channel.local;return t!==void 0&&t.handlers().owns(e)}localHandlers(){const e=this.channel.local;return e?()=>e.handlers():void 0}wakeThrough(e){this.wakeMemory=e}constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload),this.bell=e.doorbell?new Int32Array(e.doorbell):void 0}attachMemory(e){this.channel.port.postMessage({memory:e})}copyForExec(e){return this.call(j.CopyForExec,{stdio:e}).process}currentWorkingDirectory(){return this.call(j.GetCwd)}copyForForkChannel(){return this.createChannel(Jr,this.call(j.CopyForFork).process)}createChannel(e,t){const r=$n(e),n=this.channel.sharedPipes&&{...this.channel.sharedPipes,table:t===void 0?this.channel.sharedPipes.table:new SharedArrayBuffer(65536*4)},i=t===void 0?void 0:new MessageChannel,o={...r.server,...t===void 0?{}:{process:t},...n?{sharedPipes:n}:{},...i?{releasePort:i.port2}:{}};this.channel.local?this.channel.local.attach(o):this.channel.port.postMessage({kind:"attach",...o},[r.server.port,...i?[i.port2]:[]]);const a=this.channel.local?.doorbell??this.channel.doorbell;return{...r.client,...n?{sharedPipes:n}:{},...i?{releasePort:i.port1}:{},...a?{doorbell:a}:{}}}copyForExecChannel(e){return this.createChannel(Jr,this.copyForExec(e))}closeProcess(){this.call(j.CloseProcess)}existsSync(e){return this.call(j.Exists,{path:e})}statSync(e){return Yo(this.call(j.Stat,{path:e}))}lstatSync(e){return Yo(this.call(j.Lstat,{path:e}))}readFileSync(e){const t=this.statSync(e).size;if(t<=Re)return tr(this.call(j.ReadFile,{path:e}).content);const r=new Uint8Array(t);for(let n=0;n<t;n+=Re){const i=this.readRangeSync(e,n,Math.min(Re,t-n));if(r.set(i,n),i.byteLength<Math.min(Re,t-n))return r.subarray(0,n+i.byteLength)}return r}async readFile(e){return this.readFileSync(e)}readRangeSync(e,t,r){const n=new Uint8Array(r);let i=0;for(;i<r;){const o=Math.min(Re,r-i),a=tr(this.call(j.ReadRange,{path:e,offset:t+i,length:o}).content);if(n.set(a,i),i+=a.byteLength,a.byteLength<o)break}return i===r?n:n.subarray(0,i)}writeRangeSync(e,t,r){for(let n=0;(n<r.byteLength||n===0&&r.byteLength===0)&&(this.call(j.WriteRange,{path:e,offset:t+n,content:ft(r.subarray(n,n+Re))}),r.byteLength!==0);n+=Re);}writeFileSync(e,t){const r=typeof t=="string"?this.encoder.encode(t):t;if(r.byteLength<=Re){this.call(j.WriteFile,{path:e,content:ft(r)});return}this.call(j.WriteFile,{path:e,content:""}),this.writeRangeSync(e,0,r)}mkdirSync(e,t){this.call(j.Mkdir,{path:e,recursive:t?.recursive===!0})}readdirSync(e){return this.call(j.Readdir,{path:e})}unlinkSync(e){this.call(j.Unlink,{path:e})}rmdirSync(e){this.call(j.Rmdir,{path:e})}renameSync(e,t){this.call(j.Rename,{from:e,to:t})}toSnapshot(){return JSON.parse(this.decoder.decode(this.readChunked(j.SnapshotSize)))}finalSnapshot(){return JSON.parse(this.decoder.decode(this.readChunked(j.FinalSnapshotSize)))}readChunked(e){const{length:t}=this.call(e);if(!Number.isSafeInteger(t)||t<0)throw lt(-5);const r=new Uint8Array(t);for(let n=0;n<t;n+=Re){const i=Math.min(Re,t-n),{content:o}=this.call(j.SnapshotChunk,{offset:n,length:i}),a=tr(o);if(a.byteLength!==i)throw lt(-5);r.set(a,n)}return r}prepareSpawn(){this.call(j.PrepareSpawn)}importPeerPatch(e){const t=this.encoder.encode(JSON.stringify(e));this.call(j.ImportPeerPatchStart,{length:t.byteLength});for(let r=0;r<t.byteLength;r+=Re)this.call(j.ImportPeerPatchChunk,{offset:r,content:ft(t.subarray(r,r+Re))})}replaceSnapshot(e){const t=this.encoder.encode(JSON.stringify(e));this.call(j.ReplaceSnapshotStart,{length:t.byteLength});for(let r=0;r<t.byteLength;r+=Re){const n=t.subarray(r,r+Re);this.call(j.ReplaceSnapshotChunk,{offset:r,content:ft(n)})}}syscall(e,t){const r=this.channel.local;if(r)for(;;){const o=r.syscall(e,t);if(typeof o=="bigint")return o;if(o!==void 0)throw lt(o.failed);const a=performance.now();r.idle(),Qe.waited.ms+=performance.now()-a}let n=this.names.get(e);n||(n=this.encoder.encode(e),this.names.set(e,n));const i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);this.payload[0]=t.length,this.payload[1]=n.byteLength;for(let o=0;o<t.length;o+=1)i.setBigInt64(8+o*8,BigInt(t[o]),!0);return this.payload.set(n,8+t.length*8),this.exchange(j.SyscallBinary,8+t.length*8+n.byteLength,Gf(e,t)||this.bell?null:3e4),i.getBigInt64(0,!0)}names=new Map;lastResult=0;view;readForMapping(e,t,r){const n=new Uint8Array(r),i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);let o=0;for(;o<r;){const a=Math.min(this.payload.byteLength,r-o);i.setInt32(0,e,!0),i.setFloat64(8,t+o,!0),i.setInt32(16,a,!0);const c=this.exchange(j.ReadForMappingBinary,20,3e4);if(this.lastResult===1)return o===0?void 0:n.subarray(0,o);if(n.set(this.payload.subarray(0,c),o),o+=c,c<a)break}return o===r?n:n.subarray(0,o)}mappingPath(e){return this.call(j.MappingPath,{fd:e}).path}writeForMapping(e,t,r){const n=this.encoder.encode(e);if(16+n.byteLength+r.byteLength>this.payload.byteLength)return this.call(j.WriteForMapping,{path:e,offset:t,content:ft(r)}).written;const i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);return i.setFloat64(0,t,!0),i.setUint32(8,n.byteLength,!0),i.setUint32(12,r.byteLength,!0),this.payload.set(n,16),this.payload.set(r,16+n.byteLength),this.exchange(j.WriteForMappingBinary,16+n.byteLength+r.byteLength,3e4),this.payload[0]===1}call(e,t={},r=3e4){const n=this.encoder.encode(JSON.stringify(t));if(n.byteLength>this.payload.byteLength)throw lt(-90);if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI filesystem RPC on one channel.");this.payload.set(n);const i=this.exchange(e,n.byteLength,r);return i>0?JSON.parse(this.decoder.decode(this.payload.slice(0,i))):void 0}exchange(e,t,r){if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI filesystem RPC on one channel.");const n=this.nextRequestId;this.nextRequestId=n>=1073741821?1:n+2,this.control.fill(0),Atomics.store(this.control,1,e),Atomics.store(this.control,3,t),Atomics.store(this.control,0,n);const i=this.channel.local;if(i)for(;i.serveNow(),Atomics.load(this.control,0)!==n+1;)i.idle();else if(this.bell){Atomics.add(this.bell,0,1),Atomics.notify(this.bell,0);const f=Atomics.load(this.bell,1);f!==0&&this.wakeMemory&&Atomics.notify(new Int32Array(this.wakeMemory.buffer),f-1)}else this.channel.port.postMessage(n);const o=r===null?void 0:Date.now()+r;for(;;){const f=Atomics.load(this.control,0);if(f===n+1)break;if(f!==n&&f!==-n)throw new Error(`Invalid WALI filesystem RPC state ${f} for request ${n}.`);const d=o===void 0?void 0:Math.max(0,o-Date.now());if(d===0&&f===n&&Atomics.compareExchange(this.control,0,n,0)===n)throw lt(-110);Atomics.wait(this.control,0,f,f===-n?void 0:d)}const a=Atomics.load(this.control,2),c=Atomics.load(this.control,4);if(Atomics.store(this.control,0,0),a<0)throw lt(a);return this.lastResult=a,c}}function Gf(s,e){if(s==="SYS_flock"){const r=Number(e[1]??0);return(r&4)===0&&(r&8)===0}if(s!=="SYS_fcntl")return!1;const t=Number(e[1]??0);return t===7||t===38}const jf=5;class tn{sink;root;sharedPipes;constructor(e,t,r){this.sink=e,this.root=t,this.sharedPipes=r}static async createInThread(e,t){const r=await import("./filesystem-host-9LBfR1Rt.js"),n=new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT),i=new Int32Array(n);r.hostInThread(n),await r.initializeHost({kind:"initialize",snapshot:e,...t});const o=$n(Jr),a=r.attachChannel({...o.server,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{}}),c=new Qs({...o.client,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{},local:{doorbell:n,serveNow:()=>r.serveNow(a),attach:d=>{r.attachChannel(d)},syscall:(d,y)=>r.syscallNow(a,d,y),handlers:()=>r.handlersNow(a),idle:()=>{r.pumpHost(!0),Atomics.wait(i,0,Atomics.load(i,0),jf)}}}),f={attach:d=>{r.attachChannel(d)},terminate:()=>r.resetHost(),doorbell:n,host:r};return new tn(f,c,t.sharedPipes)}closePort(){this.sink.host?.closeHostPort()}pump(e=!1){(this.sink.host?.hostWaiting()||e)&&this.sink.host?.pumpHost(e)}doorbell(){return this.sink.doorbell?new Int32Array(this.sink.doorbell):void 0}static async create(e,t){const r=Fa("filesystem",()=>qr(new Worker(new URL("/assets/filesystem-worker-BVj1pBBE.js",import.meta.url),{type:"module",name:"wali-filesystem"})));await new Promise((o,a)=>{const c=d=>{d.data.kind==="ready"&&(r.removeEventListener("message",c),o()),d.data.kind==="error"&&(r.removeEventListener("message",c),a(new Error(d.data.message)))};r.addEventListener("message",c),r.addEventListener("error",d=>a(d.error??new Error(d.message)),{once:!0});const f=[...t.updatePort?[t.updatePort]:[],...t.fileLocks?[t.fileLocks.channel.port]:[],...t.fileCoherence?[t.fileCoherence.port]:[]];r.postMessage({kind:"initialize",snapshot:e,...t},f)});const n=$n(Jr);r.postMessage({kind:"attach",...n.server},[n.server.port]);const i={attach:(o,a)=>r.postMessage({kind:"attach",...o},a),terminate:()=>r.terminate()};return new tn(i,new Qs({...n.client,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{}}),t.sharedPipes)}createChannel(e,t=0){const r=$n(e),n=this.sharedPipes&&{...this.sharedPipes,table:t===0?this.sharedPipes.table:new SharedArrayBuffer(65536*4)};return this.sink.attach({process:t,...r.server,...n?{sharedPipes:n}:{}},[r.server.port]),{...r.client,...n?{sharedPipes:n}:{},...this.sink.doorbell?{doorbell:this.sink.doorbell}:{}}}copyForExec(){return this.createChannel(Jr,this.root.copyForExec())}filesystem(){return this.root}snapshot(){return this.root.toSnapshot()}finalSnapshot(){return this.root.finalSnapshot()}replaceSnapshot(e){this.root.replaceSnapshot(e)}terminate(){this.sink.terminate()}}const Hr=1e4,Kf=new Set([5,6,7,36,37,38]),Xf=new Set(["SYS_open","SYS_openat","SYS_stat","SYS_lstat","SYS_newfstatat","SYS_access","SYS_faccessat","SYS_faccessat2","SYS_chmod","SYS_fchmodat","SYS_chdir","SYS_getcwd","SYS_mkdir","SYS_mkdirat","SYS_statfs","SYS_rmdir","SYS_unlink","SYS_unlinkat","SYS_rename","SYS_utimensat","SYS_symlink","SYS_symlinkat","SYS_readlink","SYS_readlinkat","SYS_inotify_init","SYS_inotify_init1"]),Oo=new Set(["SYS_close","SYS_read","SYS_pread64","SYS_write","SYS_pwrite64","SYS_readv","SYS_writev","SYS_preadv","SYS_pwritev","SYS_lseek","SYS_fstat","SYS_fchmod","SYS_fchdir","SYS_fstatfs","SYS_inotify_add_watch","SYS_inotify_rm_watch","SYS_dup","SYS_dup2","SYS_dup3","SYS_fcntl","SYS_getdents64","SYS_fsync","SYS_fdatasync","SYS_flock","SYS_ftruncate"]);class Jf{client;stdioAliasRegistry;descriptorState;memory;constructor(e,t,r,n){this.client=e,this.stdioAliasRegistry=t,this.descriptorState=r,this.memory=n}poll(e,t,r,n){const i=this.memory?.();if(!i||!Number.isSafeInteger(r)||r<=0||t<0||t+r*8>i.buffer.byteLength)return e(t,r,n);const o=this.descriptorState?new Int32Array(this.descriptorState.table):void 0,a=this.descriptorState?new Int32Array(this.descriptorState.descriptions):void 0,c=this.client.localHandlers(),f=new Map;let d=new DataView(i.buffer);for(let k=0;k<r;k+=1){const x=d.getInt32(t+k*8,!0);if(x<3||x>=Hr&&!ze(x))continue;const L=this.stdioAliasRegistry&&x<this.stdioAliasRegistry.length?Atomics.load(this.stdioAliasRegistry,x):-1;if(L===0||L===1||L===2||o&&a&&Atomics.load(a,Atomics.load(o,x)*3+2))continue;const W=c?c().owns(x):Number(this.client.syscall("SYS_fcntl",[x,1,0]))>=0;f.set(k,W?d.getInt16(t+k*8+4,!0)&4:32)}if(f.size===0)return e(t,r,n);const y=[...f.values()].filter(k=>k!==0).length,p=new Uint8Array(i.buffer,t,r*8).slice(),b=[];for(let k=0;k<r;k+=1)f.has(k)||b.push(k);const S=new Uint8Array(i.buffer);b.forEach((k,x)=>S.set(p.subarray(k*8,k*8+8),t+x*8));let I;try{I=e(t,b.length,y?0:n)}finally{const k=new Uint8Array(i.buffer,t,b.length*8).slice();new Uint8Array(i.buffer).set(p,t),d=new DataView(i.buffer),b.forEach((x,L)=>d.setInt16(t+x*8+6,k[L*8+6]|k[L*8+7]<<8,!0));for(const[x,L]of f)d.setInt16(t+x*8+6,L,!0)}return typeof I!="bigint"&&typeof I!="number"||Number(I)<0?I:BigInt(Number(I)+y)}ownedFileImports(e){const t={};for(const r of Oo){const n=r==="SYS_fcntl",i=n?void 0:this.client.directSyscall(r),o=e[r];if(!i&&!n||!o||r==="SYS_flock")continue;const a=this.client.localHandlers();a&&(t[r]=(...c)=>{const f=Number(c[0]);if(f<3||f>=Hr&&!ze(f)||n&&Kf.has(Number(c[1])))return o(...c);const{imports:d,errno:y,owns:p}=a();if(!p(f))return o(...c);const b=d[r];if(!b)throw lt(-38);let S;try{S=b(...c)}catch(I){throw lt(y(I))}return typeof S=="bigint"?S:BigInt(S??0)})}return t}imports(e){const t={};for(const o of Xf){const a=this.client.directSyscall(o);t[o]=a?(...c)=>a(c):(...c)=>this.client.syscall(o,c)}const r=this.descriptorState?new Int32Array(this.descriptorState.table):void 0,n=this.descriptorState?new Int32Array(this.descriptorState.descriptions):void 0;for(const o of Oo){const a=this.client.directSyscall(o),c=o==="SYS_read"||o==="SYS_readv"||o==="SYS_write"||o==="SYS_writev"||o==="SYS_fstat",f=o==="SYS_write"||o==="SYS_writev",d=o==="SYS_pread64"||o==="SYS_pwrite64"||o==="SYS_preadv"||o==="SYS_pwritev";t[o]=(...y)=>{const p=Number(y[0]);if(r&&n&&p>=0&&(p<2e4||ze(p))){const S=Atomics.load(r,p),I=Atomics.load(n,S*3+2);return I&&d?-29n:I&&c?(f&&this.client.prepareSpawn(),e[o]?.(...y)??-9n):a?a(y):this.client.syscall(o,y)}const b=this.stdioAliasRegistry&&p>=0&&p<this.stdioAliasRegistry.length?Atomics.load(this.stdioAliasRegistry,p):-1;return p<3||p>=Hr&&!ze(p)||b===0||b===1||b===2?((o==="SYS_write"||o==="SYS_writev")&&this.client.prepareSpawn(),e[o]?.(...y)??-9n):a?a(y):this.client.syscall(o,y)}}const i=e.SYS_poll;return this.memory&&i&&(t.SYS_poll=(o,a,c)=>this.poll(i,Number(o),Number(a),Number(c))),{...e,...t}}readForMapping(e,t,r){if(!(e<3||e>=Hr&&!ze(e)))return this.client.readForMapping(e,t,r)}mappingPath(e){if(!(e<3||e>=Hr&&!ze(e)))return this.client.mappingPath(e)}writeForMapping(e,t,r){return this.client.writeForMapping(e,t,r)}}function $n(s){const e=new MessageChannel,t=new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT*8),r=new SharedArrayBuffer(s);return e.port1.start(),{client:{port:e.port1,control:t,payload:r},server:{port:e.port2,control:t,payload:r}}}function Yo(s){return{isFile:()=>s.file,isDirectory:()=>s.directory,isSymbolicLink:()=>s.symbolicLink===!0,size:s.size,...Zf(s,"mode","mtimeMs","atimeMs","ctimeMs","nlink","uid","gid","dev","ino","rdev","blksize","blocks")}}function Zf(s,...e){return Object.fromEntries(e.flatMap(t=>s[t]===void 0?[]:[[t,s[t]]]))}function lt(s){const e={2:"ENOENT",9:"EBADF",13:"EACCES",17:"EEXIST",20:"ENOTDIR",21:"EISDIR",22:"EINVAL",24:"EMFILE",28:"ENOSPC",29:"ESPIPE",34:"ERANGE",38:"ENOSYS",39:"ENOTEMPTY",90:"EMSGSIZE",110:"ETIMEDOUT"}[-s]??"EIO";return Object.assign(new Error(e),{code:e})}const Do=1e4,Qf=19999,Ys=64,qs=64*1024,zn=8,Co=3,Uo=4,Ds=2048,Cs=524288,qf=0,eh=1,th=2,rh=3,nh=4,Wo=1030,sh=1,ih=4096;function oh(s=new rn(new ni)){const e={table:s.sharedEntries.buffer,descriptions:s.registry.pipeMetadata.buffer,slots:new SharedArrayBuffer(Ys*Int32Array.BYTES_PER_ELEMENT),controls:new SharedArrayBuffer(Ys*zn*Int32Array.BYTES_PER_ELEMENT),payloads:new SharedArrayBuffer(Ys*qs)};return Ba.set(e.table,s),e}const Ba=new WeakMap,$o=new WeakMap;let ei,ti;function ah(s,e){if(!Number.isSafeInteger(e)||e<0||e>=65536)return 0;let t=s===ei?ti:$o.get(s);t||(t={table:new Int32Array(s.table),descriptions:new Int32Array(s.descriptions)},$o.set(s,t)),ei=s,ti=t;const r=Atomics.load(t.table,e);return Atomics.load(t.descriptions,r*3)}function ch(){ei=void 0,ti=void 0}class lh{memory;state;remote;table;slots;constructor(e,t,r,n){this.memory=e,this.state=t,this.remote=n,this.table=r??Ba.get(t.table),this.slots=new Int32Array(t.slots)}isPipeFd(e){return this.entry(e)!==0}exportBrowserProcessPipe(e){const t=this.entry(e);return t===0?void 0:this.handle(t)}pollDescriptor(e,t){const r=this.entry(e);return r===0?void 0:Pa(this.handle(r),t)}ioctl(e,t){if(this.isPipeFd(e))return t===21537||t===21585||t===21584?0n:-25n}imports(e={}){const t=(n,i)=>e[n]?.(...i)??-38n,r={...e,SYS_pipe:n=>this.pipe(Number(n),0),SYS_pipe2:(n,i)=>this.pipe(Number(n),Number(i)),SYS_close:n=>this.isPipeFd(Number(n))?this.close(Number(n)):e.SYS_close?.(n)??-38n,SYS_read:(n,i,o)=>this.isPipeFd(Number(n))?this.read(Number(n),Number(i),Number(o)):e.SYS_read?.(n,i,o)??-38n,SYS_pread64:(n,i,o,a)=>this.isPipeFd(Number(n))?-29n:e.SYS_pread64?.(n,i,o,a)??-38n,SYS_write:(n,i,o)=>this.isPipeFd(Number(n))?this.write(Number(n),Number(i),Number(o)):e.SYS_write?.(n,i,o)??-38n,SYS_pwrite64:(n,i,o,a)=>this.isPipeFd(Number(n))?-29n:e.SYS_pwrite64?.(n,i,o,a)??-38n,SYS_preadv:(n,i,o,a,c)=>this.isPipeFd(Number(n))?-29n:e.SYS_preadv?.(n,i,o,a,c)??-38n,SYS_pwritev:(n,i,o,a,c)=>this.isPipeFd(Number(n))?-29n:e.SYS_pwritev?.(n,i,o,a,c)??-38n,SYS_readv:(n,i,o)=>this.isPipeFd(Number(n))?this.readv(Number(n),Number(i),Number(o)):e.SYS_readv?.(n,i,o)??-38n,SYS_writev:(n,i,o)=>this.isPipeFd(Number(n))?this.writev(Number(n),Number(i),Number(o)):e.SYS_writev?.(n,i,o)??-38n,SYS_lseek:(n,i,o)=>this.isPipeFd(Number(n))?-29n:e.SYS_lseek?.(n,i,o)??-38n,SYS_fstat:(n,i)=>this.isPipeFd(Number(n))?this.fstat(Number(i)):e.SYS_fstat?.(n,i)??-38n,SYS_dup:n=>this.isPipeFd(Number(n))?this.duplicate(Number(n)):e.SYS_dup?.(n)??-38n,SYS_dup2:(n,i)=>this.isPipeFd(Number(n))?this.duplicate(Number(n),Number(i),3,!1,e):e.SYS_dup2?.(n,i)??-38n,SYS_dup3:(n,i,o)=>this.isPipeFd(Number(n))?Number(n)===Number(i)||(Number(o)&~Cs)!==0?-22n:this.duplicate(Number(n),Number(i),3,!!(Number(o)&Cs),e):e.SYS_dup3?.(n,i,o)??-38n,SYS_fcntl:(n,i,o)=>this.isPipeFd(Number(n))?this.fcntl(Number(n),Number(i),Number(BigInt.asIntN(32,BigInt(o))),e):e.SYS_fcntl?.(n,i,o)??-38n,SYS_poll:(n,i,o)=>this.poll(Number(n),Number(i),Number(o),()=>t("SYS_poll",[n,i,o]))};if(this.remote)for(const n of["SYS_pipe","SYS_pipe2","SYS_close","SYS_dup","SYS_dup2","SYS_dup3","SYS_fcntl"]){const i=r[n];r[n]=(...o)=>n==="SYS_pipe"||n==="SYS_pipe2"||this.isPipeFd(Number(o[0]))?this.remote.syscall(n,o):i(...o)}return r}pipe(e,t){if((t&-526337)!==0)return-22n;if(!this.validRange(e,8))return-14n;const r=this.allocateSlot();if(r<0)return-24n;const n=this.control(r);n.fill(0),Atomics.store(n,Co,1),Atomics.store(n,Uo,1);const i=this.allocateDescriptor(r+1),o=i>=0?this.allocateDescriptor(-(r+1)):-1;if(i<0||o<0)return i>=0&&this.table.close(i),Atomics.store(this.slots,r,0),-24n;for(const c of[i,o])this.table.entries[c].flags=t&Cs?1:0,Atomics.store(new Int32Array(this.state.descriptions),this.table.entries[c].description*3+1,t&Ds);const a=this.view();return a.setInt32(e,i,!0),a.setInt32(e+4,o,!0),0n}read(e,t,r){if(!Number.isSafeInteger(r)||r<0||!this.validRange(t,r))return-22n;const i=(this.statusFlags(e)&Ds?oi:Mf)(this.handle(this.entry(e)),r);return typeof i=="bigint"?i:(this.bytes().set(i,t),BigInt(i.byteLength))}write(e,t,r){return!Number.isSafeInteger(r)||r<0||!this.validRange(t,r)?-22n:Ra(this.handle(this.entry(e)),this.bytes().slice(t,t+r))}readv(e,t,r){if(!Number.isSafeInteger(r)||r<0||r>1024||!this.validRange(t,r*8))return-22n;let n=0n;for(let i=0;i<r;i+=1){const o=t+i*8,a=this.read(e,this.view().getUint32(o,!0),this.view().getUint32(o+4,!0));if(a<0n)return n>0n?n:a;if(n+=a,a<BigInt(this.view().getUint32(o+4,!0)))break}return n}writev(e,t,r){if(!Number.isSafeInteger(r)||r<0||r>1024||!this.validRange(t,r*8))return-22n;let n=0n;for(let i=0;i<r;i+=1){const o=t+i*8,a=this.write(e,this.view().getUint32(o,!0),this.view().getUint32(o+4,!0));if(a<0n)return n>0n?n:a;n+=a}return n}fstat(e){if(!this.validRange(e,144))return-14n;const t=this.view();for(let r=0;r<144;r+=4)t.setUint32(e+r,0,!0);return t.setBigUint64(e+16,1n,!0),t.setUint32(e+24,ih|438,!0),t.setUint32(e+28,1e3,!0),t.setUint32(e+32,1e3,!0),t.setBigInt64(e+56,4096n,!0),0n}statusFlags(e){const t=Atomics.load(new Int32Array(this.state.table),e);return Atomics.load(new Int32Array(this.state.descriptions),t*3+1)}fcntl(e,t,r,n){if(t===qf||t===Wo)return this.duplicate(e,void 0,Math.max(3,r),t===Wo,n);const i=this.table.entries[e];return t===eh?BigInt(i.flags):t===th?(i.flags=r&sh,0n):t===rh?BigInt(this.statusFlags(e)|(this.entry(e)<0?1:0)):t===nh?(Atomics.store(new Int32Array(this.state.descriptions),i.description*3+1,r&Ds),0n):-22n}duplicate(e,t,r=Do,n=!1,i={}){const o=this.table.get(e);if(!o)return-9n;if(t===e)return BigInt(e);const a=t===void 0?this.freeDescriptor(r):t;return a<0||a>=65536?-9n:(this.table.set(a,o,n?1:0),BigInt(a))}close(e){return this.table.close(e)?0n:-9n}poll(e,t,r,n){if(!Number.isSafeInteger(t)||t<0||t>65536||!this.validRange(e,t*8))return-22n;const i=n();let o=typeof i=="bigint"?Number(i):typeof i=="number"?i:0;o<0&&(o=0);for(let a=0;a<t;a+=1){const c=e+a*8,f=this.view().getInt32(c,!0),d=this.pollDescriptor(f,this.view().getInt16(c+4,!0));d!==void 0&&(this.view().getInt16(c+6,!0)!==0&&(o-=1),this.view().setInt16(c+6,d,!0),d!==0&&(o+=1))}return BigInt(o)}allocateSlot(){for(let e=0;e<this.slots.length;e+=1)if(Atomics.compareExchange(this.slots,e,0,1)===0)return e;return-1}freeDescriptor(e){for(let t=Math.max(3,e);t<=Qf;t++)if(!this.table.get(t))return t;return-1}allocateDescriptor(e,t=Do){const r=this.freeDescriptor(t);if(r<0)return r;const n=Math.abs(e)-1,i=this.table.registry.create("pipe",{pipe:n,side:e>0?"reader":"writer"},()=>{Zr(this.handle(e));const o=this.control(n);Atomics.load(o,Co)===0&&Atomics.load(o,Uo)===0&&Atomics.store(this.slots,n,0)});return Atomics.store(this.table.registry.pipeMetadata,i.id*3,e),this.table.set(r,i),r}entry(e){return ah(this.state,e)}handle(e){const t=Math.abs(e)-1;return{control:this.state.controls,payload:this.state.payloads,role:e>0?"reader":"writer",controlOffset:t*zn*Int32Array.BYTES_PER_ELEMENT,payloadOffset:t*qs,payloadLength:qs}}control(e){return new Int32Array(this.state.controls,e*zn*Int32Array.BYTES_PER_ELEMENT,zn)}bytes(){return new Uint8Array(this.memory().buffer)}view(){return new DataView(this.memory().buffer)}validRange(e,t){return Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&e>=0&&t>=0&&e+t<=this.memory().buffer.byteLength}}const Us=64*1024,fh=1e4;var Yt;(function(s){s[s.Query=1]="Query",s[s.Open=2]="Open",s[s.Push=3]="Push",s[s.Pull=4]="Pull",s[s.Flush=5]="Flush",s[s.Close=6]="Close"})(Yt||(Yt={}));var zo;(function(s){s[s.VideoDecoder=0]="VideoDecoder",s[s.VideoEncoder=1]="VideoEncoder",s[s.AudioDecoder=2]="AudioDecoder",s[s.AudioEncoder=3]="AudioEncoder"})(zo||(zo={}));const Ho=1;var Je;(function(s){s[s.State=0]="State",s[s.Operation=1]="Operation",s[s.Result=2]="Result",s[s.Argument0=3]="Argument0",s[s.Argument1=4]="Argument1",s[s.Argument2=5]="Argument2",s[s.Argument3=6]="Argument3",s[s.Argument4=7]="Argument4",s[s.Argument5=8]="Argument5"})(Je||(Je={}));const hh=6,dh=9,uh=-5,Ws=-9,mh=-11,Rn=-14,Qt=-22,br=-95,yh=-110,Vo=3e4,wh=fh+5e3;class ph{channel;control;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control)}call(e,t,r){if(Atomics.load(this.control,Je.State)!==0)return mh;const n=this.nextRequestId;this.nextRequestId=n>=1073741821?1:n+2,this.control.fill(0);for(let a=0;a<hh;a+=1)Atomics.store(this.control,Je.Argument0+a,t[a]??0);Atomics.store(this.control,Je.Operation,e),Atomics.store(this.control,Je.State,n),this.channel.port.postMessage(n);const i=Date.now()+r;for(;;){const a=Atomics.load(this.control,Je.State);if(a===n+1)break;if(a!==n&&a!==-n)return uh;const c=Math.max(0,i-Date.now());if(c===0&&a===n&&Atomics.compareExchange(this.control,Je.State,n,0)===n)return yh;Atomics.wait(this.control,Je.State,a,a===-n?void 0:c)}const o=Atomics.load(this.control,Je.Result);return Atomics.store(this.control,Je.State,0),o}}function gh(s,e,t){const r=()=>s().buffer.byteLength,n=(c,f)=>Number.isSafeInteger(c)&&c>0&&f>=0&&c<=r()-f,i=(c,f)=>f===0?Number.isSafeInteger(c)&&c>=0:n(c,f),o=(c,f,d=Vo)=>{const y=t();return BigInt(y?y.call(c,f,d):br)},a=c=>(f,d,y)=>{if(!e())return BigInt(br);const p=Number(f),b=Number(d),S=Number(y);return!Number.isInteger(p)||p<0||p>3||!Number.isSafeInteger(S)||S<1||S>Us?BigInt(Qt):n(b,S)?o(c,[p,b,S]):BigInt(Rn)};return{SYS_browser_codec_query_v1:a(Yt.Query),SYS_browser_codec_open_v1:a(Yt.Open),SYS_browser_codec_push_v1:(c,f,d,y,p)=>{if(!e())return BigInt(br);const b=Number(c),S=Number(f),I=Number(d),k=Number(y),x=Number(p);return!Number.isInteger(b)||b<=0?BigInt(Ws):!Number.isSafeInteger(I)||I<0||!Number.isSafeInteger(x)||x<1||x>Us?BigInt(Qt):I>0&&!n(S,I)||!n(k,x)?BigInt(Rn):o(Yt.Push,[b,S,I,k,x])},SYS_browser_codec_pull_v1:(c,f,d,y,p,b)=>{if(!e())return BigInt(br);const S=Number(c),I=Number(f),k=Number(d),x=Number(y),L=Number(p),W=Number(b);return!Number.isInteger(S)||S<=0?BigInt(Ws):!Number.isInteger(I)||(I&~Ho)!==0||!Number.isSafeInteger(x)||x<0||!Number.isSafeInteger(W)||W<0||W>Us?BigInt(Qt):!i(k,x)||!i(L,W)?BigInt(Rn):o(Yt.Pull,[S,I,k,x,L,W],(I&Ho)===0?Vo:wh)},SYS_browser_codec_flush_v1:c=>{if(!e())return BigInt(br);const f=Number(c);return!Number.isInteger(f)||f<=0?BigInt(Ws):o(Yt.Flush,[f])},SYS_browser_codec_close_v1:c=>{if(!e())return BigInt(br);const f=Number(c);return!Number.isInteger(f)||f<=0?0n:o(Yt.Close,[f])}}}class ci{worker;constructor(e){this.worker=e}static async create(e){const t=qr(new Worker(new URL("/assets/codec-worker-CbrC58Ct.js",import.meta.url),{type:"module",name:"wali-codec"}));return await new Promise((r,n)=>{const i=o=>{o.data.kind==="ready"&&(t.removeEventListener("message",i),r()),o.data.kind==="error"&&(t.removeEventListener("message",i),n(new Error(o.data.message)))};t.addEventListener("message",i),t.addEventListener("error",o=>n(o.error??new Error(o.message)),{once:!0}),t.postMessage({kind:"initialize",memory:e})}),new ci(t)}createChannel(){const e=new MessageChannel,t=new SharedArrayBuffer(dh*Int32Array.BYTES_PER_ELEMENT);return this.worker.postMessage({kind:"attach",port:e.port2,control:t},[e.port2]),{port:e.port1,control:t}}terminate(){this.worker.terminate()}}const $s=1,zs=2,Hs=4,Go=8,Sh=16,bh=32,Oa=1024,Eh=Oa*8;function Ah(s,e,t){return(r,n,i,o,a)=>{const c=Number(r);if(!Number.isInteger(c)||c<0||c>Oa)return-22n;const f=[Number(n),Number(i),Number(o)],d=[$s,Hs,zs],y=Math.ceil(c/8);let p=new Uint8Array(s().buffer);for(const D of f)if(D!==0&&(D<0||D+y>p.byteLength))return-14n;const b=Number(a);let S=-1;if(b!==0){if(b<0||b+16>p.byteLength)return-14n;const D=new DataView(s().buffer),v=D.getBigInt64(b,!0),U=D.getBigInt64(b+8,!0);if(v<0n||U<0n)return-22n;S=Number(v*1000n+(U+999n)/1000n)}const I=new Map;f.forEach((D,v)=>{if(D!==0)for(let U=0;U<c;U+=1)p[D+(U>>3)]&1<<(U&7)&&I.set(U,(I.get(U)??0)|d[v])});const k=t();if(k<=0)return-12n;let x=new DataView(s().buffer),L=0;for(const[D,v]of I){const U=k+L*8;x.setInt32(U,D,!0),x.setInt16(U+4,v,!0),x.setInt16(U+6,0,!0),L+=1}const W=e(k,L,S),de=Number(typeof W=="bigint"?W:W??0);if(de<0)return BigInt(de);p=new Uint8Array(s().buffer),x=new DataView(s().buffer);for(const D of f)D!==0&&p.fill(0,D,D+y);let se=0,ie=0;for(const[D,v]of I){const U=x.getInt16(k+ie*8+6,!0);if(ie+=1,U&bh)return-9n;[(v&$s)!==0&&(U&($s|Sh|Go))!==0,(v&Hs)!==0&&(U&(Hs|Go))!==0,(v&zs)!==0&&(U&zs)!==0].forEach((Se,O)=>{if(!Se)return;const fe=f[O]+(D>>3);p[fe]=(p[fe]??0)|1<<(D&7),se+=1})}return BigInt(se)}}var Dt;(function(s){s[s.Inspect=1]="Inspect",s[s.Read=2]="Read",s[s.WriteStart=3]="WriteStart",s[s.WriteChunk=4]="WriteChunk",s[s.WriteFinish=5]="WriteFinish",s[s.Remove=6]="Remove"})(Dt||(Dt={}));const vn=512*1024,jo=256*1024*1024,Ko=5,_h=new TextEncoder,Nh=new TextDecoder("utf-8",{fatal:!0});class Ih{channel;control;payload;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}pull(e){const t=this.call(Dt.Inspect,{path:e});if(!t.exists)return;const r=ri(t.length,0,jo),n=new Uint8Array(r);for(let i=0;i<r;i+=vn){const o=Math.min(vn,r-i),a=this.call(Dt.Read,{path:e,offset:i,length:o}),c=tr(a.content);if(c.byteLength!==o)throw new Error("Invalid coherent file response.");n.set(c,i)}return{bytes:n,...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},parents:Ya(e,t.parents)}}push(e,t){if(!t){this.call(Dt.Remove,{path:e});return}if(t.bytes.byteLength>jo)throw new Error("Coherent file exceeds 256 MiB.");this.call(Dt.WriteStart,{path:e,length:t.bytes.byteLength,...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},...t.parents===void 0?{}:{parents:t.parents}});for(let r=0;r<t.bytes.byteLength;r+=vn){const n=t.bytes.subarray(r,r+vn);this.call(Dt.WriteChunk,{offset:r,content:ft(n)})}this.call(Dt.WriteFinish)}call(e,t={}){const r=()=>{if(Atomics.load(this.control,Ko))throw Object.assign(new Error("Browser file coherence was cancelled."),{errno:125})};r();const n=_h.encode(JSON.stringify(t));if(n.byteLength>this.payload.byteLength)throw new Error("File-coherence request is too large.");if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent file-coherence RPC on one channel.");const i=this.nextRequestId;this.nextRequestId=i>=1073741821?1:i+2,this.control.fill(0,0,Ko),this.payload.set(n),Atomics.store(this.control,1,e),Atomics.store(this.control,3,n.byteLength),Atomics.store(this.control,0,i);try{for(this.channel.port.postMessage(i);Atomics.load(this.control,0)!==i+1;){r();const f=Atomics.load(this.control,0);f!==i+1&&Atomics.wait(this.control,0,f)}const o=Atomics.load(this.control,2),a=ri(Atomics.load(this.control,4),0,this.payload.byteLength),c=a===0?void 0:JSON.parse(Nh.decode(this.payload.slice(0,a)));if(o<0)throw Object.assign(new Error(`Browser file coherence failed with ${o}.`),{errno:-o});return c}finally{Atomics.store(this.control,0,0)}}}function Xo(s){const e=s.replace(/-(?:journal|shm|wal)$/u,"");return[e,`${e}-journal`,`${e}-wal`,`${e}-shm`]}function kh(s,e){return li(e).flatMap(t=>{if(!s.existsSync(t))return[];const r=s.statSync(t);if(!r.isDirectory())throw _t("A coherent file parent must be a directory.");return[{path:t,...Da({mode:r.mode,mtimeMs:r.mtimeMs})}]})}function Mh(s,e,t){const r=new Map(Ya(e,t).map(n=>[n.path,n]));for(const n of li(e)){if(s.existsSync(n)){if(!s.statSync(n).isDirectory())throw _t("A coherent file parent must be a directory.");continue}s.mkdirSync(n);const i=r.get(n);i?.mode!==void 0&&s.chmodSync?.(n,i.mode),i?.mtimeMs!==void 0&&s.utimesSync?.(n,new Date(i.mtimeMs),new Date(i.mtimeMs))}}function Ya(s,e){if(e===void 0)return[];const t=new Set(li(s));if(!Array.isArray(e)||e.length>t.size)throw _t("Invalid coherent file parents.");return e.map(r=>{if(typeof r!="object"||r===null)throw _t("Invalid coherent file parent.");const n=r,i=Ca(n.path);if(!t.delete(i))throw _t("Coherent metadata must name distinct ancestors of its file.");return{path:i,...Da(n)}})}function li(s){const e=[];for(const t of Ca(s).split("/"))!t||t==="."||(t===".."?e.pop():e.push(t));return e.slice(0,-1).map((t,r)=>`/${e.slice(0,r+1).join("/")}`)}function Da(s){const e=s.mode===void 0?void 0:ri(s.mode,0,65535),t=s.mtimeMs===void 0?void 0:Lh(s.mtimeMs);return{...e===void 0?{}:{mode:e},...t===void 0?{}:{mtimeMs:t}}}function Ca(s){const e=xh(s);if(!e.startsWith("/")||e.length>4096||e.includes("\0"))throw _t("Invalid coherent file path.");return e}function xh(s){if(typeof s!="string")throw _t("Expected a string.");return s}function ri(s,e,t){if(!Number.isSafeInteger(s)||s<e||s>t)throw _t("Expected a bounded integer.");return s}function Lh(s){if(typeof s!="number"||!Number.isFinite(s))throw _t("Expected a finite number.");return s}function _t(s){return Object.assign(new Error(s),{errno:22})}class Ph{locks;coherence;filesystem;held=[];locallyCreated=new Set;constructor(e,t,r){this.locks=e,this.coherence=t,this.filesystem=r}created(e){this.locallyCreated.add(e)}request(e){if(e.operation==="query")return this.locks.request(e);if(e.operation==="set"){const i=!this.held.some(a=>a.path===e.path),o=this.locks.request(e);if(o.result<0)return o;if(i)try{this.refresh(e.path)}catch(a){throw this.locks.request({operation:"unlock",owner:e.owner,namespace:e.namespace,path:e.path,range:e.range}),a}return this.install(e.owner,e.namespace,e.path,e.range),o}if(e.operation==="unlock"){const i=this.without(e.owner,e.namespace,e.path,e.range);this.held.some(a=>a.path===e.path)&&!i.some(a=>a.path===e.path)&&this.publish(e.path);const o=this.locks.request(e);return o.result>=0&&this.replaceHeld(i),o}const t=this.held.filter(i=>i.owner!==e.owner),r=new Set(this.held.filter(i=>i.owner===e.owner).map(i=>i.path));for(const i of r)t.some(o=>o.path===i)||this.publish(i);const n=this.locks.request(e);return n.result>=0&&this.replaceHeld(t),n}refresh(e){const t=performance.now();try{this.refreshNow(e)}finally{Qe.waited.ms+=performance.now()-t}}publish(e){const t=performance.now();try{this.publishNow(e)}finally{Qe.waited.ms+=performance.now()-t}}refreshNow(e){for(const t of Xo(e)){const r=this.coherence.pull(t);if(!r&&this.locallyCreated.delete(t)){this.coherence.push(t,this.readLocal(t)),this.filesystem.dropChangedPaths?.([t]);continue}this.locallyCreated.delete(t),this.writeLocal(t,r),this.filesystem.dropChangedPaths?.([t])}}publishNow(e){for(const t of Xo(e))this.coherence.push(t,this.readLocal(t)),this.filesystem.dropChangedPaths?.([t])}readLocal(e){if(!this.filesystem.existsSync(e))return;const t=this.filesystem.statSync(e);if(!t.isDirectory())return{bytes:this.filesystem.readFileSync(e),...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},parents:kh(this.filesystem,e)}}writeLocal(e,t){if(!t){this.filesystem.existsSync(e)&&!this.filesystem.statSync(e).isDirectory()&&this.filesystem.unlinkSync(e);return}Mh(this.filesystem,e,t.parents),this.filesystem.writeFileSync(e,t.bytes),t.mode!==void 0&&this.filesystem.chmodSync?.(e,t.mode),t.mtimeMs!==void 0&&this.filesystem.utimesSync?.(e,new Date(t.mtimeMs),new Date(t.mtimeMs))}install(e,t,r,n){const i=this.without(e,t,r,n);i.push({owner:e,namespace:t,path:r,...n}),this.replaceHeld(i)}without(e,t,r,n){return this.held.flatMap(i=>i.owner===e&&i.namespace===t&&i.path===r&&Rh(i,n)?vh(i,n):[i])}replaceHeld(e){this.held.splice(0,this.held.length,...e)}}function Rh(s,e){return s.start<(e.end??Number.POSITIVE_INFINITY)&&e.start<(s.end??Number.POSITIVE_INFINITY)}function vh(s,e){const t=[];s.start<e.start&&t.push({...s,end:e.start});const r=s.end??Number.POSITIVE_INFINITY,n=e.end??Number.POSITIVE_INFINITY;return n<r&&t.push({...s,start:n,...s.end===void 0?{}:{end:s.end}}),t}const Th=9n,Fh=22n,Jo=new TextEncoder,Vr=new TextDecoder;class Ua extends Error{imports;constructor(e){super(`Unsupported WALI imports: ${e.join(", ")}`),this.imports=e,this.name="UnsupportedWaliImportError"}}function Bh(s,e){if(Xc(s))return()=>{throw new Ua([s])};let t=!1;return()=>{if(!t){t=!0;const r=`[WALI] ${s} is not implemented; answering -ENOSYS (38) as a kernel would.`;console.error(r),e?.(r)}return Kc}}class Zo extends Error{}class Qo extends Error{code;constructor(e){super(`WALI process exited with status ${e}`),this.code=e}}class Oh{async run(e,t={}){const r=t.filesystemPolicy===void 0?void 0:er(t.filesystemPolicy),n=r,i=await zc(e),o=Hc(i);Vc(o);const a=o.filter(g=>g.module==="wali"),c=[],f=[],d=typeof t.stdin=="object"&&t.stdin!==null&&"read"in t.stdin?t.stdin:new la(typeof t.stdin=="string"?Jo.encode(t.stdin):t.stdin??new Uint8Array),y=t.argv?.length?[...t.argv]:["wali-program"],p=y.map(g=>Jo.encode(`${g}\0`)),b=Uh(t.pid),S=performance.now(),I={...Qe.waited};let k=S;const x=new Map,L=t.signalState??Bc();let W,de,se,ie,D,v,U=!1;const X=uf(e,t.memory),Se=kl(),O=new Int32Array(new SharedArrayBuffer(3*Int32Array.BYTES_PER_ELEMENT));Atomics.store(O,1,-1);const fe=new rn(new ni),ue=t.descriptorTable?.sharedPipes??oh(fe),V=()=>{if(X)return X;const g=W?.exports.memory;if(!(g instanceof WebAssembly.Memory))throw new Error("WALI module does not export linear memory.");return g},me=()=>new DataView(V().buffer),T=()=>new Uint8Array(V().buffer),G=(g,N)=>(Er(V(),g,N),T().slice(g,g+N)),pe=(g,N)=>{Er(V(),g,N.byteLength),T().set(N,g)},ve=(g,N)=>{if(g===1)c.push(N),t.onStdout?.(N.slice());else if(g===2)f.push(N),t.onStderr?.(N.slice());else return-Th;return BigInt(N.byteLength)},Oe=(g,N="SYS_exit_group")=>{const P=`[WALI] ${N}(${g&255}) on the MAIN thread -- the process is ending here, not in a pthread. If the program did not ask to exit, this is the caller to find.`;throw console.error(P),t.onDiagnostic?.(P),new Qo(g&255)},Ie=g=>g<0||g>64?-22n:g===0?0n:g!==9&&(tt.mask&1n<<BigInt(g-1))!==0n?(new hs(L).raise(g),0n):((g===9||g===19?"default":new hs(L).raise(g))==="default"&&Fc(g)&&Oe(128+g,`signal ${g}`),0n),dt=t.executablePath??(y[0].startsWith("/")?y[0]:`/usr/bin/${y[0]}`),Te=a.some(g=>g.name==="__wasm_thread_spawn"),ut=a.some(g=>Yh.has(g.name))?t.browserProcess:void 0,nn=t.forkState?.allocator??ga(),mt=Vl(),K=t.descriptorTable?new Qs(t.descriptorTable):void 0;if(K&&X&&K.attachMemory(X),!K&&(Te||ut)&&t.filesystem?.toSnapshot&&t.filesystem.replaceSnapshot){if(!X)throw new Error("A threaded WALI module must import its shared process memory.");const g=t.store||t.layers?t.filesystem.toStoreOverlaySnapshot?.():void 0;U=!(!!ut?.fork&&WebAssembly.Module.exports(i).some(P=>P.name==="asyncify_start_unwind")||a.some(P=>P.name==="SYS_browser_spawn"||P.name==="SYS_browser_spawn_confined_v1")),v=await(U?tn.createInThread:tn.create)(g??t.filesystem.toSnapshot(),{...t.store?{store:t.store}:{},...t.layers?{layers:t.layers}:{},...t.privateRoots?{privateRoots:t.privateRoots}:{},memory:X,sharedPipes:ue,...n?{filesystemPolicy:n}:{},cwd:t.cwd??"/",executablePath:dt,pid:b,...t.filesystemUpdatePort?{updatePort:t.filesystemUpdatePort}:{},...t.fileLocks?{fileLocks:t.fileLocks}:{},...t.fileCoherence?{fileCoherence:t.fileCoherence}:{}})}if(n&&Te&&!v&&!K)throw new Error("Confined WALI threads require the shared filesystem owner.");const ke=K??v?.filesystem()??t.filesystem,he=()=>{v&&t.filesystem?.replaceSnapshot&&t.filesystem.replaceSnapshot(v.snapshot())},oe=new Kn({...K||v?{descriptorState:ue}:{descriptors:fe},...n?{filesystemPolicy:n}:{},...ke?{filesystem:ke}:{},cwd:t.cwd??"/",stdin:d,executablePath:dt,memory:V,emit:ve,stdioAliasRegistry:Se,pid:b,...!v&&t.fileLocks?{fileLocks:t.fileCoherence?new Ph(new Qe(t.fileLocks.channel),new Ih(t.fileCoherence),ke):new Qe(t.fileLocks.channel),lockOwner:t.fileLocks.owner}:{},...v?{specialDescriptorMinimum:1e4,descriptorMaximum:19999}:{},...!v&&!K&&t.privateRoots?{privateRoots:t.privateRoots.map(g=>`/${g.split("/").filter(Boolean).join("/")}`)}:{},...t.onDiagnostic?{onDiagnostic:t.onDiagnostic}:{}}),He=oe.imports(),et=oe.writeEnvironmentFile(t.env??{},b),ne=K??v?.filesystem(),Ye=ne?new Jf(ne,Se,ue,V):void 0,Me=new Gl(V,(g,N,P)=>Ye?.readForMapping(g,N,P)??oe.readForMapping(g,N,P),nn,g=>Ye?.mappingPath(g)??oe.mappingPath(g),(g,N,P)=>Ye?.writeForMapping(g,N,P)??oe.writeForMapping(g,N,P),mt,t.onDiagnostic),tt=new Oc(new hs(L),V,()=>W?.exports.__indirect_function_table,()=>Number(Me.imports().SYS_mmap(0,4096,3,34,-1,0)),Yc(()=>W?.exports,V)),be=t.threadPoolSize??18,sn=new sf(V,b,d,O,t.terminal,be,()=>Me.growAhead()),xr=U?v?.doorbell():void 0;Wi(xr?{pump:()=>v.pump(!0),doorbell:xr}:void 0);let on=!1;(t.network||ut)&&(se=await ai.create(t.network,ue,d instanceof Xs?d.buffer:void 0,Se.buffer,L));const Ee=se?new Hf(V,se.createChannel(),tt):void 0,nr=new lh(V,ue,ne?void 0:fe,ne),Qn=new df(V,oe,(g,N)=>nr.pollDescriptor(g,N)??(Ee?.isNetworkFd(g)?Ee.pollFd(g,N):void 0)),qn=new Df(V,oe),an=oe.imports(),sr=Ye?.imports(an)??an,Wt=nr.imports({...qn.imports(),...sr}),cn=Qn.imports(),$t=sn.imports(),zt=t.forkState?.parentPid??t.parentPid??1,De=new Int32Array(t.childPidAllocator??new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));t.childPidAllocator||Atomics.store(De,0,Math.max(b+1,1e4));const ir=g=>{if(!Number.isSafeInteger(g)||g<=0||g>=T().byteLength)throw new WebAssembly.RuntimeError("WALI process string pointer is out of bounds.");const N=T().indexOf(0,g);if(N<0||N-g>1024*1024)throw new WebAssembly.RuntimeError("WALI process string is not terminated.");return Vr.decode(T().slice(g,N))},or=g=>{if(g===0)return[];const N=[];for(let P=0;P<65536;P+=1){Er(V(),g+P*4,4);const $=me().getUint32(g+P*4,!0);if($===0)return N;N.push(ir($))}throw new WebAssembly.RuntimeError("WALI process string array is not terminated.")},yt=(g,N)=>{const P=nr.exportBrowserProcessPipe(g)??oe.exportBrowserProcessPipe(g);if(!(!P||P.role!==N))return La(P)},es=(g,N,P)=>{if(!Ee)return-10n;if(N!==0&&(N<0||N+4>T().byteLength))return-14n;const{result:$,process:z}=Ee.waitChild(g,P,tt.mask);if($<=0)return BigInt($);const te=Lf(z);if(te){v&&v.filesystem().importPeerPatch(te),t.filesystem&&bf(t.filesystem,te);const ye=t.filesystem?.toSnapshot?.();ye&&t.browserProcess?.restore?.(ye)}return N!==0&&me().setInt32(N,(Atomics.load(new Int32Array(z.control),1)&255)<<8,!0),BigInt($)},ln=(g,N)=>{const[P,$,z,te,ye,ae,xe]=g;if(!t.browserProcess)return-38;const kt=Pr(1,[ye,ae,xe]);if(kt!==void 0)return kt;N&&(N=er(N));const Mt=r;if(Mt){if(t.browserProcess.filesystemPolicyVersion!==1)return-95;N=Dc(Mt,N)}const xt=ir(Number(P)),_e=or(Number($));_e.length===0&&_e.push(xt);const lr={};for(const gt of or(Number(z))){const Lt=gt.indexOf("=");Lt>0&&(lr[gt.slice(0,Lt)]=gt.slice(Lt+1))}const fr=Atomics.add(De,0,1),hr={control:new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),response:new SharedArrayBuffer(Zs),snapshotApplied:!1},Fe=yt(Number(ye),"reader"),st=yt(Number(ae),"writer"),pt=yt(Number(xe),"writer");let Le;try{const gt=Ee.registerChild(fr,hr);if(gt<0)throw new Error(`Child registration failed: ${gt}`);return ne?.prepareSpawn(),he(),Le=ne?.copyForExecChannel([Number(ye),Number(ae),Number(xe)]),t.browserProcess.spawn({pid:fr,parentPid:b,childPidAllocator:De.buffer,...Le?{descriptorTable:Le}:{},...N?{filesystemPolicy:N}:{},executablePath:xt,argv:_e,env:lr,...Number(z)===0?{inheritEnvironment:!0}:{},cwd:Number(te)===0?oe.currentWorkingDirectory():ir(Number(te)),control:hr.control,response:hr.response,...Fe?{stdin:Fe}:{},...st?{stdout:st}:{},...pt?{stderr:pt}:{}}),fr}catch{return Le?.releasePort?.postMessage(!0),Ee.forgetChild(fr),Fe&&Zr(Fe),st&&Zr(st),pt&&Zr(pt),-5}};let ee=t.forkState?.asyncifyData??0,rt=!1,Ve=!!t.forkState,wt=0,Lr=!1;const Ge=(g,...N)=>{const P=W?.exports[g];if(typeof P!="function")throw new Error(`Missing ${g}; build the module with the Binaryen Asyncify stage.`);P(...N)},Ht=()=>ne?.currentWorkingDirectory()??oe.currentWorkingDirectory(),Pr=(g,N=[])=>{const P=W?.exports.__wali_private_tree_release;if(typeof P!="function")return;const $=Number(P(g,Number(N[0]??-1),Number(N[1]??-1),Number(N[2]??-1)));return $<0?$:void 0},ts=()=>{if(typeof W?.exports.asyncify_start_unwind!="function")return Lr||t.onDiagnostic?.("[WALI] SYS_fork answers -ENOSYS: module lacks the Binaryen Asyncify build stage (--asyncify --pass-arg=asyncify-imports@wali.SYS_fork)."),Lr=!0,-38n;if(Ve)return Ge("asyncify_stop_rewind"),Ve=!1,BigInt(wt);if(!t.browserProcess?.fork||!ne||!Ee)return-38n;const g=Pr(0);return g!==void 0?BigInt(g):(rt=!0,me().setUint32(ee,ee+8,!0),Ge("asyncify_start_unwind",ee),0n)},fn=(g,N,P)=>{if(!t.forkState||!t.browserProcess||!ne)return-38n;const $=Pr(0);if($!==void 0)return BigInt($);const z=ir(g),te=z.startsWith("/")?z:`${Ht()}/${z}`;if(!ke?.existsSync(te))return-2n;if(!ke.statSync(te).isFile())return-13n;const ye=P===0?{...t.env}:{};for(const xt of or(P)){const _e=xt.indexOf("=");_e>0&&(ye[xt.slice(0,_e)]=xt.slice(_e+1))}ne.prepareSpawn();const ae=ne.copyForExecChannel([0,1,2]),xe=yt(0,"reader"),kt=yt(1,"writer"),Mt=yt(2,"writer");throw t.browserProcess.spawn({pid:b,parentPid:zt,childPidAllocator:De.buffer,executablePath:te,argv:or(N),env:ye,cwd:Ht(),descriptorTable:ae,control:t.forkState.control,response:t.forkState.response,...n?{filesystemPolicy:n}:{},...xe?{stdin:xe}:{},...kt?{stdout:kt}:{},...Mt?{stderr:Mt}:{}}),new Zo},Ae={...{__init:()=>0,__deinit:()=>0,__proc_exit:g=>Oe(Number(g)),__cl_get_argc:()=>p.length,__cl_get_argv_len:g=>p[Number(g)]?.byteLength??0,__cl_copy_argv:(g,N)=>{const P=p[Number(N)];return P?(pe(Number(g),P),0):-1},__get_init_envfile:(g,N)=>et?oe.copyCString(Number(g),et,Number(N)):0,SYS_write:(g,N,P)=>ve(Number(g),G(Number(N),Number(P))),SYS_writev:(g,N,P)=>{let $=0n;for(let z=0;z<Number(P);z+=1){const te=Number(N)+z*8;Er(V(),te,8);const ye=me().getUint32(te,!0),ae=me().getUint32(te+4,!0),xe=ve(Number(g),G(ye,ae));if(xe<0n)return xe;$+=xe}return $},SYS_exit:g=>Oe(Number(g),"SYS_exit"),SYS_exit_group:g=>Oe(Number(g),"SYS_exit_group"),SYS_getpid:()=>BigInt(b),SYS_getppid:()=>BigInt(zt),SYS_gettid:()=>BigInt(b),SYS_getuid:()=>1000n,SYS_geteuid:()=>1000n,SYS_getgid:()=>1000n,SYS_getegid:()=>1000n,SYS_set_tid_address:()=>BigInt(b),SYS_sched_yield:()=>0n,SYS_sched_setscheduler:()=>0n,SYS_tkill:(g,N)=>Ie(Number(N)),...gh(V,()=>t.codec?.version===1,()=>D),SYS_browser_spawn:(...g)=>ln(g),SYS_browser_spawn_confined_v1:Uc(V,()=>t.browserProcess?.filesystemPolicyVersion===1,ln),SYS_fork:ts,SYS_execve:(g,N,P)=>fn(Number(g),Number(N),Number(P)),SYS_wait4:(g,N,P)=>{for(;;){const $=es(Number(g),Number(N),Number(P));if($!==-4n||!tt.deliver(!0))return $}},SYS_pidfd_open:()=>-38n,SYS_kill:(g,N)=>{if(Number(g)===b||Number(g)===0)return Ie(Number(N));const P=Math.abs(Number(g));return Ee?.hasChild(P)?(t.browserProcess?.kill?.(P,Number(N)),0n):-3n},SYS_setpgid:()=>0n,SYS_getpgid:g=>BigInt(Number(g)===0?b:Math.abs(Number(g))),__wasm_thread_spawn:(g,N)=>{const P=de?.spawn(Number(g),Number(N),tt.mask)??-11;if(P===-11&&!on){on=!0;const $=`[WALI] pthread_create answered -EAGAIN: all ${be} worker slots are in use. The pool is the process's whole thread budget and does not grow, so this is a QUOTA, not a cpu count -- sysconf(_SC_NPROCESSORS_ONLN) answers ${sn.reportedCpuCount()} here and a library that opens more than one pool from that number wants a multiple of it. Raise the program's requirements.workers, or state the library's concurrency.`;console.error($),t.onDiagnostic?.($)}return P},SYS_clock_gettime:(g,N)=>{const P=Wh(Number(g));return P===void 0?-Fh:($h(me(),Number(N),P),0n)},SYS_gettimeofday:g=>{if(Number(g)!==0){const N=BigInt(Math.floor(ge()*1e3));Er(V(),Number(g),16),me().setBigInt64(Number(g),N/1000000n,!0),me().setBigInt64(Number(g)+8,N%1000000n,!0)}return 0n},SYS_getrandom:(g,N)=>{const P=T().subarray(Number(g),Number(g)+Number(N));return Er(V(),Number(g),Number(N)),zh(P),BigInt(P.byteLength)},...Me.imports(),...$t,...tt.imports(),...Wt,...Ee?Ee.imports({...Wt,...cn}):cn,SYS_ioctl:(g,N,P)=>nr.ioctl(Number(g),Number(N))??oe.ioctl(Number(g),Number(N))??$t.SYS_ioctl(g,N,P),SYS_prctl:(g,...N)=>Number(g)!==ua?0n:ne?ne.syscall("SYS_prctl",[g,...N]):He.SYS_prctl(g,...N)},...t.imports};let Rr=0;if(Ae.SYS_select??=Ah(V,(g,N,P)=>Ae.SYS_poll(g,N,P),()=>Rr||=Number(Me.imports().SYS_mmap(0,Eh,3,34,-1,0))),U&&Ye)for(const[g,N]of Object.entries(Ye.ownedFileImports(Ae)))t.imports?.[g]||(Ae[g]=N);const ar={};for(const g of a){const N=Ae[g.name]??Bh(g.name,t.onDiagnostic),P=(!ne||U)&&Ch.has(g.name),$={calls:0,ms:0,sampled:P};x.set(g.name,$),ar[g.name]=(...z)=>{t.onSyscall?.(g.name,z),U&&v.pump();const te=!P||($.calls&qo-1)===0,ye=te?performance.now():0;try{const ae=N(...z);return t.onSyscallResult?.(g.name,ae),tt.deliver(ae===-4n),ae}finally{$.calls+=1,te&&($.ms+=(performance.now()-ye)*(P?qo:1))}}}const nt={...X?{memory:X}:{},_Unwind_Backtrace:()=>5,_Unwind_FindEnclosingFunction:g=>g,_Unwind_GetCFA:()=>0};if(W=await WebAssembly.instantiate(i,{wali:ar,env:nt}),t.forkState){T().set(new Uint8Array(t.forkState.memory));for(const[g,N]of Object.entries(t.forkState.globals)){const P=W.exports[g];if(!(P instanceof WebAssembly.Global))throw new Error(`Fork snapshot global ${g} is not exported.`);P.value=N}Me.restoreFork(t.forkState.mappings),$t.SYS_umask(t.forkState.umask)}else if(typeof W.exports.asyncify_start_unwind=="function"){const g=W.exports.__stack_pointer;if(!(g instanceof WebAssembly.Global))throw new Error("Asyncify fork requires --export=__stack_pointer at link.");const N=Number(g.value);if(N<=0)throw new Error("Asyncify fork requires a nonempty module stack.");ee=V().buffer.byteLength,V().grow(Math.ceil((N+8)/65536)),me().setUint32(ee+4,ee+8+N,!0)}if(t.codec?.version===1)try{ie=await ci.create(V()),D=new ph(ie.createChannel())}catch(g){console.warn("[WALI] the codec bridge is unavailable:",g),ie=void 0,D=void 0}if(Te){if(!X)throw new Error("A threaded WALI module must be linked with --import-memory so browser workers can share its process memory.");const g=t.memoryLayout??(e instanceof WebAssembly.Module?void 0:Xn(e instanceof Uint8Array?e:new Uint8Array(e)));de=new gf({module:i,memory:X,onDemand:g?.passiveData===!0,mmapCursor:Me.allocatorControl(),sharedMmapRegistry:mt,fatalState:O.buffer,imports:o,size:be,pid:b,executablePath:dt,argv:y,cwd:oe.currentWorkingDirectory(),stdioAliasRegistry:Se.buffer,sharedPipes:ue,signals:L,childPidAllocator:De.buffer,...r?{inheritedFilesystemPolicy:r}:{},...t.browserProcessPorts?{browserProcessPorts:t.browserProcessPorts}:{},...t.browserProcess?.filesystemPolicyVersion===1?{childFilesystemPolicyVersion:1}:{},...t.threadOutputPorts?{outputPorts:t.threadOutputPorts}:{},...d instanceof Xs?{stdin:d.buffer}:{},terminal:t.terminal===!0,onStdout:N=>{ve(1,N)},onStderr:N=>{ve(2,N)},...se?{network:se}:{},...ne?{filesystem:ne}:{},...ie?{codec:ie}:{}}),await de.initialize()}const hn=W.exports._start;if(typeof hn!="function")throw new Error("WALI module does not export _start.");U&&v?.closePort(),k=performance.now();let cr=0,It=!1;try{try{for(Ve&&Ge("asyncify_start_rewind",ee);hn(),!!rt;){Ge("asyncify_stop_unwind"),rt=!1;const g=t.memoryLayout??(e instanceof WebAssembly.Module?void 0:Xn(e instanceof Uint8Array?e:new Uint8Array(e)));if(!g)throw new Error("Fork requires the module's imported memory layout.");const N={};for(const[ye,ae]of Object.entries(W.exports))if(ae instanceof WebAssembly.Global)try{ae.value=ae.value,N[ye]=ae.value}catch{}const P=new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),$=new SharedArrayBuffer(Zs);wt=Atomics.add(De,0,1);const z=Ee.registerChild(wt,{control:P,response:$});if(z<0)throw new Error(`Fork child registration failed: ${z}`);const te=Number($t.SYS_umask(0));$t.SYS_umask(te),t.onDiagnostic?.(`[WALI] fork snapshot: ${V().buffer.byteLength} bytes, Asyncify stack ${me().getUint32(ee,!0)-ee-8} bytes.`),t.browserProcess.fork({module:i,memoryLayout:g,pid:wt,control:P,response:$,descriptorTable:ne.copyForForkChannel(),childPidAllocator:De.buffer,argv:y,env:{...t.env},cwd:Ht(),executablePath:dt,...n?{filesystemPolicy:n}:{},forkState:{control:P,response:$,memory:T().slice().buffer,globals:N,allocator:Me.allocatorControl().slice(0),mappings:Me.forkSnapshot(),asyncifyData:ee,umask:te,parentPid:b}}),Ve=!0,Ge("asyncify_start_rewind",ee)}}catch(g){if(g instanceof Zo)It=!0;else if(g instanceof Qo||g instanceof ba)cr=g.code;else{if(g instanceof Ua)throw g;{const N=g instanceof Error?g.stack??g.message:String(g),P=Atomics.load(O,1),$=de?.diagnostics(P>=0?P:void 0)??[];throw new Error(`${N}
11
+ `)}`]})}terminate(){this.coordinator?.terminate(),this.coordinator=void 0;for(const e of this.slots)e.worker?.terminate();this.slots.length=0}}function Sf(s){if(!Number.isSafeInteger(s)||s<1||s>64)throw new Error("WALI threadPoolSize must be an integer between 1 and 64.");return s}function ft(s){const e=s.toBase64;if(typeof e=="function")return e.call(s);let t="";for(let r=0;r<s.byteLength;r+=32768)t+=String.fromCharCode(...s.subarray(r,r+32768));return btoa(t)}function tr(s){const e=Uint8Array.fromBase64;if(typeof e=="function")return e(s);const t=atob(s),r=new Uint8Array(t.length);for(let n=0;n<t.length;n+=1)r[n]=t.charCodeAt(n);return r}function bf(s,e,t){const{appended:r,superseded:n}=t?Ef(s,e,t):{appended:new Map,superseded:new Set},i=[...e.removed].sort((a,c)=>Pn(c)-Pn(a));for(const a of i)s.existsSync(a)&&(s.statSync(a).isDirectory()?s.rmdirSync(a):s.unlinkSync(a));const o=[...e.files].filter(a=>!n.has(a.path)).sort((a,c)=>Pn(a.path)-Pn(c.path));for(const a of o){if(a.type==="directory")s.existsSync(a.path)&&!s.statSync(a.path).isDirectory()&&s.unlinkSync(a.path),s.mkdirSync(a.path,{recursive:!0});else if(rr(a)){s.existsSync(a.path)&&s.statSync(a.path).isDirectory()&&s.rmdirSync(a.path);const c=a.path.slice(0,a.path.lastIndexOf("/"))||"/";c!=="/"&&!s.existsSync(c)&&s.mkdirSync(c,{recursive:!0});const f=s.existsSync(a.path)?s.statSync(a.path).mode:void 0,d=f!==void 0&&(f&128)===0;d&&s.chmodSync?.(a.path,f&4095|128),s.writeFileSync(a.path,r.get(a.path)??en(a)),d&&a.mode===void 0&&s.chmodSync?.(a.path,f&4095)}else if(!s.existsSync(a.path)||s.statSync(a.path).isDirectory())continue;a.mode!==void 0&&s.chmodSync?.(a.path,a.mode),a.mtimeMs!==void 0&&s.utimesSync?.(a.path,new Date(a.mtimeMs),new Date(a.mtimeMs))}}function Ef(s,e,t){const r=new Map,n=new Set,i=t.byPath,o=i instanceof Map?i:new Map(t.files.map(f=>[f.path,f])),a=new Map(e.files.map(f=>[f.path,f])),c=new Set([...e.files.map(f=>f.path),...e.removed]);for(const f of c){const d=o.get(f),y=Nf(s,f);if(d!==void 0&&Fs(d,a.get(f))||y===void 0&&a.get(f)!==void 0)continue;const p=a.get(f);if(!(y!==void 0&&p!==void 0&&p.type===y.type&&(J(p).mtimeMs??0)>(J(y).mtimeMs??0))&&!(d!==void 0&&y!==void 0&&d.type===y.type&&(J(y).mtimeMs??0)<(J(d).mtimeMs??0))&&!Fs(d,y)&&!Fs(a.get(f),y)){if(_f(d,y,a.get(f)))continue;const b=Af(s,f,d,y,a.get(f),t.bytesOf?.bind(t));if(b){r.set(f,b);continue}const S=a.get(f);if(d!==void 0&&y!==void 0&&S!==void 0&&S.type===y.type&&(J(S).mtimeMs??0)>=(J(d).mtimeMs??0)&&(J(y).mtimeMs??0)>(J(S).mtimeMs??0)&&(J(y).mtimeMs??0)>(J(d).mtimeMs??0)){n.add(f);continue}throw new Error(`Browser filesystem write conflict at ${f}. ${JSON.stringify({base:Ts(d),current:Ts(y),proposed:Ts(a.get(f))})}`)}}return{appended:r,superseded:n}}function Af(s,e,t,r,n,i){if(t?.type!=="file"||r?.type!=="file"||n?.type!=="file"||!rr(n)||!s.readFileSync||J(r).mode!==J(n).mode)return;const o=rr(t)?en(t):i?.(e);if(!o||o.length===0)return;const a=en(n),c=s.readFileSync(e),f=typeof c=="string"?new TextEncoder().encode(c):c,d=p=>p.length>=o.length&&ka(p.subarray(0,o.length),o);if(a.length<=o.length||!d(a)||!d(f))return;const y=new Uint8Array(f.length+a.length-o.length);return y.set(f,0),y.set(a.subarray(o.length),f.length),y}function Ts(s){return s?{type:s.type,...J(s)}:null}function _f(s,e,t){return e?.type!=="directory"||t?.type!=="directory"?!1:s===void 0?J(e).mode===J(t).mode:J(e).mode===J(t).mode&&s.type==="directory"&&J(s).mode===J(e).mode}function Mo(s,e,t={}){const r=new Map(s.files.map(i=>[i.path,i])),n=new Map(e.files.map(i=>[i.path,i]));return{files:e.files.filter(i=>{const o=r.get(i.path);return i.path==="/"&&!o?!1:!o||o.type!==i.type||!Ia(o,i)||t.written===!0&&i.type==="file"&&!rr(o)&&rr(i)||J(o).mode!==J(i).mode||J(o).mtimeMs!==J(i).mtimeMs}),removed:s.files.flatMap(i=>n.has(i.path)?[]:[i.path])}}function Pn(s){let e=1;for(let t=0;t<s.length;t+=1)s.charCodeAt(t)===47&&(e+=1);return e}function Nf(s,e){if(!s.existsSync(e))return;const t=s.statSync(e),r={...t.mode!==void 0?{mode:t.mode}:{},...t.mtimeMs!==void 0?{mtimeMs:t.mtimeMs}:{}};return t.isDirectory()?{path:e,type:"directory",...r}:{path:e,type:"file",...t.size!==void 0?{size:t.size}:{},...r}}function Fs(s,e){return s===void 0?e===void 0:e!==void 0&&s.type===e.type&&Ia(s,e)&&J(s).mode===J(e).mode&&J(s).mtimeMs===J(e).mtimeMs}function J(s){const e=s;return{...e.mode===void 0?{}:{mode:e.mode&4095},...e.mtimeMs===void 0?{}:{mtimeMs:e.mtimeMs}}}function Ia(s,e){return s.type!=="file"||e.type!=="file"?!0:s.content!==void 0&&e.content!==void 0?s.content===e.content:rr(s)&&rr(e)?ka(en(s),en(e)):xo(s)===xo(e)}function xo(s){if(s.size!==void 0)return s.size;if(s.bytes!==void 0)return s.bytes.byteLength;if(s.content===void 0)return;const e=s.content.endsWith("==")?2:s.content.endsWith("=")?1:0;return Math.floor(s.content.length*3/4)-e}function rr(s){return s!==void 0&&(s.bytes!==void 0||s.content!==void 0)}function en(s){return s.bytes??(s.content===void 0?void 0:tr(s.content))}function ka(s,e){if(s===e)return!0;if(s.byteLength!==e.byteLength)return!1;let t=0;if(s.byteOffset%4===0&&e.byteOffset%4===0){const r=s.byteLength>>>2,n=new Uint32Array(s.buffer,s.byteOffset,r),i=new Uint32Array(e.buffer,e.byteOffset,r);for(let o=0;o<r;o+=1)if(n[o]!==i[o])return!1;t=r<<2}for(;t<s.byteLength;t+=1)if(s[t]!==e[t])return!1;return!0}const Lo=0,Po=1,ht=2,Ir=3,kr=4,Ma=5,xa=6,Zs=16*1024*1024,If=1024*1024;function kf(){const s=new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),e=new SharedArrayBuffer(If),t=new Int32Array(s);return Atomics.store(t,Ir,1),Atomics.store(t,kr,1),{reader:{control:s,payload:e,role:"reader"},writer:{control:s,payload:e,role:"writer"}}}function La(s){const e=Mr(s);return Atomics.add(e,s.role==="reader"?Ir:kr,1),s}function Zr(s){const e=Mr(s),t=s.role==="reader"?Ir:kr;Atomics.sub(e,t,1)<=1&&Atomics.store(e,t,0),Atomics.add(e,s.role==="reader"?xa:Ma,1),Atomics.notify(e,ht)}function Pa(s,e){const t=Mr(s),r=Atomics.load(t,ht);let n=0;return s.role==="reader"?(e&1&&(r>0||Atomics.load(t,kr)===0)&&(n|=1),Atomics.load(t,kr)===0&&(n|=16)):(e&4&&Atomics.load(t,Ir)>0&&r<xf(s)&&(n|=4),Atomics.load(t,Ir)===0&&(n|=16)),n}function oi(s,e){if(s.role!=="reader")return-9n;if(e===0)return new Uint8Array;const t=Mr(s),r=va(s),n=Atomics.load(t,ht);if(n===0)return Atomics.load(t,kr)===0?new Uint8Array:-11n;const i=Math.min(Math.max(0,e),n),o=Atomics.load(t,Lo),a=Math.min(i,r.byteLength-o),c=new Uint8Array(i);return c.set(r.subarray(o,o+a)),a<i&&c.set(r.subarray(0,i-a),a),Atomics.store(t,Lo,(o+i)%r.byteLength),Atomics.sub(t,ht,i),i>0&&Atomics.add(t,xa,1),Atomics.notify(t,ht),c}function Mf(s,e){const t=Mr(s);for(;;){const r=oi(s,e);if(r!==-11n)return r;Nr(t,ht,0,50)}}function Ra(s,e){if(s.role!=="writer")return-9n;const t=Mr(s),r=va(s);let n=0;for(;n<e.byteLength;){if(Atomics.load(t,Ir)===0)return n>0?BigInt(n):-32n;const i=Atomics.load(t,ht),o=r.byteLength-i;if(o===0){Nr(t,ht,i,50);continue}const a=Atomics.load(t,Po),c=Math.min(e.byteLength-n,o,r.byteLength-a);r.set(e.subarray(n,n+c),a),Atomics.store(t,Po,(a+c)%r.byteLength),Atomics.add(t,ht,c),Atomics.add(t,Ma,1),Atomics.notify(t,ht),n+=c}return BigInt(n)}const Ro=new WeakMap;function Mr(s){const e=s.controlOffset??0;let t=Ro.get(s.control);t||(t=new Map,Ro.set(s.control,t));let r=t.get(e);return r||(r=new Int32Array(s.control,e,8),t.set(e,r)),r}function xf(s){return s.payloadLength??s.payload.byteLength-(s.payloadOffset??0)}function va(s){const e=s.payloadOffset??0,t=s.payloadLength??s.payload.byteLength-e;return new Uint8Array(s.payload,e,t)}function Lf(s){const e=Atomics.load(new Int32Array(s.control),2);if(e<=0||e>s.response.byteLength)return;const t=Uint8Array.from(new Uint8Array(s.response,0,e));return JSON.parse(new TextDecoder().decode(t))}const Pf=1,Rf=15,vf=1,Tf=97n,Ff=93n,Bf=11n,Of=32n,vo=1,To=4,Yf=16;class Df{memory;descriptors;constructor(e,t){this.memory=e,this.descriptors=t}imports(){return{SYS_socketpair:(e,t,r,n)=>this.socketpair(Number(e),Number(t),Number(r),Number(n)),SYS_pipe:e=>this.pipe(Number(e),0),SYS_pipe2:(e,t)=>this.pipe(Number(e),Number(t))}}pipe(e,t){if((t&-526337)!==0)return-22n;if(!Number.isSafeInteger(e)||e<0||e+8>this.memory().buffer.byteLength)return-14n;const r=kf(),n=this.descriptors.allocateSpecial(this.pipeEndpoint(r.reader)),i=this.descriptors.allocateSpecial(this.pipeEndpoint(r.writer)),o=new DataView(this.memory().buffer);return o.setInt32(e,n,!0),o.setInt32(e+4,i,!0),0n}pipeEndpoint(e){return{browserProcessPipe:e,read:t=>oi(e,t),write:t=>Ra(e,t),poll:t=>Pa(e,t),fcntl:t=>t===3?0x800n:[1,2,4].includes(t)?0n:-22n,duplicate:t=>(La(e),BigInt(this.descriptors.allocateSpecial(this.pipeEndpoint(e),t))),close:()=>Zr(e)}}socketpair(e,t,r,n){if(e!==Pf)return-Tf;if((t&Rf)!==vf||r!==0)return-Ff;if(!Number.isSafeInteger(n)||n<0||n+8>this.memory().buffer.byteLength)return-14n;const i={chunks:[],byteLength:0,closed:!1,peerClosed:!1,references:1},o={chunks:[],byteLength:0,closed:!1,peerClosed:!1,references:1};i.peer=o,o.peer=i;const a=this.descriptors.allocateSpecial(this.endpoint(i)),c=this.descriptors.allocateSpecial(this.endpoint(o)),f=new DataView(this.memory().buffer);return f.setInt32(n,a,!0),f.setInt32(n+4,c,!0),0n}endpoint(e){return{read:t=>Cf(e,t),write:t=>Uf(e,t),poll:t=>Wf(e,t),fcntl:t=>t===3?0x802n:[1,2,4].includes(t)?0n:-22n,duplicate:t=>{const r=this.descriptors.allocateSpecial(this.endpoint(e),t);return e.references+=1,BigInt(r)},close:()=>{e.references-=1,!(e.references>0||e.closed)&&(e.closed=!0,e.peer&&(e.peer.peerClosed=!0))}}}}function Cf(s,e){if(s.closed)return-9n;if(e<0)return-22n;if(s.byteLength===0)return s.peerClosed?new Uint8Array:-Bf;const t=new Uint8Array(Math.min(e,s.byteLength));let r=0;for(;r<t.byteLength;){const n=s.chunks[0],i=Math.min(n.byteLength,t.byteLength-r);t.set(n.subarray(0,i),r),r+=i,s.byteLength-=i,i===n.byteLength?s.chunks.shift():s.chunks[0]=n.subarray(i)}return t}function Uf(s,e){if(s.closed)return-9n;const t=s.peer;if(!t||t.closed)return-Of;const r=e.slice();return t.chunks.push(r),t.byteLength+=r.byteLength,BigInt(r.byteLength)}function Wf(s,e){let t=s.peerClosed?Yf:0;return e&vo&&(s.byteLength>0||s.peerClosed)&&(t|=vo),e&To&&!s.peerClosed&&(t|=To),t}const $f=2e4,Ta=256*1024;var H;(function(s){s[s.Socket=1]="Socket",s[s.Connect=2]="Connect",s[s.Send=3]="Send",s[s.Receive=4]="Receive",s[s.Close=5]="Close",s[s.Fcntl=6]="Fcntl",s[s.Poll=7]="Poll",s[s.Shutdown=8]="Shutdown",s[s.Duplicate=9]="Duplicate",s[s.SocketName=10]="SocketName",s[s.EpollControl=11]="EpollControl",s[s.EpollWait=12]="EpollWait",s[s.EpollCreate=13]="EpollCreate",s[s.EventFd=14]="EventFd",s[s.SocketPair=15]="SocketPair",s[s.TimerFdCreate=16]="TimerFdCreate",s[s.TimerFdSetTime=17]="TimerFdSetTime",s[s.Bind=18]="Bind",s[s.Listen=19]="Listen",s[s.Accept=20]="Accept",s[s.ChildRegister=21]="ChildRegister",s[s.ChildForget=22]="ChildForget",s[s.ChildWait=23]="ChildWait",s[s.ChildExists=24]="ChildExists",s[s.PidFdOpen=25]="PidFdOpen",s[s.PollMany=26]="PollMany"})(H||(H={}));const Bs=new Map;function Fa(s,e){const t=Bs.get(s);Bs.delete(s);const r=t??e();return Bs.set(s,e()),r}const Tt=9n,we=22n,Fo=16,Et=38n;class ai{worker;constructor(e){this.worker=e}static async create(e,t,r,n,i){if(typeof Worker>"u"||typeof SharedArrayBuffer>"u")throw new Error("WALI networking requires Web Workers and SharedArrayBuffer.");const o=[...new Set(e?.allowedHosts.map(f=>f.toLowerCase())??[])];if(e&&(!e.loopbackPort&&o.length===0||o.some(f=>!/^[a-z0-9.-]+$/u.test(f))))throw new Error("WALI networking requires a loopback attachment or at least one valid hostname.");if(e&&(!Number.isSafeInteger(e.maxConnections)||e.maxConnections<1||e.maxConnections>1024||!Number.isSafeInteger(e.maxBytes)||e.maxBytes<1024||e.maxBytes>1024*1024*1024))throw new Error("WALI networking requires bounded connection and byte quotas.");const a=Fa("network",()=>qr(new Worker(new URL("/assets/network-worker-DuuxEt8T.js",import.meta.url),{type:"module",name:"wali-network"}))),c=new ai(a);return await new Promise((f,d)=>{const y=p=>{p.data.kind==="ready"&&(a.removeEventListener("message",y),f()),p.data.kind==="error"&&(a.removeEventListener("message",y),d(new Error(p.data.message)))};a.addEventListener("message",y),a.addEventListener("error",p=>d(p.error??new Error(p.message)),{once:!0}),a.postMessage({kind:"initialize",allowedHosts:o,relayUrl:e?.relayUrl??"/api/wali/tcp",maxConnections:e?.maxConnections??0,maxBytes:e?.maxBytes??0,...t?{sharedPipes:t}:{},...r?{stdin:r}:{},...n?{stdioAliasRegistry:n}:{},...i?{signals:i}:{},...e?.loopbackPort?{loopbackPort:e.loopbackPort}:{}},e?.loopbackPort?[e.loopbackPort]:[])}).catch(f=>{throw a.terminate(),f}),c}createChannel(){const e=new MessageChannel,t={port:e.port1,control:new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT*16),payload:new SharedArrayBuffer(Ta)};return this.worker.postMessage({kind:"attach",port:e.port2,control:t.control,payload:t.payload},[e.port2]),t.port.start(),t}terminate(){this.worker.terminate()}}class zf{channel;control;payload;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}call(e,t=[],r,n){if((r?.byteLength??0)>this.payload.byteLength)return{result:-Number(we),output:new Uint8Array};if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI network RPC on one pthread channel.");const i=this.nextRequestId;this.nextRequestId=i>=2147483645?1:i+2,this.control.fill(0),Atomics.store(this.control,1,e),Atomics.store(this.control,3,r?.byteLength??0),t.slice(0,10).forEach((d,y)=>Atomics.store(this.control,5+y,d|0)),r&&this.payload.set(r),Atomics.store(this.control,0,i),this.channel.port.postMessage(n?{requestId:i,process:n}:i);const o=Date.now()+3e4;for(;;){const d=Atomics.load(this.control,0);if(d===i+1)break;if(d!==i&&d!==-i)throw new Error(`Invalid WALI network RPC state ${d} for request ${i}.`);const y=Math.max(0,o-Date.now());if(y===0&&d===i&&Atomics.compareExchange(this.control,0,i,0)===i)return{result:-110,output:new Uint8Array};try{Nr(this.control,0,d,d===-i?void 0:y)}catch{if(Atomics.compareExchange(this.control,0,i,0)===i)return{result:-Number(Et),output:new Uint8Array}}}const a=Atomics.load(this.control,2),c=Atomics.load(this.control,4),f=this.payload.slice(0,Math.max(0,c));return Atomics.store(this.control,0,0),{result:a,output:f}}}class Hf{memory;signals;client;waitBuffer;constructor(e,t,r){this.memory=e,this.signals=r,this.client=new zf(t)}isNetworkFd(e){return e>=$f&&!ze(e)}registerChild(e,t){return this.client.call(H.ChildRegister,[e],void 0,t).result}forgetChild(e){this.client.call(H.ChildForget,[e])}hasChild(e){return this.client.call(H.ChildExists,[e]).result===1}waitChild(e,t,r=0n){const n=this.waitBuffer??={control:new SharedArrayBuffer(32),response:new SharedArrayBuffer(Zs)};return{result:this.client.call(H.ChildWait,[e,t,Number(r&0xffffffffn),Number(r>>32n)],void 0,n).result,process:n}}imports(e={}){const t=(r,n)=>e[r]?.(...n)??-Et;return{SYS_pidfd_open:(r,n)=>BigInt(this.client.call(H.PidFdOpen,[Number(r),Number(n)]).result),SYS_dup:r=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Duplicate,[Number(r)]).result):e.SYS_dup?.(r)??-Et,SYS_socket:(r,n,i)=>BigInt(this.client.call(H.Socket,[Number(r),Number(n),Number(i)]).result),SYS_socketpair:(r,n,i,o)=>this.socketPair(Number(r),Number(n),Number(i),Number(o)),SYS_connect:(r,n,i)=>this.withAddress(Number(r),Number(n),Number(i)),SYS_bind:(r,n,i)=>this.bind(Number(r),Number(n),Number(i),()=>t("SYS_bind",[r,n,i])),SYS_listen:(r,n)=>this.networkOr(Number(r),()=>this.client.call(H.Listen,[Number(r),Number(n)]).result,()=>t("SYS_listen",[r,n])),SYS_accept:(r,n,i)=>this.accept(Number(r),Number(n),Number(i),0,()=>t("SYS_accept",[r,n,i])),SYS_accept4:(r,n,i,o)=>this.accept(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_accept4",[r,n,i,o])),SYS_send:(r,n,i,o)=>this.send(Number(r),Number(n),Number(i),Number(o)),SYS_sendto:(r,n,i,o)=>this.send(Number(r),Number(n),Number(i),Number(o)),SYS_recv:(r,n,i,o)=>this.receive(Number(r),Number(n),Number(i),Number(o)),SYS_recvfrom:(r,n,i,o,a,c)=>this.receiveFrom(Number(r),Number(n),Number(i),Number(o),Number(a),Number(c)),SYS_sendmsg:(r,n,i)=>this.sendMessage(Number(r),Number(n),Number(i)),SYS_recvmsg:(r,n,i)=>this.receiveMessage(Number(r),Number(n),Number(i)),SYS_shutdown:(r,n)=>this.networkOr(Number(r),()=>this.client.call(H.Shutdown,[Number(r),Number(n)]).result,()=>t("SYS_shutdown",[r,n])),SYS_setsockopt:(r,n,i,o,a)=>this.isNetworkFd(Number(r))?0n:t("SYS_setsockopt",[r,n,i,o,a]),SYS_getsockopt:(r,n,i,o,a)=>this.getSocketOption(Number(r),Number(o),Number(a)),SYS_getsockname:(r,n,i)=>this.getSocketName(Number(r),Number(n),Number(i)),SYS_getpeername:(r,n,i)=>this.getSocketName(Number(r),Number(n),Number(i)),SYS_close:r=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Close,[Number(r)]).result):e.SYS_close?.(r)??-Et,SYS_read:(r,n,i)=>this.isNetworkFd(Number(r))?this.receive(Number(r),Number(n),Number(i),0):e.SYS_read?.(r,n,i)??-Et,SYS_write:(r,n,i)=>this.isNetworkFd(Number(r))?this.send(Number(r),Number(n),Number(i),0):e.SYS_write?.(r,n,i)??-Et,SYS_readv:(r,n,i)=>this.isNetworkFd(Number(r))?this.readv(Number(r),Number(n),Number(i)):e.SYS_readv?.(r,n,i)??-Et,SYS_writev:(r,n,i)=>this.isNetworkFd(Number(r))?this.writev(Number(r),Number(n),Number(i)):e.SYS_writev?.(r,n,i)??-Et,SYS_fcntl:(r,n,i)=>this.isNetworkFd(Number(r))?BigInt(this.client.call(H.Fcntl,[Number(r),Number(n),Vf(i)]).result):e.SYS_fcntl?.(r,n,i)??-Et,SYS_poll:(r,n,i)=>this.poll(Number(r),Number(n),Number(i),()=>t("SYS_poll",[r,n,0])),SYS_epoll_create:r=>Number(r)>0?BigInt(this.client.call(H.EpollCreate).result):-we,SYS_epoll_create1:()=>BigInt(this.client.call(H.EpollCreate).result),SYS_eventfd:r=>BigInt(this.client.call(H.EventFd,[Number(r),0]).result),SYS_eventfd2:(r,n)=>BigInt(this.client.call(H.EventFd,[Number(r),Number(n)]).result),SYS_timerfd_create:(r,n)=>BigInt(this.client.call(H.TimerFdCreate,[Number(r),Number(n)]).result),SYS_timerfd_settime:(r,n,i,o)=>this.setTimerFd(Number(r),Number(n),Number(i),Number(o)),SYS_epoll_ctl:(r,n,i,o)=>this.epollControl(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_ctl",[r,n,i,o])),SYS_epoll_wait:(r,n,i,o)=>this.epollWait(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_wait",[r,n,i,o])),SYS_epoll_pwait:(r,n,i,o,a,c)=>{const f=()=>this.epollWait(Number(r),Number(n),Number(i),Number(o),()=>t("SYS_epoll_pwait",[r,n,i,o,a,c]));if(!a)return f();if(!this.signals)return-38n;const d=this.signals.mask,y=this.signals.imports().SYS_rt_sigprocmask(2,a,0,c);if(y!==0n)return y;try{const p=f();return this.signals.deliver(p===-4n),p}finally{this.signals.mask=d}}}}pollFd(e,t){return this.isNetworkFd(e)?this.client.call(H.Poll,[e,t]).result:32}bytes(){return new Uint8Array(this.memory().buffer)}view(){return new DataView(this.memory().buffer)}copy(e,t){if(e<0||t<0||e+t>this.bytes().byteLength)throw new WebAssembly.RuntimeError("WALI network memory access is out of bounds.");return this.bytes().slice(e,e+t)}networkOr(e,t,r){return this.isNetworkFd(e)?BigInt(t()):r()}withAddress(e,t,r){return this.isNetworkFd(e)?BigInt(this.client.call(H.Connect,[e],this.copy(t,r)).result):-Tt}bind(e,t,r,n){return this.isNetworkFd(e)?BigInt(this.client.call(H.Bind,[e],this.copy(t,r)).result):n()}accept(e,t,r,n,i){if(!this.isNetworkFd(e))return i();if(t!==0&&(r<=0||r+4>this.bytes().byteLength))return-we;const o=t===0?0:this.view().getUint32(r,!0);if(t!==0&&(t<0||t+o>this.bytes().byteLength))return-we;const{result:a,output:c}=this.client.call(H.Accept,[e,n]);return a<0||t===0||(this.bytes().set(c.subarray(0,o),t),this.view().setUint32(r,c.byteLength,!0)),BigInt(a)}socketPair(e,t,r,n){const{result:i,output:o}=this.client.call(H.SocketPair,[e,t,r]);if(i===0){if(n<0||n+8>this.bytes().byteLength)return-we;this.bytes().set(o,n)}return BigInt(i)}setTimerFd(e,t,r,n){if(!this.isNetworkFd(e)||r<0||r+32>this.bytes().byteLength)return-Tt;const{result:i,output:o}=this.client.call(H.TimerFdSetTime,[e,t],this.copy(r,32));if(i===0&&n!==0){if(n<0||n+32>this.bytes().byteLength||o.byteLength!==32)return-we;this.bytes().set(o,n)}return BigInt(i)}send(e,t,r,n){return this.isNetworkFd(e)?BigInt(this.client.call(H.Send,[e,n],this.copy(t,r)).result):-Tt}receive(e,t,r,n){if(!this.isNetworkFd(e))return-Tt;const{result:i,output:o}=this.client.call(H.Receive,[e,r,n]);return i>0&&this.bytes().set(o.subarray(0,i),t),BigInt(i)}receiveFrom(e,t,r,n,i,o){const a=this.receive(e,t,r,n);if(a<0n||i===0||o===0)return a;if(o<0||o+4>this.bytes().byteLength)return-we;const c=this.view().getUint32(o,!0);return this.writeDnsPeer(i,c)?(this.view().setUint32(o,16,!0),a):-we}sendMessage(e,t,r){if(!this.isNetworkFd(e)||t<0||t+28>this.bytes().byteLength)return-Tt;const n=this.view().getUint32(t+8,!0),i=this.view().getUint32(t+12,!0);if(i>1024)return-we;const o=[];let a=0;for(let d=0;d<i;d+=1){const y=n+d*8,p=this.copy(this.view().getUint32(y,!0),this.view().getUint32(y+4,!0));o.push(p),a+=p.byteLength}const c=new Uint8Array(a);let f=0;for(const d of o)c.set(d,f),f+=d.byteLength;return BigInt(this.client.call(H.Send,[e,r],c).result)}receiveMessage(e,t,r){if(!this.isNetworkFd(e)||t<0||t+28>this.bytes().byteLength)return-Tt;const n=this.view().getUint32(t+8,!0),i=this.view().getUint32(t+12,!0);if(i>1024)return-we;let o=0;for(let p=0;p<i;p+=1)o+=this.view().getUint32(n+p*8+4,!0);const{result:a,output:c}=this.client.call(H.Receive,[e,o,r]);if(a<=0)return BigInt(a);let f=0;for(let p=0;p<i&&f<a;p+=1){const b=n+p*8,S=this.view().getUint32(b,!0),I=Math.min(this.view().getUint32(b+4,!0),a-f);this.bytes().set(c.subarray(f,f+I),S),f+=I}const d=this.view().getUint32(t,!0),y=this.view().getUint32(t+4,!0);return d!==0&&this.writeDnsPeer(d,y)&&this.view().setUint32(t+4,16,!0),this.view().setUint32(t+20,0,!0),this.view().setInt32(t+24,0,!0),BigInt(a)}writeDnsPeer(e,t){return t<16||e<0||e+16>this.bytes().byteLength?!1:(this.bytes().fill(0,e,e+16),this.view().setUint16(e,2,!0),this.view().setUint16(e+2,53,!1),this.bytes().set([127,0,0,1],e+4),!0)}getSocketOption(e,t,r){return this.isNetworkFd(e)?r<=0||r+4>this.bytes().byteLength||this.view().getUint32(r,!0)<4||t<0||t+4>this.bytes().byteLength?-we:(this.view().setInt32(t,0,!0),this.view().setUint32(r,4,!0),0n):-Tt}getSocketName(e,t,r){if(!this.isNetworkFd(e))return-Tt;if(r<0||r+4>this.bytes().byteLength)return-we;const n=this.view().getUint32(r,!0),{result:i,output:o}=this.client.call(H.SocketName,[e]);return i<0?BigInt(i):n<o.byteLength||t<0||t+o.byteLength>this.bytes().byteLength?-we:(this.bytes().set(o,t),this.view().setUint32(r,o.byteLength,!0),0n)}writev(e,t,r){if(r<0||r>1024)return-we;const n=[];let i=0;for(let c=0;c<r;c+=1){const f=t+c*8,d=this.copy(this.view().getUint32(f,!0),this.view().getUint32(f+4,!0));n.push(d),i+=d.byteLength}const o=new Uint8Array(i);let a=0;for(const c of n)o.set(c,a),a+=c.byteLength;return BigInt(this.client.call(H.Send,[e,0],o).result)}readv(e,t,r){if(r<0||r>1024)return-we;let n=0;for(let c=0;c<r;c+=1)n+=this.view().getUint32(t+c*8+4,!0);const{result:i,output:o}=this.client.call(H.Receive,[e,n,0]);if(i<=0)return BigInt(i);let a=0;for(let c=0;c<r&&a<i;c+=1){const f=t+c*8,d=this.view().getUint32(f,!0),y=Math.min(this.view().getUint32(f+4,!0),i-a);this.bytes().set(o.subarray(a,a+y),d),a+=y}return BigInt(i)}poll(e,t,r,n){if(t<0||t>Ta/8)return-we;this.copy(e,t*8),n();const i=this.signals?.mask??0n,{result:o,output:a}=this.client.call(H.PollMany,[r,Number(i&0xffffffffn),Number(i>>32n)],this.copy(e,t*8));return o>=0&&this.bytes().set(a,e),BigInt(o)}epollControl(e,t,r,n,i){if(!this.isNetworkFd(e)&&!this.isNetworkFd(r))return i();const o=t===2?void 0:this.copy(n,Fo);return BigInt(this.client.call(H.EpollControl,[e,t,r],o).result)}epollWait(e,t,r,n,i){if(r<=0)return-we;const o=this.signals?.mask??0n,{result:a,output:c}=this.client.call(H.EpollWait,[e,r,n,Number(o&0xffffffffn),Number(o>>32n)]);return a===-9?i():(a>0&&this.bytes().set(c.subarray(0,a*Fo),t),BigInt(a))}}function Vf(s){return typeof s=="bigint"?Number(BigInt.asIntN(32,s)):s|0}const Bo=-4,Os=3;class Qe{channel;control;payload;encoder=new TextEncoder;decoder=new TextDecoder("utf-8",{fatal:!0});nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}static waited={calls:0,ms:0};request(e){const t=performance.now();try{return this.requestNow(e)}finally{Qe.waited.calls+=1,Qe.waited.ms+=performance.now()-t}}requestNow(e){if(Atomics.load(this.control,Os))return{result:Bo};const t=this.encoder.encode(JSON.stringify(e));if(t.byteLength>this.payload.byteLength)return{result:-90};if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent file-lock RPC on one channel.");const r=this.nextRequestId;this.nextRequestId=r>=1073741821?1:r+2,this.control.fill(0,0,Os),this.payload.set(t),Atomics.store(this.control,1,t.byteLength),Atomics.store(this.control,0,r);try{for(this.channel.port.postMessage(r);Atomics.load(this.control,0)!==r+1;){if(Atomics.load(this.control,Os))return{result:Bo};const o=Atomics.load(this.control,0);o!==r+1&&Atomics.wait(this.control,0,o)}const n=Atomics.load(this.control,2);if(n<1||n>this.payload.byteLength)return{result:-5};const i=JSON.parse(this.decoder.decode(this.payload.slice(0,n)));return!i||!Number.isSafeInteger(i.result)?{result:-5}:i}finally{Atomics.store(this.control,0,0)}}}class Qs{channel;control;payload;encoder=new TextEncoder;decoder=new TextDecoder;nextRequestId=1;bell;wakeMemory;directSyscall(e){const t=this.channel.local;if(!(!t||e==="SYS_flock"||e==="SYS_fcntl"))return r=>{const{imports:n,errno:i}=t.handlers(),o=n[e];if(!o)throw lt(-38);let a;try{a=o(...r)}catch(c){throw lt(i(c))}return typeof a=="bigint"?a:BigInt(a??0)}}ownsLocalFile(e){const t=this.channel.local;return t!==void 0&&t.handlers().owns(e)}localHandlers(){const e=this.channel.local;return e?()=>e.handlers():void 0}wakeThrough(e){this.wakeMemory=e}constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload),this.bell=e.doorbell?new Int32Array(e.doorbell):void 0}attachMemory(e){this.channel.port.postMessage({memory:e})}copyForExec(e){return this.call(j.CopyForExec,{stdio:e}).process}currentWorkingDirectory(){return this.call(j.GetCwd)}copyForForkChannel(){return this.createChannel(Jr,this.call(j.CopyForFork).process)}createChannel(e,t){const r=$n(e),n=this.channel.sharedPipes&&{...this.channel.sharedPipes,table:t===void 0?this.channel.sharedPipes.table:new SharedArrayBuffer(65536*4)},i=t===void 0?void 0:new MessageChannel,o={...r.server,...t===void 0?{}:{process:t},...n?{sharedPipes:n}:{},...i?{releasePort:i.port2}:{}};this.channel.local?this.channel.local.attach(o):this.channel.port.postMessage({kind:"attach",...o},[r.server.port,...i?[i.port2]:[]]);const a=this.channel.local?.doorbell??this.channel.doorbell;return{...r.client,...n?{sharedPipes:n}:{},...i?{releasePort:i.port1}:{},...a?{doorbell:a}:{}}}copyForExecChannel(e){return this.createChannel(Jr,this.copyForExec(e))}closeProcess(){this.call(j.CloseProcess)}existsSync(e){return this.call(j.Exists,{path:e})}statSync(e){return Yo(this.call(j.Stat,{path:e}))}lstatSync(e){return Yo(this.call(j.Lstat,{path:e}))}readFileSync(e){const t=this.statSync(e).size;if(t<=Re)return tr(this.call(j.ReadFile,{path:e}).content);const r=new Uint8Array(t);for(let n=0;n<t;n+=Re){const i=this.readRangeSync(e,n,Math.min(Re,t-n));if(r.set(i,n),i.byteLength<Math.min(Re,t-n))return r.subarray(0,n+i.byteLength)}return r}async readFile(e){return this.readFileSync(e)}readRangeSync(e,t,r){const n=new Uint8Array(r);let i=0;for(;i<r;){const o=Math.min(Re,r-i),a=tr(this.call(j.ReadRange,{path:e,offset:t+i,length:o}).content);if(n.set(a,i),i+=a.byteLength,a.byteLength<o)break}return i===r?n:n.subarray(0,i)}writeRangeSync(e,t,r){for(let n=0;(n<r.byteLength||n===0&&r.byteLength===0)&&(this.call(j.WriteRange,{path:e,offset:t+n,content:ft(r.subarray(n,n+Re))}),r.byteLength!==0);n+=Re);}writeFileSync(e,t){const r=typeof t=="string"?this.encoder.encode(t):t;if(r.byteLength<=Re){this.call(j.WriteFile,{path:e,content:ft(r)});return}this.call(j.WriteFile,{path:e,content:""}),this.writeRangeSync(e,0,r)}mkdirSync(e,t){this.call(j.Mkdir,{path:e,recursive:t?.recursive===!0})}readdirSync(e){return this.call(j.Readdir,{path:e})}unlinkSync(e){this.call(j.Unlink,{path:e})}rmdirSync(e){this.call(j.Rmdir,{path:e})}renameSync(e,t){this.call(j.Rename,{from:e,to:t})}toSnapshot(){return JSON.parse(this.decoder.decode(this.readChunked(j.SnapshotSize)))}finalSnapshot(){return JSON.parse(this.decoder.decode(this.readChunked(j.FinalSnapshotSize)))}readChunked(e){const{length:t}=this.call(e);if(!Number.isSafeInteger(t)||t<0)throw lt(-5);const r=new Uint8Array(t);for(let n=0;n<t;n+=Re){const i=Math.min(Re,t-n),{content:o}=this.call(j.SnapshotChunk,{offset:n,length:i}),a=tr(o);if(a.byteLength!==i)throw lt(-5);r.set(a,n)}return r}prepareSpawn(){this.call(j.PrepareSpawn)}importPeerPatch(e){const t=this.encoder.encode(JSON.stringify(e));this.call(j.ImportPeerPatchStart,{length:t.byteLength});for(let r=0;r<t.byteLength;r+=Re)this.call(j.ImportPeerPatchChunk,{offset:r,content:ft(t.subarray(r,r+Re))})}replaceSnapshot(e){const t=this.encoder.encode(JSON.stringify(e));this.call(j.ReplaceSnapshotStart,{length:t.byteLength});for(let r=0;r<t.byteLength;r+=Re){const n=t.subarray(r,r+Re);this.call(j.ReplaceSnapshotChunk,{offset:r,content:ft(n)})}}syscall(e,t){const r=this.channel.local;if(r)for(;;){const o=r.syscall(e,t);if(typeof o=="bigint")return o;if(o!==void 0)throw lt(o.failed);const a=performance.now();r.idle(),Qe.waited.ms+=performance.now()-a}let n=this.names.get(e);n||(n=this.encoder.encode(e),this.names.set(e,n));const i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);this.payload[0]=t.length,this.payload[1]=n.byteLength;for(let o=0;o<t.length;o+=1)i.setBigInt64(8+o*8,BigInt(t[o]),!0);return this.payload.set(n,8+t.length*8),this.exchange(j.SyscallBinary,8+t.length*8+n.byteLength,Gf(e,t)||this.bell?null:3e4),i.getBigInt64(0,!0)}names=new Map;lastResult=0;view;readForMapping(e,t,r){const n=new Uint8Array(r),i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);let o=0;for(;o<r;){const a=Math.min(this.payload.byteLength,r-o);i.setInt32(0,e,!0),i.setFloat64(8,t+o,!0),i.setInt32(16,a,!0);const c=this.exchange(j.ReadForMappingBinary,20,3e4);if(this.lastResult===1)return o===0?void 0:n.subarray(0,o);if(n.set(this.payload.subarray(0,c),o),o+=c,c<a)break}return o===r?n:n.subarray(0,o)}mappingPath(e){return this.call(j.MappingPath,{fd:e}).path}writeForMapping(e,t,r){const n=this.encoder.encode(e);if(16+n.byteLength+r.byteLength>this.payload.byteLength)return this.call(j.WriteForMapping,{path:e,offset:t,content:ft(r)}).written;const i=this.view??=new DataView(this.payload.buffer,this.payload.byteOffset,this.payload.byteLength);return i.setFloat64(0,t,!0),i.setUint32(8,n.byteLength,!0),i.setUint32(12,r.byteLength,!0),this.payload.set(n,16),this.payload.set(r,16+n.byteLength),this.exchange(j.WriteForMappingBinary,16+n.byteLength+r.byteLength,3e4),this.payload[0]===1}call(e,t={},r=3e4){const n=this.encoder.encode(JSON.stringify(t));if(n.byteLength>this.payload.byteLength)throw lt(-90);if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI filesystem RPC on one channel.");this.payload.set(n);const i=this.exchange(e,n.byteLength,r);return i>0?JSON.parse(this.decoder.decode(this.payload.slice(0,i))):void 0}exchange(e,t,r){if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent WALI filesystem RPC on one channel.");const n=this.nextRequestId;this.nextRequestId=n>=1073741821?1:n+2,this.control.fill(0),Atomics.store(this.control,1,e),Atomics.store(this.control,3,t),Atomics.store(this.control,0,n);const i=this.channel.local;if(i)for(;i.serveNow(),Atomics.load(this.control,0)!==n+1;)i.idle();else if(this.bell){Atomics.add(this.bell,0,1),Atomics.notify(this.bell,0);const f=Atomics.load(this.bell,1);f!==0&&this.wakeMemory&&Atomics.notify(new Int32Array(this.wakeMemory.buffer),f-1)}else this.channel.port.postMessage(n);const o=r===null?void 0:Date.now()+r;for(;;){const f=Atomics.load(this.control,0);if(f===n+1)break;if(f!==n&&f!==-n)throw new Error(`Invalid WALI filesystem RPC state ${f} for request ${n}.`);const d=o===void 0?void 0:Math.max(0,o-Date.now());if(d===0&&f===n&&Atomics.compareExchange(this.control,0,n,0)===n)throw lt(-110);Atomics.wait(this.control,0,f,f===-n?void 0:d)}const a=Atomics.load(this.control,2),c=Atomics.load(this.control,4);if(Atomics.store(this.control,0,0),a<0)throw lt(a);return this.lastResult=a,c}}function Gf(s,e){if(s==="SYS_flock"){const r=Number(e[1]??0);return(r&4)===0&&(r&8)===0}if(s!=="SYS_fcntl")return!1;const t=Number(e[1]??0);return t===7||t===38}const jf=5;class tn{sink;root;sharedPipes;constructor(e,t,r){this.sink=e,this.root=t,this.sharedPipes=r}static async createInThread(e,t){const r=await import("./filesystem-host-D98WfBoD.js"),n=new SharedArrayBuffer(2*Int32Array.BYTES_PER_ELEMENT),i=new Int32Array(n);r.hostInThread(n),await r.initializeHost({kind:"initialize",snapshot:e,...t});const o=$n(Jr),a=r.attachChannel({...o.server,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{}}),c=new Qs({...o.client,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{},local:{doorbell:n,serveNow:()=>r.serveNow(a),attach:d=>{r.attachChannel(d)},syscall:(d,y)=>r.syscallNow(a,d,y),handlers:()=>r.handlersNow(a),idle:()=>{r.pumpHost(!0),Atomics.wait(i,0,Atomics.load(i,0),jf)}}}),f={attach:d=>{r.attachChannel(d)},terminate:()=>r.resetHost(),doorbell:n,host:r};return new tn(f,c,t.sharedPipes)}closePort(){this.sink.host?.closeHostPort()}pump(e=!1){(this.sink.host?.hostWaiting()||e)&&this.sink.host?.pumpHost(e)}doorbell(){return this.sink.doorbell?new Int32Array(this.sink.doorbell):void 0}static async create(e,t){const r=Fa("filesystem",()=>qr(new Worker(new URL("/assets/filesystem-worker-51BLqPs5.js",import.meta.url),{type:"module",name:"wali-filesystem"})));await new Promise((o,a)=>{const c=d=>{d.data.kind==="ready"&&(r.removeEventListener("message",c),o()),d.data.kind==="error"&&(r.removeEventListener("message",c),a(new Error(d.data.message)))};r.addEventListener("message",c),r.addEventListener("error",d=>a(d.error??new Error(d.message)),{once:!0});const f=[...t.updatePort?[t.updatePort]:[],...t.fileLocks?[t.fileLocks.channel.port]:[],...t.fileCoherence?[t.fileCoherence.port]:[]];r.postMessage({kind:"initialize",snapshot:e,...t},f)});const n=$n(Jr);r.postMessage({kind:"attach",...n.server},[n.server.port]);const i={attach:(o,a)=>r.postMessage({kind:"attach",...o},a),terminate:()=>r.terminate()};return new tn(i,new Qs({...n.client,...t.sharedPipes?{sharedPipes:t.sharedPipes}:{}}),t.sharedPipes)}createChannel(e,t=0){const r=$n(e),n=this.sharedPipes&&{...this.sharedPipes,table:t===0?this.sharedPipes.table:new SharedArrayBuffer(65536*4)};return this.sink.attach({process:t,...r.server,...n?{sharedPipes:n}:{}},[r.server.port]),{...r.client,...n?{sharedPipes:n}:{},...this.sink.doorbell?{doorbell:this.sink.doorbell}:{}}}copyForExec(){return this.createChannel(Jr,this.root.copyForExec())}filesystem(){return this.root}snapshot(){return this.root.toSnapshot()}finalSnapshot(){return this.root.finalSnapshot()}replaceSnapshot(e){this.root.replaceSnapshot(e)}terminate(){this.sink.terminate()}}const Hr=1e4,Kf=new Set([5,6,7,36,37,38]),Xf=new Set(["SYS_open","SYS_openat","SYS_stat","SYS_lstat","SYS_newfstatat","SYS_access","SYS_faccessat","SYS_faccessat2","SYS_chmod","SYS_fchmodat","SYS_chdir","SYS_getcwd","SYS_mkdir","SYS_mkdirat","SYS_statfs","SYS_rmdir","SYS_unlink","SYS_unlinkat","SYS_rename","SYS_utimensat","SYS_symlink","SYS_symlinkat","SYS_readlink","SYS_readlinkat","SYS_inotify_init","SYS_inotify_init1"]),Oo=new Set(["SYS_close","SYS_read","SYS_pread64","SYS_write","SYS_pwrite64","SYS_readv","SYS_writev","SYS_preadv","SYS_pwritev","SYS_lseek","SYS_fstat","SYS_fchmod","SYS_fchdir","SYS_fstatfs","SYS_inotify_add_watch","SYS_inotify_rm_watch","SYS_dup","SYS_dup2","SYS_dup3","SYS_fcntl","SYS_getdents64","SYS_fsync","SYS_fdatasync","SYS_flock","SYS_ftruncate"]);class Jf{client;stdioAliasRegistry;descriptorState;memory;constructor(e,t,r,n){this.client=e,this.stdioAliasRegistry=t,this.descriptorState=r,this.memory=n}poll(e,t,r,n){const i=this.memory?.();if(!i||!Number.isSafeInteger(r)||r<=0||t<0||t+r*8>i.buffer.byteLength)return e(t,r,n);const o=this.descriptorState?new Int32Array(this.descriptorState.table):void 0,a=this.descriptorState?new Int32Array(this.descriptorState.descriptions):void 0,c=this.client.localHandlers(),f=new Map;let d=new DataView(i.buffer);for(let k=0;k<r;k+=1){const x=d.getInt32(t+k*8,!0);if(x<3||x>=Hr&&!ze(x))continue;const L=this.stdioAliasRegistry&&x<this.stdioAliasRegistry.length?Atomics.load(this.stdioAliasRegistry,x):-1;if(L===0||L===1||L===2||o&&a&&Atomics.load(a,Atomics.load(o,x)*3+2))continue;const W=c?c().owns(x):Number(this.client.syscall("SYS_fcntl",[x,1,0]))>=0;f.set(k,W?d.getInt16(t+k*8+4,!0)&4:32)}if(f.size===0)return e(t,r,n);const y=[...f.values()].filter(k=>k!==0).length,p=new Uint8Array(i.buffer,t,r*8).slice(),b=[];for(let k=0;k<r;k+=1)f.has(k)||b.push(k);const S=new Uint8Array(i.buffer);b.forEach((k,x)=>S.set(p.subarray(k*8,k*8+8),t+x*8));let I;try{I=e(t,b.length,y?0:n)}finally{const k=new Uint8Array(i.buffer,t,b.length*8).slice();new Uint8Array(i.buffer).set(p,t),d=new DataView(i.buffer),b.forEach((x,L)=>d.setInt16(t+x*8+6,k[L*8+6]|k[L*8+7]<<8,!0));for(const[x,L]of f)d.setInt16(t+x*8+6,L,!0)}return typeof I!="bigint"&&typeof I!="number"||Number(I)<0?I:BigInt(Number(I)+y)}ownedFileImports(e){const t={};for(const r of Oo){const n=r==="SYS_fcntl",i=n?void 0:this.client.directSyscall(r),o=e[r];if(!i&&!n||!o||r==="SYS_flock")continue;const a=this.client.localHandlers();a&&(t[r]=(...c)=>{const f=Number(c[0]);if(f<3||f>=Hr&&!ze(f)||n&&Kf.has(Number(c[1])))return o(...c);const{imports:d,errno:y,owns:p}=a();if(!p(f))return o(...c);const b=d[r];if(!b)throw lt(-38);let S;try{S=b(...c)}catch(I){throw lt(y(I))}return typeof S=="bigint"?S:BigInt(S??0)})}return t}imports(e){const t={};for(const o of Xf){const a=this.client.directSyscall(o);t[o]=a?(...c)=>a(c):(...c)=>this.client.syscall(o,c)}const r=this.descriptorState?new Int32Array(this.descriptorState.table):void 0,n=this.descriptorState?new Int32Array(this.descriptorState.descriptions):void 0;for(const o of Oo){const a=this.client.directSyscall(o),c=o==="SYS_read"||o==="SYS_readv"||o==="SYS_write"||o==="SYS_writev"||o==="SYS_fstat",f=o==="SYS_write"||o==="SYS_writev",d=o==="SYS_pread64"||o==="SYS_pwrite64"||o==="SYS_preadv"||o==="SYS_pwritev";t[o]=(...y)=>{const p=Number(y[0]);if(r&&n&&p>=0&&(p<2e4||ze(p))){const S=Atomics.load(r,p),I=Atomics.load(n,S*3+2);return I&&d?-29n:I&&c?(f&&this.client.prepareSpawn(),e[o]?.(...y)??-9n):a?a(y):this.client.syscall(o,y)}const b=this.stdioAliasRegistry&&p>=0&&p<this.stdioAliasRegistry.length?Atomics.load(this.stdioAliasRegistry,p):-1;return p<3||p>=Hr&&!ze(p)||b===0||b===1||b===2?((o==="SYS_write"||o==="SYS_writev")&&this.client.prepareSpawn(),e[o]?.(...y)??-9n):a?a(y):this.client.syscall(o,y)}}const i=e.SYS_poll;return this.memory&&i&&(t.SYS_poll=(o,a,c)=>this.poll(i,Number(o),Number(a),Number(c))),{...e,...t}}readForMapping(e,t,r){if(!(e<3||e>=Hr&&!ze(e)))return this.client.readForMapping(e,t,r)}mappingPath(e){if(!(e<3||e>=Hr&&!ze(e)))return this.client.mappingPath(e)}writeForMapping(e,t,r){return this.client.writeForMapping(e,t,r)}}function $n(s){const e=new MessageChannel,t=new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT*8),r=new SharedArrayBuffer(s);return e.port1.start(),{client:{port:e.port1,control:t,payload:r},server:{port:e.port2,control:t,payload:r}}}function Yo(s){return{isFile:()=>s.file,isDirectory:()=>s.directory,isSymbolicLink:()=>s.symbolicLink===!0,size:s.size,...Zf(s,"mode","mtimeMs","atimeMs","ctimeMs","nlink","uid","gid","dev","ino","rdev","blksize","blocks")}}function Zf(s,...e){return Object.fromEntries(e.flatMap(t=>s[t]===void 0?[]:[[t,s[t]]]))}function lt(s){const e={2:"ENOENT",9:"EBADF",13:"EACCES",17:"EEXIST",20:"ENOTDIR",21:"EISDIR",22:"EINVAL",24:"EMFILE",28:"ENOSPC",29:"ESPIPE",34:"ERANGE",38:"ENOSYS",39:"ENOTEMPTY",90:"EMSGSIZE",110:"ETIMEDOUT"}[-s]??"EIO";return Object.assign(new Error(e),{code:e})}const Do=1e4,Qf=19999,Ys=64,qs=64*1024,zn=8,Co=3,Uo=4,Ds=2048,Cs=524288,qf=0,eh=1,th=2,rh=3,nh=4,Wo=1030,sh=1,ih=4096;function oh(s=new rn(new ni)){const e={table:s.sharedEntries.buffer,descriptions:s.registry.pipeMetadata.buffer,slots:new SharedArrayBuffer(Ys*Int32Array.BYTES_PER_ELEMENT),controls:new SharedArrayBuffer(Ys*zn*Int32Array.BYTES_PER_ELEMENT),payloads:new SharedArrayBuffer(Ys*qs)};return Ba.set(e.table,s),e}const Ba=new WeakMap,$o=new WeakMap;let ei,ti;function ah(s,e){if(!Number.isSafeInteger(e)||e<0||e>=65536)return 0;let t=s===ei?ti:$o.get(s);t||(t={table:new Int32Array(s.table),descriptions:new Int32Array(s.descriptions)},$o.set(s,t)),ei=s,ti=t;const r=Atomics.load(t.table,e);return Atomics.load(t.descriptions,r*3)}function ch(){ei=void 0,ti=void 0}class lh{memory;state;remote;table;slots;constructor(e,t,r,n){this.memory=e,this.state=t,this.remote=n,this.table=r??Ba.get(t.table),this.slots=new Int32Array(t.slots)}isPipeFd(e){return this.entry(e)!==0}exportBrowserProcessPipe(e){const t=this.entry(e);return t===0?void 0:this.handle(t)}pollDescriptor(e,t){const r=this.entry(e);return r===0?void 0:Pa(this.handle(r),t)}ioctl(e,t){if(this.isPipeFd(e))return t===21537||t===21585||t===21584?0n:-25n}imports(e={}){const t=(n,i)=>e[n]?.(...i)??-38n,r={...e,SYS_pipe:n=>this.pipe(Number(n),0),SYS_pipe2:(n,i)=>this.pipe(Number(n),Number(i)),SYS_close:n=>this.isPipeFd(Number(n))?this.close(Number(n)):e.SYS_close?.(n)??-38n,SYS_read:(n,i,o)=>this.isPipeFd(Number(n))?this.read(Number(n),Number(i),Number(o)):e.SYS_read?.(n,i,o)??-38n,SYS_pread64:(n,i,o,a)=>this.isPipeFd(Number(n))?-29n:e.SYS_pread64?.(n,i,o,a)??-38n,SYS_write:(n,i,o)=>this.isPipeFd(Number(n))?this.write(Number(n),Number(i),Number(o)):e.SYS_write?.(n,i,o)??-38n,SYS_pwrite64:(n,i,o,a)=>this.isPipeFd(Number(n))?-29n:e.SYS_pwrite64?.(n,i,o,a)??-38n,SYS_preadv:(n,i,o,a,c)=>this.isPipeFd(Number(n))?-29n:e.SYS_preadv?.(n,i,o,a,c)??-38n,SYS_pwritev:(n,i,o,a,c)=>this.isPipeFd(Number(n))?-29n:e.SYS_pwritev?.(n,i,o,a,c)??-38n,SYS_readv:(n,i,o)=>this.isPipeFd(Number(n))?this.readv(Number(n),Number(i),Number(o)):e.SYS_readv?.(n,i,o)??-38n,SYS_writev:(n,i,o)=>this.isPipeFd(Number(n))?this.writev(Number(n),Number(i),Number(o)):e.SYS_writev?.(n,i,o)??-38n,SYS_lseek:(n,i,o)=>this.isPipeFd(Number(n))?-29n:e.SYS_lseek?.(n,i,o)??-38n,SYS_fstat:(n,i)=>this.isPipeFd(Number(n))?this.fstat(Number(i)):e.SYS_fstat?.(n,i)??-38n,SYS_dup:n=>this.isPipeFd(Number(n))?this.duplicate(Number(n)):e.SYS_dup?.(n)??-38n,SYS_dup2:(n,i)=>this.isPipeFd(Number(n))?this.duplicate(Number(n),Number(i),3,!1,e):e.SYS_dup2?.(n,i)??-38n,SYS_dup3:(n,i,o)=>this.isPipeFd(Number(n))?Number(n)===Number(i)||(Number(o)&~Cs)!==0?-22n:this.duplicate(Number(n),Number(i),3,!!(Number(o)&Cs),e):e.SYS_dup3?.(n,i,o)??-38n,SYS_fcntl:(n,i,o)=>this.isPipeFd(Number(n))?this.fcntl(Number(n),Number(i),Number(BigInt.asIntN(32,BigInt(o))),e):e.SYS_fcntl?.(n,i,o)??-38n,SYS_poll:(n,i,o)=>this.poll(Number(n),Number(i),Number(o),()=>t("SYS_poll",[n,i,o]))};if(this.remote)for(const n of["SYS_pipe","SYS_pipe2","SYS_close","SYS_dup","SYS_dup2","SYS_dup3","SYS_fcntl"]){const i=r[n];r[n]=(...o)=>n==="SYS_pipe"||n==="SYS_pipe2"||this.isPipeFd(Number(o[0]))?this.remote.syscall(n,o):i(...o)}return r}pipe(e,t){if((t&-526337)!==0)return-22n;if(!this.validRange(e,8))return-14n;const r=this.allocateSlot();if(r<0)return-24n;const n=this.control(r);n.fill(0),Atomics.store(n,Co,1),Atomics.store(n,Uo,1);const i=this.allocateDescriptor(r+1),o=i>=0?this.allocateDescriptor(-(r+1)):-1;if(i<0||o<0)return i>=0&&this.table.close(i),Atomics.store(this.slots,r,0),-24n;for(const c of[i,o])this.table.entries[c].flags=t&Cs?1:0,Atomics.store(new Int32Array(this.state.descriptions),this.table.entries[c].description*3+1,t&Ds);const a=this.view();return a.setInt32(e,i,!0),a.setInt32(e+4,o,!0),0n}read(e,t,r){if(!Number.isSafeInteger(r)||r<0||!this.validRange(t,r))return-22n;const i=(this.statusFlags(e)&Ds?oi:Mf)(this.handle(this.entry(e)),r);return typeof i=="bigint"?i:(this.bytes().set(i,t),BigInt(i.byteLength))}write(e,t,r){return!Number.isSafeInteger(r)||r<0||!this.validRange(t,r)?-22n:Ra(this.handle(this.entry(e)),this.bytes().slice(t,t+r))}readv(e,t,r){if(!Number.isSafeInteger(r)||r<0||r>1024||!this.validRange(t,r*8))return-22n;let n=0n;for(let i=0;i<r;i+=1){const o=t+i*8,a=this.read(e,this.view().getUint32(o,!0),this.view().getUint32(o+4,!0));if(a<0n)return n>0n?n:a;if(n+=a,a<BigInt(this.view().getUint32(o+4,!0)))break}return n}writev(e,t,r){if(!Number.isSafeInteger(r)||r<0||r>1024||!this.validRange(t,r*8))return-22n;let n=0n;for(let i=0;i<r;i+=1){const o=t+i*8,a=this.write(e,this.view().getUint32(o,!0),this.view().getUint32(o+4,!0));if(a<0n)return n>0n?n:a;n+=a}return n}fstat(e){if(!this.validRange(e,144))return-14n;const t=this.view();for(let r=0;r<144;r+=4)t.setUint32(e+r,0,!0);return t.setBigUint64(e+16,1n,!0),t.setUint32(e+24,ih|438,!0),t.setUint32(e+28,1e3,!0),t.setUint32(e+32,1e3,!0),t.setBigInt64(e+56,4096n,!0),0n}statusFlags(e){const t=Atomics.load(new Int32Array(this.state.table),e);return Atomics.load(new Int32Array(this.state.descriptions),t*3+1)}fcntl(e,t,r,n){if(t===qf||t===Wo)return this.duplicate(e,void 0,Math.max(3,r),t===Wo,n);const i=this.table.entries[e];return t===eh?BigInt(i.flags):t===th?(i.flags=r&sh,0n):t===rh?BigInt(this.statusFlags(e)|(this.entry(e)<0?1:0)):t===nh?(Atomics.store(new Int32Array(this.state.descriptions),i.description*3+1,r&Ds),0n):-22n}duplicate(e,t,r=Do,n=!1,i={}){const o=this.table.get(e);if(!o)return-9n;if(t===e)return BigInt(e);const a=t===void 0?this.freeDescriptor(r):t;return a<0||a>=65536?-9n:(this.table.set(a,o,n?1:0),BigInt(a))}close(e){return this.table.close(e)?0n:-9n}poll(e,t,r,n){if(!Number.isSafeInteger(t)||t<0||t>65536||!this.validRange(e,t*8))return-22n;const i=n();let o=typeof i=="bigint"?Number(i):typeof i=="number"?i:0;o<0&&(o=0);for(let a=0;a<t;a+=1){const c=e+a*8,f=this.view().getInt32(c,!0),d=this.pollDescriptor(f,this.view().getInt16(c+4,!0));d!==void 0&&(this.view().getInt16(c+6,!0)!==0&&(o-=1),this.view().setInt16(c+6,d,!0),d!==0&&(o+=1))}return BigInt(o)}allocateSlot(){for(let e=0;e<this.slots.length;e+=1)if(Atomics.compareExchange(this.slots,e,0,1)===0)return e;return-1}freeDescriptor(e){for(let t=Math.max(3,e);t<=Qf;t++)if(!this.table.get(t))return t;return-1}allocateDescriptor(e,t=Do){const r=this.freeDescriptor(t);if(r<0)return r;const n=Math.abs(e)-1,i=this.table.registry.create("pipe",{pipe:n,side:e>0?"reader":"writer"},()=>{Zr(this.handle(e));const o=this.control(n);Atomics.load(o,Co)===0&&Atomics.load(o,Uo)===0&&Atomics.store(this.slots,n,0)});return Atomics.store(this.table.registry.pipeMetadata,i.id*3,e),this.table.set(r,i),r}entry(e){return ah(this.state,e)}handle(e){const t=Math.abs(e)-1;return{control:this.state.controls,payload:this.state.payloads,role:e>0?"reader":"writer",controlOffset:t*zn*Int32Array.BYTES_PER_ELEMENT,payloadOffset:t*qs,payloadLength:qs}}control(e){return new Int32Array(this.state.controls,e*zn*Int32Array.BYTES_PER_ELEMENT,zn)}bytes(){return new Uint8Array(this.memory().buffer)}view(){return new DataView(this.memory().buffer)}validRange(e,t){return Number.isSafeInteger(e)&&Number.isSafeInteger(t)&&e>=0&&t>=0&&e+t<=this.memory().buffer.byteLength}}const Us=64*1024,fh=1e4;var Yt;(function(s){s[s.Query=1]="Query",s[s.Open=2]="Open",s[s.Push=3]="Push",s[s.Pull=4]="Pull",s[s.Flush=5]="Flush",s[s.Close=6]="Close"})(Yt||(Yt={}));var zo;(function(s){s[s.VideoDecoder=0]="VideoDecoder",s[s.VideoEncoder=1]="VideoEncoder",s[s.AudioDecoder=2]="AudioDecoder",s[s.AudioEncoder=3]="AudioEncoder"})(zo||(zo={}));const Ho=1;var Je;(function(s){s[s.State=0]="State",s[s.Operation=1]="Operation",s[s.Result=2]="Result",s[s.Argument0=3]="Argument0",s[s.Argument1=4]="Argument1",s[s.Argument2=5]="Argument2",s[s.Argument3=6]="Argument3",s[s.Argument4=7]="Argument4",s[s.Argument5=8]="Argument5"})(Je||(Je={}));const hh=6,dh=9,uh=-5,Ws=-9,mh=-11,Rn=-14,Qt=-22,br=-95,yh=-110,Vo=3e4,wh=fh+5e3;class ph{channel;control;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control)}call(e,t,r){if(Atomics.load(this.control,Je.State)!==0)return mh;const n=this.nextRequestId;this.nextRequestId=n>=1073741821?1:n+2,this.control.fill(0);for(let a=0;a<hh;a+=1)Atomics.store(this.control,Je.Argument0+a,t[a]??0);Atomics.store(this.control,Je.Operation,e),Atomics.store(this.control,Je.State,n),this.channel.port.postMessage(n);const i=Date.now()+r;for(;;){const a=Atomics.load(this.control,Je.State);if(a===n+1)break;if(a!==n&&a!==-n)return uh;const c=Math.max(0,i-Date.now());if(c===0&&a===n&&Atomics.compareExchange(this.control,Je.State,n,0)===n)return yh;Atomics.wait(this.control,Je.State,a,a===-n?void 0:c)}const o=Atomics.load(this.control,Je.Result);return Atomics.store(this.control,Je.State,0),o}}function gh(s,e,t){const r=()=>s().buffer.byteLength,n=(c,f)=>Number.isSafeInteger(c)&&c>0&&f>=0&&c<=r()-f,i=(c,f)=>f===0?Number.isSafeInteger(c)&&c>=0:n(c,f),o=(c,f,d=Vo)=>{const y=t();return BigInt(y?y.call(c,f,d):br)},a=c=>(f,d,y)=>{if(!e())return BigInt(br);const p=Number(f),b=Number(d),S=Number(y);return!Number.isInteger(p)||p<0||p>3||!Number.isSafeInteger(S)||S<1||S>Us?BigInt(Qt):n(b,S)?o(c,[p,b,S]):BigInt(Rn)};return{SYS_browser_codec_query_v1:a(Yt.Query),SYS_browser_codec_open_v1:a(Yt.Open),SYS_browser_codec_push_v1:(c,f,d,y,p)=>{if(!e())return BigInt(br);const b=Number(c),S=Number(f),I=Number(d),k=Number(y),x=Number(p);return!Number.isInteger(b)||b<=0?BigInt(Ws):!Number.isSafeInteger(I)||I<0||!Number.isSafeInteger(x)||x<1||x>Us?BigInt(Qt):I>0&&!n(S,I)||!n(k,x)?BigInt(Rn):o(Yt.Push,[b,S,I,k,x])},SYS_browser_codec_pull_v1:(c,f,d,y,p,b)=>{if(!e())return BigInt(br);const S=Number(c),I=Number(f),k=Number(d),x=Number(y),L=Number(p),W=Number(b);return!Number.isInteger(S)||S<=0?BigInt(Ws):!Number.isInteger(I)||(I&~Ho)!==0||!Number.isSafeInteger(x)||x<0||!Number.isSafeInteger(W)||W<0||W>Us?BigInt(Qt):!i(k,x)||!i(L,W)?BigInt(Rn):o(Yt.Pull,[S,I,k,x,L,W],(I&Ho)===0?Vo:wh)},SYS_browser_codec_flush_v1:c=>{if(!e())return BigInt(br);const f=Number(c);return!Number.isInteger(f)||f<=0?BigInt(Ws):o(Yt.Flush,[f])},SYS_browser_codec_close_v1:c=>{if(!e())return BigInt(br);const f=Number(c);return!Number.isInteger(f)||f<=0?0n:o(Yt.Close,[f])}}}class ci{worker;constructor(e){this.worker=e}static async create(e){const t=qr(new Worker(new URL("/assets/codec-worker-CbrC58Ct.js",import.meta.url),{type:"module",name:"wali-codec"}));return await new Promise((r,n)=>{const i=o=>{o.data.kind==="ready"&&(t.removeEventListener("message",i),r()),o.data.kind==="error"&&(t.removeEventListener("message",i),n(new Error(o.data.message)))};t.addEventListener("message",i),t.addEventListener("error",o=>n(o.error??new Error(o.message)),{once:!0}),t.postMessage({kind:"initialize",memory:e})}),new ci(t)}createChannel(){const e=new MessageChannel,t=new SharedArrayBuffer(dh*Int32Array.BYTES_PER_ELEMENT);return this.worker.postMessage({kind:"attach",port:e.port2,control:t},[e.port2]),{port:e.port1,control:t}}terminate(){this.worker.terminate()}}const $s=1,zs=2,Hs=4,Go=8,Sh=16,bh=32,Oa=1024,Eh=Oa*8;function Ah(s,e,t){return(r,n,i,o,a)=>{const c=Number(r);if(!Number.isInteger(c)||c<0||c>Oa)return-22n;const f=[Number(n),Number(i),Number(o)],d=[$s,Hs,zs],y=Math.ceil(c/8);let p=new Uint8Array(s().buffer);for(const D of f)if(D!==0&&(D<0||D+y>p.byteLength))return-14n;const b=Number(a);let S=-1;if(b!==0){if(b<0||b+16>p.byteLength)return-14n;const D=new DataView(s().buffer),v=D.getBigInt64(b,!0),U=D.getBigInt64(b+8,!0);if(v<0n||U<0n)return-22n;S=Number(v*1000n+(U+999n)/1000n)}const I=new Map;f.forEach((D,v)=>{if(D!==0)for(let U=0;U<c;U+=1)p[D+(U>>3)]&1<<(U&7)&&I.set(U,(I.get(U)??0)|d[v])});const k=t();if(k<=0)return-12n;let x=new DataView(s().buffer),L=0;for(const[D,v]of I){const U=k+L*8;x.setInt32(U,D,!0),x.setInt16(U+4,v,!0),x.setInt16(U+6,0,!0),L+=1}const W=e(k,L,S),de=Number(typeof W=="bigint"?W:W??0);if(de<0)return BigInt(de);p=new Uint8Array(s().buffer),x=new DataView(s().buffer);for(const D of f)D!==0&&p.fill(0,D,D+y);let se=0,ie=0;for(const[D,v]of I){const U=x.getInt16(k+ie*8+6,!0);if(ie+=1,U&bh)return-9n;[(v&$s)!==0&&(U&($s|Sh|Go))!==0,(v&Hs)!==0&&(U&(Hs|Go))!==0,(v&zs)!==0&&(U&zs)!==0].forEach((Se,O)=>{if(!Se)return;const fe=f[O]+(D>>3);p[fe]=(p[fe]??0)|1<<(D&7),se+=1})}return BigInt(se)}}var Dt;(function(s){s[s.Inspect=1]="Inspect",s[s.Read=2]="Read",s[s.WriteStart=3]="WriteStart",s[s.WriteChunk=4]="WriteChunk",s[s.WriteFinish=5]="WriteFinish",s[s.Remove=6]="Remove"})(Dt||(Dt={}));const vn=512*1024,jo=256*1024*1024,Ko=5,_h=new TextEncoder,Nh=new TextDecoder("utf-8",{fatal:!0});class Ih{channel;control;payload;nextRequestId=1;constructor(e){this.channel=e,this.control=new Int32Array(e.control),this.payload=new Uint8Array(e.payload)}pull(e){const t=this.call(Dt.Inspect,{path:e});if(!t.exists)return;const r=ri(t.length,0,jo),n=new Uint8Array(r);for(let i=0;i<r;i+=vn){const o=Math.min(vn,r-i),a=this.call(Dt.Read,{path:e,offset:i,length:o}),c=tr(a.content);if(c.byteLength!==o)throw new Error("Invalid coherent file response.");n.set(c,i)}return{bytes:n,...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},parents:Ya(e,t.parents)}}push(e,t){if(!t){this.call(Dt.Remove,{path:e});return}if(t.bytes.byteLength>jo)throw new Error("Coherent file exceeds 256 MiB.");this.call(Dt.WriteStart,{path:e,length:t.bytes.byteLength,...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},...t.parents===void 0?{}:{parents:t.parents}});for(let r=0;r<t.bytes.byteLength;r+=vn){const n=t.bytes.subarray(r,r+vn);this.call(Dt.WriteChunk,{offset:r,content:ft(n)})}this.call(Dt.WriteFinish)}call(e,t={}){const r=()=>{if(Atomics.load(this.control,Ko))throw Object.assign(new Error("Browser file coherence was cancelled."),{errno:125})};r();const n=_h.encode(JSON.stringify(t));if(n.byteLength>this.payload.byteLength)throw new Error("File-coherence request is too large.");if(Atomics.load(this.control,0)!==0)throw new Error("Concurrent file-coherence RPC on one channel.");const i=this.nextRequestId;this.nextRequestId=i>=1073741821?1:i+2,this.control.fill(0,0,Ko),this.payload.set(n),Atomics.store(this.control,1,e),Atomics.store(this.control,3,n.byteLength),Atomics.store(this.control,0,i);try{for(this.channel.port.postMessage(i);Atomics.load(this.control,0)!==i+1;){r();const f=Atomics.load(this.control,0);f!==i+1&&Atomics.wait(this.control,0,f)}const o=Atomics.load(this.control,2),a=ri(Atomics.load(this.control,4),0,this.payload.byteLength),c=a===0?void 0:JSON.parse(Nh.decode(this.payload.slice(0,a)));if(o<0)throw Object.assign(new Error(`Browser file coherence failed with ${o}.`),{errno:-o});return c}finally{Atomics.store(this.control,0,0)}}}function Xo(s){const e=s.replace(/-(?:journal|shm|wal)$/u,"");return[e,`${e}-journal`,`${e}-wal`,`${e}-shm`]}function kh(s,e){return li(e).flatMap(t=>{if(!s.existsSync(t))return[];const r=s.statSync(t);if(!r.isDirectory())throw _t("A coherent file parent must be a directory.");return[{path:t,...Da({mode:r.mode,mtimeMs:r.mtimeMs})}]})}function Mh(s,e,t){const r=new Map(Ya(e,t).map(n=>[n.path,n]));for(const n of li(e)){if(s.existsSync(n)){if(!s.statSync(n).isDirectory())throw _t("A coherent file parent must be a directory.");continue}s.mkdirSync(n);const i=r.get(n);i?.mode!==void 0&&s.chmodSync?.(n,i.mode),i?.mtimeMs!==void 0&&s.utimesSync?.(n,new Date(i.mtimeMs),new Date(i.mtimeMs))}}function Ya(s,e){if(e===void 0)return[];const t=new Set(li(s));if(!Array.isArray(e)||e.length>t.size)throw _t("Invalid coherent file parents.");return e.map(r=>{if(typeof r!="object"||r===null)throw _t("Invalid coherent file parent.");const n=r,i=Ca(n.path);if(!t.delete(i))throw _t("Coherent metadata must name distinct ancestors of its file.");return{path:i,...Da(n)}})}function li(s){const e=[];for(const t of Ca(s).split("/"))!t||t==="."||(t===".."?e.pop():e.push(t));return e.slice(0,-1).map((t,r)=>`/${e.slice(0,r+1).join("/")}`)}function Da(s){const e=s.mode===void 0?void 0:ri(s.mode,0,65535),t=s.mtimeMs===void 0?void 0:Lh(s.mtimeMs);return{...e===void 0?{}:{mode:e},...t===void 0?{}:{mtimeMs:t}}}function Ca(s){const e=xh(s);if(!e.startsWith("/")||e.length>4096||e.includes("\0"))throw _t("Invalid coherent file path.");return e}function xh(s){if(typeof s!="string")throw _t("Expected a string.");return s}function ri(s,e,t){if(!Number.isSafeInteger(s)||s<e||s>t)throw _t("Expected a bounded integer.");return s}function Lh(s){if(typeof s!="number"||!Number.isFinite(s))throw _t("Expected a finite number.");return s}function _t(s){return Object.assign(new Error(s),{errno:22})}class Ph{locks;coherence;filesystem;held=[];locallyCreated=new Set;constructor(e,t,r){this.locks=e,this.coherence=t,this.filesystem=r}created(e){this.locallyCreated.add(e)}request(e){if(e.operation==="query")return this.locks.request(e);if(e.operation==="set"){const i=!this.held.some(a=>a.path===e.path),o=this.locks.request(e);if(o.result<0)return o;if(i)try{this.refresh(e.path)}catch(a){throw this.locks.request({operation:"unlock",owner:e.owner,namespace:e.namespace,path:e.path,range:e.range}),a}return this.install(e.owner,e.namespace,e.path,e.range),o}if(e.operation==="unlock"){const i=this.without(e.owner,e.namespace,e.path,e.range);this.held.some(a=>a.path===e.path)&&!i.some(a=>a.path===e.path)&&this.publish(e.path);const o=this.locks.request(e);return o.result>=0&&this.replaceHeld(i),o}const t=this.held.filter(i=>i.owner!==e.owner),r=new Set(this.held.filter(i=>i.owner===e.owner).map(i=>i.path));for(const i of r)t.some(o=>o.path===i)||this.publish(i);const n=this.locks.request(e);return n.result>=0&&this.replaceHeld(t),n}refresh(e){const t=performance.now();try{this.refreshNow(e)}finally{Qe.waited.ms+=performance.now()-t}}publish(e){const t=performance.now();try{this.publishNow(e)}finally{Qe.waited.ms+=performance.now()-t}}refreshNow(e){for(const t of Xo(e)){const r=this.coherence.pull(t);if(!r&&this.locallyCreated.delete(t)){this.coherence.push(t,this.readLocal(t)),this.filesystem.dropChangedPaths?.([t]);continue}this.locallyCreated.delete(t),this.writeLocal(t,r),this.filesystem.dropChangedPaths?.([t])}}publishNow(e){for(const t of Xo(e))this.coherence.push(t,this.readLocal(t)),this.filesystem.dropChangedPaths?.([t])}readLocal(e){if(!this.filesystem.existsSync(e))return;const t=this.filesystem.statSync(e);if(!t.isDirectory())return{bytes:this.filesystem.readFileSync(e),...t.mode===void 0?{}:{mode:t.mode},...t.mtimeMs===void 0?{}:{mtimeMs:t.mtimeMs},parents:kh(this.filesystem,e)}}writeLocal(e,t){if(!t){this.filesystem.existsSync(e)&&!this.filesystem.statSync(e).isDirectory()&&this.filesystem.unlinkSync(e);return}Mh(this.filesystem,e,t.parents),this.filesystem.writeFileSync(e,t.bytes),t.mode!==void 0&&this.filesystem.chmodSync?.(e,t.mode),t.mtimeMs!==void 0&&this.filesystem.utimesSync?.(e,new Date(t.mtimeMs),new Date(t.mtimeMs))}install(e,t,r,n){const i=this.without(e,t,r,n);i.push({owner:e,namespace:t,path:r,...n}),this.replaceHeld(i)}without(e,t,r,n){return this.held.flatMap(i=>i.owner===e&&i.namespace===t&&i.path===r&&Rh(i,n)?vh(i,n):[i])}replaceHeld(e){this.held.splice(0,this.held.length,...e)}}function Rh(s,e){return s.start<(e.end??Number.POSITIVE_INFINITY)&&e.start<(s.end??Number.POSITIVE_INFINITY)}function vh(s,e){const t=[];s.start<e.start&&t.push({...s,end:e.start});const r=s.end??Number.POSITIVE_INFINITY,n=e.end??Number.POSITIVE_INFINITY;return n<r&&t.push({...s,start:n,...s.end===void 0?{}:{end:s.end}}),t}const Th=9n,Fh=22n,Jo=new TextEncoder,Vr=new TextDecoder;class Ua extends Error{imports;constructor(e){super(`Unsupported WALI imports: ${e.join(", ")}`),this.imports=e,this.name="UnsupportedWaliImportError"}}function Bh(s,e){if(Xc(s))return()=>{throw new Ua([s])};let t=!1;return()=>{if(!t){t=!0;const r=`[WALI] ${s} is not implemented; answering -ENOSYS (38) as a kernel would.`;console.error(r),e?.(r)}return Kc}}class Zo extends Error{}class Qo extends Error{code;constructor(e){super(`WALI process exited with status ${e}`),this.code=e}}class Oh{async run(e,t={}){const r=t.filesystemPolicy===void 0?void 0:er(t.filesystemPolicy),n=r,i=await zc(e),o=Hc(i);Vc(o);const a=o.filter(g=>g.module==="wali"),c=[],f=[],d=typeof t.stdin=="object"&&t.stdin!==null&&"read"in t.stdin?t.stdin:new la(typeof t.stdin=="string"?Jo.encode(t.stdin):t.stdin??new Uint8Array),y=t.argv?.length?[...t.argv]:["wali-program"],p=y.map(g=>Jo.encode(`${g}\0`)),b=Uh(t.pid),S=performance.now(),I={...Qe.waited};let k=S;const x=new Map,L=t.signalState??Bc();let W,de,se,ie,D,v,U=!1;const X=uf(e,t.memory),Se=kl(),O=new Int32Array(new SharedArrayBuffer(3*Int32Array.BYTES_PER_ELEMENT));Atomics.store(O,1,-1);const fe=new rn(new ni),ue=t.descriptorTable?.sharedPipes??oh(fe),V=()=>{if(X)return X;const g=W?.exports.memory;if(!(g instanceof WebAssembly.Memory))throw new Error("WALI module does not export linear memory.");return g},me=()=>new DataView(V().buffer),T=()=>new Uint8Array(V().buffer),G=(g,N)=>(Er(V(),g,N),T().slice(g,g+N)),pe=(g,N)=>{Er(V(),g,N.byteLength),T().set(N,g)},ve=(g,N)=>{if(g===1)c.push(N),t.onStdout?.(N.slice());else if(g===2)f.push(N),t.onStderr?.(N.slice());else return-Th;return BigInt(N.byteLength)},Oe=(g,N="SYS_exit_group")=>{const P=`[WALI] ${N}(${g&255}) on the MAIN thread -- the process is ending here, not in a pthread. If the program did not ask to exit, this is the caller to find.`;throw console.error(P),t.onDiagnostic?.(P),new Qo(g&255)},Ie=g=>g<0||g>64?-22n:g===0?0n:g!==9&&(tt.mask&1n<<BigInt(g-1))!==0n?(new hs(L).raise(g),0n):((g===9||g===19?"default":new hs(L).raise(g))==="default"&&Fc(g)&&Oe(128+g,`signal ${g}`),0n),dt=t.executablePath??(y[0].startsWith("/")?y[0]:`/usr/bin/${y[0]}`),Te=a.some(g=>g.name==="__wasm_thread_spawn"),ut=a.some(g=>Yh.has(g.name))?t.browserProcess:void 0,nn=t.forkState?.allocator??ga(),mt=Vl(),K=t.descriptorTable?new Qs(t.descriptorTable):void 0;if(K&&X&&K.attachMemory(X),!K&&(Te||ut)&&t.filesystem?.toSnapshot&&t.filesystem.replaceSnapshot){if(!X)throw new Error("A threaded WALI module must import its shared process memory.");const g=t.store||t.layers?t.filesystem.toStoreOverlaySnapshot?.():void 0;U=!(!!ut?.fork&&WebAssembly.Module.exports(i).some(P=>P.name==="asyncify_start_unwind")||a.some(P=>P.name==="SYS_browser_spawn"||P.name==="SYS_browser_spawn_confined_v1")),v=await(U?tn.createInThread:tn.create)(g??t.filesystem.toSnapshot(),{...t.store?{store:t.store}:{},...t.layers?{layers:t.layers}:{},...t.privateRoots?{privateRoots:t.privateRoots}:{},memory:X,sharedPipes:ue,...n?{filesystemPolicy:n}:{},cwd:t.cwd??"/",executablePath:dt,pid:b,...t.filesystemUpdatePort?{updatePort:t.filesystemUpdatePort}:{},...t.fileLocks?{fileLocks:t.fileLocks}:{},...t.fileCoherence?{fileCoherence:t.fileCoherence}:{}})}if(n&&Te&&!v&&!K)throw new Error("Confined WALI threads require the shared filesystem owner.");const ke=K??v?.filesystem()??t.filesystem,he=()=>{v&&t.filesystem?.replaceSnapshot&&t.filesystem.replaceSnapshot(v.snapshot())},oe=new Kn({...K||v?{descriptorState:ue}:{descriptors:fe},...n?{filesystemPolicy:n}:{},...ke?{filesystem:ke}:{},cwd:t.cwd??"/",stdin:d,executablePath:dt,memory:V,emit:ve,stdioAliasRegistry:Se,pid:b,...!v&&t.fileLocks?{fileLocks:t.fileCoherence?new Ph(new Qe(t.fileLocks.channel),new Ih(t.fileCoherence),ke):new Qe(t.fileLocks.channel),lockOwner:t.fileLocks.owner}:{},...v?{specialDescriptorMinimum:1e4,descriptorMaximum:19999}:{},...!v&&!K&&t.privateRoots?{privateRoots:t.privateRoots.map(g=>`/${g.split("/").filter(Boolean).join("/")}`)}:{},...t.onDiagnostic?{onDiagnostic:t.onDiagnostic}:{}}),He=oe.imports(),et=oe.writeEnvironmentFile(t.env??{},b),ne=K??v?.filesystem(),Ye=ne?new Jf(ne,Se,ue,V):void 0,Me=new Gl(V,(g,N,P)=>Ye?.readForMapping(g,N,P)??oe.readForMapping(g,N,P),nn,g=>Ye?.mappingPath(g)??oe.mappingPath(g),(g,N,P)=>Ye?.writeForMapping(g,N,P)??oe.writeForMapping(g,N,P),mt,t.onDiagnostic),tt=new Oc(new hs(L),V,()=>W?.exports.__indirect_function_table,()=>Number(Me.imports().SYS_mmap(0,4096,3,34,-1,0)),Yc(()=>W?.exports,V)),be=t.threadPoolSize??18,sn=new sf(V,b,d,O,t.terminal,be,()=>Me.growAhead()),xr=U?v?.doorbell():void 0;Wi(xr?{pump:()=>v.pump(!0),doorbell:xr}:void 0);let on=!1;(t.network||ut)&&(se=await ai.create(t.network,ue,d instanceof Xs?d.buffer:void 0,Se.buffer,L));const Ee=se?new Hf(V,se.createChannel(),tt):void 0,nr=new lh(V,ue,ne?void 0:fe,ne),Qn=new df(V,oe,(g,N)=>nr.pollDescriptor(g,N)??(Ee?.isNetworkFd(g)?Ee.pollFd(g,N):void 0)),qn=new Df(V,oe),an=oe.imports(),sr=Ye?.imports(an)??an,Wt=nr.imports({...qn.imports(),...sr}),cn=Qn.imports(),$t=sn.imports(),zt=t.forkState?.parentPid??t.parentPid??1,De=new Int32Array(t.childPidAllocator??new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));t.childPidAllocator||Atomics.store(De,0,Math.max(b+1,1e4));const ir=g=>{if(!Number.isSafeInteger(g)||g<=0||g>=T().byteLength)throw new WebAssembly.RuntimeError("WALI process string pointer is out of bounds.");const N=T().indexOf(0,g);if(N<0||N-g>1024*1024)throw new WebAssembly.RuntimeError("WALI process string is not terminated.");return Vr.decode(T().slice(g,N))},or=g=>{if(g===0)return[];const N=[];for(let P=0;P<65536;P+=1){Er(V(),g+P*4,4);const $=me().getUint32(g+P*4,!0);if($===0)return N;N.push(ir($))}throw new WebAssembly.RuntimeError("WALI process string array is not terminated.")},yt=(g,N)=>{const P=nr.exportBrowserProcessPipe(g)??oe.exportBrowserProcessPipe(g);if(!(!P||P.role!==N))return La(P)},es=(g,N,P)=>{if(!Ee)return-10n;if(N!==0&&(N<0||N+4>T().byteLength))return-14n;const{result:$,process:z}=Ee.waitChild(g,P,tt.mask);if($<=0)return BigInt($);const te=Lf(z);if(te){v&&v.filesystem().importPeerPatch(te),t.filesystem&&bf(t.filesystem,te);const ye=t.filesystem?.toSnapshot?.();ye&&t.browserProcess?.restore?.(ye)}return N!==0&&me().setInt32(N,(Atomics.load(new Int32Array(z.control),1)&255)<<8,!0),BigInt($)},ln=(g,N)=>{const[P,$,z,te,ye,ae,xe]=g;if(!t.browserProcess)return-38;const kt=Pr(1,[ye,ae,xe]);if(kt!==void 0)return kt;N&&(N=er(N));const Mt=r;if(Mt){if(t.browserProcess.filesystemPolicyVersion!==1)return-95;N=Dc(Mt,N)}const xt=ir(Number(P)),_e=or(Number($));_e.length===0&&_e.push(xt);const lr={};for(const gt of or(Number(z))){const Lt=gt.indexOf("=");Lt>0&&(lr[gt.slice(0,Lt)]=gt.slice(Lt+1))}const fr=Atomics.add(De,0,1),hr={control:new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),response:new SharedArrayBuffer(Zs),snapshotApplied:!1},Fe=yt(Number(ye),"reader"),st=yt(Number(ae),"writer"),pt=yt(Number(xe),"writer");let Le;try{const gt=Ee.registerChild(fr,hr);if(gt<0)throw new Error(`Child registration failed: ${gt}`);return ne?.prepareSpawn(),he(),Le=ne?.copyForExecChannel([Number(ye),Number(ae),Number(xe)]),t.browserProcess.spawn({pid:fr,parentPid:b,childPidAllocator:De.buffer,...Le?{descriptorTable:Le}:{},...N?{filesystemPolicy:N}:{},executablePath:xt,argv:_e,env:lr,...Number(z)===0?{inheritEnvironment:!0}:{},cwd:Number(te)===0?oe.currentWorkingDirectory():ir(Number(te)),control:hr.control,response:hr.response,...Fe?{stdin:Fe}:{},...st?{stdout:st}:{},...pt?{stderr:pt}:{}}),fr}catch{return Le?.releasePort?.postMessage(!0),Ee.forgetChild(fr),Fe&&Zr(Fe),st&&Zr(st),pt&&Zr(pt),-5}};let ee=t.forkState?.asyncifyData??0,rt=!1,Ve=!!t.forkState,wt=0,Lr=!1;const Ge=(g,...N)=>{const P=W?.exports[g];if(typeof P!="function")throw new Error(`Missing ${g}; build the module with the Binaryen Asyncify stage.`);P(...N)},Ht=()=>ne?.currentWorkingDirectory()??oe.currentWorkingDirectory(),Pr=(g,N=[])=>{const P=W?.exports.__wali_private_tree_release;if(typeof P!="function")return;const $=Number(P(g,Number(N[0]??-1),Number(N[1]??-1),Number(N[2]??-1)));return $<0?$:void 0},ts=()=>{if(typeof W?.exports.asyncify_start_unwind!="function")return Lr||t.onDiagnostic?.("[WALI] SYS_fork answers -ENOSYS: module lacks the Binaryen Asyncify build stage (--asyncify --pass-arg=asyncify-imports@wali.SYS_fork)."),Lr=!0,-38n;if(Ve)return Ge("asyncify_stop_rewind"),Ve=!1,BigInt(wt);if(!t.browserProcess?.fork||!ne||!Ee)return-38n;const g=Pr(0);return g!==void 0?BigInt(g):(rt=!0,me().setUint32(ee,ee+8,!0),Ge("asyncify_start_unwind",ee),0n)},fn=(g,N,P)=>{if(!t.forkState||!t.browserProcess||!ne)return-38n;const $=Pr(0);if($!==void 0)return BigInt($);const z=ir(g),te=z.startsWith("/")?z:`${Ht()}/${z}`;if(!ke?.existsSync(te))return-2n;if(!ke.statSync(te).isFile())return-13n;const ye=P===0?{...t.env}:{};for(const xt of or(P)){const _e=xt.indexOf("=");_e>0&&(ye[xt.slice(0,_e)]=xt.slice(_e+1))}ne.prepareSpawn();const ae=ne.copyForExecChannel([0,1,2]),xe=yt(0,"reader"),kt=yt(1,"writer"),Mt=yt(2,"writer");throw t.browserProcess.spawn({pid:b,parentPid:zt,childPidAllocator:De.buffer,executablePath:te,argv:or(N),env:ye,cwd:Ht(),descriptorTable:ae,control:t.forkState.control,response:t.forkState.response,...n?{filesystemPolicy:n}:{},...xe?{stdin:xe}:{},...kt?{stdout:kt}:{},...Mt?{stderr:Mt}:{}}),new Zo},Ae={...{__init:()=>0,__deinit:()=>0,__proc_exit:g=>Oe(Number(g)),__cl_get_argc:()=>p.length,__cl_get_argv_len:g=>p[Number(g)]?.byteLength??0,__cl_copy_argv:(g,N)=>{const P=p[Number(N)];return P?(pe(Number(g),P),0):-1},__get_init_envfile:(g,N)=>et?oe.copyCString(Number(g),et,Number(N)):0,SYS_write:(g,N,P)=>ve(Number(g),G(Number(N),Number(P))),SYS_writev:(g,N,P)=>{let $=0n;for(let z=0;z<Number(P);z+=1){const te=Number(N)+z*8;Er(V(),te,8);const ye=me().getUint32(te,!0),ae=me().getUint32(te+4,!0),xe=ve(Number(g),G(ye,ae));if(xe<0n)return xe;$+=xe}return $},SYS_exit:g=>Oe(Number(g),"SYS_exit"),SYS_exit_group:g=>Oe(Number(g),"SYS_exit_group"),SYS_getpid:()=>BigInt(b),SYS_getppid:()=>BigInt(zt),SYS_gettid:()=>BigInt(b),SYS_getuid:()=>1000n,SYS_geteuid:()=>1000n,SYS_getgid:()=>1000n,SYS_getegid:()=>1000n,SYS_set_tid_address:()=>BigInt(b),SYS_sched_yield:()=>0n,SYS_sched_setscheduler:()=>0n,SYS_tkill:(g,N)=>Ie(Number(N)),...gh(V,()=>t.codec?.version===1,()=>D),SYS_browser_spawn:(...g)=>ln(g),SYS_browser_spawn_confined_v1:Uc(V,()=>t.browserProcess?.filesystemPolicyVersion===1,ln),SYS_fork:ts,SYS_execve:(g,N,P)=>fn(Number(g),Number(N),Number(P)),SYS_wait4:(g,N,P)=>{for(;;){const $=es(Number(g),Number(N),Number(P));if($!==-4n||!tt.deliver(!0))return $}},SYS_pidfd_open:()=>-38n,SYS_kill:(g,N)=>{if(Number(g)===b||Number(g)===0)return Ie(Number(N));const P=Math.abs(Number(g));return Ee?.hasChild(P)?(t.browserProcess?.kill?.(P,Number(N)),0n):-3n},SYS_setpgid:()=>0n,SYS_getpgid:g=>BigInt(Number(g)===0?b:Math.abs(Number(g))),__wasm_thread_spawn:(g,N)=>{const P=de?.spawn(Number(g),Number(N),tt.mask)??-11;if(P===-11&&!on){on=!0;const $=`[WALI] pthread_create answered -EAGAIN: all ${be} worker slots are in use. The pool is the process's whole thread budget and does not grow, so this is a QUOTA, not a cpu count -- sysconf(_SC_NPROCESSORS_ONLN) answers ${sn.reportedCpuCount()} here and a library that opens more than one pool from that number wants a multiple of it. Raise the program's requirements.workers, or state the library's concurrency.`;console.error($),t.onDiagnostic?.($)}return P},SYS_clock_gettime:(g,N)=>{const P=Wh(Number(g));return P===void 0?-Fh:($h(me(),Number(N),P),0n)},SYS_gettimeofday:g=>{if(Number(g)!==0){const N=BigInt(Math.floor(ge()*1e3));Er(V(),Number(g),16),me().setBigInt64(Number(g),N/1000000n,!0),me().setBigInt64(Number(g)+8,N%1000000n,!0)}return 0n},SYS_getrandom:(g,N)=>{const P=T().subarray(Number(g),Number(g)+Number(N));return Er(V(),Number(g),Number(N)),zh(P),BigInt(P.byteLength)},...Me.imports(),...$t,...tt.imports(),...Wt,...Ee?Ee.imports({...Wt,...cn}):cn,SYS_ioctl:(g,N,P)=>nr.ioctl(Number(g),Number(N))??oe.ioctl(Number(g),Number(N))??$t.SYS_ioctl(g,N,P),SYS_prctl:(g,...N)=>Number(g)!==ua?0n:ne?ne.syscall("SYS_prctl",[g,...N]):He.SYS_prctl(g,...N)},...t.imports};let Rr=0;if(Ae.SYS_select??=Ah(V,(g,N,P)=>Ae.SYS_poll(g,N,P),()=>Rr||=Number(Me.imports().SYS_mmap(0,Eh,3,34,-1,0))),U&&Ye)for(const[g,N]of Object.entries(Ye.ownedFileImports(Ae)))t.imports?.[g]||(Ae[g]=N);const ar={};for(const g of a){const N=Ae[g.name]??Bh(g.name,t.onDiagnostic),P=(!ne||U)&&Ch.has(g.name),$={calls:0,ms:0,sampled:P};x.set(g.name,$),ar[g.name]=(...z)=>{t.onSyscall?.(g.name,z),U&&v.pump();const te=!P||($.calls&qo-1)===0,ye=te?performance.now():0;try{const ae=N(...z);return t.onSyscallResult?.(g.name,ae),tt.deliver(ae===-4n),ae}finally{$.calls+=1,te&&($.ms+=(performance.now()-ye)*(P?qo:1))}}}const nt={...X?{memory:X}:{},_Unwind_Backtrace:()=>5,_Unwind_FindEnclosingFunction:g=>g,_Unwind_GetCFA:()=>0};if(W=await WebAssembly.instantiate(i,{wali:ar,env:nt}),t.forkState){T().set(new Uint8Array(t.forkState.memory));for(const[g,N]of Object.entries(t.forkState.globals)){const P=W.exports[g];if(!(P instanceof WebAssembly.Global))throw new Error(`Fork snapshot global ${g} is not exported.`);P.value=N}Me.restoreFork(t.forkState.mappings),$t.SYS_umask(t.forkState.umask)}else if(typeof W.exports.asyncify_start_unwind=="function"){const g=W.exports.__stack_pointer;if(!(g instanceof WebAssembly.Global))throw new Error("Asyncify fork requires --export=__stack_pointer at link.");const N=Number(g.value);if(N<=0)throw new Error("Asyncify fork requires a nonempty module stack.");ee=V().buffer.byteLength,V().grow(Math.ceil((N+8)/65536)),me().setUint32(ee+4,ee+8+N,!0)}if(t.codec?.version===1)try{ie=await ci.create(V()),D=new ph(ie.createChannel())}catch(g){console.warn("[WALI] the codec bridge is unavailable:",g),ie=void 0,D=void 0}if(Te){if(!X)throw new Error("A threaded WALI module must be linked with --import-memory so browser workers can share its process memory.");const g=t.memoryLayout??(e instanceof WebAssembly.Module?void 0:Xn(e instanceof Uint8Array?e:new Uint8Array(e)));de=new gf({module:i,memory:X,onDemand:g?.passiveData===!0,mmapCursor:Me.allocatorControl(),sharedMmapRegistry:mt,fatalState:O.buffer,imports:o,size:be,pid:b,executablePath:dt,argv:y,cwd:oe.currentWorkingDirectory(),stdioAliasRegistry:Se.buffer,sharedPipes:ue,signals:L,childPidAllocator:De.buffer,...r?{inheritedFilesystemPolicy:r}:{},...t.browserProcessPorts?{browserProcessPorts:t.browserProcessPorts}:{},...t.browserProcess?.filesystemPolicyVersion===1?{childFilesystemPolicyVersion:1}:{},...t.threadOutputPorts?{outputPorts:t.threadOutputPorts}:{},...d instanceof Xs?{stdin:d.buffer}:{},terminal:t.terminal===!0,onStdout:N=>{ve(1,N)},onStderr:N=>{ve(2,N)},...se?{network:se}:{},...ne?{filesystem:ne}:{},...ie?{codec:ie}:{}}),await de.initialize()}const hn=W.exports._start;if(typeof hn!="function")throw new Error("WALI module does not export _start.");U&&v?.closePort(),k=performance.now();let cr=0,It=!1;try{try{for(Ve&&Ge("asyncify_start_rewind",ee);hn(),!!rt;){Ge("asyncify_stop_unwind"),rt=!1;const g=t.memoryLayout??(e instanceof WebAssembly.Module?void 0:Xn(e instanceof Uint8Array?e:new Uint8Array(e)));if(!g)throw new Error("Fork requires the module's imported memory layout.");const N={};for(const[ye,ae]of Object.entries(W.exports))if(ae instanceof WebAssembly.Global)try{ae.value=ae.value,N[ye]=ae.value}catch{}const P=new SharedArrayBuffer(8*Int32Array.BYTES_PER_ELEMENT),$=new SharedArrayBuffer(Zs);wt=Atomics.add(De,0,1);const z=Ee.registerChild(wt,{control:P,response:$});if(z<0)throw new Error(`Fork child registration failed: ${z}`);const te=Number($t.SYS_umask(0));$t.SYS_umask(te),t.onDiagnostic?.(`[WALI] fork snapshot: ${V().buffer.byteLength} bytes, Asyncify stack ${me().getUint32(ee,!0)-ee-8} bytes.`),t.browserProcess.fork({module:i,memoryLayout:g,pid:wt,control:P,response:$,descriptorTable:ne.copyForForkChannel(),childPidAllocator:De.buffer,argv:y,env:{...t.env},cwd:Ht(),executablePath:dt,...n?{filesystemPolicy:n}:{},forkState:{control:P,response:$,memory:T().slice().buffer,globals:N,allocator:Me.allocatorControl().slice(0),mappings:Me.forkSnapshot(),asyncifyData:ee,umask:te,parentPid:b}}),Ve=!0,Ge("asyncify_start_rewind",ee)}}catch(g){if(g instanceof Zo)It=!0;else if(g instanceof Qo||g instanceof ba)cr=g.code;else{if(g instanceof Ua)throw g;{const N=g instanceof Error?g.stack??g.message:String(g),P=Atomics.load(O,1),$=de?.diagnostics(P>=0?P:void 0)??[];throw new Error(`${N}
12
12
  WALI stdout:
13
13
  ${Vr.decode(Tn(c))}
14
14
  WALI stderr: