@zip.js/zip.js 2.8.38 → 2.8.39
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.
- package/README.md +0 -12
- package/deno.json +1 -1
- package/dist/zip-core.js +2 -2
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +2 -2
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +4 -4
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +3 -3
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +4 -4
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +4 -4
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +3 -3
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +4 -4
- package/index-native.min.js +1 -1
- package/index.cjs +3 -3
- package/index.min.js +1 -1
- package/lib/core/io.js +1 -1
- package/lib/core/streams/zip-crypto-stream.js +1 -1
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/package.json +1 -1
package/dist/zip-fs-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:i,Math:a,Date:o,Map:c,Set:d,Response:l,URL:u,Error:w,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:g,TextEncoder:S,TextDecoder:x,document:b,crypto:z,btoa:F,TransformStream:R,ReadableStream:E,WritableStream:D,CompressionStream:A,DecompressionStream:T,navigator:v,Worker:k}="undefined"!=typeof globalThis?globalThis:this||self,C=4294967295,U=65535,I=255,O=67324752,M=134695760,N=M,_=33639248,P=101010256,L=101075792,W=117853008,Z=22,B=20,V=21589,H=2048,j=16384,q=2048,K=1024,Y="/",G=30,X=new o(2107,11,31,23,59,58),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function",re=new f;let ne=2;try{typeof v!=ee&&v.hardwareConcurrency&&(ne=v.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:ne,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,workerStartupTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,transferStreams:!0,CompressionStream:typeof A!=ee&&A,DecompressionStream:typeof T!=ee&&T};function ie(){return se}function ae(e){return a.max(e.chunkSize,64)}function oe(e,t){const r=new f(e.length+t.length);return r.set(e),r.set(t,e.length),r}function ce(e){return e.byteOffset||e.byteLength!=e.buffer.byteLength?new f(e):e}function de(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const le="HTTP error ",ue="HTTP Range not supported",we="HTTP resource changed",fe="Content-Range",pe="Range",he="GET",me="bytes",ye=16777216,ge="writable",Se=Symbol();class xe{constructor(){this.size=0}init(){this.initialized=!0}}class be extends xe{get readable(){return this.createReadable()}createReadable({offset:e=0,size:t,chunkSize:r=ae(ie())}={}){const n=this;let s=0;return new E({async pull(i){const o=t===Q?r:a.min(r,t-s),c=await rt(n,e+s,o);i.enqueue(c),s+r>t||t===Q&&!c.length&&o?i.close():s+=r}})}}class ze extends xe{constructor(){super();const e=this,t=new D({write(t){if(!e.initialized)throw new w("Writer not initialized");return e.writeUint8Array(ce(t))}});r.defineProperty(e,ge,{get:()=>t})}writeUint8Array(){}}class Fe extends be{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,o:n,size:a.floor(.75*(t-n))})}readUint8Array(e,t){const{o:r,dataURI:n}=this,s=new f(t),i=4*a.floor(e/3),o=atob(n.substring(i+r,4*a.ceil((e+t)/3)+r)),c=e-3*a.floor(i/4);let d=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),d++;return d<s.length?s.subarray(0,d):s}}class Re extends ze{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const i=t.pending.length;for(t.pending="",r=0;r<3*a.floor((i+e.length)/3)-i;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=F(s):t.pending=s+t.pending}getData(){return this.data+F(this.pending)}}let Ee,De;class Ae extends be{constructor(e){super(),r.assign(this,{blob:e,size:e.size}),De||(De=(async()=>{try{const e=new y([new f(3)]).slice(1,2).stream().getReader();let t=0,r=await e.read();for(;!r.done;)t+=r.value.length,r=await e.read();Ee=1==t}catch{Ee=!1}})())}createReadable(e){const{blob:t,size:r}=this,{offset:n=0,size:s=r-n}=e||{};return n||r>s?Ee?t.slice(n,n+s).stream():super.createReadable(e):t.stream()}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let i=await s.arrayBuffer();return i.byteLength>t&&(i=i.slice(e,n)),new f(i)}}class Te extends xe{constructor(e){super();const t=this,n=new R,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(t,ge,{get:()=>n.writable}),t.blob=new l(n.readable,{headers:s}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class ve extends Ae{constructor(e){super(new y([e],{type:"text/plain"}))}}class ke extends Te{constructor(e){super(e),r.assign(this,{encoding:e,l:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,l:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new g((s,i)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>i(t.error)}),t.readAsText(n,e)})}}}class Ce extends be{constructor(e,t){super(),Ie(this,e,t)}async init(){await Oe(this,qe,Be),super.init()}createReadable(e){const t=this,{useRangeHeader:r,forceRangeRequests:n,size:i}=t;if((r||n)&&i!==Q){const{offset:r=0,size:n=i-r}=e||{};if(n>0&&i>r)return((e,t,r)=>{let n,i=t,o=0,c=r;return new E({start:()=>d(),async pull(e){n||await d();const{value:t,done:r}=await n.read();if(r)throw new w(ue);const s=t.length>o?t.subarray(0,o):t;o-=s.length,c-=s.length,s.length&&e.enqueue(s),o||(await(async()=>{const e=n;n=Q,await e.cancel()})(),c||e.close())},cancel:e=>n&&n.cancel(e)});async function d(){const t=a.min(e.maximumRangeSize,c),r=await qe(he,e,We(e,i,t));if(206!=r.status)throw new w(ue);const d=r.headers.get(fe);if(d){const e=s(d.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=i)throw new w(ue)}Le(e,r),Pe(e,r),i+=t,o=t,n=r.body.getReader()}})(t,r,a.min(n,i-r))}return super.createReadable(e)}readUint8Array(e,t){return Me(this,e,t,qe,Be)}}class Ue extends be{constructor(e,t){super(),Ie(this,e,t)}async init(){await Oe(this,Ke,Ve),super.init()}readUint8Array(e,t){return Me(this,e,t,Ke,Ve)}}function Ie(e,t,n){const{preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o,checkResourceChanges:c=!0,maximumRangeSize:d=ye,fetch:l}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.checkResourceChanges,delete n.maximumRangeSize,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o,checkResourceChanges:c,maximumRangeSize:d,fetch:l})}async function Oe(e,t,r){const{url:n,preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o}=e;if((e=>{const{baseURI:t}=ie(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(n)&&(i||a)&&(void 0===s||s)){const n=await t(he,e,We(e,o?-22:void 0)),s=n.headers.get("Accept-Ranges");if(!(a||s&&s.toLowerCase()==me))throw new w(ue);{if(o){const t=new f(await n.arrayBuffer());206==n.status&&t.length==Z&&(e.h=t)}Pe(e,n);const s=Ne(n);s===Q?await je(e,t,r):e.size=s}}else await je(e,t,r)}async function Me(e,t,r,n,i){const{useRangeHeader:a,forceRangeRequests:o,h:c,size:d,options:l}=e;if(a||o){if(c&&t==d-Z&&r==Z)return c;if(d>t&&0!==r){t+r>d&&(r=d-t);const i=await n(he,e,We(e,t,r));if(206!=i.status)throw new w(ue);const a=i.headers.get(fe);if(a){const e=s(a.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new w(ue)}Le(e,i),Pe(e,i);const o=new f(await i.arrayBuffer());if(o.length!=r)throw new w(ue);return o}return re}{const{data:n}=e;return n||await i(e,l),e.data.subarray(t,t+r)}}function Ne(e){const t=e.headers.get(fe);if(t){const e=t.trim().split(/\s*\/\s*/)[1];if(e&&"*"!=e){const t=s(e);if(!s.isNaN(t))return t}}}function _e({headers:e}){return{m:e.get("Etag")||Q,lastModified:e.get("Last-Modified")||Q}}function Pe(e,t){const{checkResourceChanges:r,S:n}=e;r&&!n&&206==t.status&&(e.S=_e(t))}function Le(e,t){const{checkResourceChanges:n,S:s,size:i}=e;if(n){const e=Ne(t);if(e!==Q&&i!==Q&&e!=i)throw new w(we);if(s){const e=_e(t);if(r.entries(s).some(([t,r])=>r!==Q&&e[t]!==Q&&r!=e[t]))throw new w(we)}}}function We(e,t=0,n=1){return r.assign({},Ze(e),{[pe]:me+"="+(0>t?t:t+"-"+(t+n-1))})}function Ze({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Be(e){await He(e,qe)}async function Ve(e){await He(e,Ke)}async function He(e,t){const r=await t(he,e,Ze(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function je(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,Ze(e)),i=n.headers.get("Content-Length");i&&!n.headers.get("Content-Encoding")?e.size=s(i):await r(e,e.options)}}async function qe(e,{fetch:t=fetch,options:n,url:s},i){const a=await t(s,r.assign({},n,{method:e,headers:i}));if(400>a.status)return a;throw 416==a.status?new w(ue):new w(le+(a.statusText||a.status))}function Ke(e,{url:t},n){return new g((s,i)=>{const a=new XMLHttpRequest;if(a.addEventListener("load",()=>{if(400>a.status){const e=[];a.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:a.status,arrayBuffer:()=>a.response,headers:new c(e)})}else i(416==a.status?new w(ue):new w(le+(a.statusText||a.status)))},!1),a.addEventListener("error",e=>i(e.detail?e.detail.error:new w("Network error")),!1),a.open(e,t),n)for(const e of r.entries(n))a.setRequestHeader(e[0],e[1]);a.responseType="arraybuffer",a.send()})}class Ye extends be{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new Ue(e,t):new Ce(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}createReadable(e){return this.reader.createReadable(e)}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Ge extends be{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Xe extends ze{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Je extends be{constructor(e){super(),this.F=e}async init(){const e=this,{F:t}=e;e.R=0,await g.all(t.map(e=>tt(e))),e.D=t.map(t=>{const r=e.size;return e.size+=t.size,r}),super.init()}A(e){const{D:t,size:r}=this,n=t.at(e);return n===Q?r:n}async readUint8Array(e,t){const r=this,{F:n}=this;let s,i=0,o=e;for(;n[i]&&o>=n[i].size;)o-=n[i].size,i++;const c=n[i];if(c){const n=c.size;if(o+t>n){const i=n-o;s=oe(await rt(c,o,i),await r.readUint8Array(e+i,t-i))}else s=await rt(c,o,t)}else s=re;return r.R=a.max(i,r.R),s}}class Qe extends xe{constructor(e,t=4294967295){super();const n=this;let s,i,a;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){if(t===Se)return void(a&&await d());const{availableSize:r}=n;if(a)t.length<r?await c(t):(await c(t.subarray(0,r)),await d(),t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new w("Writer iterator completed too soon");s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await tt(s),i=r.writable,a=i.getWriter(),await this.write(t)}},async close(){a&&(await a.ready,await l())},async abort(e){a&&await a.abort(e)}});async function c(e){const t=e.length;t&&(await a.ready,await a.write(e),s.size+=t,n.availableSize-=t)}async function d(){await l(),n.diskOffset+=s.size,n.diskNumber++,a=null,n.availableSize=n.maxSize}async function l(){await a.close()}r.defineProperty(n,ge,{get:()=>o})}async closeDisk(){const e=this.writable.getWriter();try{await e.ready,await e.write(Se)}finally{e.releaseLock()}}}class $e{constructor(e){return t.isArray(e)&&(e=new Je(e)),e instanceof E&&(e={readable:e}),e}}class et{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new Qe(e)),e instanceof D&&(e={writable:e}),e.size===Q&&(e.size=0),e}}async function tt(e,t){if(!e.init||e.initialized)return g.resolve();await e.init(t)}function rt(e,t,r){return e.readUint8Array(t,r)}const nt=new c,st=new c;function it(e){return nt.get(e)}function at(e){return st.get(e)}const ot=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;ot[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=ot[t-1][e];ot[t][e]=r>>>8^ot[0][255&r]}const[ct,dt,lt,ut,wt,ft,pt,ht]=ot;class mt{constructor(e){this.T=e||-1}append(e){let t=0|this.T;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),i=r-8;for(;i>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=ht[255&e]^pt[e>>>8&255]^ft[e>>>16&255]^wt[e>>>24&255]^ut[255&r]^lt[r>>>8&255]^dt[r>>>16&255]^ct[r>>>24&255]}}for(;r>n;n++)t=t>>>8^ct[255&(t^e[n])];this.T=t}get(){return~this.T}}class yt extends R{constructor(){let e;const t=new mt;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function gt(e){if(typeof S==ee){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new S).encode(e)}const St={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=St.v(r);return 32===n?e.concat(t):St.C(t,n,0|r,e.slice(0,e.length-1))},U(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+St.v(r)},I(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,a.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=St.O(t,e[r-1]&2147483648>>t-1,1)),e},O:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,v:e=>a.round(e/1099511627776)||32,C(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=St.v(s);return n.push(St.O(t+i&31,t+i>32?r:n.pop(),1)),n}},xt={bytes:{M(e){const t=St.U(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},N(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(St.O(8*(3&r),n)),t}}},bt=class{constructor(e){const t=this;t.blockSize=512,t._=[1732584193,4023233417,2562383102,271733878,3285377520],t.P=[1518500249,1859775393,2400959708,3395469782],e?(t.L=e.L.slice(0),t.W=e.W.slice(0),t.Z=e.Z):t.reset()}reset(){const e=this;return e.L=e._.slice(0),e.W=[],e.Z=0,e}update(e){const t=this;"string"==typeof e&&(e=xt.B.N(e));const r=t.W=St.concat(t.W,e),n=t.Z,s=t.Z=n+St.U(e);if(s>9007199254740991)throw new w("Cannot hash more than 2^53 - 1 bits");const i=new h(r);let a=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.V(i.subarray(16*a,16*(a+1))),a+=1;return r.splice(0,16*a),t}H(){const e=this;let t=e.W;const r=e.L;t=St.concat(t,[St.O(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(a.floor(e.Z/4294967296)),t.push(0|e.Z);t.length;)e.V(t.splice(0,16));return e.reset(),r}j(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}K(e,t){return t<<e|t>>>32-e}V(e){const r=this,n=r.L,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let i=n[0],o=n[1],c=n[2],d=n[3],l=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r.K(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r.K(5,i)+r.j(e,o,c,d)+l+s[e]+r.P[a.floor(e/20)]|0;l=d,d=c,c=r.K(30,o),o=i,i=t}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+d|0,n[4]=n[4]+l|0}},zt={importKey:e=>new zt.Y(xt.bytes.N(e)),G(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new w("invalid params to pbkdf2");const s=1+(n>>5)<<2;let i,a,o,c,d;const l=new ArrayBuffer(s),u=new m(l);let f=0;const p=St;for(t=xt.bytes.N(t),d=1;(s||1)>f;d++){for(i=a=e.encrypt(p.concat(t,[d])),o=1;r>o;o++)for(a=e.encrypt(a),c=0;c<a.length;c++)i[c]^=a[c];for(o=0;(s||1)>f&&o<i.length;o++)u.setInt32(f,i[o]),f+=4}return l.slice(0,n/8)},Y:class{constructor(e){const t=this,r=t.X=bt,n=[[],[]];t.J=[new r,new r];const s=t.J[0].blockSize/32;e.length>s&&(e=(new r).update(e).H());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.J[0].update(n[0]),t.J[1].update(n[1]),t.$=new r(t.J[0])}reset(){const e=this;e.$=new e.X(e.J[0]),e.ee=!1}update(e){this.ee=!0,this.$.update(e)}digest(){const e=this,t=e.$.H(),r=new e.X(e.J[1]).update(t).H();return e.reset(),r}encrypt(e){if(this.ee)throw new w("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Ft=typeof z!=ee&&typeof z.getRandomValues==te,Rt="Invalid password",Et="Invalid signature",Dt="zipjs-abort-check-password";function At(e){if(Ft)return z.getRandomValues(e);throw new w("Crypto API not supported")}const Tt=16,vt={name:"PBKDF2"},kt=r.assign({hash:{name:"HMAC"}},vt),Ct=r.assign({iterations:1e3,hash:{name:"SHA-1"}},vt),Ut=["deriveBits"],It=[8,12,16],Ot=[16,24,32],Mt=10,Nt=[0,0,0,0],_t=typeof z!=ee,Pt=_t&&z.subtle,Lt=_t&&typeof Pt!=ee,Wt=xt.bytes,Zt=class{constructor(e){const t=this;t.te=[[[],[],[],[],[]],[[],[],[],[],[]]],t.te[0][0][0]||t.re();const r=t.te[0][4],n=t.te[1],s=e.length;let i,a,o,c=1;if(4!==s&&6!==s&&8!==s)throw new w("invalid aes key size");for(t.P=[a=e.slice(0),o=[]],i=s;4*s+28>i;i++){let e=a[i-1];(i%s===0||8===s&&i%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],i%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),a[i]=a[i-s]^e}for(let e=0;i;e++,i--){const t=a[3&e?i:i-4];o[e]=4>=i||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.ne(e,0)}decrypt(e){return this.ne(e,1)}re(){const e=this.te[0],t=this.te[1],r=e[4],n=t[4],s=[],i=[];let a,o,c,d;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=a=0;!r[l];l^=o||1,a=i[a]||1){let i=a^a<<1^a<<2^a<<3^a<<4;i=i>>8^255&i^99,r[l]=i,n[i]=l,d=s[c=s[o=s[l]]];let u=16843009*d^65537*c^257*o^16843008*l,w=257*s[i]^16843008*i;for(let r=0;4>r;r++)e[r][l]=w=w<<24^w>>>8,t[r][i]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}ne(e,t){if(4!==e.length)throw new w("invalid aes block size");const r=this.P[t],n=r.length/4-2,s=[0,0,0,0],i=this.te[t],a=i[0],o=i[1],c=i[2],d=i[3],l=i[4];let u,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],g=e[t?1:3]^r[3],S=4;for(let e=0;n>e;e++)u=a[h>>>24]^o[m>>16&255]^c[y>>8&255]^d[255&g]^r[S],f=a[m>>>24]^o[y>>16&255]^c[g>>8&255]^d[255&h]^r[S+1],p=a[y>>>24]^o[g>>16&255]^c[h>>8&255]^d[255&m]^r[S+2],g=a[g>>>24]^o[h>>16&255]^c[m>>8&255]^d[255&y]^r[S+3],S+=4,h=u,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=l[h>>>24]<<24^l[m>>16&255]<<16^l[y>>8&255]<<8^l[255&g]^r[S++],u=h,h=m,m=y,y=g,g=u;return s}},Bt=class{constructor(e,t){this.se=e,this.ie=t,this.ae=t}reset(){this.ae=this.ie}update(e){return this.oe(this.se,e,this.ae)}ce(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}de(e){0===(e[0]=this.ce(e[0]))&&(e[1]=this.ce(e[1]))}oe(e,t,r){let n;if(!(n=t.length))return[];const s=St.U(t);for(let s=0;n>s;s+=4){this.de(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return St.I(t,s)}},Vt=zt.Y;let Ht=_t&&Lt&&typeof Pt.importKey==te,jt=_t&&Lt&&typeof Pt.deriveBits==te;class qt extends R{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n}){super({start(){Yt(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:i,le:a,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await Xt(e,t,r,Qt(n,0,It[t])),i=Qt(n,It[t]);if(s[0]!=i[0]||s[1]!=i[1])throw new w(Rt)})(r,i,s,Qt(e,0,It[i]+2)),e=Qt(e,It[i]+2),n?t.error(new w(Dt)):a()):await o;const c=new f(e.length-Mt-(e.length-Mt)%Tt);t.enqueue(Gt(r,e,c,0,Mt,!0))},async flush(e){const{ue:t,we:r,pending:n,ready:s}=this;if(r&&t){await s;const i=Qt(n,0,n.length-Mt),a=Qt(n,n.length-Mt);let o=re;if(i.length){const e=er(Wt,i);r.update(e);const n=t.update(e);o=$t(Wt,n)}const c=Qt($t(Wt,r.digest()),0,Mt);let d=n.length<Mt?1:0;for(let e=0;Mt>e;e++)d|=c[e]^a[e];if(d)throw new w(Et);e.enqueue(o)}}})}}class Kt extends R{constructor({password:e,rawPassword:t,encryptionStrength:r}){let n;super({start(){Yt(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,le:i,ready:a}=r;let o=re;n?(o=await(async(e,t,r)=>{const n=At(new f(It[t]));return oe(n,await Xt(e,t,r,n))})(r,s,n),i()):await a;const c=new f(o.length+e.length-e.length%Tt);c.set(o,0),t.enqueue(Gt(r,e,c,o.length,0))},async flush(e){const{ue:t,we:r,pending:s,ready:i}=this;if(r&&t){await i;let a=re;if(s.length){const e=t.update(er(Wt,s));r.update(e),a=$t(Wt,e)}n.signature=$t(Wt,r.digest()).slice(0,Mt),e.enqueue(oe(a,n.signature))}}}),n=this}}function Yt(e,t,n,s){r.assign(e,{ready:new g(t=>e.le=t),password:Jt(t,n),strength:s-1,pending:re})}function Gt(e,t,r,n,s,i){const{ue:a,we:o,pending:c}=e;c.length&&(t=oe(c,t));const d=t.length-s;let l;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(d-d%Tt)),l=0;d-Tt>=l;l+=Tt){const e=er(Wt,Qt(t,l,l+Tt));i&&o.update(e);const s=a.update(e);i||o.update(s),r.set($t(Wt,s),l+n)}return e.pending=Qt(t,l),r}async function Xt(e,n,s,i){e.password=null;const a=await(async(e,t,r,n,s)=>{if(!Ht)return zt.importKey(t);try{return await Pt.importKey("raw",t,r,!1,s)}catch{return Ht=!1,zt.importKey(t)}})(0,s,kt,0,Ut),o=await(async(e,t,r)=>{if(!jt)return zt.G(t,e.salt,Ct.iterations,r);try{return await Pt.deriveBits(e,t,r)}catch{return jt=!1,zt.G(t,e.salt,Ct.iterations,r)}})(r.assign({salt:i},Ct),a,8*(2*Ot[n]+2)),c=new f(o),d=er(Wt,Qt(c,0,Ot[n])),l=er(Wt,Qt(c,Ot[n],2*Ot[n])),u=Qt(c,2*Ot[n]);return r.assign(e,{keys:{key:d,fe:l,passwordVerification:u},ue:new Bt(new Zt(d),t.from(Nt)),we:new Vt(l)}),u}function Jt(e,t){return t===Q?gt(e):t}function Qt(e,t,r){return e.subarray(t,r)}function $t(e,t){return e.M(t)}function er(e,t){return e.N(t)}class tr extends R{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){nr(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=sr(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t.at(-1)^r.passwordVerification))throw new w(Rt);e=e.subarray(12)}n?t.error(new w(Dt)):t.enqueue(sr(r,e))}})}}class rr extends R{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){nr(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=At(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(ir(r,t),0),s=12}else n=new f(e.length),s=0;n.set(ir(r,e),s),t.enqueue(n)}})}}function nr(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,pe:new mt(s[0]),he:new mt(s[2])}),n)for(let t=0;t<n.length;t++)ar(e,n[t]);else for(let r=0;r<t.length;r++)ar(e,t.charCodeAt(r))})(e,t,n)}function sr(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=or(e)^t[n],ar(e,r[n]);return r}function ir(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=or(e)^t[n],ar(e,t[n]);return r}function ar(e,t){let[,r]=e.keys;e.pe.append([t]);const n=~e.pe.get();r=dr(a.imul(dr(r+cr(n)),134775813)+1),e.he.append([r>>>24]);const s=~e.he.get();e.keys=[n,r,s]}function or(e){const t=2|e.keys[2];return cr(a.imul(t,1^t)>>>8)}function cr(e){return 255&e}function dr(e){return 4294967295&e}const lr="Invalid uncompressed size",ur="Invalid compressed data",wr="deflate-raw";class fr extends R{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:n}){super({});const{compressed:s,encrypted:i,useCompressionStream:a,zipCrypto:o,signed:c,level:d,deflate64:l,format:u}=e,w=this;let f,p,h,y=super.readable;const g=u&&at(u),S=c&&s&&!l&&!g&&(!i||o)&&!(!a||!n);i&&!o||!c||S||(f=new yt,y=xr(y,f)),s&&(g?y=br(y,gr(g.CompressionStream,u,{level:d,chunkSize:t})):S?(h=new pr,y=br(y,new n("gzip")),y=xr(y,h)):y=Sr(y,a,{level:d,chunkSize:t},n,r)),i&&(o?y=xr(y,new rr(e)):(p=new Kt(e),y=xr(y,p))),yr(w,y,()=>{let e;i&&!o&&(e=p.signature),i&&!o||!c||(e=S?h.signature:new m(f.value.buffer).getUint32(0)),w.signature=e})}}class pr extends R{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=a.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s)return void(r=oe(r,e));const i=s-8,o=a.min(i,r.length);n.enqueue(oe(r.subarray(0,o),e.subarray(0,i-o))),r=oe(r.subarray(o),e.subarray(i-o))},flush(){const t=de(r);e.signature=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class hr extends R{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:i,signed:a,signature:o,compressed:c,useCompressionStream:d,deflate64:l,format:u}=e;let f,p,h=super.readable;if(i&&(s?h=xr(h,new tr(e)):(p=new qt(e),h=xr(h,p))),c){const e=u&&at(u);h=e?br(h,gr(e.DecompressionStream,u,{chunkSize:t})):Sr(h,d,{chunkSize:t,deflate64:l},n,r),h=(e=>{const t=e.getReader();return new E({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new w(ur);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(h)}i&&!s||!a||(f=new yt,h=xr(h,f)),yr(this,h,()=>{if((!i||s)&&a){const e=new m(f.value.buffer);if(o!=e.getUint32(0,!1))throw new w(Et)}})}}const mr=new c;function yr(e,t,n){t=xr(t,new R({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function gr(e,t,r){if(!e)throw new w("Compression method not supported");return new e(t,r)}function Sr(e,t,r,n,s){const i=t&&n?n:s||n,a=r.deflate64?"deflate64-raw":wr;let o;try{o=new i(a,r)}catch(e){if(!t||!s||i==s)throw e;o=new s(a,r)}return br(e,o)}function xr(e,t){return e.pipeThrough(t)}function br(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const zr="data",Fr="deflate",Rr="inflate";class Er extends R{constructor(e,t){super({});const n=this,{codecType:s}=e;let i;s.startsWith(Fr)?i=fr:s.startsWith(Rr)&&(i=hr),n.outputSize=0;let a=0;const o=new i(e,t),c=super.readable,d=new R({transform(e,t){e&&e.length&&(a+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:a})}}),l=new R({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==Q&&n.outputSize>e.outputSize))throw new w(lr)},flush(){const{signature:e}=o;r.assign(n,{signature:e,inputSize:a})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(d).pipeThrough(o).pipeThrough(l)})}}class Dr extends R{constructor(e){const t=[];let r=0;function n(){const n=new f(e);let s=0;for(;e>s;){const r=t[0],i=e-s;r.length>i?(n.set(r.subarray(0,i),s),t[0]=r.subarray(i),s+=i):(n.set(r,s),s+=r.length,t.shift())}return r-=e,n}s.isFinite(e)&&e>=1||(e=65536),super({transform(s,i){for(t.push(s),r+=s.length;r>e;)i.enqueue(n())},flush(e){r&&e.enqueue(((e,t)=>{const r=new f(t);let n=0;for(const t of e)r.set(t,n),n+=t.length;return r})(t,r))}})}}const Ar={type:"module"},Tr="error";let vr,kr,Cr,Ur,Ir=!0;try{Ir=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class Or{constructor(e,{readable:t,writable:n},{options:s,config:i,me:a,useWebWorkers:o,transferStreams:c,workerURI:d},l){const{signal:u}=a;return r.assign(e,{ye:!0,ge:(e.ge||0)+1,readable:t.pipeThrough(new Dr(ae(i))).pipeThrough(new Mr(a),{signal:u}),writable:n,options:r.assign({},s),workerURI:d,transferStreams:c,terminate:()=>new g(t=>{const{Se:r,ye:n}=e;r?(n?e.xe=t:(r.terminate(),t()),e.be=null):t()}),ze(){if(e.ye){const{xe:t}=e;t&&(e.xe=null,e.Fe=!0,e.Se.terminate(),t()),e.ye=!1,l(e)}}}),vr===Q&&(vr=typeof k!=ee),(o&&vr?Pr:_r)(e,i)}}class Mr extends R{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await Nr(e,r)},async transform(e,n){s+=e.length,t&&await Nr(t,s,r),n.enqueue(e)},async flush(){n&&await Nr(n,s)}})}}async function Nr(e,...t){try{await e(...t)}catch{}}function _r(e,t){return{run:()=>Lr(e,t)}}function Pr(e,t){const{baseURI:n,chunkSize:i,workerStartupTimeout:a}=t;let{wasmURI:o}=t;if(!e.be){let c;typeof o==te&&(o=o());try{c=Zr(e.workerURI,n,e)}catch{return vr=!1,_r(e,t)}r.assign(e,{Se:c,Re:!1,Fe:!1,be:{run:async()=>{try{return await(async(e,t)=>{let n,i;const a=new g((e,t)=>{n=e,i=t});r.assign(e,{reader:null,writer:null,Ee:n,De:i,result:a});const{readable:o,options:c}=e,{writable:d,closed:l,Ae:u}=(e=>{const t=new AbortController,{writable:r,readable:n}=new R,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,Ae:()=>t.abort()}})(e.writable);let f;try{f=Hr({type:"start",options:c,config:t,readable:o,writable:d},e)}catch(t){u();try{await l}catch{}throw e.ze(),t}f||r.assign(e,{reader:o.getReader(),writer:d.getWriter()});const{workerStartupTimeout:p}=t;e.Re||!s.isFinite(p)||0>p||(e.Te=setTimeout(()=>(e=>{if(e.Te=null,e.Re)return;const{De:t,writer:r}=e;if(Wr(e),e.Se=null,t){const e=new w("Worker startup timeout");e.ve=!0,t(e),r&&r.releaseLock()}})(e),p));try{const e=await a;return await h(),await l,e}catch(e){await h(),u();try{await l}catch{}throw e}async function h(){if(!f&&!d.locked)try{await d.getWriter().close()}catch{}}})(e,{chunkSize:i,wasmURI:o,baseURI:n,workerStartupTimeout:a})}catch(r){if(r&&r.ve){vr=!1;const{reader:r}=e;return r&&r.releaseLock(),e.reader=null,e.writer=null,Lr(e,t)}throw r}}}})}return e.be}async function Lr({options:e,readable:t,writable:r,ze:n},s){let i;try{if(e.compressed&&!e.format){const t=e.codecType.startsWith(Fr),r=t?s.CompressionStreamZlib:s.DecompressionStreamZlib,n=t?s.CompressionStream:s.DecompressionStream;if(e.useCompressionStream){if(r&&r.ke&&!(e=>{if(!e)return!1;let t=mr.get(e);if(t===Q){try{new e(wr),t=!0}catch{t=!1}mr.set(e,t)}return t})(n))try{await void 0}catch{}}else try{await void 0}catch{r&&!r.ke||(e.useCompressionStream=!0)}}i=new Er(e,s),await t.pipeThrough(i).pipeThrough(new Dr(ae(s))).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:n,inputSize:a,outputSize:o}=i;return{signature:n,inputSize:a,outputSize:o}}catch(e){throw i&&(e.outputSize=i.outputSize),e}finally{n()}}function Wr(e){const{Se:t}=e;if(t)try{t.terminate()}catch{}e.be=null}function Zr(e,t,n,s,i=!0){let a,o,c;if(Cr===Q||kr!==e){const r=typeof e==te;o=r?e(i):e;const d=o.startsWith("data:"),l=o.startsWith("blob:");if(d||l){s===Q&&(s=!1),s&&(c=Ar);try{a=new k(o,c)}catch(i){if(l)try{u.revokeObjectURL(o)}catch{}if(r&&l)return Zr(e,t,n,s,!1);if(s)throw i;return Zr(e,t,n,!0,!1)}}else{s===Q&&(s=!0),s&&(c=Ar);try{o=new u(o,t)}catch{}try{a=new k(o,c)}catch(r){if(s)throw r;return Zr(e,t,n,!1,i)}}kr=e,Cr=o,Ur=c}else a=new k(Cr,Ur);return a.addEventListener("message",e=>{n.Re=!0,Br(n),(async({data:e},t)=>{const{type:n,value:s,messageId:i,result:a,error:o}=e,{reader:c,writer:d,Ee:l,De:u,ze:p,ge:h}=t,m=()=>t.ge!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:i}=o,a=new w(e);r.assign(a,{stack:t,code:n,name:s,outputSize:i}),y(a)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||Hr({type:zr,value:e,done:r,messageId:i},t)}n==zr&&(await d.ready,await d.write(new f(s)),m()||Hr({type:"ack",messageId:i},t)),"close"==n&&y(null,a)}}catch(o){m()||(Wr(t),y(o))}function y(e,t){m()||(e?u(e):l(t),d&&d.releaseLock(),p())}})(e,n)}),a.addEventListener(Tr,e=>Vr(e,n)),a.addEventListener("messageerror",e=>Vr(e,n)),a}function Br(e){const{Te:t}=e;t&&(clearTimeout(t),e.Te=null)}function Vr(e,t){e.preventDefault&&e.preventDefault(),Br(t);const{Re:n,De:s,writer:i,ze:a}=t;if(Wr(t),n||(t.Se=null),s){let t=e.error||new w(e.message||Tr);n||(t=r.assign(new w(t.message||Tr),{ve:!0})),s(t),i&&i.releaseLock(),n&&a()}}function Hr(e,{Se:t,writer:r,transferStreams:n,Re:s}){try{const{value:r,readable:i,writable:a}=e,o=[];if(r&&(e.value=ce(r),o.push(e.value.buffer)),n&&Ir&&s?(i&&o.push(i),a&&o.push(a)):e.readable=e.writable=null,o.length)try{return t.postMessage(e,o),!0}catch{Ir=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let jr=[];const qr=[];let Kr,Yr,Gr=0;async function Xr(e,t){const{options:r,config:n}=t,{transferStreams:i,useWebWorkers:a,useCompressionStream:o,compressed:c,signed:d,encrypted:l,format:f,codecURI:p}=r,{workerURI:h,maxWorkers:m}=n;f&&(p&&(r.codecURI=((e,t)=>{try{return new u(e,t).toString()}catch{return e}})(p,n.baseURI)),await(async(e,t)=>{!st.has(e)&&t&&((e,t)=>{const{CompressionStream:r,DecompressionStream:n}=t;if(typeof r!=te&&typeof n!=te)throw new w("Invalid codec module");st.set(e,{CompressionStream:r,DecompressionStream:n})})(e,await(import(t)))})(f,r.codecURI)),t.transferStreams=i||i===Q&&n.transferStreams;const y=!c&&!d&&!l,S=f===Q||!!r.codecURI;return t.useWebWorkers=!y&&S&&(a||a===Q&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&h?h:Q,r.useCompressionStream=o||o===Q&&n.useCompressionStream,(await(async()=>{const r=jr.find(e=>!e.ye);if(r)return tn(r),new Or(r,e,t,x);if(jr.length<m){const r={Ce:Gr};return Gr++,jr.push(r),new Or(r,e,t,x)}return new g(r=>{qr.push({resolve:r,stream:e,Ue:t}),Yr=n.workerStarvationTimeout,Jr()})})()).run();function x(e){if(Qr(),qr.length){const[{resolve:t,stream:r,Ue:n}]=qr.splice(0,1);t(new Or(e,r,n,x)),Jr()}else e.Se?(tn(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.Fe?e.Fe=!1:e.Ie=setTimeout(async()=>{jr=jr.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):jr=jr.filter(t=>t!=e)}}function Jr(){!Kr&&qr.length&&s.isFinite(Yr)&&Yr>=0&&(Kr=setTimeout($r,Yr))}function Qr(){Kr&&(clearTimeout(Kr),Kr=null)}function $r(){if(Kr=null,qr.length){const[{resolve:e,stream:t,Ue:n}]=qr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:Q});e(new Or({},t,s,en)),Jr()}}function en(){Qr(),Jr()}function tn(e){const{Ie:t}=e;t&&(clearTimeout(t),e.Ie=null)}const rn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function nn(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=rn[e[r]];return t}})(e):new x(t,{ignoreBOM:!0}).decode(e)}const sn="filename",an="rawFilename",on="comment",cn="rawComment",dn="uncompressedSize",ln="compressedSize",un="offset",wn="diskNumberStart",fn="lastModDate",pn="rawLastModDate",hn="lastAccessDate",mn="creationDate",yn="rawCreationDate",gn="internalFileAttributes",Sn="externalFileAttributes",xn="msdosAttributesRaw",bn="msdosAttributes",zn="msDosCompatible",Fn="zip64",Rn="encrypted",En="version",Dn="versionMadeBy",An="zipCrypto",Tn="directory",vn="executable",kn="compressionMethod",Cn="signature",Un="extraField",In="unixMode",On="setuid",Mn="setgid",Nn="sticky",_n=[sn,an,dn,ln,fn,pn,on,cn,hn,mn,yn,un,wn,gn,Sn,xn,bn,zn,Fn,Rn,En,Dn,An,Tn,vn,kn,Cn,Un,"extraFieldUnix","extraFieldInfoZip","uid","gid",In,On,Mn,Nn,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Pn{constructor(e){_n.forEach(t=>this[t]=e[t])}}const Ln="password",Wn="rawPassword",Zn="passThrough",Bn="signal",Vn="checkAmbiguity",Hn="useWebWorkers",jn="useCompressionStream",qn="transferStreams",Kn="preventClose",Yn="offset",Gn="usdz",Xn="strictness",Jn="strict",Qn="tolerant",$n="File format is not recognized",es="End of central directory not found",ts="End of Zip64 central directory locator not found",rs="Central directory header not found",ns="Local file header not found",ss="Zip64 extra field not found",is="File contains encrypted entry",as="Encryption method not supported",os="Compression method not supported",cs="Split zip file",ds="Overlapping entry found",ls="Ambiguous archive",us="Encrypted central directory is not supported",ws="utf-8",fs="cp437",ps=[[dn,C],[ln,C],[un,C],[wn,U]],hs={[U]:{Oe:Ws,bytes:4},[C]:{Oe:Zs,bytes:8}};class ms{constructor(e,t={}){r.assign(this,{reader:new $e(e),options:t,config:ie(),Me:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await tt(n),n.size!==Q&&n.readUint8Array||(n=new Ae(await new l(n.readable).blob()),await tt(n)),n.size<Z)throw new w($n);const i=Es(Ms(t,e,Xn),Ms(t,e,Vn)),o=i==Jn,c=i!=Qn,u=((e,t)=>e!==Q?e:t==Jn?0:t==Qn?1/0:U)(Ms(t,e,"maxAppendedDataSize"),i),{Ne:f,_e:p}=await(async(e,t,r)=>{const{size:n}=e,s=a.min(n,65557),i={count:Ds};let o,c,d=0;for await(const[r,a,l,u,w]of ks(e,s)){const s=Ls(r,u+20);if(w+Z+s==n){const s=await Us(e,r,a,u,w,n,i);if(s==vs){if(o||(o=Cs(l,u,w)),d++,!t||d>1)break}else s!=Ts||c||(c=Cs(l,u,w))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=a.min(n,t==1/0?n:65557+t);let i,o;for await(const[t,a,c,d,l]of ks(e,s)){const s=Cs(c,d,l);i||(i=s);const u=await Us(e,t,a,d,l,n,r);if(u==vs)return s;u!=Ts||o||(o=s)}return o||i})(e,r,i)),{Ne:o,_e:d}})(n,c,u);if(!f)throw Ws(de(await rt(n,0,4)))==M?new w(cs):new w(es);c&&p>1&&Os("multiple end of central directory records");const h=de(f);let m=Ws(h,12),y=Ws(h,16);const S=f.offset,x=Ls(h,20),b=S+Z+x;n.size-b>u&&Os("appended data");let z=Ls(h,4);const F=n.R||0;let E,D,A,T=Ls(h,6),v=Ls(h,10),k=0;const O=y==C||m==C||v==U||T==U;if(y!=C&&T!=U&&(y+=Rs(n,T)),O){const e=f.offset<B?re:await rt(n,f.offset-B,B),t=de(e);if(e.length==B&&Ws(t,0)==W){y=Rs(n,Ws(t,4))+Zs(t,8);let e=await rt(n,y,56),r=de(e);const s=f.offset-B-56;if((56>e.length||Ws(r,0)!=L)&&y!=s&&s>=0){const t=y;y=s,y>t&&(k=y-t),e=await rt(n,y,56),r=de(e)}if(56>e.length||Ws(r,0)!=L)throw new w(ts);D=!0,A=Zs(r,4)>44,z==U?z=Ws(r,16):o&&z!=Ws(r,16)&&Os("mismatched zip64 end of central directory record"),T==U?T=Ws(r,20):o&&T!=Ws(r,20)&&Os("mismatched zip64 end of central directory record"),v==U?v=Zs(r,32):o&&v!=Zs(r,32)&&Os("mismatched zip64 end of central directory record"),m==C?m=Zs(r,40):o&&m!=Zs(r,40)&&Os("mismatched zip64 end of central directory record"),y=Rs(n,T)+Zs(r,48)+k}}const N=m,P=f.offset-(D?76:0);if(y<n.size||(k=n.size-y-m-Z,y=n.size-m-Z),F!=z)throw new w(cs);if(0>y)throw new w($n);let V=0,H=await rt(n,y,m),G=de(H);if(m){if(4>H.length)throw new w($n);const e=P-m;if(y!=e&&T==z){let t=!(Ws(G,V)==_);if(t||0>e||e+4>n.size||(t=Ws(de(await rt(n,e,4)),0)==_),t){const t=y;y=e,y>t&&(k+=y-t),H=await rt(n,y,m),G=de(H)}}}const X=P-y;if(m==X||0>X||T!=z||(m=X,H=await rt(n,y,m),G=de(H)),0>y||y>=n.size)throw new w($n);E=y;const J=Ms(t,e,"filenameEncoding"),$=Ms(t,e,"commentEncoding"),ee=o?new d:Q;let te;for(let i=0;v>i;i++){const c=new ys(n,s,t.options);if(V+46>H.length||Ws(G,V)!=_){if(0==i&&(A||gs(G)))throw new w(us);throw new w(rs)}Ss(c,G,V+6);const d=!!c.bitFlag.languageEncodingFlag,u=V+46,f=u+c.filenameLength,p=f+c.extraFieldLength,h=Ls(G,V+4),m=!(h>>8),y=h>>8==3,S=H.subarray(u,f),x=Ls(G,V+32),b=p+x,z=H.subarray(p,b),F=d,D=d,T=Ws(G,V+38),C=T&I,O={readOnly:!!(1&C),hidden:!!(2&C),system:!!(4&C),directory:!!(16&C),archive:!!(32&C)},M=Ws(G,V+42),N=Ms(t,e,"decodeText")||nn,P=F?ws:J||fs,L=D?ws:$||fs;let W=N(S,P);W===Q&&(W=nn(S,P));let Z=N(z,L);Z===Q&&(Z=nn(z,L)),r.assign(c,{index:i,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Pe:x,offset:M,diskNumberStart:Ls(G,V+34),internalFileAttributes:Ls(G,V+36),externalFileAttributes:T,msdosAttributesRaw:C,msdosAttributes:O,rawFilename:S,filenameUTF8:F,commentUTF8:D,rawExtraField:H.subarray(f,p),rawComment:z,filename:W,comment:Z}),xs(c,c,G,V+6),c.offset+=k,E=a.min(Rs(n,c.diskNumberStart)+c.offset,E),o&&(ee.has(c.filename)&&(te=!0),ee.add(c.filename));const B=c.externalFileAttributes>>16&U;c.unixMode===Q&&16877&B&&(c.unixMode=B);const X=!!(c.unixMode&q),re=!!(c.unixMode&K),ne=!!(512&c.unixMode),se=c.unixMode!==Q?!!(73&c.unixMode):y&&!!(73&B),ie=c.unixMode!==Q&&(61440&c.unixMode)==j,ae=(61440&B)==j;r.assign(c,{setuid:X,setgid:re,sticky:ne,unixExternalUpper:B,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:se,directory:ie||ae||m&&O.directory||c.filename.endsWith(Y)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const oe=new Pn(c);oe.getData=(e,r)=>c.getData(e,oe,t.Me,r),oe.arrayBuffer=async e=>{const r=new R,[n]=await g.all([new l(r.readable).arrayBuffer(),c.getData(r,oe,t.Me,e)]);return n},V=b;const{onprogress:ce}=e;if(ce)try{await ce(i+1,v,new Pn(c))}catch{}yield oe}o&&V!=N&&Os("trailing central directory data"),te&&Os("duplicate filename"),o&&(k||v&&E>0)&&Os("prepended data");const ne=Ms(t,e,"extractPrependedData"),se=Ms(t,e,"extractAppendedData");return ne&&(t.prependedData=E>0?await rt(n,0,E):re),t.comment=x?await rt(n,S+Z,x):re,se&&(t.appendedData=b<n.size?await rt(n,b,n.size-b):re),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ys=class{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:i,index:a,offset:o,diskNumberStart:c,extraFieldAES:d,extraFieldZip64:l,compressionMethod:u,config:f,bitFlag:p,signature:h,rawLastModDate:m,uncompressedSize:y,compressedSize:g}=s,{dataDescriptor:S}=p,x=t.localDirectory={},b=Rs(i,c)+o,z=await rt(i,b,G),F=de(z);let R=Ms(s,n,Ln),E=Ms(s,n,Wn);const A=Ms(s,n,Zn);if(R=R&&R.length&&R,E=E&&E.length&&E,d&&99!=d.originalCompressionMethod)throw new w(os);const T=A?Q:it(u);if(0!=u&&8!=u&&9!=u&&!T&&!A)throw new w(os);if(z.length<G||Ws(F,0)!=O)throw new w(ns);Ss(x,F,4);const{extraFieldLength:v,filenameLength:k}=x,C=Es(Ms(s,n,Xn),Ms(s,n,Vn))==Jn;let U=re;if(C&&(k||v)){const e=await rt(i,b+G,k+v);U=e.subarray(0,k),x.rawExtraField=e.subarray(k)}else x.rawExtraField=v?await rt(i,b+G+k,v):re;xs(s,x,F,4,!0),C&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&Os("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Os("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Os("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.signature||t.compressedSize||t.uncompressedSize)||t.signature==e.signature&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||Os("mismatched local file header (signature or sizes)")})(s,x,U);const{lastAccessDate:M,creationDate:_}=x;M&&(t.lastAccessDate=M),_&&(t.creationDate=_);const P=s.encrypted&&x.encrypted&&!A,L=P&&!d;if(A||(t.zipCrypto=L),P){if(!(64&~x.rawBitFlag))throw new w(as);if(!L&&(1>d.strength||d.strength>3))throw new w(as);if(!R&&!E)throw new w(is)}const W=b+G+k+v,Z=g,B=i.createReadable({offset:W,size:Z}),V=Ms(s,n,Bn),H=Ms(s,n,"checkPasswordOnly");let j=Ms(s,n,"checkOverlappingEntry");const q=Ms(s,n,"checkOverlappingEntryOnly");q&&(j=!0);const{onstart:K,onprogress:Y,onend:X}=n,J=9==u;let $=Ms(s,n,jn);J&&($=!1);const ee={options:{codecType:Rr,password:R,rawPassword:E,zipCrypto:L,encryptionStrength:d&&d.strength,signed:Ms(s,n,"checkSignature")&&!A,passwordVerification:L&&(S?m>>>8&I:h>>>24&I),outputSize:A?g:y,signature:h,compressed:0!=u&&!A,encrypted:P,useWebWorkers:Ms(s,n,Hn),useCompressionStream:$,transferStreams:Ms(s,n,qn),deflate64:J,format:T?T.format:Q,codecURI:T?T.codecURI:Q,checkPasswordOnly:H},config:f,me:{signal:V,size:Z,onstart:K,onprogress:Y,onend:X}};let te;j&&await(async({reader:e,Le:t,index:r,offset:n,signature:s,compressedSize:i,uncompressedSize:a,We:o,dataDescriptor:c,extraFieldZip64:d,Me:l})=>{let u=0;if(c&&(u=d?20:12),u){const r=await rt(e,o+i,u+4);if(r.length==u+4&&Ws(de(r),0)==N){const e=Ws(de(r),4);let n,o;d?(n=Zs(de(r),8),o=Zs(de(r),16)):(n=Ws(de(r),8),o=Ws(de(r),12)),(t.encrypted&&!t.zipCrypto||e==s)&&n==i&&o==a&&(u+=4)}}const f={start:n,end:o+i+u,Le:t};for(const[e,t]of l)if(e!=r&&f.start<t.end&&t.start<f.end){const e=new w(ds);throw e.Ze=t.Le,e}l.set(r,f)})({reader:i,Le:t,index:a,offset:b,signature:h,compressedSize:g,uncompressedSize:y,We:W,dataDescriptor:S||x.bitFlag.dataDescriptor,extraFieldZip64:l||x.extraFieldZip64,Me:r});try{if(!q){H&&(e=new D),e=new et(e),await tt(e,A?g:y),({writable:te}=e);const{outputSize:t}=await Xr({readable:B,writable:te},ee);if(e.size+=t,t!=(A?g:y))throw new w(lr)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!H||t.message!=Dt)throw t}finally{Ms(s,n,Kn)||!te||te.locked||await te.getWriter().close()}return H||q?Q:e.getData?e.getData():te}};function gs(e){const t=a.min(e.byteLength,1024)-3;for(let r=0;t>r;r++)if(134630224==Ws(e,r))return!0;return!1}function Ss(e,t,n){const s=e.rawBitFlag=Ls(t,n+2),i=!(1&~s),a=Ws(t,n+6);r.assign(e,{encrypted:i,version:Ls(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&H)==H},rawLastModDate:a,lastModDate:Ns(a),filenameLength:Ls(t,n+22),extraFieldLength:Ls(t,n+24)})}function xs(e,t,n,s,i){const{rawExtraField:a}=t,d=t.extraField=new c,l=de(a);let u=0;try{for(;u<a.length;){const e=Ls(l,u),t=Ls(l,u+2);d.set(e,{type:e,data:a.slice(u+4,u+4+t)}),u+=4+t}}catch{}const f=Ls(n,s+4);r.assign(t,{signature:Ws(n,s+10),compressedSize:Ws(n,s+14),uncompressedSize:Ws(n,s+18)});const p=d.get(1);p&&(((e,t)=>{t.zip64=!0;const r=de(e.data),n=ps.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+hs[t].bytes,0);if(e.data.length<s)throw new w(ss);for(let s=0,i=0;s<n.length;s++){const[a,o]=n[s],c=hs[o];t[a]=e[a]=c.Oe(r,i),i+=c.bytes}})(p,t),t.extraFieldZip64=p);const h=d.get(28789);h&&(bs(h,sn,an,t,e),t.extraFieldUnicodePath=h);const m=d.get(25461);m&&(bs(m,on,cn,t,e),t.extraFieldUnicodeComment=m);const y=d.get(39169);y&&y.data.length>=7?(((e,t,n)=>{const s=de(e.data),i=Ps(s,4);r.assign(e,{Be:Ps(s,0),vendorId:Ps(s,2),strength:i,originalCompressionMethod:n,compressionMethod:Ls(s,5)}),t.compressionMethod=e.compressionMethod})(y,t,f),t.extraFieldAES=y):t.compressionMethod=f;const g=d.get(10);g&&(((e,t)=>{const n=de(e.data);let s,i=4;try{for(;i<e.data.length&&!s;){const t=Ls(n,i),r=Ls(n,i+2);1==t&&(s=e.data.slice(i+4,i+4+r)),i+=4+r}}catch{}try{if(s&&24==s.length){const n=de(s),i=n.getBigUint64(0,!0),a=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:i,rawLastAccessDate:a,rawCreationDate:o});const c={lastModDate:_s(i),lastAccessDate:_s(a),creationDate:_s(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(g,t),t.extraFieldNTFS=g);const S=d.get(30805);if(S)zs(S,t,!1),t.extraFieldUnix=S;else{const e=d.get(30837);e&&(zs(e,t,!0),t.extraFieldInfoZip=e)}const x=d.get(V);x&&(((e,t,r)=>{if(!e.data.length)return;const n=de(e.data),s=Ps(n,0),i=[],a=[];r?(1&~s||(i.push(fn),a.push(pn)),2&~s||(i.push(hn),a.push("rawLastAccessDate")),4&~s||(i.push(mn),a.push(yn))):5>e.data.length||(i.push(fn),a.push(pn));let c=1;i.forEach((r,s)=>{if(e.data.length>=c+4){const i=Ws(n,c);t[r]=e[r]=new o(1e3*(0|i));const d=a[s];e[d]=i}c+=4})})(x,t,i),t.extraFieldExtendedTimestamp=x);const b=d.get(6534);b&&(t.extraFieldUSDZ=b)}function bs(e,t,n,s,i){if(5>e.data.length)return void(e.valid=!1);const a=de(e.data),o=new mt;o.append(i[n]);const c=de(new f(4));c.setUint32(0,o.get(),!0);const d=Ws(a,1);r.assign(e,{version:Ps(a,0),[t]:nn(e.data.subarray(5)),valid:!i.bitFlag.languageEncodingFlag&&d==Ws(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function zs(e,t,n){try{const s=de(e.data);let i,a;if(n){let t=0;const n=Ps(s,t++),o=Ps(s,t++);i=Fs(e.data.subarray(t,t+o)),t+=o;const c=Ps(s,t++);a=Fs(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:i,gid:a})}else 4>e.data.length||(i=Ls(s,0),a=Ls(s,2),r.assign(e,{uid:i,gid:a}));i!==Q&&(t.uid=i),a!==Q&&(t.gid=a)}catch{}}function Fs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Rs(e,t){return e.A?e.A(t):0}function Es(e,t){return e===Q?t?Jn:"balanced":e}const Ds=64,As=0,Ts=1,vs=2;async function*ks(e,t){const r=e.size-t,n=await rt(e,r,t),s=de(n);for(let e=n.length-Z;e>=0;e--)Ws(s,e)==P&&(yield[s,r,n,e,r+e])}function Cs(e,t,r){return{offset:r,buffer:e.slice(t,t+Z).buffer}}async function Us(e,t,r,n,s,i,a){const o=Ls(t,n+10),c=Ws(t,n+12),d=Ws(t,n+16);if(o==U||c==C||d==C)return await Is(e,t,r,s-B,i,a)==W?vs:As;if(!o&&!c)return Ts;const l=Ls(t,n+6);for(const n of[s-c,Rs(e,l)+d])if(await Is(e,t,r,n,i,a)==_)return vs;return As}async function Is(e,t,r,n,s,i){return 0>n||n+4>s?Q:r>n?i.count>0?(i.count--,Ws(de(await rt(e,n,4)),0)):Q:Ws(t,n-r)}function Os(e){const t=new w(ls);throw t.reason=e,t}function Ms(e,t,r){return t[r]===Q?e.options[r]:t[r]}function Ns(e){const t=(4294901760&e)>>16,r=e&U;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function _s(e){return new o(s(e/i(1e4)-i(116444736e5)))}function Ps(e,t){return e.getUint8(t)}function Ls(e,t){return e.getUint16(t,!0)}function Ws(e,t){return e.getUint32(t,!0)}function Zs(e,t){return s(e.getBigUint64(t,!0))}var Bs=r.freeze({__proto__:null,ERR_AMBIGUOUS_ARCHIVE:ls,ERR_BAD_FORMAT:$n,ERR_CENTRAL_DIRECTORY_NOT_FOUND:rs,ERR_ENCRYPTED:is,ERR_ENCRYPTED_CENTRAL_DIRECTORY:us,ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND:ts,ERR_EOCDR_NOT_FOUND:es,ERR_EXTRAFIELD_ZIP64_NOT_FOUND:ss,ERR_INVALID_COMPRESSED_DATA:ur,ERR_INVALID_PASSWORD:Rt,ERR_INVALID_SIGNATURE:Et,ERR_INVALID_UNCOMPRESSED_SIZE:lr,ERR_LOCAL_FILE_HEADER_NOT_FOUND:ns,ERR_OVERLAPPING_ENTRY:ds,ERR_SPLIT_ZIP_FILE:cs,ERR_UNSUPPORTED_COMPRESSION:os,ERR_UNSUPPORTED_ENCRYPTION:as,ZipReader:ms});const Vs="Zip file comment exceeds 64KB",Hs="Version exceeds 65535",js="Extra field data exceeds 64KB",qs=-2147483648,Ks=2147483647,Ys="Zip64 is not supported (set the 'zip64' option to 'true')",Gs=new f([7,0,2,0,65,69,3,0,0]),Xs="infozip",Js="unix";let Qs=0;const $s=[];class ei{constructor(e,t={}){e=new et(e);const{availableSize:n=$,maxSize:s=$}=e,i=n>0&&n!==$&&s>0&&s!==$;r.assign(this,{writer:e,Ve:i,options:t,config:ie(),files:new c,He:new d,offset:t[Yn]===Q?e.size||e.writable.size||0:t[Yn],je:t[Yn]===Q?0:t[Yn]-(e.size||e.writable.size||0),qe:new d,Ke:0,Ye:Q})}async prependZip(e){if(this.He.size)throw new w("Zip file not empty");e=new $e(e),await tt(e);const{ZipReader:t}=await g.resolve().then(()=>Bs),n=new t(e.readable),s=await n.getEntries();await n.close(),await tt(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.He=new d(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:i,rawFilename:a,bitFlag:o,encrypted:c,uncompressedSize:d,compressedSize:l,zip64:u}=e;let{compressionMethod:w,Ge:f,Xe:p,Je:h,Qe:m,$e:y,rawExtraField:g}=e;const{level:S,languageEncodingFlag:x,dataDescriptor:b}=o;f=f||re,p=p||re,h=h||re,m=m||re,y=y||re,g=g||re,e.extraFieldAES&&(w=99);const z=Si(f,p,h,m,y,g),F=u&&d>=C,R=u&&l>=C,E=-7&bi(S,x,b,c,w)|S<<1,{et:D,nt:A}=xi({version:t,bitFlag:E,compressionMethod:w,uncompressedSize:d,compressedSize:l,rawLastModDate:n,rawFilename:a,st:R,it:F,extraFieldLength:z}),{signature:T}=e;return T!==Q&&mi(A,10,T),r.assign(e,{it:F,st:R,ot:u&&e.offset>=C,diskNumberStart:0,ct:!1,Ge:f,Xe:p,Je:h,Qe:m,$e:y,rawExtraField:g,extendedTimestamp:h.length>0||m.length>0,lt:1+(s?2:0)+(i?4:0),et:D,nt:A}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{qe:c,config:d}=s;let l,u;Qs<d.maxWorkers?Qs++:await new g(e=>$s.push(e));try{if(e=e.trim(),fi(s,n,Tn)&&!e.endsWith(Y)&&(e+=Y),s.He.has(e))throw new w("File already exists");return s.He.add(e),u=!0,l=(async(e,t,n,s)=>{const c=((e,t,r)=>{t=t.trim();let n=fi(e,r,zn),s=fi(e,r,Dn,n?20:768);const i=fi(e,r,vn),a=fi(e,r,"uid"),o=fi(e,r,"gid");let c=fi(e,r,In),d=fi(e,r,"unixExtraFieldType"),l=fi(e,r,On),u=fi(e,r,Mn),f=fi(e,r,Nn);if(a!==Q&&(0>a||a>C))throw new w("Invalid uid (must be integer 0..2^32-1)");if(o!==Q&&(0>o||o>C))throw new w("Invalid gid (must be integer 0..2^32-1)");if(c!==Q&&(0>c||c>U))throw new w("Invalid UNIX mode (must be integer 0..65535)");if(d!==Q&&d!==Xs&&d!==Js)throw new w("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(d===Js&&(a!==Q&&a>U||o!==Q&&o>U))throw new w("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");d!==Q||a===Q&&o===Q||(d=Xs);let p=fi(e,r,xn),h=fi(e,r,bn);const m=p!==Q||h!==Q;if(a!==Q||o!==Q||c!==Q||d?(n=!1,s=s&U|768):m&&(n=!0,s&=I),p!==Q&&(0>p||p>I))throw new w("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new w("Invalid msdosAttributes (must be an object with boolean flags)");if(s>U)throw new w(Hs);let y=fi(e,r,Sn);const g=y!==Q;g||(y=0),!r[Tn]&&t.endsWith(Y)&&(r[Tn]=!0);const S=fi(e,r,Tn);let x;if(S?(t.endsWith(Y)||(t+=Y),g||(y=16,n||(y|=16877<<16))):n||g||(y=i?493<<16:27525120),!n){const e=c!==Q||!!(l||u||f);x=y>>16&U,c=c===Q?x:c&U,l?c|=q:l=!!(c&q),u?c|=K:u=!!(c&K),f?c|=512:f=!!(512&c),g&&!e||(S&&(c|=j),y=(c&U)<<16|y&U)}return({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==Q)e&=I;else if(t!==Q){const{readOnly:r,hidden:n,system:s,directory:i,archive:a}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),i&&(o|=16),a&&(o|=32),e=o&I}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&C|p&I),{name:t,ut:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:x,uid:a,gid:o,unixMode:c,unixExtraFieldType:d,setuid:l,setgid:u,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=c);const d=((e,t,r)=>{const n=fi(e,r,"encodeText",gt);let s=n(t);if(s===Q&&(s=gt(t)),Si(s)>U)throw new w("File entry name exceeds 64KB");const i=r[on]||"";let a=n(i);if(a===Q&&(a=gt(i)),Si(a)>U)throw new w("File entry comment exceeds 64KB");const c=fi(e,r,En,20);if(c>U)throw new w(Hs);const d=fi(e,r,fn,new o),l=fi(e,r,hn),u=fi(e,r,mn),p=fi(e,r,gn,0),h=fi(e,r,Zn);let m,y;h||(m=fi(e,r,Ln),y=fi(e,r,Wn));const g=fi(e,r,"encryptionStrength",3),S=fi(e,r,An),x=fi(e,r,"extendedTimestamp",!0),b=fi(e,r,"ntfsTimestamp"),z=fi(e,r,"keepOrder",!0),F=fi(e,r,Hn),R=fi(e,r,qn),E=fi(e,r,"bufferedWrite"),D=fi(e,r,"createTempStream"),A=fi(e,r,"dataDescriptorSignature",!0),T=fi(e,r,Bn),v=fi(e,r,"useUnicodeFileNames",!0),k=fi(e,r,kn),C=h||k===Q?Q:it(k);if(!h&&k!==Q&&0!==k&&8!==k&&!C)throw new w("Compression method not supported");let I=fi(e,r,"level");if(e.options[Gn]){if(m!==Q||y!==Q)throw new w("Encryption is not supported in USDZ files");I===Q&&k===Q&&(I=0)}let O=fi(e,r,jn),M=fi(e,r,"dataDescriptor");E&&M===Q&&(M=!1),(M===Q||S)&&(M=!0),I!==Q&&6!=I&&(O=!1),O||C||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(I=0);const N=fi(e,r,Fn);if(!S&&(m!==Q||y!==Q)&&(1>g||g>3))throw new w("The strength must equal 1, 2, or 3");let _=re;const P=r[Un];if(P){let e=0,t=0;P.forEach(t=>e+=4+Si(t)),_=new f(e);const r=de(_);P.forEach((e,n)=>{if(n>U)throw new w("Extra field type exceeds 65535");if(Si(e)>U)throw new w(js);hi(r,t,n),hi(r,t+2,Si(e)),gi(_,e,t+4),t+=4+Si(e)})}return{comment:i,ut:{rawFilename:s,rawComment:a,version:c,lastModDate:d,lastAccessDate:l,creationDate:u,internalFileAttributes:p,passThrough:h,password:m,rawPassword:y,encryptionStrength:g,zipCrypto:S,extendedTimestamp:x,ntfsTimestamp:b,keepOrder:z,useWebWorkers:F,transferStreams:R,bufferedWrite:E,createTempStream:D,dataDescriptorSignature:A,signal:T,useUnicodeFileNames:v,compressionMethod:k,format:C?C.format:Q,codecURI:C?C.codecURI:Q,wt:C?C.versionNeeded:Q,level:I,useCompressionStream:O,dataDescriptor:M,zip64:N,rawExtraField:_}}})(e,t,s),{comment:l}=d,u=s[Un];let p;e.files.set(t,Q);try{const l=await(async(e,t,{ut:r},n)=>{const{passThrough:s,zipCrypto:i,password:a,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:d,zip64:l,level:u,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new w("Undefined reader");if(h=n[dn],h===Q)throw new w("Undefined uncompressed size")}const m=!0===l,y=fi(e,n,Rn),g=!!t&&(!!(a&&Si(a)||o&&Si(o))||s&&y);t||(u=0,f=0);const S=g?i?12:16+4*c:0;t&&(t=new $e(t),await tt(t),s?(n.uncompressedSize=h,p=pi(h)+S):t.size===Q?(d=!0,(l||l===Q)&&(l=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=pi(h)+S));const x=m||h>=C,b=m||p>=C;if(x||b){if(!1===l)throw new w(Ys);l=!0}return l=l||!1,{reader:t,ut:{dataDescriptor:d,zip64:l,it:x,st:b,uncompressedSize:h,level:u,compressionMethod:f,encrypted:g}}})(e,n,d,s);({reader:n}=l);const u=ii(e.writer),h=si(e.writer),m=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:i,zip64:c,zipCrypto:d,useUnicodeFileNames:l,dataDescriptor:u,directory:f,rawExtraField:p,encryptionStrength:h,extendedTimestamp:m,ntfsTimestamp:y,passThrough:g,encrypted:S,it:x,st:b,uncompressedSize:z}=e;let{version:F,compressionMethod:R}=e;const E=!f&&(R===Q?i===Q||i>0:0!==R);let D;const A=g||!E,T=c&&(e.bufferedWrite||!u||!x&&!b||A),v=T||c&&u&&(x||b);if(c&&(x||b)){const e=20,t=ni(e);if(t.uint16(1),t.uint16(e-4),D=t.array,T&&(t.ft(z),A)){const e=S?d?12:16+4*h:0;t.ft(g?0:z+e)}}else D=re;let k,C,I,M,N;if(S&&!d){const e=ni(Si(Gs)+2);e.uint16(39169),e.bytes(Gs),k=e.array,k[8]=h}else k=re;if(m){const e=li(r),t=ui(e);if(t){const t=9+(n?4:0)+(s?4:0),r=ni(t);M=1+(n?2:0)+(s?4:0),r.uint16(V),r.uint16(t-4),r.uint8(M),r.uint32(e),n&&r.uint32(wi(li(n))),s&&r.uint32(wi(li(s))),I=r.array}else I=re;if(y===Q?!t||n||s:y)try{const e=di(r),t=ni(36);t.uint16(10),t.uint16(32),t.ht(4),t.uint16(1),t.uint16(24),t.ft(e),t.ft(di(n)||e),t.ft(di(s)||e),C=t.array}catch{C=re}else C=re}else C=I=re;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Xs||t===Q&&r===Q)if(n!=Js||t===Q&&r===Q)N=re;else{const e=ni(8);e.uint16(30805),e.uint16(4),e.uint16((t===Q?0:t)&U),e.uint16((r===Q?0:r)&U),N=e.array}else{const e=ri(t),n=ri(r),s=3+e.length+n.length,i=ni(4+s);i.uint16(30837),i.uint16(s),i.uint8(1),i.uint8(e.length),i.bytes(e),i.uint8(n.length),i.bytes(n),N=i.array}}catch{N=re}R===Q&&(R=E?8:0);const{wt:_}=e;E&&_!==Q&&(F=F>_?F:_),c&&(F=F>45?F:45),S&&!d&&(F=F>51?F:51,k[9]=R,R=99);const P=v?Si(D):0,L=P+Si(k,I,C,N,p);if(L>U)throw new w(js);const W=new o(2e3*a.ceil(r.getTime()/2e3)),{et:Z,nt:B,rawLastModDate:H}=xi({version:F,bitFlag:bi(i,l,u,S,R),compressionMethod:R,uncompressedSize:z,lastModDate:J>W?J:W>X?X:W,rawFilename:t,st:b,it:x,extraFieldLength:L}),j=ni(G+Si(t)+L),q=j.array,K=de(q);return j.uint32(O),j.bytes(Z),j.bytes(t),v&&j.bytes(D),j.bytes(k),j.bytes(I),j.bytes(C),j.bytes(N),j.bytes(p),u&&(b||mi(K,18,0),x||mi(K,22,0)),{yt:q,gt:K,et:Z,nt:B,lastModDate:r,rawLastModDate:H,encrypted:S,compressed:E,version:F,compressionMethod:R,lt:M,Ge:re,St:P,Je:I,Qe:C,$e:N,Xe:k,extraFieldLength:L}})(s=r.assign({},s,c.ut,d.ut,l.ut,{internalFileAttribute:d.ut.internalFileAttributes,externalFileAttribute:c.ut.externalFileAttributes,signature:s[Cn],offset:e.offset-u,diskNumberStart:h})),y=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=re,i=0,a=e?20:12;return r&&(a+=4),t&&(s=new f(a),n=de(s),r&&(i=4,mi(n,0,N))),{xt:s,bt:n,zt:i}})(s),S=Si(m.yt,y.xt);p=await(async(e,t,n,s,a)=>{const{files:o,writer:c}=e,{keepOrder:d,dataDescriptor:l,signal:u}=a,{Ft:p}=s,h=e.options[Gn],m=e.Ye;let y,S,x,b,z,F,E,A={},T=0;o.set(t,A),e.Ye=A;try{let S;d&&(S=m&&m.lock,A.lock=new g(e=>x=e)),a.bufferedWrite||!d||e.Rt||e.Ke||!l?(y=!0,e.Ke++,E=a.createTempStream?await a.createTempStream():new R(Q,Q,{highWaterMark:$}),E.size=0,await tt(c)):(E=c,await v()),await tt(E);const U=ii(c);if(e.Ve){delete e.Ve;const t=new f(4);mi(de(t),0,M),await ci(c,t),e.offset+=4}h&&!y&&ti(s,e.offset-U);const{yt:O}=p;y||(await S,await k());const N=si(c),_=oi(e,c);if(A.diskNumberStart=N,y||(z=!0,F=c.size,await ci(E,O)),A=await(async(e,t,{diskNumberStart:n,lock:s},a,o,c)=>{const{Ft:d,Et:l,Dt:u}=a,{et:f,nt:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:g,version:S,compressionMethod:x,Ge:b,St:z,Je:F,lt:R,Qe:E,$e:D,Xe:A}=d,{xt:T}=l,{rawFilename:v,lastAccessDate:k,creationDate:U,password:O,rawPassword:M,level:N,zip64:_,it:P,st:L,zipCrypto:W,dataDescriptor:Z,directory:B,executable:V,versionMadeBy:H,rawComment:j,rawExtraField:q,useWebWorkers:K,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ie,gid:ae,unixMode:oe,setuid:ce,setgid:de,sticky:le,unixExternalUpper:ue,msdosAttributesRaw:we,msdosAttributes:fe,useCompressionStream:pe,passThrough:he,format:me,codecURI:ye}=c,ge={lock:s,versionMadeBy:H,zip64:_,directory:!!B,executable:!!V,filenameUTF8:!0,rawFilename:v,commentUTF8:!0,rawComment:j,Ge:b,St:z,Je:F,Qe:E,$e:D,Xe:A,rawExtraField:q,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ie,gid:ae,unixMode:oe,setuid:ce,setgid:de,sticky:le,unixExternalUpper:ue,msdosAttributesRaw:we,msdosAttributes:fe};let{signature:Se,uncompressedSize:xe}=c,be=0;he||(xe=0);const{writable:ze}=t;if(e){const r=e.createReadable?e.createReadable():e.readable,n=e.size,s={options:{codecType:Fr,level:N,rawPassword:M,password:O,encryptionStrength:ee,zipCrypto:y&&W,passwordVerification:y&&W&&m>>8&I,signed:!he,compressed:g&&!he,encrypted:y&&!he,useWebWorkers:K,useCompressionStream:pe,transferStreams:Y,format:me,codecURI:ye},config:o,me:{signal:$,size:n,onstart:G,onprogress:X,onend:J}};try{const e=await Xr({readable:r,writable:ze},s);if(be=e.outputSize,t.size+=be,he||(xe=e.inputSize,Se=e.signature),!L&&be>=C||!P&&xe>=C)throw new w(Ys)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,Ft:n,Et:s},{zip64:a,zipCrypto:o,dataDescriptor:c})=>{const{nt:d,encrypted:l}=n,{bt:u,zt:w}=s;l&&!o||e===Q||(mi(d,10,e),c&&mi(u,w,e)),a?c&&(yi(u,w+4,i(t)),yi(u,w+12,i(r))):(mi(d,14,t),mi(d,18,r),c&&(mi(u,w+4,t),mi(u,w+8,r)))})({signature:Se,compressedSize:be,uncompressedSize:xe,Ft:d,Et:l},c),Z&&await ci(t,T),r.assign(ge,{uncompressedSize:xe,compressedSize:be,lastModDate:h,rawLastModDate:m,creationDate:U,lastAccessDate:k,encrypted:y,zipCrypto:W,size:u+be,compressionMethod:x,version:S,et:f,nt:p,signature:Se,lt:R,it:P,st:L}),ge})(n,E,A,s,e.config,a),y||(z=!1),o.set(t,A),A.filename=t,y){if(await g.all([E.writable.getWriter().close(),S]),await v(),b=!0,F=c.size,await k(),A.diskNumberStart=si(c),A.offset=oi(e,c),h){const t=s.Dt;ti(s,e.offset-ii(c)),A.size+=s.Dt-t}(({rawFilename:e,encrypted:t,zip64:r,St:n,signature:s,compressedSize:a,uncompressedSize:o,it:c,st:d},l,{dataDescriptor:u})=>{if(u||(t||mi(l,14,s),d||mi(l,18,a),c||mi(l,22,o)),r&&n){const t=G+Si(e)+4;yi(l,t,i(o)),yi(l,t+8,i(a))}})(A,p.gt,a),await ci(c,p.yt),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new D({async write(e){var t;await n.ready,await n.write(e),t=Si(e),T+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(E.readable,c,u),c.size+=E.size,b=!1}else A.diskNumberStart=N,A.offset=_;return e.offset+=A.size,A}catch(r){if(b||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,y&&(e.offset+=T)}throw o.delete(t),r}finally{if(y&&e.Ke--,x&&x(),S&&S(),y&&E&&E.dispose)try{await E.dispose()}catch{}}async function v(){e.Rt=!0;const{At:t}=e;e.At=new g(t=>S=()=>{e.Rt=!1,t()}),await t}async function k(){ai(c,Si(p.yt))&&await c.closeDisk()}})(e,t,n,{Ft:m,Et:y,Dt:S},s)}catch(r){throw e.files.delete(t),r}return r.assign(p,{name:t,comment:l,extraField:u}),new Pn(p)})(s,e,t,n),c.add(l),await l}catch(t){throw u&&s.He.delete(e),t}finally{c.delete(l);const e=$s.shift();e?e():Qs--}}remove(e){const{He:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=re,r={}){const{qe:n,writer:s}=this,{writable:a}=s;if(Si(e)>U)throw new w(Vs);for(;n.size;)await g.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Xe:n,rawComment:s,Qe:i,$e:a,rawExtraField:o,extendedTimestamp:c,lt:d,lastModDate:l,it:u,st:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=C,y=r.diskNumberStart>=U;let g,S;if(m||y||u||f){const e=4+(u?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=ni(e);t.uint16(1),t.uint16(e-4),u&&t.ft(p),f&&t.ft(h),m&&t.ft(r.offset),y&&t.uint32(r.diskNumberStart),g=t.array}else g=re;r.Ge=g,r.ot=m,r.ct=y;const x=li(l);if(c&&ui(x)){const e=ni(9);e.uint16(V),e.uint16(5),e.uint8(d),e.uint32(x),S=e.array}else S=re;r.Je=S;const b=Si(g,n,i,a,S,o);if(b>U)throw new w(js);t+=46+Si(e,s)+b}return t})(e.files),a=await(async(e,r,n)=>{const{files:s,writer:i}=e,a=new f(r);await tt(i);let o=0,c=0,d=si(i),l=ii(i);for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:u,Ge:w,Xe:f,Je:p,Qe:h,$e:m,rawExtraField:y,rawComment:g,versionMadeBy:S,et:x,nt:b,it:z,st:F,ct:R,ot:E,internalFileAttributes:D,externalFileAttributes:A,diskNumberStart:T,uncompressedSize:v,compressedSize:k}=r,I=Si(w,f,p,h,m,y),O=46+Si(u,g)+I;ai(i,o+O-c)&&(await ci(i,a.slice(c,o)),c=o,await i.closeDisk()),0==e&&(d=si(i),l=ii(i)),z||mi(b,18,v),F||mi(b,14,k),(E||R)&&45>r.version&&hi(b,0,45);const M=ni(O);if(M.uint32(_),M.uint16(S),M.bytes(x.subarray(0,24)),M.uint16(I),M.uint16(Si(g)),M.uint16(R?U:T),M.uint16(D),M.uint32(A),M.uint32(E?C:t),M.bytes(u),M.bytes(w),M.bytes(f),M.bytes(p),M.bytes(h),M.bytes(m),M.bytes(y),M.bytes(g),gi(a,M.array,o),o+=O,n.onprogress)try{await n.onprogress(e+1,s.size,new Pn(r))}catch{}}return await ci(i,c?a.slice(c):a),{diskNumber:d,diskOffset:l}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{Tt:a}=n;let{vt:o}=n,c=e.files.size,d=a.diskNumber,l=oi(e,a),u=si(s);ai(s,Z)&&u++;let f=fi(e,r,Fn);if(!(C>l&&C>o&&U>c&&U>u)){if(!1===f)throw new w(Ys);f=!0}const p=Si(t);if(p>U)throw new w(Vs);const h=ni(f?98:Z);ai(s,Si(h.array)+p)&&await s.closeDisk(),u=si(s),f&&(h.uint32(L),h.ft(44),h.uint16(45),h.uint16(45),h.uint32(u),h.uint32(d),h.ft(c),h.ft(c),h.ft(o),h.ft(l),h.uint32(W),h.uint32(u),h.ft(i(oi(e,s))+i(o)),h.uint32(u+1),fi(e,r,"supportZip64SplitFile",!0)&&(u=U,d=U),c=U,l=C,o=C),h.uint32(P),h.uint16(u),h.uint16(d),h.uint16(c),h.uint16(c),h.uint32(o),h.uint32(l),h.uint16(p),await ci(s,h.array),p&&await ci(s,t)})(e,r,n,{Tt:a,vt:s})})(this,e,r),fi(this,r,Kn)||await a.getWriter().close(),s.getData?s.getData():a}}function ti(e,t){const{Ft:r}=e;let{yt:n,extraFieldLength:s}=r,i=64-(t+Si(n))%64;4>i&&(i+=64);const a=new f(i),o=de(a);hi(o,0,6534),hi(o,2,i-4);const c=n;r.yt=n=new f(Si(c)+i),gi(n,c),gi(n,a,Si(c));const d=de(n);hi(d,28,s+i),r.gt=d,e.Dt+=i}function ri(e){if(e===Q)return re;{const t=new f(4);de(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function ni(e){const t=new f(e),r=de(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{hi(r,n,e),n+=2},uint32:e=>{mi(r,n,e),n+=4},ft:e=>{yi(r,n,i(e)),n+=8},bytes:e=>{gi(t,e,n),n+=Si(e)},ht:e=>n+=e}}function si(e){const{diskNumber:t=0}=e;return t}function ii(e){const{diskOffset:t=0}=e;return t}function ai(e,t){const{availableSize:r=$}=e;return t>r}function oi(e,{diskNumber:t=0,diskOffset:r=0}){return e.offset-r-(t?e.je:0)}async function ci(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=Si(t),await n.write(t)}finally{n.releaseLock()}}function di(e){if(e)return(i(e.getTime())+i(116444736e5))*i(1e4)}function li(e){return a.floor(e.getTime()/1e3)}function ui(e){return e>=qs&&Ks>=e}function wi(e){return a.min(Ks,a.max(qs,e))}function fi(e,t,r,n){const s=t[r]===Q?e.options[r]:t[r];return s===Q?n:s}function pi(e){return e+5*(a.floor(e/16383)+1)}function hi(e,t,r){e.setUint16(t,r,!0)}function mi(e,t,r){e.setUint32(t,r,!0)}function yi(e,t,r){e.setBigUint64(t,r,!0)}function gi(e,t,r){e.set(t,r)}function Si(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function xi({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:i,rawLastModDate:a,rawFilename:o,st:c,it:d,extraFieldLength:l}){const u=ni(26),w=u.array,f=de(w);if(u.uint16(e),u.uint16(t),u.uint16(r),a===Q){const e=new h(1),t=de(e);hi(t,0,(i.getHours()<<6|i.getMinutes())<<5|i.getSeconds()/2),hi(t,2,(i.getFullYear()-1980<<4|i.getMonth()+1)<<5|i.getDate()),a=e[0]}return u.uint32(a),u.ht(4),c||s!==Q?u.uint32(c?C:s):u.ht(4),d||n!==Q?u.uint32(d?C:n):u.ht(4),u.uint16(Si(o)),u.uint16(l),{et:w,nt:f,rawLastModDate:a}}function bi(e,t,r,n,s){let i=0;return t&&(i|=H),r&&(i|=8),8!=s&&9!=s||(0>e||e>3||(i|=6),e>3&&5>=e&&(i|=4),9==e&&(i|=2)),n&&(i|=1),i}const zi="Entry filename already exists";class Fi{constructor(e,t,n,s){const i=this;if(e.root&&s&&s.getChildByName(t))throw new w(zi);n||(n={}),r.assign(i,{fs:e,name:t,data:n.data,options:n.options,id:e.kt++,parent:s,children:[],uncompressedSize:n.uncompressedSize||0,passThrough:n.passThrough}),!s&&e.root||(e.entries[i.id]=i),s&&i.parent.children.push(i)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new w(zi);this.name=e}}class Ri extends Fi{constructor(e,t,r,n){super(e,t,r,n);const s=this;s.Reader=r.Reader,s.Writer=r.Writer,r.getData&&(s.getData=r.getData)}clone(){return new Ri(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const n=r.reader=ki(r.Reader,r.data,t),s=r.data?r.data.uncompressedSize:n.size;await g.all([tt(n),tt(e,s)]);const{readable:i}=n;return r.uncompressedSize=n.size,await i.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return!(!this.data||!this.data.encrypted)}async checkPassword(e,t={}){const n=this;if(!n.isPasswordProtected())return!0;try{return await n.data.getData(null,r.assign({},t,{password:e,checkPasswordOnly:!0})),!0}catch(e){if(e.message==Rt)return!1;throw e}}getText(e,t){return this.getData(new ke(e),t)}getBlob(e,t){return this.getData(new Te(e),t)}getData64URI(e,t){return this.getData(new Re(e),t)}getUint8Array(e){return this.getData(new Xe,e)}getWritable(e=new D,t){return this.getData({writable:e},t)}async getArrayBuffer(e){return ce(await this.getUint8Array(e)).buffer}replaceBlob(e){r.assign(this,{data:e,Reader:Ae,Writer:Te,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:ve,Writer:ke,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:Fe,Writer:Re,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ge,Writer:Xe,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:Ti(e),Writer:null,reader:null})}}class Ei extends Fi{constructor(e,t,r,n){super(e,t,r,n),this.directory=!0}clone(e){const t=this,r=new Ei(t.fs,t.name,t);return e&&(r.children=t.children.map(t=>{const n=t.clone(e);return n.parent=r,n})),r}addDirectory(e,t){return Ni(this,e,{options:t},!0)}addText(e,t,r={}){return Ni(this,e,{data:t,Reader:ve,Writer:ke,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return Ni(this,e,{data:t,Reader:Ae,Writer:Te,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let n=t.length;for(;"="==t.charAt(n-1);)n--;const s=t.indexOf(",")+1;return Ni(this,e,{data:t,Reader:Fe,Writer:Re,options:r,uncompressedSize:a.floor(.75*(n-s))})}addUint8Array(e,t,r={}){return Ni(this,e,{data:t,Reader:Ge,Writer:Xe,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return Ni(this,e,{data:t,Reader:class extends Ye{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return Ni(this,e,{Reader:Ti(t),options:r})}addFileSystemEntry(e,t={}){return Ii(this,e,t)}addFileSystemHandle(e,t={}){return Ii(this,e,t)}addFile(e,t={}){return(t=r.assign({},t)).lastModDate||(t.lastModDate=new o(e.lastModified)),Ni(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}Ct(e,t){return Ni(this,e,t)}importBlob(e,t){return this.importZip(new Ae(e),t)}importData64URI(e,t){return this.importZip(new Fe(e),t)}importUint8Array(e,t){return this.importZip(new Ge(e),t)}importHttpContent(e,t){return this.importZip(new Ye(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new Te(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new Re(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Xe,e)}async exportWritable(e=new D,t={}){return await this.exportZip({writable:e},t),e}exportFileSystemHandle(e,n={}){return(async(e,n,s)=>{const i=Ai([e],"uncompressedSize"),a=new c;return await o(e,n),n;async function o(e,t){if(s.concurrent){const r=(await g.allSettled(e.children.map(e=>d(e,t)))).find(e=>"rejected"==e.status);if(r)throw r.reason}else for(const r of e.children)await d(r,t)}async function d(e,n){try{if(e.directory){const t=await n.getDirectoryHandle(e.name,{create:!0});await o(e,t)}else{const o=await n.getFileHandle(e.name,{create:!0}),c=await o.createWritable();await e.getData({writable:c},r.assign({},s,{onprogress:async r=>{if(s.onprogress){a.set(e.id,r);try{await s.onprogress(t.from(a.values()).reduce((e,t)=>e+t,0),i)}catch{}}}}))}}catch(t){throw new w(t.message+(e?" ("+e.name+")":""),{cause:t})}}})(this,e,n)}async importZip(e,t={}){await tt(e);const n=new ms(e,t),s=[],i=await n.getEntries();for(const e of i){let n=this;try{const i=e.filename.split("/"),a=i.pop();if(i.forEach(e=>{const t=n;if(n=n.getChildByName(e),n){if(!n.directory)throw new w(zi)}else n=new Ei(this.fs,e,{data:null},t),s.push(n)}),e.directory){let t=n;if(a)if(t=n.getChildByName(a),t){if(!t.directory)throw new w(zi)}else t=new Ei(this.fs,a,{data:null},n),s.push(t);t==this||t.data||(t.data=e)}else s.push(Ni(n,a,{data:e,Reader:vi(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return s}async exportZip(e,n={}){const s=this;(n=r.assign({},n)).bufferedWrite===Q&&(n.bufferedWrite=!0);const[i]=await g.all([Ci(s,n.readerOptions),tt(e)]),a=new ei(e,n);return await(async(e,n,s,i,a)=>{const o=n,d=new c;await async function e(n,c){async function l(c){const l=i.relativePath?c.getRelativeName(o):c.getFullname(),u=c.options||{};let w={};if(c.data instanceof Pn){const{externalFileAttributes:e,versionMadeBy:t,comment:n,lastModDate:s,creationDate:i,lastAccessDate:a,uncompressedSize:o,encrypted:d,zipCrypto:l,signature:u,compressionMethod:f,extraFieldAES:p}=c.data;if(w={externalFileAttributes:e,versionMadeBy:t,comment:n,lastModDate:s,creationDate:i,lastAccessDate:a},c.passThrough){let e,t;0===f&&(e=0),p&&(t=p.strength),w=r.assign(w,{passThrough:!0,encrypted:d,zipCrypto:l,signature:u,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await n.add(l,a.get(c),r.assign({},i,w,u,{directory:c.directory,onprogress:async e=>{if(i.onprogress){d.set(l,e);try{await i.onprogress(t.from(d.values()).reduce((e,t)=>e+t),s)}catch{}}}})),await e(n,c)}await(async()=>{if(i.bufferedWrite){const e=(await g.allSettled(c.children.map(l))).find(e=>"rejected"==e.status);if(e)throw e.reason}else for(const e of c.children)await l(e)})()}(e,n)})(a,s,Ai([s],"uncompressedSize"),n,i),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const n=t[r];if(n.name==e)return n}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await g.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const Di={FS:class{constructor(){Mi(this)}get children(){return this.root.children}remove(e){Ui(e);const t=[e];for(;t.length;){const e=t.pop();this.entries[e.id]=null;for(const r of e.children)t.push(r)}e.parent=Q}move(e,t){if(e==this.root)throw new w("Root directory cannot be moved");if(!t.directory)throw new w("Target entry is not a directory");if(t.isDescendantOf(e))throw new w("Entry is a ancestor of target entry");if(e!=t){const r=t.getChildByName(e.name);if(r){if(r!=e)throw new w(zi)}else Ui(e),e.parent=t,t.children.push(e),((e,t)=>{const r=[t];for(;r.length;){const t=r.pop();e.entries[t.id]=t;for(const e of t.children)r.push(e)}})(this,e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r||(r=this.entries.find(t=>t&&(t==this.root||t.isDescendantOf(this.root))&&t.getRelativeName()==e)),r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}Ct(e,t){return this.root.Ct(e,t)}importBlob(e,t){return Mi(this),this.root.importBlob(e,t)}importData64URI(e,t){return Mi(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return Mi(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return Mi(this),this.root.importHttpContent(e,t)}importReadable(e,t){return Mi(this),this.root.importReadable(e,t)}importZip(e,t){return Mi(this),this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}exportFileSystemHandle(e,t){return this.root.exportFileSystemHandle(e,t)}exportZip(e,t){return this.root.exportZip(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:Ei,ZipFileEntry:Ri};function Ai(e,r){let n=0;const s=t.from(e);for(;s.length;){const e=s.pop();n+=e[r]||0;for(const t of e.children)s.push(t)}return n}function Ti(e){let t;return()=>{if(t)throw new w("Readable stream already consumed");return t=!0,{readable:e}}}function vi(e){return class extends be{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const n=await t.entry.getData(new Te,r.assign({},e,t.options));t.data=n,t.Ut=new Ae(n),super.init()}readUint8Array(e,t){return this.Ut.readUint8Array(e,t)}}}function ki(e,t,r){return e.prototype?new e(t,r):e(t,r)}async function Ci(e,t){const r=[],n=[e],s=new c;for(;n.length;){const e=n.pop();for(const t of e.children)t.directory?n.push(t):r.push(t)}return await g.all(r.map(async e=>{const r=e.reader=ki(e.Reader,e.data,t);s.set(e,r);try{await tt(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}r.size!==Q&&(e.uncompressedSize=r.size)})),s}function Ui(e){if(e.parent){const t=e.parent.children;t.forEach((r,n)=>{r.id==e.id&&t.splice(n,1)})}}function Ii(e,t,n){return async function e(t,s,i){if(s)try{if((s.isFile||s.isDirectory)&&(s=await Oi(s)),"file"==s.kind){const e=await s.getFile();i.push(t.Ct(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},n),uncompressedSize:e.size}))}else if("directory"==s.kind){const r=t.addDirectory(s.name);i.push(r);for await(const t of s.values())await e(r,t,i)}}catch(e){const t=e.message+(s?" ("+s.name+")":"");throw new w(t,{cause:e})}return i}(e,t,[])}async function Oi(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new g((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,n,s){e.readEntries(async i=>{if(i.length){for(const e of i)t.push(await Oi(e));r(e,n,s)}else n(t)},s)}return await new g((t,n)=>r(e.createReader(),t,n)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function Mi(e){e.entries=[],e.kt=0,e.root=new Ei(e)}function Ni(e,t,r,n){if(e.directory)return n?new Ei(e.fs,t,r,e):new Ri(e.fs,t,r,e);throw new w("Parent entry is not a directory")}e.fs=Di});
|
|
1
|
+
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:n,Number:s,BigInt:i,Math:a,Date:o,Map:c,Set:d,Response:l,URL:u,Error:w,Uint8Array:f,Uint16Array:p,Uint32Array:h,DataView:m,Blob:y,Promise:g,TextEncoder:S,TextDecoder:x,document:b,crypto:z,btoa:F,TransformStream:R,ReadableStream:E,WritableStream:D,CompressionStream:A,DecompressionStream:T,navigator:v,Worker:k}="undefined"!=typeof globalThis?globalThis:this||self,C=4294967295,U=65535,I=255,O=67324752,M=134695760,N=M,_=33639248,P=101010256,L=101075792,W=117853008,Z=22,B=20,V=21589,H=2048,j=16384,q=2048,K=1024,Y="/",G=30,X=new o(2107,11,31,23,59,58),J=new o(1980,0,1),Q=void 0,$=1/0,ee="undefined",te="function",re=new f;let ne=2;try{typeof v!=ee&&v.hardwareConcurrency&&(ne=v.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:ne,terminateWorkerTimeout:5e3,workerStarvationTimeout:5e3,workerStartupTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,transferStreams:!0,CompressionStream:typeof A!=ee&&A,DecompressionStream:typeof T!=ee&&T};function ie(){return se}function ae(e){return a.max(e.chunkSize,64)}function oe(e,t){const r=new f(e.length+t.length);return r.set(e),r.set(t,e.length),r}function ce(e){return e.byteOffset||e.byteLength!=e.buffer.byteLength?new f(e):e}function de(e){return new m(e.buffer,e.byteOffset,e.byteLength)}const le="HTTP error ",ue="HTTP Range not supported",we="HTTP resource changed",fe="Content-Range",pe="Range",he="GET",me="bytes",ye=16777216,ge="writable",Se=Symbol();class xe{constructor(){this.size=0}init(){this.initialized=!0}}class be extends xe{get readable(){return this.createReadable()}createReadable({offset:e=0,size:t,chunkSize:r=ae(ie())}={}){const n=this;let s=0;return new E({async pull(i){const o=t===Q?r:a.min(r,t-s),c=await rt(n,e+s,o);i.enqueue(c),s+r>t||t===Q&&!c.length&&o?i.close():s+=r}})}}class ze extends xe{constructor(){super();const e=this,t=new D({write(t){if(!e.initialized)throw new w("Writer not initialized");return e.writeUint8Array(ce(t))}});r.defineProperty(e,ge,{get:()=>t})}writeUint8Array(){}}class Fe extends be{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const n=e.indexOf(",")+1;r.assign(this,{dataURI:e,o:n,size:a.floor(.75*(t-n))})}readUint8Array(e,t){const{o:r,dataURI:n}=this,s=new f(t),i=4*a.floor(e/3),o=atob(n.substring(i+r,4*a.ceil((e+t)/3)+r)),c=e-3*a.floor(i/4);let d=0;for(let e=c;c+t>e&&e<o.length;e++)s[e-c]=o.charCodeAt(e),d++;return d<s.length?s.subarray(0,d):s}}class Re extends ze{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r,s=t.pending;const i=t.pending.length;for(t.pending="",r=0;r<3*a.floor((i+e.length)/3)-i;r++)s+=n.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=n.fromCharCode(e[r]);s.length>2?t.data+=F(s):t.pending=s+t.pending}getData(){return this.data+F(this.pending)}}let Ee,De;class Ae extends be{constructor(e){super(),r.assign(this,{blob:e,size:e.size}),De||(De=(async()=>{try{const e=new y([new f(3)]).slice(1,2).stream().getReader();let t=0,r=await e.read();for(;!r.done;)t+=r.value.length,r=await e.read();Ee=1==t}catch{Ee=!1}})())}createReadable(e){const{blob:t,size:r}=this,{offset:n=0,size:s=r-n}=e||{};return n||r>s?Ee?t.slice(n,n+s).stream():super.createReadable(e):t.stream()}async readUint8Array(e,t){const r=this,n=e+t,s=e||n<r.size?r.blob.slice(e,n):r.blob;let i=await s.arrayBuffer();return i.byteLength>t&&(i=i.slice(e,n)),new f(i)}}class Te extends xe{constructor(e){super();const t=this,n=new R,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(t,ge,{get:()=>n.writable}),t.blob=new l(n.readable,{headers:s}).blob(),t.blob.catch(()=>{})}getData(){return this.blob}}class ve extends Ae{constructor(e){super(new y([e],{type:"text/plain"}))}}class ke extends Te{constructor(e){super(e),r.assign(this,{encoding:e,l:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,l:t}=this,n=await super.getData();if(n.text&&t)return n.text();{const t=new FileReader;return new g((s,i)=>{r.assign(t,{onload:({target:e})=>s(e.result),onerror:()=>i(t.error)}),t.readAsText(n,e)})}}}class Ce extends be{constructor(e,t){super(),Ie(this,e,t)}async init(){await Oe(this,qe,Be),super.init()}createReadable(e){const t=this,{useRangeHeader:r,forceRangeRequests:n,size:i}=t;if((r||n)&&i!==Q){const{offset:r=0,size:n=i-r}=e||{};if(n>0&&i>r)return((e,t,r)=>{let n,i=t,o=0,c=r;return new E({start:()=>d(),async pull(e){n||await d();const{value:t,done:r}=await n.read();if(r)throw new w(ue);const s=t.length>o?t.subarray(0,o):t;o-=s.length,c-=s.length,s.length&&e.enqueue(s),o||(await(async()=>{const e=n;n=Q,await e.cancel()})(),c||e.close())},cancel:e=>n&&n.cancel(e)});async function d(){const t=a.min(e.maximumRangeSize,c),r=await qe(he,e,We(e,i,t));if(206!=r.status)throw new w(ue);const d=r.headers.get(fe);if(d){const e=s(d.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=i)throw new w(ue)}Le(e,r),Pe(e,r),i+=t,o=t,n=r.body.getReader()}})(t,r,a.min(n,i-r))}return super.createReadable(e)}readUint8Array(e,t){return Me(this,e,t,qe,Be)}}class Ue extends be{constructor(e,t){super(),Ie(this,e,t)}async init(){await Oe(this,Ke,Ve),super.init()}readUint8Array(e,t){return Me(this,e,t,Ke,Ve)}}function Ie(e,t,n){const{preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o,checkResourceChanges:c=!0,maximumRangeSize:d=ye,fetch:l}=n;delete(n=r.assign({},n)).preventHeadRequest,delete n.useRangeHeader,delete n.forceRangeRequests,delete n.combineSizeEocd,delete n.checkResourceChanges,delete n.maximumRangeSize,delete n.useXHR,delete n.fetch,r.assign(e,{url:t,options:n,preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o,checkResourceChanges:c,maximumRangeSize:d,fetch:l})}async function Oe(e,t,r){const{url:n,preventHeadRequest:s,useRangeHeader:i,forceRangeRequests:a,combineSizeEocd:o}=e;if((e=>{const{baseURI:t}=ie(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(n)&&(i||a)&&(void 0===s||s)){const n=await t(he,e,We(e,o?-22:void 0)),s=n.headers.get("Accept-Ranges");if(!(a||s&&s.toLowerCase()==me))throw new w(ue);{if(o){const t=new f(await n.arrayBuffer());206==n.status&&t.length==Z&&(e.h=t)}Pe(e,n);const s=Ne(n);s===Q?await je(e,t,r):e.size=s}}else await je(e,t,r)}async function Me(e,t,r,n,i){const{useRangeHeader:a,forceRangeRequests:o,h:c,size:d,options:l}=e;if(a||o){if(c&&t==d-Z&&r==Z)return c;if(d>t&&0!==r){t+r>d&&(r=d-t);const i=await n(he,e,We(e,t,r));if(206!=i.status)throw new w(ue);const a=i.headers.get(fe);if(a){const e=s(a.trim().split(/[\s-]+/)[1]);if(!s.isNaN(e)&&e!=t)throw new w(ue)}Le(e,i),Pe(e,i);const o=new f(await i.arrayBuffer());if(o.length!=r)throw new w(ue);return o}return re}{const{data:n}=e;return n||await i(e,l),e.data.subarray(t,t+r)}}function Ne(e){const t=e.headers.get(fe);if(t){const e=t.trim().split(/\s*\/\s*/)[1];if(e&&"*"!=e){const t=s(e);if(!s.isNaN(t))return t}}}function _e({headers:e}){return{m:e.get("Etag")||Q,lastModified:e.get("Last-Modified")||Q}}function Pe(e,t){const{checkResourceChanges:r,S:n}=e;r&&!n&&206==t.status&&(e.S=_e(t))}function Le(e,t){const{checkResourceChanges:n,S:s,size:i}=e;if(n){const e=Ne(t);if(e!==Q&&i!==Q&&e!=i)throw new w(we);if(s){const e=_e(t);if(r.entries(s).some(([t,r])=>r!==Q&&e[t]!==Q&&r!=e[t]))throw new w(we)}}}function We(e,t=0,n=1){return r.assign({},Ze(e),{[pe]:me+"="+(0>t?t:t+"-"+(t+n-1))})}function Ze({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Be(e){await He(e,qe)}async function Ve(e){await He(e,Ke)}async function He(e,t){const r=await t(he,e,Ze(e));e.data=new f(await r.arrayBuffer()),e.size=e.data.length}async function je(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const n=await t("HEAD",e,Ze(e)),i=n.headers.get("Content-Length");i&&!n.headers.get("Content-Encoding")?e.size=s(i):await r(e,e.options)}}async function qe(e,{fetch:t=fetch,options:n,url:s},i){const a=await t(s,r.assign({},n,{method:e,headers:i}));if(400>a.status)return a;throw 416==a.status?new w(ue):new w(le+(a.statusText||a.status))}function Ke(e,{url:t},n){return new g((s,i)=>{const a=new XMLHttpRequest;if(a.addEventListener("load",()=>{if(400>a.status){const e=[];a.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),s({status:a.status,arrayBuffer:()=>a.response,headers:new c(e)})}else i(416==a.status?new w(ue):new w(le+(a.statusText||a.status)))},!1),a.addEventListener("error",e=>i(e.detail?e.detail.error:new w("Network error")),!1),a.open(e,t),n)for(const e of r.entries(n))a.setRequestHeader(e[0],e[1]);a.responseType="arraybuffer",a.send()})}class Ye extends be{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR&&!t.fetch?new Ue(e,t):new Ce(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}createReadable(e){return this.reader.createReadable(e)}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class Ge extends be{constructor(e){super(),e=new f(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}}class Xe extends ze{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new f(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const n=t.array;t.array=new f(e),t.array.set(n)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}}class Je extends be{constructor(e){super(),this.F=e}async init(){const e=this,{F:t}=e;e.R=0,await g.all(t.map(e=>tt(e))),e.D=t.map(t=>{const r=e.size;return e.size+=t.size,r}),super.init()}A(e){const{D:t,size:r}=this,n=t[e];return n===Q?r:n}async readUint8Array(e,t){const r=this,{F:n}=this;let s,i=0,o=e;for(;n[i]&&o>=n[i].size;)o-=n[i].size,i++;const c=n[i];if(c){const n=c.size;if(o+t>n){const i=n-o;s=oe(await rt(c,o,i),await r.readUint8Array(e+i,t-i))}else s=await rt(c,o,t)}else s=re;return r.R=a.max(i,r.R),s}}class Qe extends xe{constructor(e,t=4294967295){super();const n=this;let s,i,a;r.assign(n,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new D({async write(t){if(t===Se)return void(a&&await d());const{availableSize:r}=n;if(a)t.length<r?await c(t):(await c(t.subarray(0,r)),await d(),t.length>r&&await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new w("Writer iterator completed too soon");s=r,s.size=0,s.maxSize&&(n.maxSize=s.maxSize),n.availableSize=n.maxSize,await tt(s),i=r.writable,a=i.getWriter(),await this.write(t)}},async close(){a&&(await a.ready,await l())},async abort(e){a&&await a.abort(e)}});async function c(e){const t=e.length;t&&(await a.ready,await a.write(e),s.size+=t,n.availableSize-=t)}async function d(){await l(),n.diskOffset+=s.size,n.diskNumber++,a=null,n.availableSize=n.maxSize}async function l(){await a.close()}r.defineProperty(n,ge,{get:()=>o})}async closeDisk(){const e=this.writable.getWriter();try{await e.ready,await e.write(Se)}finally{e.releaseLock()}}}class $e{constructor(e){return t.isArray(e)&&(e=new Je(e)),e instanceof E&&(e={readable:e}),e}}class et{constructor(e){return e.writable===Q&&typeof e.next==te&&(e=new Qe(e)),e instanceof D&&(e={writable:e}),e.size===Q&&(e.size=0),e}}async function tt(e,t){if(!e.init||e.initialized)return g.resolve();await e.init(t)}function rt(e,t,r){return e.readUint8Array(t,r)}const nt=new c,st=new c;function it(e){return nt.get(e)}function at(e){return st.get(e)}const ot=[[],[],[],[],[],[],[],[]];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)t=1&t?t>>>1^3988292384:t>>>1;ot[0][e]=t}for(let e=0;256>e;e++)for(let t=1;8>t;t++){const r=ot[t-1][e];ot[t][e]=r>>>8^ot[0][255&r]}const[ct,dt,lt,ut,wt,ft,pt,ht]=ot;class mt{constructor(e){this.T=e||-1}append(e){let t=0|this.T;const r=0|e.length;let n=0;if(r>=8&&e.buffer){const s=new m(e.buffer,e.byteOffset,r),i=r-8;for(;i>=n;n+=8){const e=t^s.getInt32(n,!0),r=s.getInt32(n+4,!0);t=ht[255&e]^pt[e>>>8&255]^ft[e>>>16&255]^wt[e>>>24&255]^ut[255&r]^lt[r>>>8&255]^dt[r>>>16&255]^ct[r>>>24&255]}}for(;r>n;n++)t=t>>>8^ct[255&(t^e[n])];this.T=t}get(){return~this.T}}class yt extends R{constructor(){let e;const t=new mt;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new f(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function gt(e){if(typeof S==ee){const t=new f((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new S).encode(e)}const St={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],n=St.v(r);return 32===n?e.concat(t):St.C(t,n,0|r,e.slice(0,e.length-1))},U(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+St.v(r)},I(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,a.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=St.O(t,e[r-1]&2147483648>>t-1,1)),e},O:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,v:e=>a.round(e/1099511627776)||32,C(e,t,r,n){for(void 0===n&&(n=[]);t>=32;t-=32)n.push(r),r=0;if(0===t)return n.concat(e);for(let s=0;s<e.length;s++)n.push(r|e[s]>>>t),r=e[s]<<32-t;const s=e.length?e[e.length-1]:0,i=St.v(s);return n.push(St.O(t+i&31,t+i>32?r:n.pop(),1)),n}},xt={bytes:{M(e){const t=St.U(e)/8,r=new f(t);let n;for(let s=0;t>s;s++)3&s||(n=e[s/4]),r[s]=n>>>24,n<<=8;return r},N(e){const t=[];let r,n=0;for(r=0;r<e.length;r++)n=n<<8|e[r],3&~r||(t.push(n),n=0);return 3&r&&t.push(St.O(8*(3&r),n)),t}}},bt=class{constructor(e){const t=this;t.blockSize=512,t._=[1732584193,4023233417,2562383102,271733878,3285377520],t.P=[1518500249,1859775393,2400959708,3395469782],e?(t.L=e.L.slice(0),t.W=e.W.slice(0),t.Z=e.Z):t.reset()}reset(){const e=this;return e.L=e._.slice(0),e.W=[],e.Z=0,e}update(e){const t=this;"string"==typeof e&&(e=xt.B.N(e));const r=t.W=St.concat(t.W,e),n=t.Z,s=t.Z=n+St.U(e);if(s>9007199254740991)throw new w("Cannot hash more than 2^53 - 1 bits");const i=new h(r);let a=0;for(let e=t.blockSize+n-(t.blockSize+n&t.blockSize-1);s>=e;e+=t.blockSize)t.V(i.subarray(16*a,16*(a+1))),a+=1;return r.splice(0,16*a),t}H(){const e=this;let t=e.W;const r=e.L;t=St.concat(t,[St.O(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(a.floor(e.Z/4294967296)),t.push(0|e.Z);t.length;)e.V(t.splice(0,16));return e.reset(),r}j(e,t,r,n){return e>19?e>39?e>59?e>79?void 0:t^r^n:t&r|t&n|r&n:t^r^n:t&r|~t&n}K(e,t){return t<<e|t>>>32-e}V(e){const r=this,n=r.L,s=t(80);for(let t=0;16>t;t++)s[t]=e[t];let i=n[0],o=n[1],c=n[2],d=n[3],l=n[4];for(let e=0;79>=e;e++){16>e||(s[e]=r.K(1,s[e-3]^s[e-8]^s[e-14]^s[e-16]));const t=r.K(5,i)+r.j(e,o,c,d)+l+s[e]+r.P[a.floor(e/20)]|0;l=d,d=c,c=r.K(30,o),o=i,i=t}n[0]=n[0]+i|0,n[1]=n[1]+o|0,n[2]=n[2]+c|0,n[3]=n[3]+d|0,n[4]=n[4]+l|0}},zt={importKey:e=>new zt.Y(xt.bytes.N(e)),G(e,t,r,n){if(r=r||1e4,0>n||0>r)throw new w("invalid params to pbkdf2");const s=1+(n>>5)<<2;let i,a,o,c,d;const l=new ArrayBuffer(s),u=new m(l);let f=0;const p=St;for(t=xt.bytes.N(t),d=1;(s||1)>f;d++){for(i=a=e.encrypt(p.concat(t,[d])),o=1;r>o;o++)for(a=e.encrypt(a),c=0;c<a.length;c++)i[c]^=a[c];for(o=0;(s||1)>f&&o<i.length;o++)u.setInt32(f,i[o]),f+=4}return l.slice(0,n/8)},Y:class{constructor(e){const t=this,r=t.X=bt,n=[[],[]];t.J=[new r,new r];const s=t.J[0].blockSize/32;e.length>s&&(e=(new r).update(e).H());for(let t=0;s>t;t++)n[0][t]=909522486^e[t],n[1][t]=1549556828^e[t];t.J[0].update(n[0]),t.J[1].update(n[1]),t.$=new r(t.J[0])}reset(){const e=this;e.$=new e.X(e.J[0]),e.ee=!1}update(e){this.ee=!0,this.$.update(e)}digest(){const e=this,t=e.$.H(),r=new e.X(e.J[1]).update(t).H();return e.reset(),r}encrypt(e){if(this.ee)throw new w("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},Ft=typeof z!=ee&&typeof z.getRandomValues==te,Rt="Invalid password",Et="Invalid signature",Dt="zipjs-abort-check-password";function At(e){if(Ft)return z.getRandomValues(e);throw new w("Crypto API not supported")}const Tt=16,vt={name:"PBKDF2"},kt=r.assign({hash:{name:"HMAC"}},vt),Ct=r.assign({iterations:1e3,hash:{name:"SHA-1"}},vt),Ut=["deriveBits"],It=[8,12,16],Ot=[16,24,32],Mt=10,Nt=[0,0,0,0],_t=typeof z!=ee,Pt=_t&&z.subtle,Lt=_t&&typeof Pt!=ee,Wt=xt.bytes,Zt=class{constructor(e){const t=this;t.te=[[[],[],[],[],[]],[[],[],[],[],[]]],t.te[0][0][0]||t.re();const r=t.te[0][4],n=t.te[1],s=e.length;let i,a,o,c=1;if(4!==s&&6!==s&&8!==s)throw new w("invalid aes key size");for(t.P=[a=e.slice(0),o=[]],i=s;4*s+28>i;i++){let e=a[i-1];(i%s===0||8===s&&i%s===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],i%s===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),a[i]=a[i-s]^e}for(let e=0;i;e++,i--){const t=a[3&e?i:i-4];o[e]=4>=i||4>e?t:n[0][r[t>>>24]]^n[1][r[t>>16&255]]^n[2][r[t>>8&255]]^n[3][r[255&t]]}}encrypt(e){return this.ne(e,0)}decrypt(e){return this.ne(e,1)}re(){const e=this.te[0],t=this.te[1],r=e[4],n=t[4],s=[],i=[];let a,o,c,d;for(let e=0;256>e;e++)i[(s[e]=e<<1^283*(e>>7))^e]=e;for(let l=a=0;!r[l];l^=o||1,a=i[a]||1){let i=a^a<<1^a<<2^a<<3^a<<4;i=i>>8^255&i^99,r[l]=i,n[i]=l,d=s[c=s[o=s[l]]];let u=16843009*d^65537*c^257*o^16843008*l,w=257*s[i]^16843008*i;for(let r=0;4>r;r++)e[r][l]=w=w<<24^w>>>8,t[r][i]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}ne(e,t){if(4!==e.length)throw new w("invalid aes block size");const r=this.P[t],n=r.length/4-2,s=[0,0,0,0],i=this.te[t],a=i[0],o=i[1],c=i[2],d=i[3],l=i[4];let u,f,p,h=e[0]^r[0],m=e[t?3:1]^r[1],y=e[2]^r[2],g=e[t?1:3]^r[3],S=4;for(let e=0;n>e;e++)u=a[h>>>24]^o[m>>16&255]^c[y>>8&255]^d[255&g]^r[S],f=a[m>>>24]^o[y>>16&255]^c[g>>8&255]^d[255&h]^r[S+1],p=a[y>>>24]^o[g>>16&255]^c[h>>8&255]^d[255&m]^r[S+2],g=a[g>>>24]^o[h>>16&255]^c[m>>8&255]^d[255&y]^r[S+3],S+=4,h=u,m=f,y=p;for(let e=0;4>e;e++)s[t?3&-e:e]=l[h>>>24]<<24^l[m>>16&255]<<16^l[y>>8&255]<<8^l[255&g]^r[S++],u=h,h=m,m=y,y=g,g=u;return s}},Bt=class{constructor(e,t){this.se=e,this.ie=t,this.ae=t}reset(){this.ae=this.ie}update(e){return this.oe(this.se,e,this.ae)}ce(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,n=255&e;255===t?(t=0,255===r?(r=0,255===n?n=0:++n):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=n}return e}de(e){0===(e[0]=this.ce(e[0]))&&(e[1]=this.ce(e[1]))}oe(e,t,r){let n;if(!(n=t.length))return[];const s=St.U(t);for(let s=0;n>s;s+=4){this.de(r);const n=e.encrypt(r);t[s]^=n[0],t[s+1]^=n[1],t[s+2]^=n[2],t[s+3]^=n[3]}return St.I(t,s)}},Vt=zt.Y;let Ht=_t&&Lt&&typeof Pt.importKey==te,jt=_t&&Lt&&typeof Pt.deriveBits==te;class qt extends R{constructor({password:e,rawPassword:t,encryptionStrength:r,checkPasswordOnly:n}){super({start(){Yt(this,e,t,r)},async transform(e,t){const r=this,{password:s,strength:i,le:a,ready:o}=r;s?(await(async(e,t,r,n)=>{const s=await Xt(e,t,r,Qt(n,0,It[t])),i=Qt(n,It[t]);if(s[0]!=i[0]||s[1]!=i[1])throw new w(Rt)})(r,i,s,Qt(e,0,It[i]+2)),e=Qt(e,It[i]+2),n?t.error(new w(Dt)):a()):await o;const c=new f(e.length-Mt-(e.length-Mt)%Tt);t.enqueue(Gt(r,e,c,0,Mt,!0))},async flush(e){const{ue:t,we:r,pending:n,ready:s}=this;if(r&&t){await s;const i=Qt(n,0,n.length-Mt),a=Qt(n,n.length-Mt);let o=re;if(i.length){const e=er(Wt,i);r.update(e);const n=t.update(e);o=$t(Wt,n)}const c=Qt($t(Wt,r.digest()),0,Mt);let d=n.length<Mt?1:0;for(let e=0;Mt>e;e++)d|=c[e]^a[e];if(d)throw new w(Et);e.enqueue(o)}}})}}class Kt extends R{constructor({password:e,rawPassword:t,encryptionStrength:r}){let n;super({start(){Yt(this,e,t,r)},async transform(e,t){const r=this,{password:n,strength:s,le:i,ready:a}=r;let o=re;n?(o=await(async(e,t,r)=>{const n=At(new f(It[t]));return oe(n,await Xt(e,t,r,n))})(r,s,n),i()):await a;const c=new f(o.length+e.length-e.length%Tt);c.set(o,0),t.enqueue(Gt(r,e,c,o.length,0))},async flush(e){const{ue:t,we:r,pending:s,ready:i}=this;if(r&&t){await i;let a=re;if(s.length){const e=t.update(er(Wt,s));r.update(e),a=$t(Wt,e)}n.signature=$t(Wt,r.digest()).slice(0,Mt),e.enqueue(oe(a,n.signature))}}}),n=this}}function Yt(e,t,n,s){r.assign(e,{ready:new g(t=>e.le=t),password:Jt(t,n),strength:s-1,pending:re})}function Gt(e,t,r,n,s,i){const{ue:a,we:o,pending:c}=e;c.length&&(t=oe(c,t));const d=t.length-s;let l;for(r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new f(t)).set(r,0)}return e})(r,n+(d-d%Tt)),l=0;d-Tt>=l;l+=Tt){const e=er(Wt,Qt(t,l,l+Tt));i&&o.update(e);const s=a.update(e);i||o.update(s),r.set($t(Wt,s),l+n)}return e.pending=Qt(t,l),r}async function Xt(e,n,s,i){e.password=null;const a=await(async(e,t,r,n,s)=>{if(!Ht)return zt.importKey(t);try{return await Pt.importKey("raw",t,r,!1,s)}catch{return Ht=!1,zt.importKey(t)}})(0,s,kt,0,Ut),o=await(async(e,t,r)=>{if(!jt)return zt.G(t,e.salt,Ct.iterations,r);try{return await Pt.deriveBits(e,t,r)}catch{return jt=!1,zt.G(t,e.salt,Ct.iterations,r)}})(r.assign({salt:i},Ct),a,8*(2*Ot[n]+2)),c=new f(o),d=er(Wt,Qt(c,0,Ot[n])),l=er(Wt,Qt(c,Ot[n],2*Ot[n])),u=Qt(c,2*Ot[n]);return r.assign(e,{keys:{key:d,fe:l,passwordVerification:u},ue:new Bt(new Zt(d),t.from(Nt)),we:new Vt(l)}),u}function Jt(e,t){return t===Q?gt(e):t}function Qt(e,t,r){return e.subarray(t,r)}function $t(e,t){return e.M(t)}function er(e,t){return e.N(t)}class tr extends R{constructor({password:e,rawPassword:t,passwordVerification:r,checkPasswordOnly:n}){super({start(){nr(this,e,t,r)},transform(e,t){const r=this;if(r.password||r.rawPassword){const t=sr(r,e.subarray(0,12));if(r.password=r.rawPassword=null,0!=(t[11]^r.passwordVerification))throw new w(Rt);e=e.subarray(12)}n?t.error(new w(Dt)):t.enqueue(sr(r,e))}})}}class rr extends R{constructor({password:e,rawPassword:t,passwordVerification:r}){super({start(){nr(this,e,t,r)},transform(e,t){const r=this;let n,s;if(r.password||r.rawPassword){r.password=r.rawPassword=null;const t=At(new f(12));t[11]=r.passwordVerification,n=new f(e.length+t.length),n.set(ir(r,t),0),s=12}else n=new f(e.length),s=0;n.set(ir(r,e),s),t.enqueue(n)}})}}function nr(e,t,n,s){r.assign(e,{password:t,rawPassword:n,passwordVerification:s}),((e,t,n)=>{const s=[305419896,591751049,878082192];if(r.assign(e,{keys:s,pe:new mt(s[0]),he:new mt(s[2])}),n)for(let t=0;t<n.length;t++)ar(e,n[t]);else for(let r=0;r<t.length;r++)ar(e,t.charCodeAt(r))})(e,t,n)}function sr(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=or(e)^t[n],ar(e,r[n]);return r}function ir(e,t){const r=new f(t.length);for(let n=0;n<t.length;n++)r[n]=or(e)^t[n],ar(e,t[n]);return r}function ar(e,t){let[,r]=e.keys;e.pe.append([t]);const n=~e.pe.get();r=dr(a.imul(dr(r+cr(n)),134775813)+1),e.he.append([r>>>24]);const s=~e.he.get();e.keys=[n,r,s]}function or(e){const t=2|e.keys[2];return cr(a.imul(t,1^t)>>>8)}function cr(e){return 255&e}function dr(e){return 4294967295&e}const lr="Invalid uncompressed size",ur="Invalid compressed data",wr="deflate-raw";class fr extends R{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:n}){super({});const{compressed:s,encrypted:i,useCompressionStream:a,zipCrypto:o,signed:c,level:d,deflate64:l,format:u}=e,w=this;let f,p,h,y=super.readable;const g=u&&at(u),S=c&&s&&!l&&!g&&(!i||o)&&!(!a||!n);i&&!o||!c||S||(f=new yt,y=xr(y,f)),s&&(g?y=br(y,gr(g.CompressionStream,u,{level:d,chunkSize:t})):S?(h=new pr,y=br(y,new n("gzip")),y=xr(y,h)):y=Sr(y,a,{level:d,chunkSize:t},n,r)),i&&(o?y=xr(y,new rr(e)):(p=new Kt(e),y=xr(y,p))),yr(w,y,()=>{let e;i&&!o&&(e=p.signature),i&&!o||!c||(e=S?h.signature:new m(f.value.buffer).getUint32(0)),w.signature=e})}}class pr extends R{constructor(){let e,t=10,r=new f(0);super({transform(e,n){if(t){const r=a.min(t,e.length);if(t-=r,!(e=e.subarray(r)).length)return}const s=r.length+e.length;if(8>=s)return void(r=oe(r,e));const i=s-8,o=a.min(i,r.length);n.enqueue(oe(r.subarray(0,o),e.subarray(0,i-o))),r=oe(r.subarray(o),e.subarray(i-o))},flush(){const t=de(r);e.signature=t.getUint32(0,!0),e.uncompressedSize=t.getUint32(4,!0)}}),e=this}}class hr extends R{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:n}){super({});const{zipCrypto:s,encrypted:i,signed:a,signature:o,compressed:c,useCompressionStream:d,deflate64:l,format:u}=e;let f,p,h=super.readable;if(i&&(s?h=xr(h,new tr(e)):(p=new qt(e),h=xr(h,p))),c){const e=u&&at(u);h=e?br(h,gr(e.DecompressionStream,u,{chunkSize:t})):Sr(h,d,{chunkSize:t,deflate64:l},n,r),h=(e=>{const t=e.getReader();return new E({async pull(e){let r;try{r=await t.read()}catch(e){if(e&&e.message)throw e;const t=new w(ur);throw t.cause=e,t}const{value:n,done:s}=r;s?e.close():e.enqueue(n)},cancel:e=>t.cancel(e)})})(h)}i&&!s||!a||(f=new yt,h=xr(h,f)),yr(this,h,()=>{if((!i||s)&&a){const e=new m(f.value.buffer);if(o!=e.getUint32(0,!1))throw new w(Et)}})}}const mr=new c;function yr(e,t,n){t=xr(t,new R({flush:n})),r.defineProperty(e,"readable",{get:()=>t})}function gr(e,t,r){if(!e)throw new w("Compression method not supported");return new e(t,r)}function Sr(e,t,r,n,s){const i=t&&n?n:s||n,a=r.deflate64?"deflate64-raw":wr;let o;try{o=new i(a,r)}catch(e){if(!t||!s||i==s)throw e;o=new s(a,r)}return br(e,o)}function xr(e,t){return e.pipeThrough(t)}function br(e,t){const r=t.writable.getWriter(),n=e.getReader();return(async()=>{try{for(;;){await r.ready;const e=await n.read();if(e.done){await r.close();break}await r.write(e.value)}}catch(e){await(async(e,t)=>{try{await e.abort(t)}catch{}})(r,e),await(async(e,t)=>{try{await e.cancel(t)}catch{}})(n,e)}})(),t.readable}const zr="data",Fr="deflate",Rr="inflate";class Er extends R{constructor(e,t){super({});const n=this,{codecType:s}=e;let i;s.startsWith(Fr)?i=fr:s.startsWith(Rr)&&(i=hr),n.outputSize=0;let a=0;const o=new i(e,t),c=super.readable,d=new R({transform(e,t){e&&e.length&&(a+=e.length,t.enqueue(e))},flush(){r.assign(n,{inputSize:a})}}),l=new R({transform(t,r){if(t&&t.length&&(r.enqueue(t),n.outputSize+=t.length,e.outputSize!==Q&&n.outputSize>e.outputSize))throw new w(lr)},flush(){const{signature:e}=o;r.assign(n,{signature:e,inputSize:a})}});r.defineProperty(n,"readable",{get:()=>c.pipeThrough(d).pipeThrough(o).pipeThrough(l)})}}class Dr extends R{constructor(e){const t=[];let r=0;function n(){const n=new f(e);let s=0;for(;e>s;){const r=t[0],i=e-s;r.length>i?(n.set(r.subarray(0,i),s),t[0]=r.subarray(i),s+=i):(n.set(r,s),s+=r.length,t.shift())}return r-=e,n}s.isFinite(e)&&e>=1||(e=65536),super({transform(s,i){for(t.push(s),r+=s.length;r>e;)i.enqueue(n())},flush(e){r&&e.enqueue(((e,t)=>{const r=new f(t);let n=0;for(const t of e)r.set(t,n),n+=t.length;return r})(t,r))}})}}const Ar={type:"module"},Tr="error";let vr,kr,Cr,Ur,Ir=!0;try{Ir=typeof structuredClone==te&&structuredClone(new DOMException("","AbortError")).code!==Q}catch{}class Or{constructor(e,{readable:t,writable:n},{options:s,config:i,me:a,useWebWorkers:o,transferStreams:c,workerURI:d},l){const{signal:u}=a;return r.assign(e,{ye:!0,ge:(e.ge||0)+1,readable:t.pipeThrough(new Dr(ae(i))).pipeThrough(new Mr(a),{signal:u}),writable:n,options:r.assign({},s),workerURI:d,transferStreams:c,terminate:()=>new g(t=>{const{Se:r,ye:n}=e;r?(n?e.xe=t:(r.terminate(),t()),e.be=null):t()}),ze(){if(e.ye){const{xe:t}=e;t&&(e.xe=null,e.Fe=!0,e.Se.terminate(),t()),e.ye=!1,l(e)}}}),vr===Q&&(vr=typeof k!=ee),(o&&vr?Pr:_r)(e,i)}}class Mr extends R{constructor({onstart:e,onprogress:t,size:r,onend:n}){let s=0;super({async start(){e&&await Nr(e,r)},async transform(e,n){s+=e.length,t&&await Nr(t,s,r),n.enqueue(e)},async flush(){n&&await Nr(n,s)}})}}async function Nr(e,...t){try{await e(...t)}catch{}}function _r(e,t){return{run:()=>Lr(e,t)}}function Pr(e,t){const{baseURI:n,chunkSize:i,workerStartupTimeout:a}=t;let{wasmURI:o}=t;if(!e.be){let c;typeof o==te&&(o=o());try{c=Zr(e.workerURI,n,e)}catch{return vr=!1,_r(e,t)}r.assign(e,{Se:c,Re:!1,Fe:!1,be:{run:async()=>{try{return await(async(e,t)=>{let n,i;const a=new g((e,t)=>{n=e,i=t});r.assign(e,{reader:null,writer:null,Ee:n,De:i,result:a});const{readable:o,options:c}=e,{writable:d,closed:l,Ae:u}=(e=>{const t=new AbortController,{writable:r,readable:n}=new R,s=n.pipeTo(e,{preventClose:!0,preventAbort:!0,signal:t.signal});return s.catch(()=>{}),{writable:r,closed:s,Ae:()=>t.abort()}})(e.writable);let f;try{f=Hr({type:"start",options:c,config:t,readable:o,writable:d},e)}catch(t){u();try{await l}catch{}throw e.ze(),t}f||r.assign(e,{reader:o.getReader(),writer:d.getWriter()});const{workerStartupTimeout:p}=t;e.Re||!s.isFinite(p)||0>p||(e.Te=setTimeout(()=>(e=>{if(e.Te=null,e.Re)return;const{De:t,writer:r}=e;if(Wr(e),e.Se=null,t){const e=new w("Worker startup timeout");e.ve=!0,t(e),r&&r.releaseLock()}})(e),p));try{const e=await a;return await h(),await l,e}catch(e){await h(),u();try{await l}catch{}throw e}async function h(){if(!f&&!d.locked)try{await d.getWriter().close()}catch{}}})(e,{chunkSize:i,wasmURI:o,baseURI:n,workerStartupTimeout:a})}catch(r){if(r&&r.ve){vr=!1;const{reader:r}=e;return r&&r.releaseLock(),e.reader=null,e.writer=null,Lr(e,t)}throw r}}}})}return e.be}async function Lr({options:e,readable:t,writable:r,ze:n},s){let i;try{if(e.compressed&&!e.format){const t=e.codecType.startsWith(Fr),r=t?s.CompressionStreamZlib:s.DecompressionStreamZlib,n=t?s.CompressionStream:s.DecompressionStream;if(e.useCompressionStream){if(r&&r.ke&&!(e=>{if(!e)return!1;let t=mr.get(e);if(t===Q){try{new e(wr),t=!0}catch{t=!1}mr.set(e,t)}return t})(n))try{await void 0}catch{}}else try{await void 0}catch{r&&!r.ke||(e.useCompressionStream=!0)}}i=new Er(e,s),await t.pipeThrough(i).pipeThrough(new Dr(ae(s))).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:n,inputSize:a,outputSize:o}=i;return{signature:n,inputSize:a,outputSize:o}}catch(e){throw i&&(e.outputSize=i.outputSize),e}finally{n()}}function Wr(e){const{Se:t}=e;if(t)try{t.terminate()}catch{}e.be=null}function Zr(e,t,n,s,i=!0){let a,o,c;if(Cr===Q||kr!==e){const r=typeof e==te;o=r?e(i):e;const d=o.startsWith("data:"),l=o.startsWith("blob:");if(d||l){s===Q&&(s=!1),s&&(c=Ar);try{a=new k(o,c)}catch(i){if(l)try{u.revokeObjectURL(o)}catch{}if(r&&l)return Zr(e,t,n,s,!1);if(s)throw i;return Zr(e,t,n,!0,!1)}}else{s===Q&&(s=!0),s&&(c=Ar);try{o=new u(o,t)}catch{}try{a=new k(o,c)}catch(r){if(s)throw r;return Zr(e,t,n,!1,i)}}kr=e,Cr=o,Ur=c}else a=new k(Cr,Ur);return a.addEventListener("message",e=>{n.Re=!0,Br(n),(async({data:e},t)=>{const{type:n,value:s,messageId:i,result:a,error:o}=e,{reader:c,writer:d,Ee:l,De:u,ze:p,ge:h}=t,m=()=>t.ge!=h;try{if(o){const{message:e,stack:t,code:n,name:s,outputSize:i}=o,a=new w(e);r.assign(a,{stack:t,code:n,name:s,outputSize:i}),y(a)}else{if("pull"==n){const{value:e,done:r}=await c.read();m()||Hr({type:zr,value:e,done:r,messageId:i},t)}n==zr&&(await d.ready,await d.write(new f(s)),m()||Hr({type:"ack",messageId:i},t)),"close"==n&&y(null,a)}}catch(o){m()||(Wr(t),y(o))}function y(e,t){m()||(e?u(e):l(t),d&&d.releaseLock(),p())}})(e,n)}),a.addEventListener(Tr,e=>Vr(e,n)),a.addEventListener("messageerror",e=>Vr(e,n)),a}function Br(e){const{Te:t}=e;t&&(clearTimeout(t),e.Te=null)}function Vr(e,t){e.preventDefault&&e.preventDefault(),Br(t);const{Re:n,De:s,writer:i,ze:a}=t;if(Wr(t),n||(t.Se=null),s){let t=e.error||new w(e.message||Tr);n||(t=r.assign(new w(t.message||Tr),{ve:!0})),s(t),i&&i.releaseLock(),n&&a()}}function Hr(e,{Se:t,writer:r,transferStreams:n,Re:s}){try{const{value:r,readable:i,writable:a}=e,o=[];if(r&&(e.value=ce(r),o.push(e.value.buffer)),n&&Ir&&s?(i&&o.push(i),a&&o.push(a)):e.readable=e.writable=null,o.length)try{return t.postMessage(e,o),!0}catch{Ir=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),e}}let jr=[];const qr=[];let Kr,Yr,Gr=0;async function Xr(e,t){const{options:r,config:n}=t,{transferStreams:i,useWebWorkers:a,useCompressionStream:o,compressed:c,signed:d,encrypted:l,format:f,codecURI:p}=r,{workerURI:h,maxWorkers:m}=n;f&&(p&&(r.codecURI=((e,t)=>{try{return new u(e,t).toString()}catch{return e}})(p,n.baseURI)),await(async(e,t)=>{!st.has(e)&&t&&((e,t)=>{const{CompressionStream:r,DecompressionStream:n}=t;if(typeof r!=te&&typeof n!=te)throw new w("Invalid codec module");st.set(e,{CompressionStream:r,DecompressionStream:n})})(e,await(import(t)))})(f,r.codecURI)),t.transferStreams=i||i===Q&&n.transferStreams;const y=!c&&!d&&!l,S=f===Q||!!r.codecURI;return t.useWebWorkers=!y&&S&&(a||a===Q&&n.useWebWorkers),t.workerURI=t.useWebWorkers&&h?h:Q,r.useCompressionStream=o||o===Q&&n.useCompressionStream,(await(async()=>{const r=jr.find(e=>!e.ye);if(r)return tn(r),new Or(r,e,t,x);if(jr.length<m){const r={Ce:Gr};return Gr++,jr.push(r),new Or(r,e,t,x)}return new g(r=>{qr.push({resolve:r,stream:e,Ue:t}),Yr=n.workerStarvationTimeout,Jr()})})()).run();function x(e){if(Qr(),qr.length){const[{resolve:t,stream:r,Ue:n}]=qr.splice(0,1);t(new Or(e,r,n,x)),Jr()}else e.Se?(tn(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:n}=r;s.isFinite(n)&&n>=0&&(e.Fe?e.Fe=!1:e.Ie=setTimeout(async()=>{jr=jr.filter(t=>t!=e);try{await e.terminate()}catch{}},n))})(e,t)):jr=jr.filter(t=>t!=e)}}function Jr(){!Kr&&qr.length&&s.isFinite(Yr)&&Yr>=0&&(Kr=setTimeout($r,Yr))}function Qr(){Kr&&(clearTimeout(Kr),Kr=null)}function $r(){if(Kr=null,qr.length){const[{resolve:e,stream:t,Ue:n}]=qr.splice(0,1),s=r.assign({},n,{useWebWorkers:!1,workerURI:Q});e(new Or({},t,s,en)),Jr()}}function en(){Qr(),Jr()}function tn(e){const{Ie:t}=e;t&&(clearTimeout(t),e.Ie=null)}const rn="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function nn(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=rn[e[r]];return t}})(e):new x(t,{ignoreBOM:!0}).decode(e)}const sn="filename",an="rawFilename",on="comment",cn="rawComment",dn="uncompressedSize",ln="compressedSize",un="offset",wn="diskNumberStart",fn="lastModDate",pn="rawLastModDate",hn="lastAccessDate",mn="creationDate",yn="rawCreationDate",gn="internalFileAttributes",Sn="externalFileAttributes",xn="msdosAttributesRaw",bn="msdosAttributes",zn="msDosCompatible",Fn="zip64",Rn="encrypted",En="version",Dn="versionMadeBy",An="zipCrypto",Tn="directory",vn="executable",kn="compressionMethod",Cn="signature",Un="extraField",In="unixMode",On="setuid",Mn="setgid",Nn="sticky",_n=[sn,an,dn,ln,fn,pn,on,cn,hn,mn,yn,un,wn,gn,Sn,xn,bn,zn,Fn,Rn,En,Dn,An,Tn,vn,kn,Cn,Un,"extraFieldUnix","extraFieldInfoZip","uid","gid",In,On,Mn,Nn,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Pn{constructor(e){_n.forEach(t=>this[t]=e[t])}}const Ln="password",Wn="rawPassword",Zn="passThrough",Bn="signal",Vn="checkAmbiguity",Hn="useWebWorkers",jn="useCompressionStream",qn="transferStreams",Kn="preventClose",Yn="offset",Gn="usdz",Xn="strictness",Jn="strict",Qn="tolerant",$n="File format is not recognized",es="End of central directory not found",ts="End of Zip64 central directory locator not found",rs="Central directory header not found",ns="Local file header not found",ss="Zip64 extra field not found",is="File contains encrypted entry",as="Encryption method not supported",os="Compression method not supported",cs="Split zip file",ds="Overlapping entry found",ls="Ambiguous archive",us="Encrypted central directory is not supported",ws="utf-8",fs="cp437",ps=[[dn,C],[ln,C],[un,C],[wn,U]],hs={[U]:{Oe:Ws,bytes:4},[C]:{Oe:Zs,bytes:8}};class ms{constructor(e,t={}){r.assign(this,{reader:new $e(e),options:t,config:ie(),Me:new c})}async*getEntriesGenerator(e={}){const t=this;let{reader:n}=t;const{config:s}=t;if(await tt(n),n.size!==Q&&n.readUint8Array||(n=new Ae(await new l(n.readable).blob()),await tt(n)),n.size<Z)throw new w($n);const i=Es(Ms(t,e,Xn),Ms(t,e,Vn)),o=i==Jn,c=i!=Qn,u=((e,t)=>e!==Q?e:t==Jn?0:t==Qn?1/0:U)(Ms(t,e,"maxAppendedDataSize"),i),{Ne:f,_e:p}=await(async(e,t,r)=>{const{size:n}=e,s=a.min(n,65557),i={count:Ds};let o,c,d=0;for await(const[r,a,l,u,w]of ks(e,s)){const s=Ls(r,u+20);if(w+Z+s==n){const s=await Us(e,r,a,u,w,n,i);if(s==vs){if(o||(o=Cs(l,u,w)),d++,!t||d>1)break}else s!=Ts||c||(c=Cs(l,u,w))}}return o||(o=c),o||(o=await(async(e,t,r)=>{const{size:n}=e,s=a.min(n,t==1/0?n:65557+t);let i,o;for await(const[t,a,c,d,l]of ks(e,s)){const s=Cs(c,d,l);i||(i=s);const u=await Us(e,t,a,d,l,n,r);if(u==vs)return s;u!=Ts||o||(o=s)}return o||i})(e,r,i)),{Ne:o,_e:d}})(n,c,u);if(!f)throw Ws(de(await rt(n,0,4)))==M?new w(cs):new w(es);c&&p>1&&Os("multiple end of central directory records");const h=de(f);let m=Ws(h,12),y=Ws(h,16);const S=f.offset,x=Ls(h,20),b=S+Z+x;n.size-b>u&&Os("appended data");let z=Ls(h,4);const F=n.R||0;let E,D,A,T=Ls(h,6),v=Ls(h,10),k=0;const O=y==C||m==C||v==U||T==U;if(y!=C&&T!=U&&(y+=Rs(n,T)),O){const e=f.offset<B?re:await rt(n,f.offset-B,B),t=de(e);if(e.length==B&&Ws(t,0)==W){y=Rs(n,Ws(t,4))+Zs(t,8);let e=await rt(n,y,56),r=de(e);const s=f.offset-B-56;if((56>e.length||Ws(r,0)!=L)&&y!=s&&s>=0){const t=y;y=s,y>t&&(k=y-t),e=await rt(n,y,56),r=de(e)}if(56>e.length||Ws(r,0)!=L)throw new w(ts);D=!0,A=Zs(r,4)>44,z==U?z=Ws(r,16):o&&z!=Ws(r,16)&&Os("mismatched zip64 end of central directory record"),T==U?T=Ws(r,20):o&&T!=Ws(r,20)&&Os("mismatched zip64 end of central directory record"),v==U?v=Zs(r,32):o&&v!=Zs(r,32)&&Os("mismatched zip64 end of central directory record"),m==C?m=Zs(r,40):o&&m!=Zs(r,40)&&Os("mismatched zip64 end of central directory record"),y=Rs(n,T)+Zs(r,48)+k}}const N=m,P=f.offset-(D?76:0);if(y<n.size||(k=n.size-y-m-Z,y=n.size-m-Z),F!=z)throw new w(cs);if(0>y)throw new w($n);let V=0,H=await rt(n,y,m),G=de(H);if(m){if(4>H.length)throw new w($n);const e=P-m;if(y!=e&&T==z){let t=!(Ws(G,V)==_);if(t||0>e||e+4>n.size||(t=Ws(de(await rt(n,e,4)),0)==_),t){const t=y;y=e,y>t&&(k+=y-t),H=await rt(n,y,m),G=de(H)}}}const X=P-y;if(m==X||0>X||T!=z||(m=X,H=await rt(n,y,m),G=de(H)),0>y||y>=n.size)throw new w($n);E=y;const J=Ms(t,e,"filenameEncoding"),$=Ms(t,e,"commentEncoding"),ee=o?new d:Q;let te;for(let i=0;v>i;i++){const c=new ys(n,s,t.options);if(V+46>H.length||Ws(G,V)!=_){if(0==i&&(A||gs(G)))throw new w(us);throw new w(rs)}Ss(c,G,V+6);const d=!!c.bitFlag.languageEncodingFlag,u=V+46,f=u+c.filenameLength,p=f+c.extraFieldLength,h=Ls(G,V+4),m=!(h>>8),y=h>>8==3,S=H.subarray(u,f),x=Ls(G,V+32),b=p+x,z=H.subarray(p,b),F=d,D=d,T=Ws(G,V+38),C=T&I,O={readOnly:!!(1&C),hidden:!!(2&C),system:!!(4&C),directory:!!(16&C),archive:!!(32&C)},M=Ws(G,V+42),N=Ms(t,e,"decodeText")||nn,P=F?ws:J||fs,L=D?ws:$||fs;let W=N(S,P);W===Q&&(W=nn(S,P));let Z=N(z,L);Z===Q&&(Z=nn(z,L)),r.assign(c,{index:i,versionMadeBy:h,msDosCompatible:m,compressedSize:0,uncompressedSize:0,Pe:x,offset:M,diskNumberStart:Ls(G,V+34),internalFileAttributes:Ls(G,V+36),externalFileAttributes:T,msdosAttributesRaw:C,msdosAttributes:O,rawFilename:S,filenameUTF8:F,commentUTF8:D,rawExtraField:H.subarray(f,p),rawComment:z,filename:W,comment:Z}),xs(c,c,G,V+6),c.offset+=k,E=a.min(Rs(n,c.diskNumberStart)+c.offset,E),o&&(ee.has(c.filename)&&(te=!0),ee.add(c.filename));const B=c.externalFileAttributes>>16&U;c.unixMode===Q&&16877&B&&(c.unixMode=B);const X=!!(c.unixMode&q),re=!!(c.unixMode&K),ne=!!(512&c.unixMode),se=c.unixMode!==Q?!!(73&c.unixMode):y&&!!(73&B),ie=c.unixMode!==Q&&(61440&c.unixMode)==j,ae=(61440&B)==j;r.assign(c,{setuid:X,setgid:re,sticky:ne,unixExternalUpper:B,internalFileAttribute:c.internalFileAttributes,externalFileAttribute:c.externalFileAttributes,executable:se,directory:ie||ae||m&&O.directory||c.filename.endsWith(Y)&&!c.uncompressedSize,zipCrypto:c.encrypted&&!c.extraFieldAES});const oe=new Pn(c);oe.getData=(e,r)=>c.getData(e,oe,t.Me,r),oe.arrayBuffer=async e=>{const r=new R,[n]=await g.all([new l(r.readable).arrayBuffer(),c.getData(r,oe,t.Me,e)]);return n},V=b;const{onprogress:ce}=e;if(ce)try{await ce(i+1,v,new Pn(c))}catch{}yield oe}o&&V!=N&&Os("trailing central directory data"),te&&Os("duplicate filename"),o&&(k||v&&E>0)&&Os("prepended data");const ne=Ms(t,e,"extractPrependedData"),se=Ms(t,e,"extractAppendedData");return ne&&(t.prependedData=E>0?await rt(n,0,E):re),t.comment=x?await rt(n,S+Z,x):re,se&&(t.appendedData=b<n.size?await rt(n,b,n.size-b):re),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}let ys=class{constructor(e,t,n){r.assign(this,{reader:e,config:t,options:n})}async getData(e,t,r,n={}){const s=this,{reader:i,index:a,offset:o,diskNumberStart:c,extraFieldAES:d,extraFieldZip64:l,compressionMethod:u,config:f,bitFlag:p,signature:h,rawLastModDate:m,uncompressedSize:y,compressedSize:g}=s,{dataDescriptor:S}=p,x=t.localDirectory={},b=Rs(i,c)+o,z=await rt(i,b,G),F=de(z);let R=Ms(s,n,Ln),E=Ms(s,n,Wn);const A=Ms(s,n,Zn);if(R=R&&R.length&&R,E=E&&E.length&&E,d&&99!=d.originalCompressionMethod)throw new w(os);const T=A?Q:it(u);if(0!=u&&8!=u&&9!=u&&!T&&!A)throw new w(os);if(z.length<G||Ws(F,0)!=O)throw new w(ns);Ss(x,F,4);const{extraFieldLength:v,filenameLength:k}=x,C=Es(Ms(s,n,Xn),Ms(s,n,Vn))==Jn;let U=re;if(C&&(k||v)){const e=await rt(i,b+G,k+v);U=e.subarray(0,k),x.rawExtraField=e.subarray(k)}else x.rawExtraField=v?await rt(i,b+G+k,v):re;xs(s,x,F,4,!0),C&&((e,t,r)=>{const{rawFilename:n}=e;(r.length!=n.length||r.some((e,t)=>e!=n[t]))&&Os("mismatched local file header (filename)"),(2057&t.rawBitFlag)!=(2057&e.rawBitFlag)&&Os("mismatched local file header (general purpose bit flag)"),t.compressionMethod!=e.compressionMethod&&Os("mismatched local file header (compression method)"),t.bitFlag.dataDescriptor||!(t.signature||t.compressedSize||t.uncompressedSize)||t.signature==e.signature&&t.compressedSize==e.compressedSize&&t.uncompressedSize==e.uncompressedSize||Os("mismatched local file header (signature or sizes)")})(s,x,U);const{lastAccessDate:M,creationDate:_}=x;M&&(t.lastAccessDate=M),_&&(t.creationDate=_);const P=s.encrypted&&x.encrypted&&!A,L=P&&!d;if(A||(t.zipCrypto=L),P){if(!(64&~x.rawBitFlag))throw new w(as);if(!L&&(1>d.strength||d.strength>3))throw new w(as);if(!R&&!E)throw new w(is)}const W=b+G+k+v,Z=g,B=i.createReadable({offset:W,size:Z}),V=Ms(s,n,Bn),H=Ms(s,n,"checkPasswordOnly");let j=Ms(s,n,"checkOverlappingEntry");const q=Ms(s,n,"checkOverlappingEntryOnly");q&&(j=!0);const{onstart:K,onprogress:Y,onend:X}=n,J=9==u;let $=Ms(s,n,jn);J&&($=!1);const ee={options:{codecType:Rr,password:R,rawPassword:E,zipCrypto:L,encryptionStrength:d&&d.strength,signed:Ms(s,n,"checkSignature")&&!A,passwordVerification:L&&(S?m>>>8&I:h>>>24&I),outputSize:A?g:y,signature:h,compressed:0!=u&&!A,encrypted:P,useWebWorkers:Ms(s,n,Hn),useCompressionStream:$,transferStreams:Ms(s,n,qn),deflate64:J,format:T?T.format:Q,codecURI:T?T.codecURI:Q,checkPasswordOnly:H},config:f,me:{signal:V,size:Z,onstart:K,onprogress:Y,onend:X}};let te;j&&await(async({reader:e,Le:t,index:r,offset:n,signature:s,compressedSize:i,uncompressedSize:a,We:o,dataDescriptor:c,extraFieldZip64:d,Me:l})=>{let u=0;if(c&&(u=d?20:12),u){const r=await rt(e,o+i,u+4);if(r.length==u+4&&Ws(de(r),0)==N){const e=Ws(de(r),4);let n,o;d?(n=Zs(de(r),8),o=Zs(de(r),16)):(n=Ws(de(r),8),o=Ws(de(r),12)),(t.encrypted&&!t.zipCrypto||e==s)&&n==i&&o==a&&(u+=4)}}const f={start:n,end:o+i+u,Le:t};for(const[e,t]of l)if(e!=r&&f.start<t.end&&t.start<f.end){const e=new w(ds);throw e.Ze=t.Le,e}l.set(r,f)})({reader:i,Le:t,index:a,offset:b,signature:h,compressedSize:g,uncompressedSize:y,We:W,dataDescriptor:S||x.bitFlag.dataDescriptor,extraFieldZip64:l||x.extraFieldZip64,Me:r});try{if(!q){H&&(e=new D),e=new et(e),await tt(e,A?g:y),({writable:te}=e);const{outputSize:t}=await Xr({readable:B,writable:te},ee);if(e.size+=t,t!=(A?g:y))throw new w(lr)}}catch(t){if(t.outputSize!==Q&&(e.size+=t.outputSize),!H||t.message!=Dt)throw t}finally{Ms(s,n,Kn)||!te||te.locked||await te.getWriter().close()}return H||q?Q:e.getData?e.getData():te}};function gs(e){const t=a.min(e.byteLength,1024)-3;for(let r=0;t>r;r++)if(134630224==Ws(e,r))return!0;return!1}function Ss(e,t,n){const s=e.rawBitFlag=Ls(t,n+2),i=!(1&~s),a=Ws(t,n+6);r.assign(e,{encrypted:i,version:Ls(t,n),bitFlag:{level:(6&s)>>1,dataDescriptor:!(8&~s),languageEncodingFlag:(s&H)==H},rawLastModDate:a,lastModDate:Ns(a),filenameLength:Ls(t,n+22),extraFieldLength:Ls(t,n+24)})}function xs(e,t,n,s,i){const{rawExtraField:a}=t,d=t.extraField=new c,l=de(a);let u=0;try{for(;u<a.length;){const e=Ls(l,u),t=Ls(l,u+2);d.set(e,{type:e,data:a.slice(u+4,u+4+t)}),u+=4+t}}catch{}const f=Ls(n,s+4);r.assign(t,{signature:Ws(n,s+10),compressedSize:Ws(n,s+14),uncompressedSize:Ws(n,s+18)});const p=d.get(1);p&&(((e,t)=>{t.zip64=!0;const r=de(e.data),n=ps.filter(([e,r])=>t[e]==r),s=n.reduce((e,[,t])=>e+hs[t].bytes,0);if(e.data.length<s)throw new w(ss);for(let s=0,i=0;s<n.length;s++){const[a,o]=n[s],c=hs[o];t[a]=e[a]=c.Oe(r,i),i+=c.bytes}})(p,t),t.extraFieldZip64=p);const h=d.get(28789);h&&(bs(h,sn,an,t,e),t.extraFieldUnicodePath=h);const m=d.get(25461);m&&(bs(m,on,cn,t,e),t.extraFieldUnicodeComment=m);const y=d.get(39169);y&&y.data.length>=7?(((e,t,n)=>{const s=de(e.data),i=Ps(s,4);r.assign(e,{Be:Ps(s,0),vendorId:Ps(s,2),strength:i,originalCompressionMethod:n,compressionMethod:Ls(s,5)}),t.compressionMethod=e.compressionMethod})(y,t,f),t.extraFieldAES=y):t.compressionMethod=f;const g=d.get(10);g&&(((e,t)=>{const n=de(e.data);let s,i=4;try{for(;i<e.data.length&&!s;){const t=Ls(n,i),r=Ls(n,i+2);1==t&&(s=e.data.slice(i+4,i+4+r)),i+=4+r}}catch{}try{if(s&&24==s.length){const n=de(s),i=n.getBigUint64(0,!0),a=n.getBigUint64(8,!0),o=n.getBigUint64(16,!0);r.assign(e,{rawLastModDate:i,rawLastAccessDate:a,rawCreationDate:o});const c={lastModDate:_s(i),lastAccessDate:_s(a),creationDate:_s(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(g,t),t.extraFieldNTFS=g);const S=d.get(30805);if(S)zs(S,t,!1),t.extraFieldUnix=S;else{const e=d.get(30837);e&&(zs(e,t,!0),t.extraFieldInfoZip=e)}const x=d.get(V);x&&(((e,t,r)=>{if(!e.data.length)return;const n=de(e.data),s=Ps(n,0),i=[],a=[];r?(1&~s||(i.push(fn),a.push(pn)),2&~s||(i.push(hn),a.push("rawLastAccessDate")),4&~s||(i.push(mn),a.push(yn))):5>e.data.length||(i.push(fn),a.push(pn));let c=1;i.forEach((r,s)=>{if(e.data.length>=c+4){const i=Ws(n,c);t[r]=e[r]=new o(1e3*(0|i));const d=a[s];e[d]=i}c+=4})})(x,t,i),t.extraFieldExtendedTimestamp=x);const b=d.get(6534);b&&(t.extraFieldUSDZ=b)}function bs(e,t,n,s,i){if(5>e.data.length)return void(e.valid=!1);const a=de(e.data),o=new mt;o.append(i[n]);const c=de(new f(4));c.setUint32(0,o.get(),!0);const d=Ws(a,1);r.assign(e,{version:Ps(a,0),[t]:nn(e.data.subarray(5)),valid:!i.bitFlag.languageEncodingFlag&&d==Ws(c,0)}),e.valid&&(s[t]=e[t],s[t+"UTF8"]=!0)}function zs(e,t,n){try{const s=de(e.data);let i,a;if(n){let t=0;const n=Ps(s,t++),o=Ps(s,t++);i=Fs(e.data.subarray(t,t+o)),t+=o;const c=Ps(s,t++);a=Fs(e.data.subarray(t,t+c)),r.assign(e,{version:n,uid:i,gid:a})}else 4>e.data.length||(i=Ls(s,0),a=Ls(s,2),r.assign(e,{uid:i,gid:a}));i!==Q&&(t.uid=i),a!==Q&&(t.gid=a)}catch{}}function Fs(e){const t=new f(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Rs(e,t){return e.A?e.A(t):0}function Es(e,t){return e===Q?t?Jn:"balanced":e}const Ds=64,As=0,Ts=1,vs=2;async function*ks(e,t){const r=e.size-t,n=await rt(e,r,t),s=de(n);for(let e=n.length-Z;e>=0;e--)Ws(s,e)==P&&(yield[s,r,n,e,r+e])}function Cs(e,t,r){return{offset:r,buffer:e.slice(t,t+Z).buffer}}async function Us(e,t,r,n,s,i,a){const o=Ls(t,n+10),c=Ws(t,n+12),d=Ws(t,n+16);if(o==U||c==C||d==C)return await Is(e,t,r,s-B,i,a)==W?vs:As;if(!o&&!c)return Ts;const l=Ls(t,n+6);for(const n of[s-c,Rs(e,l)+d])if(await Is(e,t,r,n,i,a)==_)return vs;return As}async function Is(e,t,r,n,s,i){return 0>n||n+4>s?Q:r>n?i.count>0?(i.count--,Ws(de(await rt(e,n,4)),0)):Q:Ws(t,n-r)}function Os(e){const t=new w(ls);throw t.reason=e,t}function Ms(e,t,r){return t[r]===Q?e.options[r]:t[r]}function Ns(e){const t=(4294901760&e)>>16,r=e&U;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function _s(e){return new o(s(e/i(1e4)-i(116444736e5)))}function Ps(e,t){return e.getUint8(t)}function Ls(e,t){return e.getUint16(t,!0)}function Ws(e,t){return e.getUint32(t,!0)}function Zs(e,t){return s(e.getBigUint64(t,!0))}var Bs=r.freeze({__proto__:null,ERR_AMBIGUOUS_ARCHIVE:ls,ERR_BAD_FORMAT:$n,ERR_CENTRAL_DIRECTORY_NOT_FOUND:rs,ERR_ENCRYPTED:is,ERR_ENCRYPTED_CENTRAL_DIRECTORY:us,ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND:ts,ERR_EOCDR_NOT_FOUND:es,ERR_EXTRAFIELD_ZIP64_NOT_FOUND:ss,ERR_INVALID_COMPRESSED_DATA:ur,ERR_INVALID_PASSWORD:Rt,ERR_INVALID_SIGNATURE:Et,ERR_INVALID_UNCOMPRESSED_SIZE:lr,ERR_LOCAL_FILE_HEADER_NOT_FOUND:ns,ERR_OVERLAPPING_ENTRY:ds,ERR_SPLIT_ZIP_FILE:cs,ERR_UNSUPPORTED_COMPRESSION:os,ERR_UNSUPPORTED_ENCRYPTION:as,ZipReader:ms});const Vs="Zip file comment exceeds 64KB",Hs="Version exceeds 65535",js="Extra field data exceeds 64KB",qs=-2147483648,Ks=2147483647,Ys="Zip64 is not supported (set the 'zip64' option to 'true')",Gs=new f([7,0,2,0,65,69,3,0,0]),Xs="infozip",Js="unix";let Qs=0;const $s=[];class ei{constructor(e,t={}){e=new et(e);const{availableSize:n=$,maxSize:s=$}=e,i=n>0&&n!==$&&s>0&&s!==$;r.assign(this,{writer:e,Ve:i,options:t,config:ie(),files:new c,He:new d,offset:t[Yn]===Q?e.size||e.writable.size||0:t[Yn],je:t[Yn]===Q?0:t[Yn]-(e.size||e.writable.size||0),qe:new d,Ke:0,Ye:Q})}async prependZip(e){if(this.He.size)throw new w("Zip file not empty");e=new $e(e),await tt(e);const{ZipReader:t}=await g.resolve().then(()=>Bs),n=new t(e.readable),s=await n.getEntries();await n.close(),await tt(this.writer),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.He=new d(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,rawLastModDate:n,lastAccessDate:s,creationDate:i,rawFilename:a,bitFlag:o,encrypted:c,uncompressedSize:d,compressedSize:l,zip64:u}=e;let{compressionMethod:w,Ge:f,Xe:p,Je:h,Qe:m,$e:y,rawExtraField:g}=e;const{level:S,languageEncodingFlag:x,dataDescriptor:b}=o;f=f||re,p=p||re,h=h||re,m=m||re,y=y||re,g=g||re,e.extraFieldAES&&(w=99);const z=Si(f,p,h,m,y,g),F=u&&d>=C,R=u&&l>=C,E=-7&bi(S,x,b,c,w)|S<<1,{et:D,nt:A}=xi({version:t,bitFlag:E,compressionMethod:w,uncompressedSize:d,compressedSize:l,rawLastModDate:n,rawFilename:a,st:R,it:F,extraFieldLength:z}),{signature:T}=e;return T!==Q&&mi(A,10,T),r.assign(e,{it:F,st:R,ot:u&&e.offset>=C,diskNumberStart:0,ct:!1,Ge:f,Xe:p,Je:h,Qe:m,$e:y,rawExtraField:g,extendedTimestamp:h.length>0||m.length>0,lt:1+(s?2:0)+(i?4:0),et:D,nt:A}),[e.filename,e]}))}async add(e="",t,n={}){const s=this;n=r.assign({},n);const{qe:c,config:d}=s;let l,u;Qs<d.maxWorkers?Qs++:await new g(e=>$s.push(e));try{if(e=e.trim(),fi(s,n,Tn)&&!e.endsWith(Y)&&(e+=Y),s.He.has(e))throw new w("File already exists");return s.He.add(e),u=!0,l=(async(e,t,n,s)=>{const c=((e,t,r)=>{t=t.trim();let n=fi(e,r,zn),s=fi(e,r,Dn,n?20:768);const i=fi(e,r,vn),a=fi(e,r,"uid"),o=fi(e,r,"gid");let c=fi(e,r,In),d=fi(e,r,"unixExtraFieldType"),l=fi(e,r,On),u=fi(e,r,Mn),f=fi(e,r,Nn);if(a!==Q&&(0>a||a>C))throw new w("Invalid uid (must be integer 0..2^32-1)");if(o!==Q&&(0>o||o>C))throw new w("Invalid gid (must be integer 0..2^32-1)");if(c!==Q&&(0>c||c>U))throw new w("Invalid UNIX mode (must be integer 0..65535)");if(d!==Q&&d!==Xs&&d!==Js)throw new w("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");if(d===Js&&(a!==Q&&a>U||o!==Q&&o>U))throw new w("uid/gid must be 0..65535 for unixExtraFieldType 'unix' (use 'infozip' for larger ids)");d!==Q||a===Q&&o===Q||(d=Xs);let p=fi(e,r,xn),h=fi(e,r,bn);const m=p!==Q||h!==Q;if(a!==Q||o!==Q||c!==Q||d?(n=!1,s=s&U|768):m&&(n=!0,s&=I),p!==Q&&(0>p||p>I))throw new w("Invalid msdosAttributesRaw (must be integer 0..255)");if(h&&"object"!=typeof h)throw new w("Invalid msdosAttributes (must be an object with boolean flags)");if(s>U)throw new w(Hs);let y=fi(e,r,Sn);const g=y!==Q;g||(y=0),!r[Tn]&&t.endsWith(Y)&&(r[Tn]=!0);const S=fi(e,r,Tn);let x;if(S?(t.endsWith(Y)||(t+=Y),g||(y=16,n||(y|=16877<<16))):n||g||(y=i?493<<16:27525120),!n){const e=c!==Q||!!(l||u||f);x=y>>16&U,c=c===Q?x:c&U,l?c|=q:l=!!(c&q),u?c|=K:u=!!(c&K),f?c|=512:f=!!(512&c),g&&!e||(S&&(c|=j),y=(c&U)<<16|y&U)}return({msdosAttributesRaw:p,msdosAttributes:h}=((e,t)=>{if(e!==Q)e&=I;else if(t!==Q){const{readOnly:r,hidden:n,system:s,directory:i,archive:a}=t;let o=0;r&&(o|=1),n&&(o|=2),s&&(o|=4),i&&(o|=16),a&&(o|=32),e=o&I}return t===Q&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(p,h)),m&&(y=y&C|p&I),{name:t,ut:{versionMadeBy:s,msDosCompatible:n,externalFileAttributes:y,unixExternalUpper:x,uid:a,gid:o,unixMode:c,unixExtraFieldType:d,setuid:l,setgid:u,sticky:f,msdosAttributesRaw:p,msdosAttributes:h}}})(e,t,s);({name:t}=c);const d=((e,t,r)=>{const n=fi(e,r,"encodeText",gt);let s=n(t);if(s===Q&&(s=gt(t)),Si(s)>U)throw new w("File entry name exceeds 64KB");const i=r[on]||"";let a=n(i);if(a===Q&&(a=gt(i)),Si(a)>U)throw new w("File entry comment exceeds 64KB");const c=fi(e,r,En,20);if(c>U)throw new w(Hs);const d=fi(e,r,fn,new o),l=fi(e,r,hn),u=fi(e,r,mn),p=fi(e,r,gn,0),h=fi(e,r,Zn);let m,y;h||(m=fi(e,r,Ln),y=fi(e,r,Wn));const g=fi(e,r,"encryptionStrength",3),S=fi(e,r,An),x=fi(e,r,"extendedTimestamp",!0),b=fi(e,r,"ntfsTimestamp"),z=fi(e,r,"keepOrder",!0),F=fi(e,r,Hn),R=fi(e,r,qn),E=fi(e,r,"bufferedWrite"),D=fi(e,r,"createTempStream"),A=fi(e,r,"dataDescriptorSignature",!0),T=fi(e,r,Bn),v=fi(e,r,"useUnicodeFileNames",!0),k=fi(e,r,kn),C=h||k===Q?Q:it(k);if(!h&&k!==Q&&0!==k&&8!==k&&!C)throw new w("Compression method not supported");let I=fi(e,r,"level");if(e.options[Gn]){if(m!==Q||y!==Q)throw new w("Encryption is not supported in USDZ files");I===Q&&k===Q&&(I=0)}let O=fi(e,r,jn),M=fi(e,r,"dataDescriptor");E&&M===Q&&(M=!1),(M===Q||S)&&(M=!0),I!==Q&&6!=I&&(O=!1),O||C||e.config.CompressionStream!==Q||e.config.CompressionStreamZlib!==Q||(I=0);const N=fi(e,r,Fn);if(!S&&(m!==Q||y!==Q)&&(1>g||g>3))throw new w("The strength must equal 1, 2, or 3");let _=re;const P=r[Un];if(P){let e=0,t=0;P.forEach(t=>e+=4+Si(t)),_=new f(e);const r=de(_);P.forEach((e,n)=>{if(n>U)throw new w("Extra field type exceeds 65535");if(Si(e)>U)throw new w(js);hi(r,t,n),hi(r,t+2,Si(e)),gi(_,e,t+4),t+=4+Si(e)})}return{comment:i,ut:{rawFilename:s,rawComment:a,version:c,lastModDate:d,lastAccessDate:l,creationDate:u,internalFileAttributes:p,passThrough:h,password:m,rawPassword:y,encryptionStrength:g,zipCrypto:S,extendedTimestamp:x,ntfsTimestamp:b,keepOrder:z,useWebWorkers:F,transferStreams:R,bufferedWrite:E,createTempStream:D,dataDescriptorSignature:A,signal:T,useUnicodeFileNames:v,compressionMethod:k,format:C?C.format:Q,codecURI:C?C.codecURI:Q,wt:C?C.versionNeeded:Q,level:I,useCompressionStream:O,dataDescriptor:M,zip64:N,rawExtraField:_}}})(e,t,s),{comment:l}=d,u=s[Un];let p;e.files.set(t,Q);try{const l=await(async(e,t,{ut:r},n)=>{const{passThrough:s,zipCrypto:i,password:a,rawPassword:o,encryptionStrength:c}=r;let{dataDescriptor:d,zip64:l,level:u,compressionMethod:f}=r,p=0,h=0;if(s){if(!t)throw new w("Undefined reader");if(h=n[dn],h===Q)throw new w("Undefined uncompressed size")}const m=!0===l,y=fi(e,n,Rn),g=!!t&&(!!(a&&Si(a)||o&&Si(o))||s&&y);t||(u=0,f=0);const S=g?i?12:16+4*c:0;t&&(t=new $e(t),await tt(t),s?(n.uncompressedSize=h,p=pi(h)+S):t.size===Q?(d=!0,(l||l===Q)&&(l=!0,h=p=4294967296)):(n.uncompressedSize=h=t.size,p=pi(h)+S));const x=m||h>=C,b=m||p>=C;if(x||b){if(!1===l)throw new w(Ys);l=!0}return l=l||!1,{reader:t,ut:{dataDescriptor:d,zip64:l,it:x,st:b,uncompressedSize:h,level:u,compressionMethod:f,encrypted:g}}})(e,n,d,s);({reader:n}=l);const u=ii(e.writer),h=si(e.writer),m=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:n,creationDate:s,level:i,zip64:c,zipCrypto:d,useUnicodeFileNames:l,dataDescriptor:u,directory:f,rawExtraField:p,encryptionStrength:h,extendedTimestamp:m,ntfsTimestamp:y,passThrough:g,encrypted:S,it:x,st:b,uncompressedSize:z}=e;let{version:F,compressionMethod:R}=e;const E=!f&&(R===Q?i===Q||i>0:0!==R);let D;const A=g||!E,T=c&&(e.bufferedWrite||!u||!x&&!b||A),v=T||c&&u&&(x||b);if(c&&(x||b)){const e=20,t=ni(e);if(t.uint16(1),t.uint16(e-4),D=t.array,T&&(t.ft(z),A)){const e=S?d?12:16+4*h:0;t.ft(g?0:z+e)}}else D=re;let k,C,I,M,N;if(S&&!d){const e=ni(Si(Gs)+2);e.uint16(39169),e.bytes(Gs),k=e.array,k[8]=h}else k=re;if(m){const e=li(r),t=ui(e);if(t){const t=9+(n?4:0)+(s?4:0),r=ni(t);M=1+(n?2:0)+(s?4:0),r.uint16(V),r.uint16(t-4),r.uint8(M),r.uint32(e),n&&r.uint32(wi(li(n))),s&&r.uint32(wi(li(s))),I=r.array}else I=re;if(y===Q?!t||n||s:y)try{const e=di(r),t=ni(36);t.uint16(10),t.uint16(32),t.ht(4),t.uint16(1),t.uint16(24),t.ft(e),t.ft(di(n)||e),t.ft(di(s)||e),C=t.array}catch{C=re}else C=re}else C=I=re;try{const{uid:t,gid:r,unixExtraFieldType:n}=e;if(n!=Xs||t===Q&&r===Q)if(n!=Js||t===Q&&r===Q)N=re;else{const e=ni(8);e.uint16(30805),e.uint16(4),e.uint16((t===Q?0:t)&U),e.uint16((r===Q?0:r)&U),N=e.array}else{const e=ri(t),n=ri(r),s=3+e.length+n.length,i=ni(4+s);i.uint16(30837),i.uint16(s),i.uint8(1),i.uint8(e.length),i.bytes(e),i.uint8(n.length),i.bytes(n),N=i.array}}catch{N=re}R===Q&&(R=E?8:0);const{wt:_}=e;E&&_!==Q&&(F=F>_?F:_),c&&(F=F>45?F:45),S&&!d&&(F=F>51?F:51,k[9]=R,R=99);const P=v?Si(D):0,L=P+Si(k,I,C,N,p);if(L>U)throw new w(js);const W=new o(2e3*a.ceil(r.getTime()/2e3)),{et:Z,nt:B,rawLastModDate:H}=xi({version:F,bitFlag:bi(i,l,u,S,R),compressionMethod:R,uncompressedSize:z,lastModDate:J>W?J:W>X?X:W,rawFilename:t,st:b,it:x,extraFieldLength:L}),j=ni(G+Si(t)+L),q=j.array,K=de(q);return j.uint32(O),j.bytes(Z),j.bytes(t),v&&j.bytes(D),j.bytes(k),j.bytes(I),j.bytes(C),j.bytes(N),j.bytes(p),u&&(b||mi(K,18,0),x||mi(K,22,0)),{yt:q,gt:K,et:Z,nt:B,lastModDate:r,rawLastModDate:H,encrypted:S,compressed:E,version:F,compressionMethod:R,lt:M,Ge:re,St:P,Je:I,Qe:C,$e:N,Xe:k,extraFieldLength:L}})(s=r.assign({},s,c.ut,d.ut,l.ut,{internalFileAttribute:d.ut.internalFileAttributes,externalFileAttribute:c.ut.externalFileAttributes,signature:s[Cn],offset:e.offset-u,diskNumberStart:h})),y=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let n,s=re,i=0,a=e?20:12;return r&&(a+=4),t&&(s=new f(a),n=de(s),r&&(i=4,mi(n,0,N))),{xt:s,bt:n,zt:i}})(s),S=Si(m.yt,y.xt);p=await(async(e,t,n,s,a)=>{const{files:o,writer:c}=e,{keepOrder:d,dataDescriptor:l,signal:u}=a,{Ft:p}=s,h=e.options[Gn],m=e.Ye;let y,S,x,b,z,F,E,A={},T=0;o.set(t,A),e.Ye=A;try{let S;d&&(S=m&&m.lock,A.lock=new g(e=>x=e)),a.bufferedWrite||!d||e.Rt||e.Ke||!l?(y=!0,e.Ke++,E=a.createTempStream?await a.createTempStream():new R(Q,Q,{highWaterMark:$}),E.size=0,await tt(c)):(E=c,await v()),await tt(E);const U=ii(c);if(e.Ve){delete e.Ve;const t=new f(4);mi(de(t),0,M),await ci(c,t),e.offset+=4}h&&!y&&ti(s,e.offset-U);const{yt:O}=p;y||(await S,await k());const N=si(c),_=oi(e,c);if(A.diskNumberStart=N,y||(z=!0,F=c.size,await ci(E,O)),A=await(async(e,t,{diskNumberStart:n,lock:s},a,o,c)=>{const{Ft:d,Et:l,Dt:u}=a,{et:f,nt:p,lastModDate:h,rawLastModDate:m,encrypted:y,compressed:g,version:S,compressionMethod:x,Ge:b,St:z,Je:F,lt:R,Qe:E,$e:D,Xe:A}=d,{xt:T}=l,{rawFilename:v,lastAccessDate:k,creationDate:U,password:O,rawPassword:M,level:N,zip64:_,it:P,st:L,zipCrypto:W,dataDescriptor:Z,directory:B,executable:V,versionMadeBy:H,rawComment:j,rawExtraField:q,useWebWorkers:K,transferStreams:Y,onstart:G,onprogress:X,onend:J,signal:$,encryptionStrength:ee,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,uid:ie,gid:ae,unixMode:oe,setuid:ce,setgid:de,sticky:le,unixExternalUpper:ue,msdosAttributesRaw:we,msdosAttributes:fe,useCompressionStream:pe,passThrough:he,format:me,codecURI:ye}=c,ge={lock:s,versionMadeBy:H,zip64:_,directory:!!B,executable:!!V,filenameUTF8:!0,rawFilename:v,commentUTF8:!0,rawComment:j,Ge:b,St:z,Je:F,Qe:E,$e:D,Xe:A,rawExtraField:q,extendedTimestamp:te,msDosCompatible:re,internalFileAttributes:ne,externalFileAttributes:se,diskNumberStart:n,uid:ie,gid:ae,unixMode:oe,setuid:ce,setgid:de,sticky:le,unixExternalUpper:ue,msdosAttributesRaw:we,msdosAttributes:fe};let{signature:Se,uncompressedSize:xe}=c,be=0;he||(xe=0);const{writable:ze}=t;if(e){const r=e.createReadable?e.createReadable():e.readable,n=e.size,s={options:{codecType:Fr,level:N,rawPassword:M,password:O,encryptionStrength:ee,zipCrypto:y&&W,passwordVerification:y&&W&&m>>8&I,signed:!he,compressed:g&&!he,encrypted:y&&!he,useWebWorkers:K,useCompressionStream:pe,transferStreams:Y,format:me,codecURI:ye},config:o,me:{signal:$,size:n,onstart:G,onprogress:X,onend:J}};try{const e=await Xr({readable:r,writable:ze},s);if(be=e.outputSize,t.size+=be,he||(xe=e.inputSize,Se=e.signature),!L&&be>=C||!P&&xe>=C)throw new w(Ys)}catch(e){throw e.outputSize!==Q&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,Ft:n,Et:s},{zip64:a,zipCrypto:o,dataDescriptor:c})=>{const{nt:d,encrypted:l}=n,{bt:u,zt:w}=s;l&&!o||e===Q||(mi(d,10,e),c&&mi(u,w,e)),a?c&&(yi(u,w+4,i(t)),yi(u,w+12,i(r))):(mi(d,14,t),mi(d,18,r),c&&(mi(u,w+4,t),mi(u,w+8,r)))})({signature:Se,compressedSize:be,uncompressedSize:xe,Ft:d,Et:l},c),Z&&await ci(t,T),r.assign(ge,{uncompressedSize:xe,compressedSize:be,lastModDate:h,rawLastModDate:m,creationDate:U,lastAccessDate:k,encrypted:y,zipCrypto:W,size:u+be,compressionMethod:x,version:S,et:f,nt:p,signature:Se,lt:R,it:P,st:L}),ge})(n,E,A,s,e.config,a),y||(z=!1),o.set(t,A),A.filename=t,y){if(await g.all([E.writable.getWriter().close(),S]),await v(),b=!0,F=c.size,await k(),A.diskNumberStart=si(c),A.offset=oi(e,c),h){const t=s.Dt;ti(s,e.offset-ii(c)),A.size+=s.Dt-t}(({rawFilename:e,encrypted:t,zip64:r,St:n,signature:s,compressedSize:a,uncompressedSize:o,it:c,st:d},l,{dataDescriptor:u})=>{if(u||(t||mi(l,14,s),d||mi(l,18,a),c||mi(l,22,o)),r&&n){const t=G+Si(e)+4;yi(l,t,i(o)),yi(l,t+8,i(a))}})(A,p.gt,a),await ci(c,p.yt),await(async(e,t,r)=>{const n=t.writable.getWriter();try{await e.pipeTo(new D({async write(e){var t;await n.ready,await n.write(e),t=Si(e),T+=t}}),{preventClose:!0,preventAbort:!0,signal:r})}finally{n.releaseLock()}})(E.readable,c,u),c.size+=E.size,b=!1}else A.diskNumberStart=N,A.offset=_;return e.offset+=A.size,A}catch(r){if(b||z){if(e.hasCorruptedEntries=!0,r)try{r.corruptedEntry=!0}catch{}e.offset+=c.size-F,y&&(e.offset+=T)}throw o.delete(t),r}finally{if(y&&e.Ke--,x&&x(),S&&S(),y&&E&&E.dispose)try{await E.dispose()}catch{}}async function v(){e.Rt=!0;const{At:t}=e;e.At=new g(t=>S=()=>{e.Rt=!1,t()}),await t}async function k(){ai(c,Si(p.yt))&&await c.closeDisk()}})(e,t,n,{Ft:m,Et:y,Dt:S},s)}catch(r){throw e.files.delete(t),r}return r.assign(p,{name:t,comment:l,extraField:u}),new Pn(p)})(s,e,t,n),c.add(l),await l}catch(t){throw u&&s.He.delete(e),t}finally{c.delete(l);const e=$s.shift();e?e():Qs--}}remove(e){const{He:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==Q){const{filename:n}=e;if(t.has(n)&&r.has(n))return t.delete(n),r.delete(n),!0}return!1}async close(e=re,r={}){const{qe:n,writer:s}=this,{writable:a}=s;if(Si(e)>U)throw new w(Vs);for(;n.size;)await g.allSettled(t.from(n));return await(async(e,r,n)=>{const s=(e=>{let t=0;for(const[,r]of e){const{rawFilename:e,Xe:n,rawComment:s,Qe:i,$e:a,rawExtraField:o,extendedTimestamp:c,lt:d,lastModDate:l,it:u,st:f,uncompressedSize:p,compressedSize:h}=r,m=r.offset>=C,y=r.diskNumberStart>=U;let g,S;if(m||y||u||f){const e=4+(u?8:0)+(f?8:0)+(m?8:0)+(y?4:0),t=ni(e);t.uint16(1),t.uint16(e-4),u&&t.ft(p),f&&t.ft(h),m&&t.ft(r.offset),y&&t.uint32(r.diskNumberStart),g=t.array}else g=re;r.Ge=g,r.ot=m,r.ct=y;const x=li(l);if(c&&ui(x)){const e=ni(9);e.uint16(V),e.uint16(5),e.uint8(d),e.uint32(x),S=e.array}else S=re;r.Je=S;const b=Si(g,n,i,a,S,o);if(b>U)throw new w(js);t+=46+Si(e,s)+b}return t})(e.files),a=await(async(e,r,n)=>{const{files:s,writer:i}=e,a=new f(r);await tt(i);let o=0,c=0,d=si(i),l=ii(i);for(const[e,r]of t.from(s.values()).entries()){const{offset:t,rawFilename:u,Ge:w,Xe:f,Je:p,Qe:h,$e:m,rawExtraField:y,rawComment:g,versionMadeBy:S,et:x,nt:b,it:z,st:F,ct:R,ot:E,internalFileAttributes:D,externalFileAttributes:A,diskNumberStart:T,uncompressedSize:v,compressedSize:k}=r,I=Si(w,f,p,h,m,y),O=46+Si(u,g)+I;ai(i,o+O-c)&&(await ci(i,a.slice(c,o)),c=o,await i.closeDisk()),0==e&&(d=si(i),l=ii(i)),z||mi(b,18,v),F||mi(b,14,k),(E||R)&&45>r.version&&hi(b,0,45);const M=ni(O);if(M.uint32(_),M.uint16(S),M.bytes(x.subarray(0,24)),M.uint16(I),M.uint16(Si(g)),M.uint16(R?U:T),M.uint16(D),M.uint32(A),M.uint32(E?C:t),M.bytes(u),M.bytes(w),M.bytes(f),M.bytes(p),M.bytes(h),M.bytes(m),M.bytes(y),M.bytes(g),gi(a,M.array,o),o+=O,n.onprogress)try{await n.onprogress(e+1,s.size,new Pn(r))}catch{}}return await ci(i,c?a.slice(c):a),{diskNumber:d,diskOffset:l}})(e,s,n);await(async(e,t,r,n)=>{const{writer:s}=e,{Tt:a}=n;let{vt:o}=n,c=e.files.size,d=a.diskNumber,l=oi(e,a),u=si(s);ai(s,Z)&&u++;let f=fi(e,r,Fn);if(!(C>l&&C>o&&U>c&&U>u)){if(!1===f)throw new w(Ys);f=!0}const p=Si(t);if(p>U)throw new w(Vs);const h=ni(f?98:Z);ai(s,Si(h.array)+p)&&await s.closeDisk(),u=si(s),f&&(h.uint32(L),h.ft(44),h.uint16(45),h.uint16(45),h.uint32(u),h.uint32(d),h.ft(c),h.ft(c),h.ft(o),h.ft(l),h.uint32(W),h.uint32(u),h.ft(i(oi(e,s))+i(o)),h.uint32(u+1),fi(e,r,"supportZip64SplitFile",!0)&&(u=U,d=U),c=U,l=C,o=C),h.uint32(P),h.uint16(u),h.uint16(d),h.uint16(c),h.uint16(c),h.uint32(o),h.uint32(l),h.uint16(p),await ci(s,h.array),p&&await ci(s,t)})(e,r,n,{Tt:a,vt:s})})(this,e,r),fi(this,r,Kn)||await a.getWriter().close(),s.getData?s.getData():a}}function ti(e,t){const{Ft:r}=e;let{yt:n,extraFieldLength:s}=r,i=64-(t+Si(n))%64;4>i&&(i+=64);const a=new f(i),o=de(a);hi(o,0,6534),hi(o,2,i-4);const c=n;r.yt=n=new f(Si(c)+i),gi(n,c),gi(n,a,Si(c));const d=de(n);hi(d,28,s+i),r.gt=d,e.Dt+=i}function ri(e){if(e===Q)return re;{const t=new f(4);de(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function ni(e){const t=new f(e),r=de(t);let n=0;return{array:t,uint8:e=>{((e,t,r)=>{e.setUint8(t,r)})(r,n,e),n+=1},uint16:e=>{hi(r,n,e),n+=2},uint32:e=>{mi(r,n,e),n+=4},ft:e=>{yi(r,n,i(e)),n+=8},bytes:e=>{gi(t,e,n),n+=Si(e)},ht:e=>n+=e}}function si(e){const{diskNumber:t=0}=e;return t}function ii(e){const{diskOffset:t=0}=e;return t}function ai(e,t){const{availableSize:r=$}=e;return t>r}function oi(e,{diskNumber:t=0,diskOffset:r=0}){return e.offset-r-(t?e.je:0)}async function ci(e,t){const{writable:r}=e,n=r.getWriter();try{await n.ready,e.size+=Si(t),await n.write(t)}finally{n.releaseLock()}}function di(e){if(e)return(i(e.getTime())+i(116444736e5))*i(1e4)}function li(e){return a.floor(e.getTime()/1e3)}function ui(e){return e>=qs&&Ks>=e}function wi(e){return a.min(Ks,a.max(qs,e))}function fi(e,t,r,n){const s=t[r]===Q?e.options[r]:t[r];return s===Q?n:s}function pi(e){return e+5*(a.floor(e/16383)+1)}function hi(e,t,r){e.setUint16(t,r,!0)}function mi(e,t,r){e.setUint32(t,r,!0)}function yi(e,t,r){e.setBigUint64(t,r,!0)}function gi(e,t,r){e.set(t,r)}function Si(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function xi({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:n,compressedSize:s,lastModDate:i,rawLastModDate:a,rawFilename:o,st:c,it:d,extraFieldLength:l}){const u=ni(26),w=u.array,f=de(w);if(u.uint16(e),u.uint16(t),u.uint16(r),a===Q){const e=new h(1),t=de(e);hi(t,0,(i.getHours()<<6|i.getMinutes())<<5|i.getSeconds()/2),hi(t,2,(i.getFullYear()-1980<<4|i.getMonth()+1)<<5|i.getDate()),a=e[0]}return u.uint32(a),u.ht(4),c||s!==Q?u.uint32(c?C:s):u.ht(4),d||n!==Q?u.uint32(d?C:n):u.ht(4),u.uint16(Si(o)),u.uint16(l),{et:w,nt:f,rawLastModDate:a}}function bi(e,t,r,n,s){let i=0;return t&&(i|=H),r&&(i|=8),8!=s&&9!=s||(0>e||e>3||(i|=6),e>3&&5>=e&&(i|=4),9==e&&(i|=2)),n&&(i|=1),i}const zi="Entry filename already exists";class Fi{constructor(e,t,n,s){const i=this;if(e.root&&s&&s.getChildByName(t))throw new w(zi);n||(n={}),r.assign(i,{fs:e,name:t,data:n.data,options:n.options,id:e.kt++,parent:s,children:[],uncompressedSize:n.uncompressedSize||0,passThrough:n.passThrough}),!s&&e.root||(e.entries[i.id]=i),s&&i.parent.children.push(i)}moveTo(e){this.fs.move(this,e)}getFullname(){return this.getRelativeName()}getRelativeName(e=this.fs.root){let t=this.name,r=this.parent;for(;r&&r!=e;)t=(r.name?r.name+"/":"")+t,r=r.parent;return t}isDescendantOf(e){let t=this.parent;for(;t&&t.id!=e.id;)t=t.parent;return!!t}rename(e){const t=this.parent;if(t&&t.getChildByName(e))throw new w(zi);this.name=e}}class Ri extends Fi{constructor(e,t,r,n){super(e,t,r,n);const s=this;s.Reader=r.Reader,s.Writer=r.Writer,r.getData&&(s.getData=r.getData)}clone(){return new Ri(this.fs,this.name,this)}async getData(e,t={}){const r=this;if(!e||e.constructor==r.Writer&&r.data)return r.data;{const n=r.reader=ki(r.Reader,r.data,t),s=r.data?r.data.uncompressedSize:n.size;await g.all([tt(n),tt(e,s)]);const{readable:i}=n;return r.uncompressedSize=n.size,await i.pipeTo(e.writable),e.getData?e.getData():e.writable}}isPasswordProtected(){return!(!this.data||!this.data.encrypted)}async checkPassword(e,t={}){const n=this;if(!n.isPasswordProtected())return!0;try{return await n.data.getData(null,r.assign({},t,{password:e,checkPasswordOnly:!0})),!0}catch(e){if(e.message==Rt)return!1;throw e}}getText(e,t){return this.getData(new ke(e),t)}getBlob(e,t){return this.getData(new Te(e),t)}getData64URI(e,t){return this.getData(new Re(e),t)}getUint8Array(e){return this.getData(new Xe,e)}getWritable(e=new D,t){return this.getData({writable:e},t)}async getArrayBuffer(e){return ce(await this.getUint8Array(e)).buffer}replaceBlob(e){r.assign(this,{data:e,Reader:Ae,Writer:Te,reader:null})}replaceText(e){r.assign(this,{data:e,Reader:ve,Writer:ke,reader:null})}replaceData64URI(e){r.assign(this,{data:e,Reader:Fe,Writer:Re,reader:null})}replaceUint8Array(e){r.assign(this,{data:e,Reader:Ge,Writer:Xe,reader:null})}replaceReadable(e){r.assign(this,{data:null,Reader:Ti(e),Writer:null,reader:null})}}class Ei extends Fi{constructor(e,t,r,n){super(e,t,r,n),this.directory=!0}clone(e){const t=this,r=new Ei(t.fs,t.name,t);return e&&(r.children=t.children.map(t=>{const n=t.clone(e);return n.parent=r,n})),r}addDirectory(e,t){return Ni(this,e,{options:t},!0)}addText(e,t,r={}){return Ni(this,e,{data:t,Reader:ve,Writer:ke,options:r,uncompressedSize:t.length})}addBlob(e,t,r={}){return Ni(this,e,{data:t,Reader:Ae,Writer:Te,options:r,uncompressedSize:t.size})}addData64URI(e,t,r={}){let n=t.length;for(;"="==t.charAt(n-1);)n--;const s=t.indexOf(",")+1;return Ni(this,e,{data:t,Reader:Fe,Writer:Re,options:r,uncompressedSize:a.floor(.75*(n-s))})}addUint8Array(e,t,r={}){return Ni(this,e,{data:t,Reader:Ge,Writer:Xe,options:r,uncompressedSize:t.length})}addHttpContent(e,t,r={}){return Ni(this,e,{data:t,Reader:class extends Ye{constructor(e){super(e,r)}},options:r})}addReadable(e,t,r={}){return Ni(this,e,{Reader:Ti(t),options:r})}addFileSystemEntry(e,t={}){return Ii(this,e,t)}addFileSystemHandle(e,t={}){return Ii(this,e,t)}addFile(e,t={}){return(t=r.assign({},t)).lastModDate||(t.lastModDate=new o(e.lastModified)),Ni(this,e.name,{data:e,Reader:()=>({readable:e.stream(),size:e.size}),options:t,uncompressedSize:e.size})}Ct(e,t){return Ni(this,e,t)}importBlob(e,t){return this.importZip(new Ae(e),t)}importData64URI(e,t){return this.importZip(new Fe(e),t)}importUint8Array(e,t){return this.importZip(new Ge(e),t)}importHttpContent(e,t){return this.importZip(new Ye(e,t),t)}importReadable(e,t){return this.importZip({readable:e},t)}exportBlob(e={}){return this.exportZip(new Te(e.mimeType||"application/zip"),e)}exportData64URI(e={}){return this.exportZip(new Re(e.mimeType||"application/zip"),e)}exportUint8Array(e={}){return this.exportZip(new Xe,e)}async exportWritable(e=new D,t={}){return await this.exportZip({writable:e},t),e}exportFileSystemHandle(e,n={}){return(async(e,n,s)=>{const i=Ai([e],"uncompressedSize"),a=new c;return await o(e,n),n;async function o(e,t){if(s.concurrent){const r=(await g.allSettled(e.children.map(e=>d(e,t)))).find(e=>"rejected"==e.status);if(r)throw r.reason}else for(const r of e.children)await d(r,t)}async function d(e,n){try{if(e.directory){const t=await n.getDirectoryHandle(e.name,{create:!0});await o(e,t)}else{const o=await n.getFileHandle(e.name,{create:!0}),c=await o.createWritable();await e.getData({writable:c},r.assign({},s,{onprogress:async r=>{if(s.onprogress){a.set(e.id,r);try{await s.onprogress(t.from(a.values()).reduce((e,t)=>e+t,0),i)}catch{}}}}))}}catch(t){throw new w(t.message+(e?" ("+e.name+")":""),{cause:t})}}})(this,e,n)}async importZip(e,t={}){await tt(e);const n=new ms(e,t),s=[],i=await n.getEntries();for(const e of i){let n=this;try{const i=e.filename.split("/"),a=i.pop();if(i.forEach(e=>{const t=n;if(n=n.getChildByName(e),n){if(!n.directory)throw new w(zi)}else n=new Ei(this.fs,e,{data:null},t),s.push(n)}),e.directory){let t=n;if(a)if(t=n.getChildByName(a),t){if(!t.directory)throw new w(zi)}else t=new Ei(this.fs,a,{data:null},n),s.push(t);t==this||t.data||(t.data=e)}else s.push(Ni(n,a,{data:e,Reader:vi(r.assign({},t)),uncompressedSize:e.uncompressedSize,passThrough:t.passThrough}))}catch(t){try{t.cause={entry:e}}catch{}throw t}}return s}async exportZip(e,n={}){const s=this;(n=r.assign({},n)).bufferedWrite===Q&&(n.bufferedWrite=!0);const[i]=await g.all([Ci(s,n.readerOptions),tt(e)]),a=new ei(e,n);return await(async(e,n,s,i,a)=>{const o=n,d=new c;await async function e(n,c){async function l(c){const l=i.relativePath?c.getRelativeName(o):c.getFullname(),u=c.options||{};let w={};if(c.data instanceof Pn){const{externalFileAttributes:e,versionMadeBy:t,comment:n,lastModDate:s,creationDate:i,lastAccessDate:a,uncompressedSize:o,encrypted:d,zipCrypto:l,signature:u,compressionMethod:f,extraFieldAES:p}=c.data;if(w={externalFileAttributes:e,versionMadeBy:t,comment:n,lastModDate:s,creationDate:i,lastAccessDate:a},c.passThrough){let e,t;0===f&&(e=0),p&&(t=p.strength),w=r.assign(w,{passThrough:!0,encrypted:d,zipCrypto:l,signature:u,uncompressedSize:o,level:e,encryptionStrength:t,compressionMethod:f})}}await n.add(l,a.get(c),r.assign({},i,w,u,{directory:c.directory,onprogress:async e=>{if(i.onprogress){d.set(l,e);try{await i.onprogress(t.from(d.values()).reduce((e,t)=>e+t),s)}catch{}}}})),await e(n,c)}await(async()=>{if(i.bufferedWrite){const e=(await g.allSettled(c.children.map(l))).find(e=>"rejected"==e.status);if(e)throw e.reason}else for(const e of c.children)await l(e)})()}(e,n)})(a,s,Ai([s],"uncompressedSize"),n,i),await a.close(),e.getData?e.getData():e.writable}getChildByName(e){const t=this.children;for(let r=0;r<t.length;r++){const n=t[r];if(n.name==e)return n}}isPasswordProtected(){const e=this.children;for(let t=0;t<e.length;t++)if(e[t].isPasswordProtected())return!0;return!1}async checkPassword(e,t={}){const r=this.children;return!(await g.all(r.map(r=>r.checkPassword(e,t)))).includes(!1)}}const Di={FS:class{constructor(){Mi(this)}get children(){return this.root.children}remove(e){Ui(e);const t=[e];for(;t.length;){const e=t.pop();this.entries[e.id]=null;for(const r of e.children)t.push(r)}e.parent=Q}move(e,t){if(e==this.root)throw new w("Root directory cannot be moved");if(!t.directory)throw new w("Target entry is not a directory");if(t.isDescendantOf(e))throw new w("Entry is a ancestor of target entry");if(e!=t){const r=t.getChildByName(e.name);if(r){if(r!=e)throw new w(zi)}else Ui(e),e.parent=t,t.children.push(e),((e,t)=>{const r=[t];for(;r.length;){const t=r.pop();e.entries[t.id]=t;for(const e of t.children)r.push(e)}})(this,e)}}find(e){const t=e.split("/");let r=this.root;for(let e=0;r&&e<t.length;e++)r=r.getChildByName(t[e]);return r||(r=this.entries.find(t=>t&&(t==this.root||t.isDescendantOf(this.root))&&t.getRelativeName()==e)),r}getById(e){return this.entries[e]}getChildByName(e){return this.root.getChildByName(e)}addDirectory(e,t){return this.root.addDirectory(e,t)}addText(e,t,r){return this.root.addText(e,t,r)}addBlob(e,t,r){return this.root.addBlob(e,t,r)}addData64URI(e,t,r){return this.root.addData64URI(e,t,r)}addUint8Array(e,t,r){return this.root.addUint8Array(e,t,r)}addHttpContent(e,t,r){return this.root.addHttpContent(e,t,r)}addReadable(e,t,r){return this.root.addReadable(e,t,r)}addFileSystemEntry(e,t){return this.root.addFileSystemEntry(e,t)}addFileSystemHandle(e,t){return this.root.addFileSystemHandle(e,t)}addFile(e,t){return this.root.addFile(e,t)}Ct(e,t){return this.root.Ct(e,t)}importBlob(e,t){return Mi(this),this.root.importBlob(e,t)}importData64URI(e,t){return Mi(this),this.root.importData64URI(e,t)}importUint8Array(e,t){return Mi(this),this.root.importUint8Array(e,t)}importHttpContent(e,t){return Mi(this),this.root.importHttpContent(e,t)}importReadable(e,t){return Mi(this),this.root.importReadable(e,t)}importZip(e,t){return Mi(this),this.root.importZip(e,t)}exportBlob(e){return this.root.exportBlob(e)}exportData64URI(e){return this.root.exportData64URI(e)}exportUint8Array(e){return this.root.exportUint8Array(e)}exportWritable(e,t){return this.root.exportWritable(e,t)}exportFileSystemHandle(e,t){return this.root.exportFileSystemHandle(e,t)}exportZip(e,t){return this.root.exportZip(e,t)}isPasswordProtected(){return this.root.isPasswordProtected()}checkPassword(e,t){return this.root.checkPassword(e,t)}},ZipDirectoryEntry:Ei,ZipFileEntry:Ri};function Ai(e,r){let n=0;const s=t.from(e);for(;s.length;){const e=s.pop();n+=e[r]||0;for(const t of e.children)s.push(t)}return n}function Ti(e){let t;return()=>{if(t)throw new w("Readable stream already consumed");return t=!0,{readable:e}}}function vi(e){return class extends be{constructor(e,t={}){super(),this.entry=e,this.options=t}async init(){const t=this;t.size=t.entry.uncompressedSize;const n=await t.entry.getData(new Te,r.assign({},e,t.options));t.data=n,t.Ut=new Ae(n),super.init()}readUint8Array(e,t){return this.Ut.readUint8Array(e,t)}}}function ki(e,t,r){return e.prototype?new e(t,r):e(t,r)}async function Ci(e,t){const r=[],n=[e],s=new c;for(;n.length;){const e=n.pop();for(const t of e.children)t.directory?n.push(t):r.push(t)}return await g.all(r.map(async e=>{const r=e.reader=ki(e.Reader,e.data,t);s.set(e,r);try{await tt(r)}catch(t){try{t.entryId=e.id,t.cause={entry:e}}catch{}throw t}r.size!==Q&&(e.uncompressedSize=r.size)})),s}function Ui(e){if(e.parent){const t=e.parent.children;t.forEach((r,n)=>{r.id==e.id&&t.splice(n,1)})}}function Ii(e,t,n){return async function e(t,s,i){if(s)try{if((s.isFile||s.isDirectory)&&(s=await Oi(s)),"file"==s.kind){const e=await s.getFile();i.push(t.Ct(e.name,{Reader:()=>({readable:e.stream(),size:e.size}),options:r.assign({},{lastModDate:new o(e.lastModified)},n),uncompressedSize:e.size}))}else if("directory"==s.kind){const r=t.addDirectory(s.name);i.push(r);for await(const t of s.values())await e(r,t,i)}}catch(e){const t=e.message+(s?" ("+s.name+")":"");throw new w(t,{cause:e})}return i}(e,t,[])}async function Oi(e){const t={name:e.name};if(e.isFile&&(t.kind="file",t.getFile=()=>new g((t,r)=>e.file(t,r))),e.isDirectory){t.kind="directory";const r=await(async e=>{const t=[];function r(e,n,s){e.readEntries(async i=>{if(i.length){for(const e of i)t.push(await Oi(e));r(e,n,s)}else n(t)},s)}return await new g((t,n)=>r(e.createReader(),t,n)),{[Symbol.iterator](){let e=0;return{next(){const r={value:t[e],done:e==t.length};return e++,r}}}}})(e);t.values=()=>r}return t}function Mi(e){e.entries=[],e.kt=0,e.root=new Ei(e)}function Ni(e,t,r,n){if(e.directory)return n?new Ei(e.fs,t,r,e):new Ri(e.fs,t,r,e);throw new w("Parent entry is not a directory")}e.fs=Di});
|
package/dist/zip-fs-native.js
CHANGED
|
@@ -224,7 +224,7 @@
|
|
|
224
224
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
const r=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],n=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],e=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],l=new Uint8Array(288);l.fill(8,0,144),l.fill(9,144,256),l.fill(7,256,280),l.fill(8,280,288);const u=new Uint8Array(30).fill(5);function f(r){const t=new Uint16Array(16);for(const n of r)t[n]++;t[0]=0;const n=new Uint16Array(17);for(let r=1;15>=r;r++)n[r+1]=n[r]+t[r];const o=new Uint16Array(r.length);for(let t=0;t<r.length;t++)r[t]&&(o[n[r[t]]++]=t);return {o:t,symbols:o}}const q$1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function a(a){a({workerURI:a=>{const i="text/javascript",Y=(q=>{let a=0,i=0,Y=0,x=new Uint8Array(1024),U=0,v=0;for(;!v;){v=G(1);const r=G(2);if(0==r)S();else if(1==r)K(f(l),f(u));else {if(2!=r)throw Error("invalid deflate block type");K(...N());}}return x.subarray(0,U);function s(){if(a>=q.length)throw Error("unexpected end of deflate data");return q[a++]}function G(r){for(;r>Y;)i|=s()<<Y,Y+=8;const t=i&(1<<r)-1;return i>>>=r,Y-=r,t}function S(){i=0,Y=0;const r=s()|s()<<8;a+=2,c(U+r);for(let t=0;r>t;t++)x[U++]=s();}function K(e,l){let u=V(e);for(;256!=u;){if(256>u)c(U+1),x[U++]=u;else {const e=u-257,f=r[e]+G(t[e]),q=V(l),a=n[q]+G(o[q]);c(U+f);const i=U-a;for(let r=0;f>r;r++)x[U++]=x[i+r];}u=V(e);}}function N(){const r=G(5)+257,t=G(5)+1,n=G(4)+4,o=new Uint8Array(19);for(let r=0;n>r;r++)o[e[r]]=G(3);const l=f(o),u=new Uint8Array(r+t);let q=0;for(;q<u.length;){const r=V(l);if(16>r)u[q++]=r;else if(16==r){const r=u[q-1];let t=G(2)+3;for(;t--;)u[q++]=r;}else q+=17==r?G(3)+3:G(7)+11;}return [f(u.subarray(0,r)),f(u.subarray(r))]}function V(r){const{o:t,symbols:n}=r;let o=0,e=0,l=0;for(let r=1;15>=r;r++){o|=G(1);const u=t[r];if(u>o-e)return n[l+(o-e)];l+=u,e=e+u<<1,o<<=1;}throw Error("invalid huffman code")}function c(r){if(x.length<r){let t=2*x.length;for(;r>t;)t*=2;const n=new Uint8Array(t);n.set(x.subarray(0,U)),x=n;}}})((r=>{const t=(r=(r+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,n=[];for(let o=0;t>o;o+=4){const t=q$1.indexOf(r[o])<<18|q$1.indexOf(r[o+1])<<12|(63&q$1.indexOf(r[o+2]))<<6|63&q$1.indexOf(r[o+3]);n.push(t>>16&255),"="!==r[o+2]&&n.push(t>>8&255),"="!==r[o+3]&&n.push(255&t);}return new Uint8Array(n)})("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"));if(a){const r=new Blob([Y],{type:i});return URL.createObjectURL(r)}return "data:"+i+";base64,"+(r=>{let t="";const n=r.length;let o=0;for(;n>o+2;o+=3){const n=r[o]<<16|r[o+1]<<8|r[o+2];t+=q$1[n>>18&63]+q$1[n>>12&63]+q$1[n>>6&63]+q$1[63&n];}const e=n-o;if(1===e){const n=r[o]<<16;t+=q$1[n>>18&63]+q$1[n>>12&63]+"==";}else if(2===e){const n=r[o]<<16|r[o+1]<<8;t+=q$1[n>>18&63]+q$1[n>>12&63]+q$1[n>>6&63]+"=";}return t})(Y)}});}
|
|
227
|
+
const t=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],n=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],o=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=new Uint8Array(288);f.fill(8,0,144),f.fill(9,144,256),f.fill(7,256,280),f.fill(8,280,288);const i=new Uint8Array(30).fill(5);function e(t){const n=new Uint16Array(16);for(const r of t)n[r]++;n[0]=0;const r=new Uint16Array(17);for(let t=1;15>=t;t++)r[t+1]=r[t]+n[t];const o=new Uint16Array(t.length);for(let n=0;n<t.length;n++)t[n]&&(o[r[t[n]]++]=n);return {o:n,symbols:o}}const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function l(l){l({workerURI:l=>{const a="text/javascript",N=(s=>{let l=0,a=0,N=0,C=new Uint8Array(1024),W=0,V=0;for(;!V;){V=v(1);const t=v(2);if(0==t)x();else if(1==t)q(e(f),e(i));else {if(2!=t)throw Error("invalid deflate block type");q(...D());}}return C.subarray(0,W);function X(){if(l>=s.length)throw Error("unexpected end of deflate data");return s[l++]}function v(t){for(;t>N;)a|=X()<<N,N+=8;const n=a&(1<<t)-1;return a>>>=t,N-=t,n}function x(){a=0,N=0;const t=X()|X()<<8;l+=2,j(W+t);for(let n=0;t>n;n++)C[W++]=X();}function q(u,f){let i=U(u);for(;256!=i;){if(256>i)j(W+1),C[W++]=i;else {const u=i-257,e=t[u]+v(n[u]),s=U(f),l=r[s]+v(o[s]);j(W+e);const a=W-l;for(let t=0;e>t;t++)C[W++]=C[a+t];}i=U(u);}}function D(){const t=v(5)+257,n=v(5)+1,r=v(4)+4,o=new Uint8Array(19);for(let t=0;r>t;t++)o[u[t]]=v(3);const f=e(o),i=new Uint8Array(t+n);let s=0;for(;s<i.length;){const t=U(f);if(16>t)i[s++]=t;else if(16==t){const t=i[s-1];let n=v(2)+3;for(;n--;)i[s++]=t;}else s+=17==t?v(3)+3:v(7)+11;}return [e(i.subarray(0,t)),e(i.subarray(t))]}function U(t){const{o:n,symbols:r}=t;let o=0,u=0,f=0;for(let t=1;15>=t;t++){o|=v(1);const i=n[t];if(i>o-u)return r[f+(o-u)];f+=i,u=u+i<<1,o<<=1;}throw Error("invalid huffman code")}function j(t){if(C.length<t){let n=2*C.length;for(;t>n;)n*=2;const r=new Uint8Array(n);r.set(C.subarray(0,W)),C=r;}}})((t=>{const n=(t=(t+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let o=0;n>o;o+=4){const n=s.indexOf(t[o])<<18|s.indexOf(t[o+1])<<12|(63&s.indexOf(t[o+2]))<<6|63&s.indexOf(t[o+3]);r.push(n>>16&255),"="!==t[o+2]&&r.push(n>>8&255),"="!==t[o+3]&&r.push(255&n);}return new Uint8Array(r)})("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"));if(l){const t=new Blob([N],{type:a});return URL.createObjectURL(t)}return "data:"+a+";base64,"+(t=>{let n="";const r=t.length;let o=0;for(;r>o+2;o+=3){const r=t[o]<<16|t[o+1]<<8|t[o+2];n+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r];}const u=r-o;if(1===u){const r=t[o]<<16;n+=s[r>>18&63]+s[r>>12&63]+"==";}else if(2===u){const r=t[o]<<16|t[o+1]<<8;n+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+"=";}return n})(N)}});}
|
|
228
228
|
|
|
229
229
|
/*
|
|
230
230
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -1716,7 +1716,7 @@
|
|
|
1716
1716
|
if (zipCrypto.password || zipCrypto.rawPassword) {
|
|
1717
1717
|
const decryptedHeader = decrypt(zipCrypto, chunk.subarray(0, HEADER_LENGTH));
|
|
1718
1718
|
zipCrypto.password = zipCrypto.rawPassword = null;
|
|
1719
|
-
if ((decryptedHeader
|
|
1719
|
+
if ((decryptedHeader[HEADER_LENGTH - 1] ^ zipCrypto.passwordVerification) != 0) {
|
|
1720
1720
|
throw new Error(ERR_INVALID_PASSWORD);
|
|
1721
1721
|
}
|
|
1722
1722
|
chunk = chunk.subarray(HEADER_LENGTH);
|
|
@@ -3738,7 +3738,7 @@
|
|
|
3738
3738
|
|
|
3739
3739
|
getDiskOffset(diskNumber) {
|
|
3740
3740
|
const { diskOffsets, size } = this;
|
|
3741
|
-
const diskOffset = diskOffsets
|
|
3741
|
+
const diskOffset = diskOffsets[diskNumber];
|
|
3742
3742
|
return diskOffset === UNDEFINED_VALUE ? size : diskOffset;
|
|
3743
3743
|
}
|
|
3744
3744
|
|
|
@@ -10329,7 +10329,7 @@
|
|
|
10329
10329
|
*/
|
|
10330
10330
|
|
|
10331
10331
|
|
|
10332
|
-
|
|
10332
|
+
l(setDefaultConfiguration);
|
|
10333
10333
|
|
|
10334
10334
|
exports.BlobReader = BlobReader;
|
|
10335
10335
|
exports.BlobWriter = BlobWriter;
|