@zip.js/zip.js 2.8.19 → 2.8.21
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/deno.json +1 -1
- package/dist/zip-core.js +19 -19
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +19 -19
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +19 -19
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +19 -19
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +19 -19
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +19 -19
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +19 -19
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +19 -19
- package/index-native.min.js +1 -1
- package/index.cjs +19 -19
- package/index.d.ts +6 -6
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +7 -17
- package/lib/core/zip-writer.js +13 -2
- package/package.json +2 -2
package/dist/zip-legacy.js
CHANGED
|
@@ -1969,6 +1969,11 @@
|
|
|
1969
1969
|
|
|
1970
1970
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
1971
1971
|
let transferStreamsSupported = true;
|
|
1972
|
+
try {
|
|
1973
|
+
transferStreamsSupported = typeof structuredClone == FUNCTION_TYPE && structuredClone(new DOMException("", "AbortError")).code !== UNDEFINED_VALUE;
|
|
1974
|
+
} catch {
|
|
1975
|
+
// ignored
|
|
1976
|
+
}
|
|
1972
1977
|
let initModule = () => { };
|
|
1973
1978
|
|
|
1974
1979
|
class CodecWorker {
|
|
@@ -2155,23 +2160,8 @@
|
|
|
2155
2160
|
}
|
|
2156
2161
|
|
|
2157
2162
|
function watchClosedStream(writableSource) {
|
|
2158
|
-
|
|
2159
|
-
const closed =
|
|
2160
|
-
const writable = new WritableStream({
|
|
2161
|
-
async write(chunk) {
|
|
2162
|
-
const writer = writableSource.getWriter();
|
|
2163
|
-
await writer.ready;
|
|
2164
|
-
await writer.write(chunk);
|
|
2165
|
-
writer.releaseLock();
|
|
2166
|
-
},
|
|
2167
|
-
close() {
|
|
2168
|
-
resolveStreamClosed();
|
|
2169
|
-
},
|
|
2170
|
-
abort(reason) {
|
|
2171
|
-
const writer = writableSource.getWriter();
|
|
2172
|
-
return writer.abort(reason);
|
|
2173
|
-
}
|
|
2174
|
-
});
|
|
2163
|
+
const { writable, readable } = new TransformStream();
|
|
2164
|
+
const closed = readable.pipeTo(writableSource, { preventClose: true });
|
|
2175
2165
|
return { writable, closed };
|
|
2176
2166
|
}
|
|
2177
2167
|
|
|
@@ -3460,6 +3450,7 @@
|
|
|
3460
3450
|
const OPTION_KEEP_ORDER = "keepOrder";
|
|
3461
3451
|
const OPTION_LEVEL = "level";
|
|
3462
3452
|
const OPTION_BUFFERED_WRITE = "bufferedWrite";
|
|
3453
|
+
const OPTION_CREATE_TEMP_STREAM = "createTempStream";
|
|
3463
3454
|
const OPTION_DATA_DESCRIPTOR_SIGNATURE = "dataDescriptorSignature";
|
|
3464
3455
|
const OPTION_USE_UNICODE_FILE_NAMES = "useUnicodeFileNames";
|
|
3465
3456
|
const OPTION_DATA_DESCRIPTOR = "dataDescriptor";
|
|
@@ -4724,7 +4715,9 @@
|
|
|
4724
4715
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
4725
4716
|
const keepOrder = getOptionValue(zipWriter, options, OPTION_KEEP_ORDER, true);
|
|
4726
4717
|
const useWebWorkers = getOptionValue(zipWriter, options, OPTION_USE_WEB_WORKERS);
|
|
4718
|
+
const transferStreams = getOptionValue(zipWriter, options, OPTION_TRANSFER_STREAMS, true);
|
|
4727
4719
|
const bufferedWrite = getOptionValue(zipWriter, options, OPTION_BUFFERED_WRITE);
|
|
4720
|
+
const createTempStream = getOptionValue(zipWriter, options, OPTION_CREATE_TEMP_STREAM);
|
|
4728
4721
|
const dataDescriptorSignature = getOptionValue(zipWriter, options, OPTION_DATA_DESCRIPTOR_SIGNATURE, false);
|
|
4729
4722
|
const signal = getOptionValue(zipWriter, options, OPTION_SIGNAL);
|
|
4730
4723
|
const useUnicodeFileNames = getOptionValue(zipWriter, options, OPTION_USE_UNICODE_FILE_NAMES, true);
|
|
@@ -4830,10 +4823,12 @@
|
|
|
4830
4823
|
rawPassword,
|
|
4831
4824
|
level,
|
|
4832
4825
|
useWebWorkers,
|
|
4826
|
+
transferStreams,
|
|
4833
4827
|
encryptionStrength,
|
|
4834
4828
|
extendedTimestamp,
|
|
4835
4829
|
zipCrypto,
|
|
4836
4830
|
bufferedWrite,
|
|
4831
|
+
createTempStream,
|
|
4837
4832
|
keepOrder,
|
|
4838
4833
|
useUnicodeFileNames,
|
|
4839
4834
|
dataDescriptor,
|
|
@@ -4910,7 +4905,11 @@
|
|
|
4910
4905
|
requestLockCurrentFileEntry();
|
|
4911
4906
|
}
|
|
4912
4907
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
4913
|
-
|
|
4908
|
+
if (options.createTempStream) {
|
|
4909
|
+
fileWriter = await options.createTempStream();
|
|
4910
|
+
} else {
|
|
4911
|
+
fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
|
|
4912
|
+
}
|
|
4914
4913
|
fileWriter.size = 0;
|
|
4915
4914
|
bufferedWrite = true;
|
|
4916
4915
|
zipWriter.bufferedWrites++;
|
|
@@ -5075,6 +5074,7 @@
|
|
|
5075
5074
|
rawComment,
|
|
5076
5075
|
rawExtraField,
|
|
5077
5076
|
useWebWorkers,
|
|
5077
|
+
transferStreams,
|
|
5078
5078
|
onstart,
|
|
5079
5079
|
onprogress,
|
|
5080
5080
|
onend,
|
|
@@ -5155,7 +5155,7 @@
|
|
|
5155
5155
|
encrypted: encrypted && !passThrough,
|
|
5156
5156
|
useWebWorkers,
|
|
5157
5157
|
useCompressionStream,
|
|
5158
|
-
transferStreams
|
|
5158
|
+
transferStreams
|
|
5159
5159
|
},
|
|
5160
5160
|
config,
|
|
5161
5161
|
streamOptions: { signal, size, onstart, onprogress, onend }
|
package/dist/zip-legacy.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
((A,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).zip={})})(this,function(A){"use strict";const{Array:e,Object:t,String:g,Number:i,BigInt:s,Math:r,Date:o,Map:a,Set:n,Response:B,URL:c,Error:I,Uint8Array:E,Uint16Array:l,Uint32Array:C,DataView:w,Blob:d,Promise:h,TextEncoder:u,TextDecoder:F,document:Q,crypto:D,btoa:Y,TransformStream:p,ReadableStream:m,WritableStream:f,CompressionStream:S,DecompressionStream:y,navigator:M,Worker:W}="undefined"!=typeof globalThis?globalThis:this||self;var b=void 0!==Q?Q.currentScript:null;const G=4294967295,U=65535,O=255,K=67324752,z=134695760,T=z,R=33639248,x=101010256,N=101075792,k=117853008,L=22,H=21589,J=2048,P=16384,V=2048,j=1024,Z=512,X="/",q=30,v=new o(2107,11,31),_=new o(1980,0,1),$=void 0,AA=1/0,eA="undefined",tA="function";let gA=2;try{typeof M!=eA&&M.hardwareConcurrency&&(gA=M.hardwareConcurrency)}catch{}const iA={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:gA,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof S!=eA&&S,DecompressionStream:typeof y!=eA&&y},sA=t.assign({},iA);function rA(){return sA}function oA(A){return r.max(A.chunkSize,64)}function aA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,useCompressionStream:s,useWebWorkers:r,CompressionStream:o,DecompressionStream:a,CompressionStreamZlib:n,DecompressionStreamZlib:B,workerURI:c,wasmURI:I}=A;nA("baseURI",e),nA("wasmURI",I),nA("workerURI",c),nA("chunkSize",t),nA("maxWorkers",g),nA("terminateWorkerTimeout",i),nA("useCompressionStream",s),nA("useWebWorkers",r),nA("CompressionStream",o),nA("DecompressionStream",a),nA("CompressionStreamZlib",n),nA("DecompressionStreamZlib",B)}function nA(A,e){e!==$&&(sA[A]=e)}const BA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cA=[];for(let A=0;256>A;A++){let e=A;for(let A=0;8>A;A++)1&e?e=e>>>1^3988292384:e>>>=1;cA[A]=e}class IA{constructor(A){this.crc=A||-1}append(A){let e=0|this.crc;for(let t=0,g=0|A.length;g>t;t++)e=e>>>8^cA[255&(e^A[t])];this.crc=e}get(){return~this.crc}}class EA extends p{constructor(){let A;const e=new IA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new E(4);new w(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function lA(A){if(typeof u==eA){const e=new E((A=unescape(encodeURIComponent(A))).length);for(let t=0;t<e.length;t++)e[t]=A.charCodeAt(t);return e}return(new u).encode(A)}const CA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=CA.getPartial(t);return 32===g?A.concat(e):CA._shiftRight(e,g,0|t,A.slice(0,A.length-1))},bitLength(A){const e=A.length;if(0===e)return 0;const t=A[e-1];return 32*(e-1)+CA.getPartial(t)},clamp(A,e){if(32*A.length<e)return A;const t=(A=A.slice(0,r.ceil(e/32))).length;return e&=31,t>0&&e&&(A[t-1]=CA.partial(e,A[t-1]&2147483648>>e-1,1)),A},partial:(A,e,t)=>32===A?e:(t?0|e:e<<32-A)+1099511627776*A,getPartial:A=>r.round(A/1099511627776)||32,_shiftRight(A,e,t,g){for(void 0===g&&(g=[]);e>=32;e-=32)g.push(t),t=0;if(0===e)return g.concat(A);for(let i=0;i<A.length;i++)g.push(t|A[i]>>>e),t=A[i]<<32-e;const i=A.length?A[A.length-1]:0,s=CA.getPartial(i);return g.push(CA.partial(e+s&31,e+s>32?t:g.pop(),1)),g}},wA={bytes:{fromBits(A){const e=CA.bitLength(A)/8,t=new E(e);let g;for(let i=0;e>i;i++)3&i||(g=A[i/4]),t[i]=g>>>24,g<<=8;return t},toBits(A){const e=[];let t,g=0;for(t=0;t<A.length;t++)g=g<<8|A[t],3&~t||(e.push(g),g=0);return 3&t&&e.push(CA.partial(8*(3&t),g)),e}}},dA=class{constructor(A){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],A?(e._h=A._h.slice(0),e._buffer=A._buffer.slice(0),e._length=A._length):e.reset()}reset(){const A=this;return A._h=A._init.slice(0),A._buffer=[],A._length=0,A}update(A){const e=this;"string"==typeof A&&(A=wA.utf8String.toBits(A));const t=e._buffer=CA.concat(e._buffer,A),g=e._length,i=e._length=g+CA.bitLength(A);if(i>9007199254740991)throw new I("Cannot hash more than 2^53 - 1 bits");const s=new C(t);let r=0;for(let A=e.blockSize+g-(e.blockSize+g&e.blockSize-1);i>=A;A+=e.blockSize)e._block(s.subarray(16*r,16*(r+1))),r+=1;return t.splice(0,16*r),e}finalize(){const A=this;let e=A._buffer;const t=A._h;e=CA.concat(e,[CA.partial(1,1)]);for(let A=e.length+2;15&A;A++)e.push(0);for(e.push(r.floor(A._length/4294967296)),e.push(0|A._length);e.length;)A._block(e.splice(0,16));return A.reset(),t}_f(A,e,t,g){return A>19?A>39?A>59?A>79?void 0:e^t^g:e&t|e&g|t&g:e^t^g:e&t|~e&g}_S(A,e){return e<<A|e>>>32-A}_block(A){const t=this,g=t._h,i=e(80);for(let e=0;16>e;e++)i[e]=A[e];let s=g[0],o=g[1],a=g[2],n=g[3],B=g[4];for(let A=0;79>=A;A++){16>A||(i[A]=t._S(1,i[A-3]^i[A-8]^i[A-14]^i[A-16]));const e=t._S(5,s)+t._f(A,o,a,n)+B+i[A]+t._key[r.floor(A/20)]|0;B=n,n=a,a=t._S(30,o),o=s,s=e}g[0]=g[0]+s|0,g[1]=g[1]+o|0,g[2]=g[2]+a|0,g[3]=g[3]+n|0,g[4]=g[4]+B|0}},hA={getRandomValues(A){const e=new C(A.buffer),t=A=>{let e=987654321;const t=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&t,(((e<<16)+(A=18e3*(65535&A)+(A>>16)&t)&t)/4294967296+.5)*(r.random()>.5?1:-1))};for(let g,i=0;i<A.length;i+=4){const A=t(4294967296*(g||r.random()));g=987654071*A(),e[i/4]=4294967296*A()|0}return A}},uA={importKey:A=>new uA.hmacSha1(wA.bytes.toBits(A)),pbkdf2(A,e,t,g){if(t=t||1e4,0>g||0>t)throw new I("invalid params to pbkdf2");const i=1+(g>>5)<<2;let s,r,o,a,n;const B=new ArrayBuffer(i),c=new w(B);let E=0;const l=CA;for(e=wA.bytes.toBits(e),n=1;(i||1)>E;n++){for(s=r=A.encrypt(l.concat(e,[n])),o=1;t>o;o++)for(r=A.encrypt(r),a=0;a<r.length;a++)s[a]^=r[a];for(o=0;(i||1)>E&&o<s.length;o++)c.setInt32(E,s[o]),E+=4}return B.slice(0,g/8)},hmacSha1:class{constructor(A){const e=this,t=e._hash=dA,g=[[],[]];e._baseHash=[new t,new t];const i=e._baseHash[0].blockSize/32;A.length>i&&(A=(new t).update(A).finalize());for(let e=0;i>e;e++)g[0][e]=909522486^A[e],g[1][e]=1549556828^A[e];e._baseHash[0].update(g[0]),e._baseHash[1].update(g[1]),e._resultHash=new t(e._baseHash[0])}reset(){const A=this;A._resultHash=new A._hash(A._baseHash[0]),A._updated=!1}update(A){this._updated=!0,this._resultHash.update(A)}digest(){const A=this,e=A._resultHash.finalize(),t=new A._hash(A._baseHash[1]).update(e).finalize();return A.reset(),t}encrypt(A){if(this._updated)throw new I("encrypt on already updated hmac called!");return this.update(A),this.digest(A)}}},FA=typeof D!=eA&&typeof D.getRandomValues==tA,QA="Invalid password",DA="Invalid signature",YA="zipjs-abort-check-password";function pA(A){return FA?D.getRandomValues(A):hA.getRandomValues(A)}const mA=16,fA={name:"PBKDF2"},SA=t.assign({hash:{name:"HMAC"}},fA),yA=t.assign({iterations:1e3,hash:{name:"SHA-1"}},fA),MA=["deriveBits"],WA=[8,12,16],bA=[16,24,32],GA=10,UA=[0,0,0,0],OA=typeof D!=eA,KA=OA&&D.subtle,zA=OA&&typeof KA!=eA,TA=wA.bytes,RA=class{constructor(A){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const t=e._tables[0][4],g=e._tables[1],i=A.length;let s,r,o,a=1;if(4!==i&&6!==i&&8!==i)throw new I("invalid aes key size");for(e._key=[r=A.slice(0),o=[]],s=i;4*i+28>s;s++){let A=r[s-1];(s%i===0||8===i&&s%i===4)&&(A=t[A>>>24]<<24^t[A>>16&255]<<16^t[A>>8&255]<<8^t[255&A],s%i===0&&(A=A<<8^A>>>24^a<<24,a=a<<1^283*(a>>7))),r[s]=r[s-i]^A}for(let A=0;s;A++,s--){const e=r[3&A?s:s-4];o[A]=4>=s||4>A?e:g[0][t[e>>>24]]^g[1][t[e>>16&255]]^g[2][t[e>>8&255]]^g[3][t[255&e]]}}encrypt(A){return this._crypt(A,0)}decrypt(A){return this._crypt(A,1)}_precompute(){const A=this._tables[0],e=this._tables[1],t=A[4],g=e[4],i=[],s=[];let r,o,a,n;for(let A=0;256>A;A++)s[(i[A]=A<<1^283*(A>>7))^A]=A;for(let B=r=0;!t[B];B^=o||1,r=s[r]||1){let s=r^r<<1^r<<2^r<<3^r<<4;s=s>>8^255&s^99,t[B]=s,g[s]=B,n=i[a=i[o=i[B]]];let c=16843009*n^65537*a^257*o^16843008*B,I=257*i[s]^16843008*s;for(let t=0;4>t;t++)A[t][B]=I=I<<24^I>>>8,e[t][s]=c=c<<24^c>>>8}for(let t=0;5>t;t++)A[t]=A[t].slice(0),e[t]=e[t].slice(0)}_crypt(A,e){if(4!==A.length)throw new I("invalid aes block size");const t=this._key[e],g=t.length/4-2,i=[0,0,0,0],s=this._tables[e],r=s[0],o=s[1],a=s[2],n=s[3],B=s[4];let c,E,l,C=A[0]^t[0],w=A[e?3:1]^t[1],d=A[2]^t[2],h=A[e?1:3]^t[3],u=4;for(let A=0;g>A;A++)c=r[C>>>24]^o[w>>16&255]^a[d>>8&255]^n[255&h]^t[u],E=r[w>>>24]^o[d>>16&255]^a[h>>8&255]^n[255&C]^t[u+1],l=r[d>>>24]^o[h>>16&255]^a[C>>8&255]^n[255&w]^t[u+2],h=r[h>>>24]^o[C>>16&255]^a[w>>8&255]^n[255&d]^t[u+3],u+=4,C=c,w=E,d=l;for(let A=0;4>A;A++)i[e?3&-A:A]=B[C>>>24]<<24^B[w>>16&255]<<16^B[d>>8&255]<<8^B[255&h]^t[u++],c=C,C=w,w=d,d=h,h=c;return i}},xA=class{constructor(A,e){this._prf=A,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(A){return this.calculate(this._prf,A,this._iv)}incWord(A){if(255&~(A>>24))A+=1<<24;else{let e=A>>16&255,t=A>>8&255,g=255&A;255===e?(e=0,255===t?(t=0,255===g?g=0:++g):++t):++e,A=0,A+=e<<16,A+=t<<8,A+=g}return A}incCounter(A){0===(A[0]=this.incWord(A[0]))&&(A[1]=this.incWord(A[1]))}calculate(A,e,t){let g;if(!(g=e.length))return[];const i=CA.bitLength(e);for(let i=0;g>i;i+=4){this.incCounter(t);const g=A.encrypt(t);e[i]^=g[0],e[i+1]^=g[1],e[i+2]^=g[2],e[i+3]^=g[3]}return CA.clamp(e,i)}},NA=uA.hmacSha1;let kA=OA&&zA&&typeof KA.importKey==tA,LA=OA&&zA&&typeof KA.deriveBits==tA;class HA extends p{constructor({password:A,rawPassword:e,signed:g,encryptionStrength:i,checkPasswordOnly:s}){super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:jA(A,e),signed:g,strength:i-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:r,ready:o}=t;g?(await(async(A,e,t,g)=>{const i=await VA(A,e,t,XA(g,0,WA[e])),s=XA(g,WA[e]);if(i[0]!=s[0]||i[1]!=s[1])throw new I(QA)})(t,i,g,XA(A,0,WA[i]+2)),A=XA(A,WA[i]+2),s?e.error(new I(YA)):r()):await o;const a=new E(A.length-GA-(A.length-GA)%mA);e.enqueue(PA(t,A,a,0,GA,!0))},async flush(A){const{signed:e,ctr:t,hmac:g,pending:i,ready:s}=this;if(g&&t){await s;const r=XA(i,0,i.length-GA),o=XA(i,i.length-GA);let a=new E;if(r.length){const A=vA(TA,r);g.update(A);const e=t.update(A);a=qA(TA,e)}if(e){const A=XA(qA(TA,g.digest()),0,GA);for(let e=0;GA>e;e++)if(A[e]!=o[e])throw new I(DA)}A.enqueue(a)}}})}}class JA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:jA(A,e),strength:g-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:s,ready:r}=t;let o=new E;g?(o=await(async(A,e,t)=>{const g=pA(new E(WA[e]));return ZA(g,await VA(A,e,t,g))})(t,i,g),s()):await r;const a=new E(o.length+A.length-A.length%mA);a.set(o,0),e.enqueue(PA(t,A,a,o.length,0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:s}=this;if(t&&e){await s;let r=new E;if(g.length){const A=e.update(vA(TA,g));t.update(A),r=qA(TA,A)}i.signature=qA(TA,t.digest()).slice(0,GA),A.enqueue(ZA(r,i.signature))}}}),i=this}}function PA(A,e,t,g,i,s){const{ctr:r,hmac:o,pending:a}=A,n=e.length-i;let B;for(a.length&&(e=ZA(a,e),t=((A,e)=>{if(e&&e>A.length){const t=A;(A=new E(e)).set(t,0)}return A})(t,n-n%mA)),B=0;n-mA>=B;B+=mA){const A=vA(TA,XA(e,B,B+mA));s&&o.update(A);const i=r.update(A);s||o.update(i),t.set(qA(TA,i),B+g)}return A.pending=XA(e,B),t}async function VA(A,g,i,s){A.password=null;const r=await(async(A,e,t,g,i)=>{if(!kA)return uA.importKey(e);try{return await KA.importKey("raw",e,t,!1,i)}catch{return kA=!1,uA.importKey(e)}})(0,i,SA,0,MA),o=await(async(A,e,t)=>{if(!LA)return uA.pbkdf2(e,A.salt,yA.iterations,t);try{return await KA.deriveBits(A,e,t)}catch{return LA=!1,uA.pbkdf2(e,A.salt,yA.iterations,t)}})(t.assign({salt:s},yA),r,8*(2*bA[g]+2)),a=new E(o),n=vA(TA,XA(a,0,bA[g])),B=vA(TA,XA(a,bA[g],2*bA[g])),c=XA(a,2*bA[g]);return t.assign(A,{keys:{key:n,authentication:B,passwordVerification:c},ctr:new xA(new RA(n),e.from(UA)),hmac:new NA(B)}),c}function jA(A,e){return e===$?lA(A):e}function ZA(A,e){let t=A;return A.length+e.length&&(t=new E(A.length+e.length),t.set(A,0),t.set(e,A.length)),t}function XA(A,e,t){return A.subarray(e,t)}function qA(A,e){return A.fromBits(e)}function vA(A,e){return A.toBits(e)}class _A extends p{constructor({password:A,passwordVerification:e,checkPasswordOnly:g}){super({start(){t.assign(this,{password:A,passwordVerification:e}),te(this,A)},transform(A,e){const t=this;if(t.password){const e=Ae(t,A.subarray(0,12));if(t.password=null,e.at(-1)!=t.passwordVerification)throw new I(QA);A=A.subarray(12)}g?e.error(new I(YA)):e.enqueue(Ae(t,A))}})}}class $A extends p{constructor({password:A,passwordVerification:e}){super({start(){t.assign(this,{password:A,passwordVerification:e}),te(this,A)},transform(A,e){const t=this;let g,i;if(t.password){t.password=null;const e=pA(new E(12));e[11]=t.passwordVerification,g=new E(A.length+e.length),g.set(ee(t,e),0),i=12}else g=new E(A.length),i=0;g.set(ee(t,A),i),e.enqueue(g)}})}}function Ae(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=ie(A)^e[g],ge(A,t[g]);return t}function ee(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=ie(A)^e[g],ge(A,e[g]);return t}function te(A,e){const g=[305419896,591751049,878082192];t.assign(A,{keys:g,crcKey0:new IA(g[0]),crcKey2:new IA(g[2])});for(let t=0;t<e.length;t++)ge(A,e.charCodeAt(t))}function ge(A,e){let[t,g,i]=A.keys;A.crcKey0.append([e]),t=~A.crcKey0.get(),g=re(r.imul(re(g+se(t)),134775813)+1),A.crcKey2.append([g>>>24]),i=~A.crcKey2.get(),A.keys=[t,g,i]}function ie(A){const e=2|A.keys[2];return se(r.imul(e,1^e)>>>8)}function se(A){return 255&A}function re(A){return 4294967295&A}const oe="Invalid uncompressed size";class ae extends p{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:s,useCompressionStream:r,zipCrypto:o,signed:a,level:n}=A,B=this;let c,I,E=super.readable;s&&!o||!a||(c=new EA,E=Ie(E,c)),i&&(E=ce(E,r,{level:n,chunkSize:e},g,t,g)),s&&(o?E=Ie(E,new $A(A)):(I=new JA(A),E=Ie(E,I))),Be(B,E,()=>{let A;s&&!o&&(A=I.signature),s&&!o||!a||(A=new w(c.value.buffer).getUint32(0)),B.signature=A})}}class ne extends p{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:s,signed:r,signature:o,compressed:a,useCompressionStream:n,deflate64:B}=A;let c,E,l=super.readable;s&&(i?l=Ie(l,new _A(A)):(E=new HA(A),l=Ie(l,E))),a&&(l=ce(l,n,{chunkSize:e,deflate64:B},g,t,g)),s&&!i||!r||(c=new EA,l=Ie(l,c)),Be(this,l,()=>{if((!s||i)&&r){const A=new w(c.value.buffer);if(o!=A.getUint32(0,!1))throw new I(DA)}})}}function Be(A,e,g){e=Ie(e,new p({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function ce(A,e,t,g,i,s){const r=e&&g?g:i||s,o=t.deflate64?"deflate64-raw":"deflate-raw";try{A=Ie(A,new r(o,t))}catch(g){if(!e)throw g;if(i)A=Ie(A,new i(o,t));else{if(!s)throw g;A=Ie(A,new s(o,t))}}return A}function Ie(A,e){return A.pipeThrough(e)}const Ee="data",le="close",Ce="deflate",we="inflate";class de extends p{constructor(A,e){super({});const g=this,{codecType:i}=A;let s;i.startsWith(Ce)?s=ae:i.startsWith(we)&&(s=ne),g.outputSize=0;let r=0;const o=new s(A,e),a=super.readable,n=new p({transform(A,e){A&&A.length&&(r+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:r})}}),B=new p({transform(e,t){if(e&&e.length&&(t.enqueue(e),g.outputSize+=e.length,A.outputSize!==$&&g.outputSize>A.outputSize))throw new I(oe)},flush(){const{signature:A}=o;t.assign(g,{signature:A,inputSize:r})}});t.defineProperty(g,"readable",{get:()=>a.pipeThrough(n).pipeThrough(o).pipeThrough(B)})}}class he extends p{constructor(A){let e;super({transform:function t(g,i){if(e){const A=new E(e.length+g.length);A.set(e),A.set(g,e.length),g=A,e=null}g.length>A?(i.enqueue(g.slice(0,A)),t(g.slice(A),i)):e=g},flush(A){e&&e.length&&A.enqueue(e)}})}}const ue={type:"module"};let Fe,Qe,De,Ye=!0;class pe{constructor(A,{readable:e,writable:g},{options:i,config:s,streamOptions:r,useWebWorkers:o,transferStreams:a,workerURI:n},B){const{signal:c}=r;return t.assign(A,{busy:!0,readable:e.pipeThrough(new he(s.chunkSize)).pipeThrough(new me(r),{signal:c}),writable:g,options:t.assign({},i),workerURI:n,transferStreams:a,terminate:()=>new h(e=>{const{worker:t,busy:g}=A;t?(g?A.resolveTerminated=e:(t.terminate(),e()),A.interface=null):e()}),onTaskFinished(){const{resolveTerminated:e}=A;e&&(A.resolveTerminated=null,A.terminated=!0,A.worker.terminate(),e()),A.busy=!1,B(A)}}),Fe===$&&(Fe=typeof W!=eA),(o&&Fe?ye:Se)(A,s)}}class me extends p{constructor({onstart:A,onprogress:e,size:t,onend:g}){let i=0;super({async start(){A&&await fe(A,t)},async transform(A,g){i+=A.length,e&&await fe(e,i,t),g.enqueue(A)},async flush(){g&&await fe(g,i)}})}}async function fe(A,...e){try{await A(...e)}catch{}}function Se(A,e){return{run:()=>(async({options:A,readable:e,writable:t,onTaskFinished:g},i)=>{let s;try{if(!A.useCompressionStream)try{await void 0}catch{A.useCompressionStream=!0}s=new de(A,i),await e.pipeThrough(s).pipeTo(t,{preventClose:!0,preventAbort:!0});const{signature:g,inputSize:r,outputSize:o}=s;return{signature:g,inputSize:r,outputSize:o}}catch(A){throw s&&(A.outputSize=s.outputSize),A}finally{g()}})(A,e)}}function ye(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:s}=e;if(!A.interface){let r;typeof s==tA&&(s=s());try{r=Me(A.workerURI,g,A)}catch{return Fe=!1,Se(A,e)}t.assign(A,{worker:r,interface:{run:()=>(async(A,e)=>{let g,i;const s=new h((A,e)=>{g=A,i=e});t.assign(A,{reader:null,writer:null,resolveResult:g,rejectResult:i,result:s});const{readable:r,options:o}=A,{writable:a,closed:n}=(A=>{let e;const t=new h(A=>e=A);return{writable:new f({async write(e){const t=A.getWriter();await t.ready,await t.write(e),t.releaseLock()},close(){e()},abort:e=>A.getWriter().abort(e)}),closed:t}})(A.writable),B=We({type:"start",options:o,config:e,readable:r,writable:a},A);B||t.assign(A,{reader:r.getReader(),writer:a.getWriter()});const c=await s;return B||await a.getWriter().close(),await n,c})(A,{chunkSize:i,wasmURI:s,baseURI:g})}})}return A.interface}function Me(A,e,g,i,s=!0){let r,o,a;if(Qe===$){const t=typeof A==tA;o=t?A(s):A;const n=o.startsWith("data:"),B=o.startsWith("blob:");if(n||B){i===$&&(i=!1),i&&(a=ue);try{r=new W(o,a)}catch(s){if(B)try{c.revokeObjectURL(o)}catch{}if(t&&B)return Me(A,e,g,i,!1);if(i)throw s;return Me(A,e,g,!0,!1)}}else{i===$&&(i=!0),i&&(a=ue);try{o=new c(o,e)}catch{}try{r=new W(o,a)}catch(t){if(i)throw t;return Me(A,e,g,!1,s)}}Qe=o,De=a}else r=new W(Qe,De);return r.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:s,result:r,error:o}=A,{reader:a,writer:n,resolveResult:B,rejectResult:c,onTaskFinished:l}=e;try{if(o){const{message:A,stack:e,code:g,name:i,outputSize:s}=o,r=new I(A);t.assign(r,{stack:e,code:g,name:i,outputSize:s}),C(r)}else{if("pull"==g){const{value:A,done:t}=await a.read();We({type:Ee,value:A,done:t,messageId:s},e)}g==Ee&&(await n.ready,await n.write(new E(i)),We({type:"ack",messageId:s},e)),g==le&&C(null,r)}}catch(o){We({type:le,messageId:s},e),C(o)}function C(A,e){A?c(A):B(e),n&&n.releaseLock(),l()}})(A,g)),r}function We(A,{worker:e,writer:t,onTaskFinished:g,transferStreams:i}){try{const{value:t,readable:g,writable:s}=A,r=[];if(t&&(A.value=t,r.push(A.value.buffer)),i&&Ye?(g&&r.push(g),s&&r.push(s)):A.readable=A.writable=null,r.length)try{return e.postMessage(A,r),!0}catch{Ye=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),g(),A}}let be=[];const Ge=[];let Ue=0;async function Oe(A,e){const{options:t,config:g}=e,{transferStreams:s,useWebWorkers:r,useCompressionStream:o,compressed:a,signed:n,encrypted:B}=t,{workerURI:c,maxWorkers:I}=g;e.transferStreams=s||s===$;const E=!(a||n||B||e.transferStreams);return e.useWebWorkers=!E&&(r||r===$&&g.useWebWorkers),e.workerURI=e.useWebWorkers&&c?c:$,t.useCompressionStream=o||o===$&&g.useCompressionStream,(await(async()=>{const t=be.find(A=>!A.busy);if(t)return Ke(t),new pe(t,A,e,l);if(be.length<I){const t={indexWorker:Ue};return Ue++,be.push(t),new pe(t,A,e,l)}return new h(t=>Ge.push({resolve:t,stream:A,workerOptions:e}))})()).run();function l(A){if(Ge.length){const[{resolve:e,stream:t,workerOptions:g}]=Ge.splice(0,1);e(new pe(A,t,g,l))}else A.worker?(Ke(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{be=be.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):be=be.filter(e=>e!=A)}}function Ke(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const ze="HTTP error ",Te="HTTP Range not supported",Re="Range",xe="GET",Ne="bytes",ke=65536,Le="writable";class He{constructor(){this.size=0}init(){this.initialized=!0}}class Je extends He{get readable(){const A=this,{chunkSize:e=ke}=A,t=new m({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:s,diskNumberStart:o}=t,{chunkOffset:a}=this,n=s===$?e:r.min(e,s-a),B=await Et(A,i+a,n,o);g.enqueue(B),a+e>s||s===$&&!B.length&&n?g.close():this.chunkOffset+=e}});return t}}class Pe extends He{constructor(){super();const A=this,e=new f({write(e){if(!A.initialized)throw new I("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,Le,{get:()=>e})}writeUint8Array(){}}class Ve extends Je{constructor(A){super(),t.assign(this,{blob:A,size:A.size})}async readUint8Array(A,e){const t=this,g=A+e,i=A||g<t.size?t.blob.slice(A,g):t.blob;let s=await i.arrayBuffer();return s.byteLength>e&&(s=s.slice(A,g)),new E(s)}}class je extends He{constructor(A){super();const e=new p,g=[];A&&g.push(["Content-Type",A]),t.defineProperty(this,Le,{get:()=>e.writable}),this.blob=new B(e.readable,{headers:g}).blob()}getData(){return this.blob}}class Ze extends Je{constructor(A,e){super(),qe(this,A,e)}async init(){await ve(this,st,et),super.init()}readUint8Array(A,e){return _e(this,A,e,st,et)}}class Xe extends Je{constructor(A,e){super(),qe(this,A,e)}async init(){await ve(this,rt,tt),super.init()}readUint8Array(A,e){return _e(this,A,e,rt,tt)}}function qe(A,e,g){const{preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:o}=g;delete(g=t.assign({},g)).preventHeadRequest,delete g.useRangeHeader,delete g.forceRangeRequests,delete g.combineSizeEocd,delete g.useXHR,t.assign(A,{url:e,options:g,preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:o})}async function ve(A,e,t){const{url:g,preventHeadRequest:s,useRangeHeader:r,forceRangeRequests:o,combineSizeEocd:a}=A;if((A=>{const{baseURI:e}=rA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(r||o)&&(void 0===s||s)){const g=await e(xe,A,$e(A,a?-22:void 0)),s=g.headers.get("Accept-Ranges");if(!(o||s&&s.toLowerCase()==Ne))throw new I(Te);{let s;a&&(A.eocdCache=new E(await g.arrayBuffer()));const r=g.headers.get("Content-Range");if(r){const A=r.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(s=i(e))}}s===$?await it(A,e,t):A.size=s}}else await it(A,e,t)}async function _e(A,e,t,g,i){const{useRangeHeader:s,forceRangeRequests:r,eocdCache:o,size:a,options:n}=A;if(s||r){if(o&&e==a-L&&t==L)return o;if(a>e){e+t>a&&(t=a-e);const i=await g(xe,A,$e(A,e,t));if(206!=i.status)throw new I(Te);return new E(await i.arrayBuffer())}return new E}{const{data:g}=A;return g||await i(A,n),new E(A.data.subarray(e,e+t))}}function $e(A,e=0,g=1){return t.assign({},At(A),{[Re]:Ne+"="+(0>e?e:e+"-"+(e+g-1))})}function At({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function et(A){await gt(A,st)}async function tt(A){await gt(A,rt)}async function gt(A,e){const t=await e(xe,A,At(A));A.data=new E(await t.arrayBuffer()),A.size||(A.size=A.data.length)}async function it(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=(await e("HEAD",A,At(A))).headers.get("Content-Length");g?A.size=i(g):await t(A,A.options)}}async function st(A,{options:e,url:g},i){const s=await fetch(g,t.assign({},e,{method:A,headers:i}));if(400>s.status)return s;throw 416==s.status?new I(Te):new I(ze+(s.statusText||s.status))}function rt(A,{url:e},g){return new h((i,s)=>{const r=new XMLHttpRequest;if(r.addEventListener("load",()=>{if(400>r.status){const A=[];r.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(e=>{const t=e.trim().split(/\s*:\s*/);t[0]=t[0].trim().replace(/^[a-z]|-[a-z]/g,A=>A.toUpperCase()),A.push(t)}),i({status:r.status,arrayBuffer:()=>r.response,headers:new a(A)})}else s(416==r.status?new I(Te):new I(ze+(r.statusText||r.status)))},!1),r.addEventListener("error",A=>s(A.detail?A.detail.error:new I("Network error")),!1),r.open(A,e),g)for(const A of t.entries(g))r.setRequestHeader(A[0],A[1]);r.responseType="arraybuffer",r.send()})}class ot extends Je{constructor(A,e={}){super(),t.assign(this,{url:A,reader:e.useXHR?new Xe(A,e):new Ze(A,e)})}set size(A){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(A,e){return this.reader.readUint8Array(A,e)}}class at extends Je{constructor(A){super(),this.readers=A}async init(){const A=this,{readers:e}=A;A.lastDiskNumber=0,A.lastDiskOffset=0,await h.all(e.map(async(t,g)=>{await t.init(),g!=e.length-1&&(A.lastDiskOffset+=t.size),A.size+=t.size})),super.init()}async readUint8Array(A,e,t=0){const g=this,{readers:i}=this;let s,o=t;-1==o&&(o=i.length-1);let a=A;for(;i[o]&&a>=i[o].size;)a-=i[o].size,o++;const n=i[o];if(n){const i=n.size;if(a+e>i){const r=i-a;s=new E(e);const o=await Et(n,a,r);s.set(o,0);const B=await g.readUint8Array(A+r,e-r,t);s.set(B,r),o.length+B.length<e&&(s=s.subarray(0,o.length+B.length))}else s=await Et(n,a,e)}else s=new E;return g.lastDiskNumber=r.max(o,g.lastDiskNumber),s}}class nt extends He{constructor(A,e=4294967295){super();const g=this;let i,s,r;t.assign(g,{diskNumber:0,diskOffset:0,size:0,maxSize:e,availableSize:e});const o=new f({async write(e){const{availableSize:t}=g;if(r)e.length<t?await a(e):(await a(e.subarray(0,t)),await n(),g.diskOffset+=i.size,g.diskNumber++,r=null,await this.write(e.subarray(t)));else{const{value:t,done:o}=await A.next();if(o&&!t)throw new I("Writer iterator completed too soon");i=t,i.size=0,i.maxSize&&(g.maxSize=i.maxSize),g.availableSize=g.maxSize,await It(i),s=t.writable,r=s.getWriter(),await this.write(e)}},async close(){await r.ready,await n()}});async function a(A){const e=A.length;e&&(await r.ready,await r.write(A),i.size+=e,g.size+=e,g.availableSize-=e)}async function n(){await r.close()}t.defineProperty(g,Le,{get:()=>o})}}class Bt{constructor(A){return e.isArray(A)&&(A=new at(A)),A instanceof m&&(A={readable:A}),A}}class ct{constructor(A){return A.writable===$&&typeof A.next==tA&&(A=new nt(A)),A instanceof f&&(A={writable:A}),A.size===$&&(A.size=0),A instanceof nt||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:AA,maxSize:AA}),A}}async function It(A,e){if(!A.init||A.initialized)return h.resolve();await A.init(e)}function Et(A,e,t,g){return A.readUint8Array(e,t,g)}const lt="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Ct(A,e){return e&&"cp437"==e.trim().toLowerCase()?(A=>{{let e="";for(let t=0;t<A.length;t++)e+=lt[A[t]];return e}})(A):new F(e).decode(A)}const wt="filename",dt="rawFilename",ht="comment",ut="rawComment",Ft="uncompressedSize",Qt="compressedSize",Dt="offset",Yt="diskNumberStart",pt="lastModDate",mt="rawLastModDate",ft="lastAccessDate",St="creationDate",yt="rawCreationDate",Mt="internalFileAttributes",Wt="externalFileAttributes",bt="msdosAttributesRaw",Gt="msdosAttributes",Ut="msDosCompatible",Ot="zip64",Kt="encrypted",zt="version",Tt="versionMadeBy",Rt="zipCrypto",xt="directory",Nt="executable",kt="compressionMethod",Lt="signature",Ht="extraField",Jt="unixMode",Pt="setuid",Vt="setgid",jt="sticky",Zt=[wt,dt,Ft,Qt,pt,mt,ht,ut,ft,St,yt,Dt,Yt,Mt,Wt,bt,Gt,Ut,Ot,Kt,zt,Tt,Rt,xt,Nt,kt,Lt,Ht,"extraFieldUnix","extraFieldInfoZip","uid","gid",Jt,Pt,Vt,jt,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Xt{constructor(A){Zt.forEach(e=>this[e]=A[e])}}const qt="password",vt="rawPassword",_t="passThrough",$t="signal",Ag="useWebWorkers",eg="useCompressionStream",tg="preventClose",gg="supportZip64SplitFile",ig="offset",sg="usdz",rg="File format is not recognized",og="End of central directory not found",ag="End of Zip64 central directory locator not found",ng="Central directory header not found",Bg="Local file header not found",cg="Zip64 extra field not found",Ig="File contains encrypted entry",Eg="Encryption method not supported",lg="Compression method not supported",Cg="Split zip file",wg="Overlapping entry found",dg="utf-8",hg="cp437",ug=[[Ft,G],[Qt,G],[Dt,G],[Yt,U]],Fg={[U]:{getValue:Ug,bytes:4},[G]:{getValue:Og,bytes:8}};class Qg{constructor(A,e={}){t.assign(this,{reader:new Bt(A),options:e,config:rA(),readRanges:[]})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await It(g),g.size!==$&&g.readUint8Array||(g=new Ve(await new B(g.readable).blob()),await It(g)),g.size<L)throw new I(rg);g.chunkSize=oA(i);const s=await(async(A,e,t)=>{const g=new E(4);var i;return i=e,Kg(g).setUint32(0,i,!0),await s(22)||await s(r.min(1048582,t));async function s(e){const i=t-e,s=await Et(A,i,e);for(let A=s.length-22;A>=0;A--)if(s[A]==g[0]&&s[A+1]==g[1]&&s[A+2]==g[2]&&s[A+3]==g[3])return{offset:i+A,buffer:s.slice(A,A+22).buffer}}})(g,x,g.size);if(!s)throw Ug(Kg(await Et(g,0,4)))==z?new I(Cg):new I(og);const o=Kg(s);let a=Ug(o,12),n=Ug(o,16);const c=s.offset,l=Gg(o,20),C=c+L+l;let w=Gg(o,4);const d=g.lastDiskNumber||0;let u=Gg(o,6),F=Gg(o,8),Q=0,D=0;if(n==G||a==G||F==U||u==U){const A=Kg(await Et(g,s.offset-20,20));if(Ug(A,0)==k){n=Og(A,8);let e=await Et(g,n,56,-1),t=Kg(e);const i=s.offset-20-56;if(Ug(t,0)!=N&&n!=i){const A=n;n=i,n>A&&(Q=n-A),e=await Et(g,n,56,-1),t=Kg(e)}if(Ug(t,0)!=N)throw new I(ag);w==U&&(w=Ug(t,16)),u==U&&(u=Ug(t,20)),F==U&&(F=Og(t,32)),a==G&&(a=Og(t,40)),n-=a}}if(n<g.size||(Q=g.size-n-a-L,n=g.size-a-L),d!=w)throw new I(Cg);if(0>n)throw new I(rg);let Y=0,m=await Et(g,n,a,u),f=Kg(m);if(a){const A=s.offset-a;if(Ug(f,Y)!=R&&n!=A){const e=n;n=A,n>e&&(Q+=n-e),m=await Et(g,n,a,u),f=Kg(m)}}const S=s.offset-n-(g.lastDiskOffset||0);if(a==S||0>S||(a=S,m=await Et(g,n,a,u),f=Kg(m)),0>n||n>=g.size)throw new I(rg);const y=yg(e,A,"filenameEncoding"),M=yg(e,A,"commentEncoding");for(let s=0;F>s;s++){const o=new Dg(g,i,e.options);if(Ug(f,Y)!=R)throw new I(ng);Yg(o,f,Y+6);const a=!!o.bitFlag.languageEncodingFlag,n=Y+46,c=n+o.filenameLength,E=c+o.extraFieldLength,l=Gg(f,Y+4),C=!(l>>8),w=l>>8==3,d=m.subarray(n,c),u=Gg(f,Y+32),S=E+u,W=m.subarray(E,S),b=a,G=a,K=Ug(f,Y+38),z=K&O,T={readOnly:!!(1&z),hidden:!!(2&z),system:!!(4&z),directory:!!(16&z),archive:!!(32&z)},x=Ug(f,Y+42)+Q,N=yg(e,A,"decodeText")||Ct,k=b?dg:y||hg,L=G?dg:M||hg;let H=N(d,k);H===$&&(H=Ct(d,k));let J=N(W,L);J===$&&(J=Ct(W,L)),t.assign(o,{versionMadeBy:l,msDosCompatible:C,compressedSize:0,uncompressedSize:0,commentLength:u,offset:x,diskNumberStart:Gg(f,Y+34),internalFileAttributes:Gg(f,Y+36),externalFileAttributes:K,msdosAttributesRaw:z,msdosAttributes:T,rawFilename:d,filenameUTF8:b,commentUTF8:G,rawExtraField:m.subarray(c,E),rawComment:W,filename:H,comment:J}),D=r.max(x,D),pg(o,o,f,Y+6);const q=o.externalFileAttributes>>16&U;o.unixMode===$&&16877&q&&(o.unixMode=q);const v=!!(o.unixMode&V),_=!!(o.unixMode&j),AA=!!(o.unixMode&Z),eA=o.unixMode!==$?!!(73&o.unixMode):w&&!!(73&q),tA=o.unixMode!==$&&(61440&o.unixMode)==P,gA=(61440&q)==P;t.assign(o,{setuid:v,setgid:_,sticky:AA,unixExternalUpper:q,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:eA,directory:tA||gA||C&&T.directory||H.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const iA=new Xt(o);iA.getData=(A,t)=>o.getData(A,iA,e.readRanges,t),iA.arrayBuffer=async A=>{const t=new p,[g]=await h.all([new B(t.readable).arrayBuffer(),o.getData(t,iA,e.readRanges,A)]);return g},Y=S;const{onprogress:sA}=A;if(sA)try{await sA(s+1,F,new Xt(o))}catch{}yield iA}const W=yg(e,A,"extractPrependedData"),b=yg(e,A,"extractAppendedData");return W&&(e.prependedData=D>0?await Et(g,0,D):new E),e.comment=l?await Et(g,c+L,l):new E,b&&(e.appendedData=C<g.size?await Et(g,C,g.size-C):new E),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Dg{constructor(A,e,g){t.assign(this,{reader:A,config:e,options:g})}async getData(A,e,g,i={}){const s=this,{reader:r,offset:o,diskNumberStart:a,extraFieldAES:n,extraFieldZip64:B,compressionMethod:c,config:l,bitFlag:C,signature:w,rawLastModDate:d,uncompressedSize:h,compressedSize:u}=s,{dataDescriptor:F}=C,Q=e.localDirectory={},D=Kg(await Et(r,o,q,a));let Y=yg(s,i,qt),p=yg(s,i,vt);const m=yg(s,i,_t);if(Y=Y&&Y.length&&Y,p=p&&p.length&&p,n&&99!=n.originalCompressionMethod)throw new I(lg);if(0!=c&&8!=c&&9!=c&&!m)throw new I(lg);if(Ug(D,0)!=K)throw new I(Bg);Yg(Q,D,4);const{extraFieldLength:S,filenameLength:y,lastAccessDate:M,creationDate:W}=Q;Q.rawExtraField=S?await Et(r,o+q+y,S,a):new E,pg(s,Q,D,4,!0),t.assign(e,{lastAccessDate:M,creationDate:W});const b=s.encrypted&&Q.encrypted&&!m,G=b&&!n;if(m||(e.zipCrypto=G),b){if(!G&&n.strength===$)throw new I(Eg);if(!Y&&!p)throw new I(Ig)}const U=o+q+y+S,z=u,R=r.readable;t.assign(R,{diskNumberStart:a,offset:U,size:z});const x=yg(s,i,$t),N=yg(s,i,"checkPasswordOnly");let k=yg(s,i,"checkOverlappingEntry");const L=yg(s,i,"checkOverlappingEntryOnly");L&&(k=!0);const{onstart:H,onprogress:J,onend:P}=i,V=9==c;let j=yg(s,i,eg);V&&(j=!1);const Z={options:{codecType:we,password:Y,rawPassword:p,zipCrypto:G,encryptionStrength:n&&n.strength,signed:yg(s,i,"checkSignature")&&!m,passwordVerification:G&&(F?d>>>8&O:w>>>24&O),outputSize:m?u:h,signature:w,compressed:0!=c&&!m,encrypted:s.encrypted&&!m,useWebWorkers:yg(s,i,Ag),useCompressionStream:j,transferStreams:yg(s,i,"transferStreams"),deflate64:V,checkPasswordOnly:N},config:l,streamOptions:{signal:x,size:z,onstart:H,onprogress:J,onend:P}};let X;k&&await(async({reader:A,fileEntry:e,offset:t,diskNumberStart:g,signature:i,compressedSize:s,uncompressedSize:r,dataOffset:o,dataDescriptor:a,extraFieldZip64:n,readRanges:B})=>{let c=0;if(g)for(let e=0;g>e;e++)c+=A.readers[e].size;let E=0;if(a&&(E=n?20:12),E){const t=await Et(A,o+s,E+4,g);if(Ug(Kg(t),0)==T){const A=Ug(Kg(t),4);let g,o;n?(g=Og(Kg(t),8),o=Og(Kg(t),16)):(g=Ug(Kg(t),8),o=Ug(Kg(t),12)),(e.encrypted&&!e.zipCrypto||A==i)&&g==s&&o==r&&(E+=4)}}const l={start:c+t,end:c+o+s+E,fileEntry:e};for(const A of B)if(A.fileEntry!=e&&l.start>=A.start&&l.start<A.end){const e=new I(wg);throw e.overlappingEntry=A.fileEntry,e}B.push(l)})({reader:r,fileEntry:e,offset:o,diskNumberStart:a,signature:w,compressedSize:u,uncompressedSize:h,dataOffset:U,dataDescriptor:F||Q.bitFlag.dataDescriptor,extraFieldZip64:B||Q.extraFieldZip64,readRanges:g});try{if(!L){N&&(A=new f),A=new ct(A),await It(A,m?u:h),({writable:X}=A);const{outputSize:e}=await Oe({readable:R,writable:X},Z);if(A.size+=e,e!=(m?u:h))throw new I(oe)}}catch(e){if(e.outputSize!==$&&(A.size+=e.outputSize),!N||e.message!=YA)throw e}finally{yg(s,i,tg)||!X||X.locked||await X.getWriter().close()}return N||L?$:A.getData?A.getData():X}}function Yg(A,e,g){const i=A.rawBitFlag=Gg(e,g+2),s=!(1&~i),r=Ug(e,g+6);t.assign(A,{encrypted:s,version:Gg(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&J)==J},rawLastModDate:r,lastModDate:Mg(r),filenameLength:Gg(e,g+22),extraFieldLength:Gg(e,g+24)})}function pg(A,e,g,i,s){const{rawExtraField:r}=e,n=e.extraField=new a,B=Kg(new E(r));let c=0;try{for(;c<r.length;){const A=Gg(B,c),e=Gg(B,c+2);n.set(A,{type:A,data:r.slice(c+4,c+4+e)}),c+=4+e}}catch{}const l=Gg(g,i+4);t.assign(e,{signature:Ug(g,i+10),compressedSize:Ug(g,i+14),uncompressedSize:Ug(g,i+18)});const C=n.get(1);C&&(((A,e)=>{e.zip64=!0;const t=Kg(A.data),g=ug.filter(([A,t])=>e[A]==t);for(let i=0,s=0;i<g.length;i++){const[r,o]=g[i];if(e[r]==o){const g=Fg[o];e[r]=A[r]=g.getValue(t,s),s+=g.bytes}else if(A[r])throw new I(cg)}})(C,e),e.extraFieldZip64=C);const w=n.get(28789);w&&(mg(w,wt,dt,e,A),e.extraFieldUnicodePath=w);const d=n.get(25461);d&&(mg(d,ht,ut,e,A),e.extraFieldUnicodeComment=d);const h=n.get(39169);h?(((A,e,g)=>{const i=Kg(A.data),s=bg(i,4);t.assign(A,{vendorVersion:bg(i,0),vendorId:bg(i,2),strength:s,originalCompressionMethod:g,compressionMethod:Gg(i,5)}),e.compressionMethod=A.compressionMethod})(h,e,l),e.extraFieldAES=h):e.compressionMethod=l;const u=n.get(10);u&&(((A,e)=>{const g=Kg(A.data);let i,s=4;try{for(;s<A.data.length&&!i;){const e=Gg(g,s),t=Gg(g,s+2);1==e&&(i=A.data.slice(s+4,s+4+t)),s+=4+t}}catch{}try{if(i&&24==i.length){const g=Kg(i),s=g.getBigUint64(0,!0),r=g.getBigUint64(8,!0),o=g.getBigUint64(16,!0);t.assign(A,{rawLastModDate:s,rawLastAccessDate:r,rawCreationDate:o});const a={lastModDate:Wg(s),lastAccessDate:Wg(r),creationDate:Wg(o)};t.assign(A,a),t.assign(e,a)}}catch{}})(u,e),e.extraFieldNTFS=u);const F=n.get(30805);if(F)fg(F,e,!1),e.extraFieldUnix=F;else{const A=n.get(30837);A&&(fg(A,e,!0),e.extraFieldInfoZip=A)}const Q=n.get(H);Q&&(((A,e,t)=>{const g=Kg(A.data),i=bg(g,0),s=[],r=[];t?(1&~i||(s.push(pt),r.push(mt)),2&~i||(s.push(ft),r.push("rawLastAccessDate")),4&~i||(s.push(St),r.push(yt))):5>A.data.length||(s.push(pt),r.push(mt));let a=1;s.forEach((t,i)=>{if(A.data.length>=a+4){const s=Ug(g,a);e[t]=A[t]=new o(1e3*s);const n=r[i];A[n]=s}a+=4})})(Q,e,s),e.extraFieldExtendedTimestamp=Q);const D=n.get(6534);D&&(e.extraFieldUSDZ=D)}function mg(A,e,g,i,s){const r=Kg(A.data),o=new IA;o.append(s[g]);const a=Kg(new E(4));a.setUint32(0,o.get(),!0);const n=Ug(r,1);t.assign(A,{version:bg(r,0),[e]:Ct(A.data.subarray(5)),valid:!s.bitFlag.languageEncodingFlag&&n==Ug(a,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function fg(A,e,g){try{const i=Kg(new E(A.data));let s=0;const r=bg(i,s++),o=bg(i,s++),a=A.data.subarray(s,s+o);s+=o;const n=Sg(a),B=bg(i,s++),c=A.data.subarray(s,s+B);s+=B;const I=Sg(c);let l=$;if(!g&&s+2<=A.data.length){const e=A.data;l=new w(e.buffer,e.byteOffset+s,2).getUint16(0,!0)}t.assign(A,{version:r,uid:n,gid:I,unixMode:l}),n!==$&&(e.uid=n),I!==$&&(e.gid=I),l!==$&&(e.unixMode=l)}catch{}}function Sg(A){const e=new E(4);return e.set(A,0),new w(e.buffer,e.byteOffset,4).getUint32(0,!0)}function yg(A,e,t){return e[t]===$?A.options[t]:e[t]}function Mg(A){const e=(4294901760&A)>>16,t=A&U;try{return new o(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&t)>>11,(2016&t)>>5,2*(31&t),0)}catch{}}function Wg(A){return new o(i(A/s(1e4)-s(116444736e5)))}function bg(A,e){return A.getUint8(e)}function Gg(A,e){return A.getUint16(e,!0)}function Ug(A,e){return A.getUint32(e,!0)}function Og(A,e){return i(A.getBigUint64(e,!0))}function Kg(A){return new w(A.buffer)}const zg="File already exists",Tg="Zip file comment exceeds 64KB",Rg="File entry comment exceeds 64KB",xg="File entry name exceeds 64KB",Ng="Version exceeds 65535",kg="The strength must equal 1, 2, or 3",Lg="Extra field type exceeds 65535",Hg="Extra field data exceeds 64KB",Jg="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Pg="Undefined uncompressed size",Vg="Zip file not empty",jg=new E([7,0,2,0,65,69,3,0,0]),Zg="infozip",Xg="unix";let qg=0;const vg=[];class _g{constructor(A,e={}){const g=(A=new ct(A)).availableSize!==$&&A.availableSize>0&&A.availableSize!==AA&&A.maxSize!==$&&A.maxSize>0&&A.maxSize!==AA;t.assign(this,{writer:A,addSplitZipSignature:g,options:e,config:rA(),files:new a,filenames:new n,offset:e[ig]===$?A.size||A.writable.size||0:e[ig],pendingEntriesSize:0,pendingAddFileCalls:new n,bufferedWrites:0})}async prependZip(A){if(this.filenames.size)throw new I(Vg);A=new Bt(A);const e=new Qg(A.readable),g=await e.getEntries();await e.close(),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new n(g.map(A=>A.filename)),this.files=new a(g.map(A=>{const{version:e,compressionMethod:g,lastModDate:i,lastAccessDate:s,creationDate:r,rawFilename:o,bitFlag:a,encrypted:n,uncompressedSize:B,compressedSize:c,diskOffset:I,diskNumber:l,zip64:C}=A;let{rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q}=A;const{level:D,languageEncodingFlag:Y,dataDescriptor:p}=a;w=w||new E,d=d||new E,h=h||new E,u=u||new E,F=A.rawExtraFieldUnix||new E,Q=Q||new E;const m=ci(w,d,h,u,F,Q),f=C&&B>G,S=C&&c>G,{headerArray:y,headerView:M}=Ii({version:e,bitFlag:Ei(D,Y,p,n,g),compressionMethod:g,uncompressedSize:B,compressedSize:c,lastModDate:i,rawFilename:o,zip64CompressedSize:S,zip64UncompressedSize:f,extraFieldLength:m});return t.assign(A,{zip64UncompressedSize:f,zip64CompressedSize:S,zip64Offset:C&&this.offset-I>G,zip64DiskNumberStart:C&&l>U,rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q,extendedTimestamp:h.length>0||u.length>0,extraFieldExtendedTimestampFlag:1+(s?2:0)+(r?4:0),headerArray:y,headerView:M}),[A.filename,A]}))}async add(A="",g,i={}){const a=this,{pendingAddFileCalls:n,config:B}=a;let c;qg<B.maxWorkers?qg++:await new h(A=>vg.push(A));try{if(A=A.trim(),a.filenames.has(A))throw new I(zg);return a.filenames.add(A),c=(async(A,g,i,a)=>{g=g.trim();let n=gi(A,a,Ut),B=gi(A,a,Tt,n?20:768);const c=gi(A,a,Nt),C=gi(A,a,"uid"),d=gi(A,a,"gid");let u=gi(A,a,Jt);const F=gi(A,a,"unixExtraFieldType");let Q=gi(A,a,Pt),D=gi(A,a,Vt),Y=gi(A,a,jt);if(C!==$&&(0>C||C>G))throw new I("Invalid uid (must be integer 0..2^32-1)");if(d!==$&&(0>d||d>G))throw new I("Invalid gid (must be integer 0..2^32-1)");if(u!==$&&(0>u||u>U))throw new I("Invalid UNIX mode (must be integer 0..65535)");if(F!==$&&F!==Zg&&F!==Xg)throw new I("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let m=gi(A,a,bt),f=gi(A,a,Gt);const S=m!==$||f!==$;if(C!==$||d!==$||u!==$||F?(n=!1,B=B&U|768):S&&(n=!0,B&=O),m!==$&&(0>m||m>O))throw new I("Invalid msdosAttributesRaw (must be integer 0..255)");if(f&&"object"!=typeof f)throw new I("Invalid msdosAttributes (must be an object with boolean flags)");if(B>U)throw new I(Ng);let y=gi(A,a,Wt,0);!a[xt]&&g.endsWith(X)&&(a[xt]=!0);const M=gi(A,a,xt);let W;M?(g.endsWith(X)||(g+=X),0===y&&(y=16,n||(y|=16877<<16))):n||0!==y||(y=c?493<<16:27525120),n||(W=y>>16&U,u=u===$?W:u&U,Q?u|=V:Q=!!(u&V),D?u|=j:D=!!(u&j),Y?u|=Z:Y=!!(u&Z),M&&(u|=P),y=(u&U)<<16|y&O),({msdosAttributesRaw:m,msdosAttributes:f}=((A,e)=>{if(A!==$)A&=O;else if(e!==$){const{readOnly:t,hidden:g,system:i,directory:s,archive:r}=e;let o=0;t&&(o|=1),g&&(o|=2),i&&(o|=4),s&&(o|=16),r&&(o|=32),A=o&O}return e===$&&(e={readOnly:!!(1&A),hidden:!!(2&A),system:!!(4&A),directory:!!(16&A),archive:!!(32&A)}),{msdosAttributesRaw:A,msdosAttributes:e}})(m,f)),S&&(y=y&G|m&O);const b=gi(A,a,"encodeText",lA);let R=b(g);if(R===$&&(R=lA(g)),ci(R)>U)throw new I(xg);const x=a[ht]||"";let N=b(x);if(N===$&&(N=lA(x)),ci(N)>U)throw new I(Rg);const k=gi(A,a,zt,20);if(k>U)throw new I(Ng);const L=gi(A,a,pt,new o),J=gi(A,a,ft),eA=gi(A,a,St),tA=gi(A,a,Mt,0),gA=gi(A,a,_t);let iA,sA;gA||(iA=gi(A,a,qt),sA=gi(A,a,vt));const rA=gi(A,a,"encryptionStrength",3),aA=gi(A,a,Rt),nA=gi(A,a,"extendedTimestamp",!0),BA=gi(A,a,"keepOrder",!0),cA=gi(A,a,Ag),IA=gi(A,a,"bufferedWrite"),EA=gi(A,a,"dataDescriptorSignature",!1),CA=gi(A,a,$t),wA=gi(A,a,"useUnicodeFileNames",!0),dA=gi(A,a,kt);let hA=gi(A,a,"level"),uA=gi(A,a,eg),FA=gi(A,a,"dataDescriptor");IA&&FA===$&&(FA=!1),(FA===$||aA)&&(FA=!0),hA!==$&&6!=hA&&(uA=!1),uA||A.config.CompressionStream!==$||A.config.CompressionStreamZlib!==$||(hA=0);let QA=gi(A,a,Ot);if(!aA&&(iA!==$||sA!==$)&&(1>rA||rA>3))throw new I(kg);let DA=new E;const YA=a[Ht];if(YA){let A=0,e=0;YA.forEach(e=>A+=4+ci(e)),DA=new E(A),YA.forEach((A,t)=>{if(t>U)throw new I(Lg);if(ci(A)>U)throw new I(Hg);ni(DA,new l([t]),e),ni(DA,new l([ci(A)]),e+2),ni(DA,A,e+4),e+=4+ci(A)})}let pA=0,mA=0,fA=0;if(gA&&(fA=a[Ft],fA===$))throw new I(Pg);const SA=!0===QA;i&&(i=new Bt(i),await It(i),gA?(a.uncompressedSize=fA,pA=ii(fA)):i.size===$?(FA=!0,(QA||QA===$)&&(QA=!0,fA=pA=4294967296)):(a.uncompressedSize=fA=i.size,pA=ii(fA)));const{diskOffset:yA,diskNumber:MA,maxSize:WA}=A.writer,bA=SA||fA>G,GA=SA||pA>G,UA=SA||A.offset+A.pendingEntriesSize-yA>G,OA=gi(A,a,gg,!0)&&SA||MA+r.ceil(A.pendingEntriesSize/WA)>U;if(UA||bA||GA||OA){if(!1===QA||!BA)throw new I(Jg);QA=!0}QA=QA||!1;const KA=gi(A,a,Kt),zA=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:o,zip64:a,zipCrypto:n,useUnicodeFileNames:B,dataDescriptor:c,directory:I,rawExtraField:l,encryptionStrength:C,extendedTimestamp:d,passThrough:h,encrypted:u,zip64UncompressedSize:F,zip64CompressedSize:Q,zip64Offset:D,zip64DiskNumberStart:Y,uncompressedSize:p,offset:m,diskNumberStart:f}=A;let{version:S,compressionMethod:y}=A;const M=!I&&(o>0||o===$&&0!==y);let W,b;const G=h||!M,O=a&&(A.bufferedWrite||!F&&!Q||G);if(a){let A=4,e=4;F&&(A+=8,e+=8),Q&&(A+=8,e+=8),D&&(A+=8),Y&&(A+=4),W=new E(A);const t=Bi(W);b=new E(e);const g=Bi(b);if(ri(t,0,1),ri(t,2,ci(W)-4),ri(g,0,1),ri(g,2,ci(b)-4),O){const A=Bi(W),e=Bi(b);let t=4,g=4;F&&(ai(A,t,s(p)),t+=8,ai(e,g,s(p)),g+=8),Q&&G&&(ai(A,t,s(p)),t+=8,ai(e,g,s(p)),g+=8),D&&(ai(A,t,s(m)),t+=8),Y&&(oi(A,t,f),t+=4),4==g&&(b=new E)}}else W=new E,b=new E;let z,T,R,x,N;if(u&&!n){z=new E(ci(jg)+2);const A=Bi(z);ri(A,0,39169),ni(z,jg,2),si(A,8,C)}else z=new E;if(d){R=new E(9+(g?4:0)+(i?4:0));const A=Bi(R);ri(A,0,H),ri(A,2,ci(R)-4),x=1+(g?2:0)+(i?4:0),si(A,4,x);let e=5;oi(A,e,r.floor(t.getTime()/1e3)),e+=4,g&&(oi(A,e,r.floor(g.getTime()/1e3)),e+=4),i&&oi(A,e,r.floor(i.getTime()/1e3));try{T=new E(36);const A=Bi(T),e=ti(t);ri(A,0,10),ri(A,2,32),ri(A,8,1),ri(A,10,24),ai(A,12,e),ai(A,20,ti(g)||e),ai(A,28,ti(i)||e)}catch{T=new E}}else T=R=new E;try{const{uid:e,gid:t,unixMode:g,setuid:i,setgid:s,sticky:r,unixExtraFieldType:o}=A;if(!o||e===$&&t===$&&g===$)N=new E;else{const A=$g(e),a=$g(t);let n=new E;if(o==Xg&&g!==$){let A=g&U;i&&(A|=V),s&&(A|=j),r&&(A|=Z),n=new E(2),new w(n.buffer).setUint16(0,A,!0)}const B=3+A.length+a.length+n.length;N=new E(4+B);const c=Bi(N);ri(c,0,o==Zg?30837:30805),ri(c,2,B),si(c,4,1),si(c,5,A.length);let I=6;ni(N,A,I),I+=A.length,si(c,I,a.length),I++,ni(N,a,I),I+=a.length,ni(N,n,I)}}catch{N=new E}y===$&&(y=M?8:0),a&&(S=S>45?S:45),u&&!n&&(S=S>51?S:51,z[9]=y,y=99);const k=O?ci(b):0,L=k+ci(z,R,T,N,l),{headerArray:J,headerView:P,rawLastModDate:X}=Ii({version:S,bitFlag:Ei(o,B,c,u,y),compressionMethod:y,uncompressedSize:p,lastModDate:_>t?_:t>v?v:t,rawFilename:e,zip64CompressedSize:Q,zip64UncompressedSize:F,extraFieldLength:L});let AA=q;const eA=new E(AA+ci(e)+L),tA=Bi(eA);return oi(tA,0,K),ni(eA,J,4),ni(eA,e,AA),AA+=ci(e),O&&ni(eA,b,AA),AA+=k,ni(eA,z,AA),AA+=ci(z),ni(eA,R,AA),AA+=ci(R),ni(eA,T,AA),AA+=ci(T),ni(eA,N,AA),AA+=ci(N),ni(eA,l,AA),c&&(oi(tA,18,0),oi(tA,22,0)),{localHeaderArray:eA,localHeaderView:tA,headerArray:J,headerView:P,lastModDate:t,rawLastModDate:X,encrypted:u,compressed:M,version:S,compressionMethod:y,extraFieldExtendedTimestampFlag:x,rawExtraFieldZip64:W,localExtraFieldZip64Length:k,rawExtraFieldExtendedTimestamp:R,rawExtraFieldNTFS:T,rawExtraFieldUnix:N,rawExtraFieldAES:z,extraFieldLength:L}})(a=t.assign({},a,{rawFilename:R,rawComment:N,version:k,versionMadeBy:B,lastModDate:L,lastAccessDate:J,creationDate:eA,rawExtraField:DA,zip64:QA,zip64UncompressedSize:bA,zip64CompressedSize:GA,zip64Offset:UA,zip64DiskNumberStart:OA,password:iA,rawPassword:sA,level:hA,useWebWorkers:cA,encryptionStrength:rA,extendedTimestamp:nA,zipCrypto:aA,bufferedWrite:IA,keepOrder:BA,useUnicodeFileNames:wA,dataDescriptor:FA,dataDescriptorSignature:EA,signal:CA,msDosCompatible:n,internalFileAttribute:tA,internalFileAttributes:tA,externalFileAttribute:y,externalFileAttributes:y,useCompressionStream:uA,passThrough:gA,encrypted:!!(iA&&ci(iA)||sA&&ci(sA))||gA&&KA,signature:a[Lt],compressionMethod:dA,uncompressedSize:fA,offset:A.offset-yA,diskNumberStart:MA,uid:C,gid:d,setuid:Q,setgid:D,sticky:Y,unixMode:u,msdosAttributesRaw:m,msdosAttributes:f,unixExternalUpper:W})),TA=(({zip64:A,dataDescriptor:e,dataDescriptorSignature:t})=>{let g,i=new E,s=0,r=A?20:12;return t&&(r+=4),e&&(i=new E(r),g=Bi(i),t&&(s=4,oi(g,0,T))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:s}})(a),RA=ci(zA.localHeaderArray,TA.dataDescriptorArray);let xA;mA=RA+pA,A.options[sg]&&(mA+=mA+64),A.pendingEntriesSize+=mA;try{xA=await(async(A,g,i,r,o)=>{const{files:a,writer:n}=A,{keepOrder:B,dataDescriptor:c,signal:l}=o,{headerInfo:C}=r,w=A.options[sg],d=e.from(a.values()).pop();let u,F,Q,D,Y,m,f={};a.set(g,f);try{let e;B&&(e=d&&d.lock,f.lock=new h(A=>Q=A)),!(o.bufferedWrite||A.writerLocked||A.bufferedWrites&&B)&&c||w?(m=n,await S()):(m=new p($,$,{highWaterMark:AA}),m.size=0,u=!0,A.bufferedWrites++,await It(n)),await It(m);const{writable:F,diskOffset:M}=n;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new E(4);oi(Bi(e),0,z),await ei(n,e),A.offset+=4}w&&((A,e)=>{const{headerInfo:t}=A;let{localHeaderArray:g,extraFieldLength:i}=t,s=Bi(g),r=64-(e+ci(g))%64;4>r&&(r+=64);const o=new E(r),a=Bi(o);ri(a,0,6534),ri(a,2,r-2);const n=g;t.localHeaderArray=g=new E(ci(n)+r),ni(g,n),ni(g,o,ci(n)),s=Bi(g),ri(s,28,i+r),A.metadataSize+=r})(r,A.offset-M);const{localHeaderView:W,localHeaderArray:b}=C;u||(await e,await y(F));const{diskNumber:U}=n;f.diskNumberStart=U,u||(Y=!0,await ei(m,b)),f=await(async(A,e,{diskNumberStart:g,lock:i},r,o,a)=>{const{headerInfo:n,dataDescriptorInfo:B,metadataSize:c}=r,{headerArray:I,headerView:E,lastModDate:l,rawLastModDate:C,encrypted:w,compressed:d,version:h,compressionMethod:u,rawExtraFieldZip64:F,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,extraFieldExtendedTimestampFlag:Y,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:f}=n,{dataDescriptorArray:S}=B,{rawFilename:y,lastAccessDate:M,creationDate:W,password:b,rawPassword:G,level:U,zip64:K,zip64UncompressedSize:z,zip64CompressedSize:T,zip64Offset:R,zip64DiskNumberStart:x,zipCrypto:N,dataDescriptor:k,directory:L,executable:H,versionMadeBy:J,rawComment:P,rawExtraField:V,useWebWorkers:j,onstart:Z,onprogress:X,onend:q,signal:v,encryptionStrength:_,extendedTimestamp:AA,msDosCompatible:eA,internalFileAttributes:tA,externalFileAttributes:gA,uid:iA,gid:sA,unixMode:rA,setuid:aA,setgid:nA,sticky:BA,unixExternalUpper:cA,msdosAttributesRaw:IA,msdosAttributes:EA,useCompressionStream:lA,passThrough:CA}=a,wA={lock:i,versionMadeBy:J,zip64:K,directory:!!L,executable:!!H,filenameUTF8:!0,rawFilename:y,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:F,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:f,rawExtraField:V,extendedTimestamp:AA,msDosCompatible:eA,internalFileAttributes:tA,externalFileAttributes:gA,diskNumberStart:g,uid:iA,gid:sA,unixMode:rA,setuid:aA,setgid:nA,sticky:BA,unixExternalUpper:cA,msdosAttributesRaw:IA,msdosAttributes:EA};let{signature:dA,uncompressedSize:hA}=a,uA=0;CA||(hA=0);const{writable:FA}=e;if(A){A.chunkSize=oA(o);const t=A.readable,g=A.size,i={options:{codecType:Ce,level:U,rawPassword:G,password:b,encryptionStrength:_,zipCrypto:w&&N,passwordVerification:w&&N&&C>>8&O,signed:!CA,compressed:d&&!CA,encrypted:w&&!CA,useWebWorkers:j,useCompressionStream:lA,transferStreams:!1},config:o,streamOptions:{signal:v,size:g,onstart:Z,onprogress:X,onend:q}};try{const A=await Oe({readable:t,writable:FA},i);uA=A.outputSize,e.size+=uA,CA||(hA=A.inputSize,dA=A.signature)}catch(A){throw A.outputSize!==$&&(e.size+=A.outputSize),A}}return(({signature:A,compressedSize:e,uncompressedSize:t,headerInfo:g,dataDescriptorInfo:i},{zip64:r,zipCrypto:o,dataDescriptor:a})=>{const{headerView:n,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:I}=i;B&&!o||A===$||(oi(n,10,A),a&&oi(c,I,A)),r?a&&(ai(c,I+4,s(e)),ai(c,I+12,s(t))):(oi(n,14,e),oi(n,18,t),a&&(oi(c,I+4,e),oi(c,I+8,t)))})({signature:dA,compressedSize:uA,uncompressedSize:hA,headerInfo:n,dataDescriptorInfo:B},a),k&&await ei(e,S),t.assign(wA,{uncompressedSize:hA,compressedSize:uA,lastModDate:l,rawLastModDate:C,creationDate:W,lastAccessDate:M,encrypted:w,zipCrypto:N,size:c+uA,compressionMethod:u,version:h,headerArray:I,headerView:E,signature:dA,extraFieldExtendedTimestampFlag:Y,zip64UncompressedSize:z,zip64CompressedSize:T,zip64Offset:R,zip64DiskNumberStart:x}),wA})(i,m,f,r,A.config,o);const{zip64:K}=f;if(u||(Y=!1),a.set(g,f),f.filename=g,u?(await h.all([m.writable.getWriter().close(),e]),await S(),D=!0,f.diskNumberStart=n.diskNumber,f.offset=A.offset-n.diskOffset,K&&Ai(f),(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:r,uncompressedSize:o,zip64UncompressedSize:a,zip64CompressedSize:n},B,{dataDescriptor:c})=>{if(c||(e||oi(B,14,i),n||oi(B,18,r),a||oi(B,22,o)),t&&g){let e=q+ci(A)+4;a&&(ai(B,e,s(o)),e+=8),n&&(ai(B,e,s(r)),e+=8)}})(f,W,o),await y(F),await ei(n,b),await m.readable.pipeTo(F,{preventClose:!0,preventAbort:!0,signal:l}),n.size+=m.size,D=!1):(f.offset=A.offset-M,K&&Ai(f)),f.offset>G&&!K)throw new I(Jg);return A.offset+=f.size,f}catch(e){if(D||Y){if(A.hasCorruptedEntries=!0,e)try{e.corruptedEntry=!0}catch{}u?A.offset+=m.size:A.offset=m.size}throw a.delete(g),e}finally{u&&A.bufferedWrites--,Q&&Q(),F&&F()}async function S(){A.writerLocked=!0;const{lockWriter:e}=A;A.lockWriter=new h(e=>F=()=>{A.writerLocked=!1,e()}),await e}async function y(A){ci(C.localHeaderArray)>n.availableSize&&(n.availableSize=0,await ei(A,new E))}})(A,g,i,{headerInfo:zA,dataDescriptorInfo:TA,metadataSize:RA},a)}finally{A.pendingEntriesSize-=mA}return t.assign(xA,{name:g,comment:x,extraField:YA}),new Xt(xA)})(a,A,g,i),n.add(c),await c}catch(e){throw a.filenames.delete(A),e}finally{n.delete(c);const A=vg.shift();A?A():qg--}}remove(A){const{filenames:e,files:t}=this;if("string"==typeof A&&(A=t.get(A)),A&&A.filename!==$){const{filename:g}=A;if(e.has(g)&&t.has(g))return e.delete(g),t.delete(g),!0}return!1}async close(A=new E,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:o}=i;for(;g.size;)await h.allSettled(e.from(g));return await(async(A,t,g)=>{const{files:i,writer:o}=A,{diskOffset:a}=o;let{diskNumber:n}=o,B=0,c=0,l=A.offset-a,C=i.size;for(const[,A]of i){const{rawFilename:e,rawExtraFieldZip64:t,rawExtraFieldAES:g,rawComment:i,rawExtraFieldNTFS:s,rawExtraFieldUnix:o,rawExtraField:a,extendedTimestamp:n,extraFieldExtendedTimestampFlag:B,lastModDate:I}=A;let l;if(n){l=new E(9);const A=Bi(l);ri(A,0,H),ri(A,2,5),si(A,4,B),oi(A,5,r.floor(I.getTime()/1e3))}else l=new E;A.rawExtraFieldExtendedTimestamp=l,c+=46+ci(e,i,t,g,s,o,l,a)}const w=new E(c),d=Bi(w);await It(o);let h=0;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:s,rawExtraFieldZip64:r,rawExtraFieldAES:a,rawExtraFieldExtendedTimestamp:n,rawExtraFieldNTFS:c,rawExtraFieldUnix:I,rawExtraField:E,rawComment:l,versionMadeBy:C,headerArray:u,headerView:F,zip64:Q,zip64UncompressedSize:D,zip64CompressedSize:Y,zip64DiskNumberStart:p,zip64Offset:m,internalFileAttributes:f,externalFileAttributes:S,diskNumberStart:y,uncompressedSize:M,compressedSize:W}=t,b=ci(r,a,n,c,I,E);oi(d,B,R),ri(d,B+4,C),D||oi(F,18,M),Y||oi(F,14,W),ni(w,u,B+6);let O=B+q;if(ri(d,O,b),O+=2,ri(d,O,ci(l)),O+=2,ri(d,O,Q&&p?U:y),O+=2,ri(d,O,f),O+=2,S&&oi(d,O,S),O+=4,oi(d,O,Q&&m?G:e),O+=4,ni(w,s,O),O+=ci(s),ni(w,r,O),O+=ci(r),ni(w,a,O),O+=ci(a),ni(w,n,O),O+=ci(n),ni(w,c,O),O+=ci(c),ni(w,I,O),O+=ci(I),ni(w,E,O),O+=ci(E),ni(w,l,O),O+=ci(l),B-h>o.availableSize&&(o.availableSize=0,await ei(o,w.slice(h,B)),h=B),B=O,g.onprogress)try{await g.onprogress(A+1,i.size,new Xt(t))}catch{}}await ei(o,h?w.slice(h):w);let u=o.diskNumber;const{availableSize:F}=o;L>F&&u++;let Q=gi(A,g,Ot);if(l>G||c>G||C>U||u>U){if(!1===Q)throw new I(Jg);Q=!0}const D=new E(Q?98:L),Y=Bi(D);B=0,Q&&(oi(Y,0,N),ai(Y,4,s(44)),ri(Y,12,45),ri(Y,14,45),oi(Y,16,u),oi(Y,20,n),ai(Y,24,s(C)),ai(Y,32,s(C)),ai(Y,40,s(c)),ai(Y,48,s(l)),oi(Y,56,k),ai(Y,64,s(l)+s(c)),oi(Y,72,u+1),gi(A,g,gg,!0)&&(u=U,n=U),C=U,l=G,c=G,B+=76),oi(Y,B,x),ri(Y,B+4,u),ri(Y,B+6,n),ri(Y,B+8,C),ri(Y,B+10,C),oi(Y,B+12,c),oi(Y,B+16,l);const p=ci(t);if(p){if(p>U)throw new I(Tg);ri(Y,B+20,p)}await ei(o,D),p&&await ei(o,t)})(this,A,t),gi(this,t,tg)||await o.getWriter().close(),i.getData?i.getData():o}}function $g(A){if(A===$)return new E;{const e=new E(4);Bi(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function Ai({compressedSize:A,uncompressedSize:e,offset:t,diskNumberStart:g,zip64UncompressedSize:i,zip64CompressedSize:r,zip64Offset:o,zip64DiskNumberStart:a,rawExtraFieldZip64:n}){const B=Bi(n);let c=4;i&&(ai(B,c,s(e)),c+=8),r&&(ai(B,c,s(A)),c+=8),o&&(ai(B,c,s(t)),c+=8),a&&oi(B,c,g)}async function ei(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=ci(e),await g.write(e)}finally{g.releaseLock()}}function ti(A){if(A)return(s(A.getTime())+s(116444736e5))*s(1e4)}function gi(A,e,t,g){const i=e[t]===$?A.options[t]:e[t];return i===$?g:i}function ii(A){return A+5*(r.floor(A/16383)+1)}function si(A,e,t){A.setUint8(e,t)}function ri(A,e,t){A.setUint16(e,t,!0)}function oi(A,e,t){A.setUint32(e,t,!0)}function ai(A,e,t){A.setBigUint64(e,t,!0)}function ni(A,e,t){A.set(e,t)}function Bi(A){return new w(A.buffer)}function ci(...A){let e=0;return A.forEach(A=>A&&(e+=A.length)),e}function Ii({version:A,bitFlag:e,compressionMethod:t,uncompressedSize:g,compressedSize:i,lastModDate:s,rawFilename:r,zip64CompressedSize:o,zip64UncompressedSize:a,extraFieldLength:n}){const B=new E(26),c=Bi(B);ri(c,0,A),ri(c,2,e),ri(c,4,t);const I=new C(1),l=Bi(I);ri(l,0,(s.getHours()<<6|s.getMinutes())<<5|s.getSeconds()/2),ri(l,2,(s.getFullYear()-1980<<4|s.getMonth()+1)<<5|s.getDate());const w=I[0];return oi(c,6,w),(o||i!==$)&&oi(c,14,o?G:i),(a||g!==$)&&oi(c,18,a?G:g),ri(c,22,ci(r)),ri(c,24,n),{headerArray:B,headerView:c,rawLastModDate:w}}function Ei(A,e,t,g,i){let s=0;return e&&(s|=J),t&&(s|=8),8!=i&&9!=i||(0>A||A>3||(s|=6),A>3&&5>=A&&(s|=4),9==A&&(s|=2)),g&&(s|=1),s}try{aA({baseURI:void 0===Q&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===Q?location.href:b&&"SCRIPT"===b.tagName.toUpperCase()&&b.src||new c("zip-legacy.min.js",Q.baseURI).href})}catch{}aA({workerURI:A=>{const e="text/javascript",t=(A=>{A=(A=>{const e=(A=(A+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let g=0;e>g;g+=4){const e=BA.indexOf(A[g])<<18|BA.indexOf(A[g+1])<<12|(63&BA.indexOf(A[g+2]))<<6|63&BA.indexOf(A[g+3]);t.push(e>>16&255),"="!==A[g+2]&&t.push(e>>8&255),"="!==A[g+3]&&t.push(255&e)}return new E(t)})(A);let e=new E(1024),t=0;for(let i=0;i<A.length;){const s=A[i++];if(128&s){const r=3+(127&s),o=A[i++]<<8|A[i++],a=t-o;g(t+r);for(let A=0;r>A;A++)e[t++]=e[a+A]}else{const r=s;g(t+r);for(let g=0;r>g&&i<A.length;g++)e[t++]=A[i++]}}return(A=>{let e="";const t=A.length;let g=0;for(;t>g+2;g+=3){const t=A[g]<<16|A[g+1]<<8|A[g+2];e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+BA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=BA[t>>18&63]+BA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+"="}return e})(new E(e.buffer.slice(0,t)));function g(A){if(e.length<A){let g=2*e.length;for(;A>g;)g*=2;const i=new E(g);i.set(e.subarray(0,t)),e=i}}})("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");if(A){const A=atob(t),g=new d([A],{type:e});return c.createObjectURL(g)}return"data:"+e+";base64,"+t}}),A.BlobReader=Ve,A.BlobWriter=je,A.Data64URIReader=class extends Je{constructor(A){super();let e=A.length;for(;"="==A.charAt(e-1);)e--;const g=A.indexOf(",")+1;t.assign(this,{dataURI:A,dataStart:g,size:r.floor(.75*(e-g))})}readUint8Array(A,e){const{dataStart:t,dataURI:g}=this,i=new E(e),s=4*r.floor(A/3),o=atob(g.substring(s+t,4*r.ceil((A+e)/3)+t)),a=A-3*r.floor(s/4);let n=0;for(let A=a;a+e>A&&A<o.length;A++)i[A-a]=o.charCodeAt(A),n++;return n<i.length?i.subarray(0,n):i}},A.Data64URIWriter=class extends Pe{constructor(A){super(),t.assign(this,{data:"data:"+(A||"")+";base64,",pending:[]})}writeUint8Array(A){const e=this;let t=0,i=e.pending;const s=e.pending.length;for(e.pending="",t=0;t<3*r.floor((s+A.length)/3)-s;t++)i+=g.fromCharCode(A[t]);for(;t<A.length;t++)e.pending+=g.fromCharCode(A[t]);i.length&&(i.length>2?e.data+=Y(i):e.pending+=i)}getData(){return this.data+Y(this.pending)}},A.ERR_BAD_FORMAT=rg,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=ng,A.ERR_DUPLICATED_NAME=zg,A.ERR_ENCRYPTED=Ig,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ag,A.ERR_EOCDR_NOT_FOUND=og,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=cg,A.ERR_HTTP_RANGE=Te,A.ERR_INVALID_COMMENT=Tg,A.ERR_INVALID_ENCRYPTION_STRENGTH=kg,A.ERR_INVALID_ENTRY_COMMENT=Rg,A.ERR_INVALID_ENTRY_NAME=xg,A.ERR_INVALID_EXTRAFIELD_DATA=Hg,A.ERR_INVALID_EXTRAFIELD_TYPE=Lg,A.ERR_INVALID_PASSWORD=QA,A.ERR_INVALID_SIGNATURE=DA,A.ERR_INVALID_UNCOMPRESSED_SIZE=oe,A.ERR_INVALID_VERSION=Ng,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=Bg,A.ERR_OVERLAPPING_ENTRY=wg,A.ERR_SPLIT_ZIP_FILE=Cg,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Pg,A.ERR_UNSUPPORTED_COMPRESSION=lg,A.ERR_UNSUPPORTED_ENCRYPTION=Eg,A.ERR_UNSUPPORTED_FORMAT=Jg,A.ERR_ZIP_NOT_EMPTY=Vg,A.HttpRangeReader=class extends ot{constructor(A,e={}){e.useRangeHeader=!0,super(A,e)}},A.HttpReader=ot,A.Reader=Je,A.SplitDataReader=at,A.SplitDataWriter=nt,A.TextReader=class extends Ve{constructor(A){super(new d([A],{type:"text/plain"}))}},A.TextWriter=class extends je{constructor(A){super(A),t.assign(this,{encoding:A,utf8:!A||"utf-8"==A.toLowerCase()})}async getData(){const{encoding:A,utf8:e}=this,g=await super.getData();if(g.text&&e)return g.text();{const e=new FileReader;return new h((i,s)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>s(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends Je{constructor(A){super(),A=new E(A.buffer,A.byteOffset,A.byteLength),t.assign(this,{array:A,size:A.length})}readUint8Array(A,e){return this.array.slice(A,A+e)}},A.Uint8ArrayWriter=class extends Pe{constructor(A){super(),this.defaultBufferSize=A||262144}init(A=0){t.assign(this,{offset:0,array:new E(A>0?A:this.defaultBufferSize)}),super.init()}writeUint8Array(A){const e=this,t=e.offset+A.length;if(t>e.array.length){let A=e.array.length?2*e.array.length:e.defaultBufferSize;for(;t>A;)A*=2;const g=e.array;e.array=new E(A),e.array.set(g)}e.array.set(A,e.offset),e.offset+=A.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},A.Writer=Pe,A.ZipReader=Qg,A.ZipReaderStream=class{constructor(A={}){const{readable:e,writable:t}=new p,g=new Qg(e,A).getEntriesGenerator();this.readable=new m({async pull(A){const{done:e,value:t}=await g.next();if(e)return A.close();const i={...t,readable:(()=>{const{readable:A,writable:e}=new p;if(t.getData)return t.getData(e),A})()};delete i.getData,A.enqueue(i)}}),this.writable=t}},A.ZipWriter=_g,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new p;this.readable=e,this.zipWriter=new _g(t,A)}transform(A){const{readable:e,writable:t}=new p({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(A,e),{readable:this.readable,writable:t}}writable(A){const{readable:e,writable:t}=new p;return this.zipWriter.add(A,e),t}close(A,e={}){return this.zipWriter.close(A,e)}},A.configure=aA,A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await h.allSettled(be.map(A=>(Ke(A),A.terminate())))}});
|
|
1
|
+
((A,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((A="undefined"!=typeof globalThis?globalThis:A||self).zip={})})(this,function(A){"use strict";const{Array:e,Object:t,String:g,Number:i,BigInt:s,Math:r,Date:o,Map:a,Set:n,Response:B,URL:c,Error:I,Uint8Array:E,Uint16Array:l,Uint32Array:C,DataView:w,Blob:d,Promise:h,TextEncoder:u,TextDecoder:F,document:Q,crypto:D,btoa:Y,TransformStream:p,ReadableStream:m,WritableStream:f,CompressionStream:S,DecompressionStream:y,navigator:M,Worker:W}="undefined"!=typeof globalThis?globalThis:this||self;var b=void 0!==Q?Q.currentScript:null;const G=4294967295,U=65535,O=255,K=67324752,T=134695760,z=T,R=33639248,x=101010256,N=101075792,k=117853008,L=22,H=21589,J=2048,P=16384,V=2048,j=1024,Z=512,X="/",q=30,v=new o(2107,11,31),_=new o(1980,0,1),$=void 0,AA=1/0,eA="undefined",tA="function";let gA=2;try{typeof M!=eA&&M.hardwareConcurrency&&(gA=M.hardwareConcurrency)}catch{}const iA={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:gA,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof S!=eA&&S,DecompressionStream:typeof y!=eA&&y},sA=t.assign({},iA);function rA(){return sA}function oA(A){return r.max(A.chunkSize,64)}function aA(A){const{baseURI:e,chunkSize:t,maxWorkers:g,terminateWorkerTimeout:i,useCompressionStream:s,useWebWorkers:r,CompressionStream:o,DecompressionStream:a,CompressionStreamZlib:n,DecompressionStreamZlib:B,workerURI:c,wasmURI:I}=A;nA("baseURI",e),nA("wasmURI",I),nA("workerURI",c),nA("chunkSize",t),nA("maxWorkers",g),nA("terminateWorkerTimeout",i),nA("useCompressionStream",s),nA("useWebWorkers",r),nA("CompressionStream",o),nA("DecompressionStream",a),nA("CompressionStreamZlib",n),nA("DecompressionStreamZlib",B)}function nA(A,e){e!==$&&(sA[A]=e)}const BA="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",cA=[];for(let A=0;256>A;A++){let e=A;for(let A=0;8>A;A++)1&e?e=e>>>1^3988292384:e>>>=1;cA[A]=e}class IA{constructor(A){this.crc=A||-1}append(A){let e=0|this.crc;for(let t=0,g=0|A.length;g>t;t++)e=e>>>8^cA[255&(e^A[t])];this.crc=e}get(){return~this.crc}}class EA extends p{constructor(){let A;const e=new IA;super({transform(A,t){e.append(A),t.enqueue(A)},flush(){const t=new E(4);new w(t.buffer).setUint32(0,e.get()),A.value=t}}),A=this}}function lA(A){if(typeof u==eA){const e=new E((A=unescape(encodeURIComponent(A))).length);for(let t=0;t<e.length;t++)e[t]=A.charCodeAt(t);return e}return(new u).encode(A)}const CA={concat(A,e){if(0===A.length||0===e.length)return A.concat(e);const t=A[A.length-1],g=CA.getPartial(t);return 32===g?A.concat(e):CA._shiftRight(e,g,0|t,A.slice(0,A.length-1))},bitLength(A){const e=A.length;if(0===e)return 0;const t=A[e-1];return 32*(e-1)+CA.getPartial(t)},clamp(A,e){if(32*A.length<e)return A;const t=(A=A.slice(0,r.ceil(e/32))).length;return e&=31,t>0&&e&&(A[t-1]=CA.partial(e,A[t-1]&2147483648>>e-1,1)),A},partial:(A,e,t)=>32===A?e:(t?0|e:e<<32-A)+1099511627776*A,getPartial:A=>r.round(A/1099511627776)||32,_shiftRight(A,e,t,g){for(void 0===g&&(g=[]);e>=32;e-=32)g.push(t),t=0;if(0===e)return g.concat(A);for(let i=0;i<A.length;i++)g.push(t|A[i]>>>e),t=A[i]<<32-e;const i=A.length?A[A.length-1]:0,s=CA.getPartial(i);return g.push(CA.partial(e+s&31,e+s>32?t:g.pop(),1)),g}},wA={bytes:{fromBits(A){const e=CA.bitLength(A)/8,t=new E(e);let g;for(let i=0;e>i;i++)3&i||(g=A[i/4]),t[i]=g>>>24,g<<=8;return t},toBits(A){const e=[];let t,g=0;for(t=0;t<A.length;t++)g=g<<8|A[t],3&~t||(e.push(g),g=0);return 3&t&&e.push(CA.partial(8*(3&t),g)),e}}},dA=class{constructor(A){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],A?(e._h=A._h.slice(0),e._buffer=A._buffer.slice(0),e._length=A._length):e.reset()}reset(){const A=this;return A._h=A._init.slice(0),A._buffer=[],A._length=0,A}update(A){const e=this;"string"==typeof A&&(A=wA.utf8String.toBits(A));const t=e._buffer=CA.concat(e._buffer,A),g=e._length,i=e._length=g+CA.bitLength(A);if(i>9007199254740991)throw new I("Cannot hash more than 2^53 - 1 bits");const s=new C(t);let r=0;for(let A=e.blockSize+g-(e.blockSize+g&e.blockSize-1);i>=A;A+=e.blockSize)e._block(s.subarray(16*r,16*(r+1))),r+=1;return t.splice(0,16*r),e}finalize(){const A=this;let e=A._buffer;const t=A._h;e=CA.concat(e,[CA.partial(1,1)]);for(let A=e.length+2;15&A;A++)e.push(0);for(e.push(r.floor(A._length/4294967296)),e.push(0|A._length);e.length;)A._block(e.splice(0,16));return A.reset(),t}_f(A,e,t,g){return A>19?A>39?A>59?A>79?void 0:e^t^g:e&t|e&g|t&g:e^t^g:e&t|~e&g}_S(A,e){return e<<A|e>>>32-A}_block(A){const t=this,g=t._h,i=e(80);for(let e=0;16>e;e++)i[e]=A[e];let s=g[0],o=g[1],a=g[2],n=g[3],B=g[4];for(let A=0;79>=A;A++){16>A||(i[A]=t._S(1,i[A-3]^i[A-8]^i[A-14]^i[A-16]));const e=t._S(5,s)+t._f(A,o,a,n)+B+i[A]+t._key[r.floor(A/20)]|0;B=n,n=a,a=t._S(30,o),o=s,s=e}g[0]=g[0]+s|0,g[1]=g[1]+o|0,g[2]=g[2]+a|0,g[3]=g[3]+n|0,g[4]=g[4]+B|0}},hA={getRandomValues(A){const e=new C(A.buffer),t=A=>{let e=987654321;const t=4294967295;return()=>(e=36969*(65535&e)+(e>>16)&t,(((e<<16)+(A=18e3*(65535&A)+(A>>16)&t)&t)/4294967296+.5)*(r.random()>.5?1:-1))};for(let g,i=0;i<A.length;i+=4){const A=t(4294967296*(g||r.random()));g=987654071*A(),e[i/4]=4294967296*A()|0}return A}},uA={importKey:A=>new uA.hmacSha1(wA.bytes.toBits(A)),pbkdf2(A,e,t,g){if(t=t||1e4,0>g||0>t)throw new I("invalid params to pbkdf2");const i=1+(g>>5)<<2;let s,r,o,a,n;const B=new ArrayBuffer(i),c=new w(B);let E=0;const l=CA;for(e=wA.bytes.toBits(e),n=1;(i||1)>E;n++){for(s=r=A.encrypt(l.concat(e,[n])),o=1;t>o;o++)for(r=A.encrypt(r),a=0;a<r.length;a++)s[a]^=r[a];for(o=0;(i||1)>E&&o<s.length;o++)c.setInt32(E,s[o]),E+=4}return B.slice(0,g/8)},hmacSha1:class{constructor(A){const e=this,t=e._hash=dA,g=[[],[]];e._baseHash=[new t,new t];const i=e._baseHash[0].blockSize/32;A.length>i&&(A=(new t).update(A).finalize());for(let e=0;i>e;e++)g[0][e]=909522486^A[e],g[1][e]=1549556828^A[e];e._baseHash[0].update(g[0]),e._baseHash[1].update(g[1]),e._resultHash=new t(e._baseHash[0])}reset(){const A=this;A._resultHash=new A._hash(A._baseHash[0]),A._updated=!1}update(A){this._updated=!0,this._resultHash.update(A)}digest(){const A=this,e=A._resultHash.finalize(),t=new A._hash(A._baseHash[1]).update(e).finalize();return A.reset(),t}encrypt(A){if(this._updated)throw new I("encrypt on already updated hmac called!");return this.update(A),this.digest(A)}}},FA=typeof D!=eA&&typeof D.getRandomValues==tA,QA="Invalid password",DA="Invalid signature",YA="zipjs-abort-check-password";function pA(A){return FA?D.getRandomValues(A):hA.getRandomValues(A)}const mA=16,fA={name:"PBKDF2"},SA=t.assign({hash:{name:"HMAC"}},fA),yA=t.assign({iterations:1e3,hash:{name:"SHA-1"}},fA),MA=["deriveBits"],WA=[8,12,16],bA=[16,24,32],GA=10,UA=[0,0,0,0],OA=typeof D!=eA,KA=OA&&D.subtle,TA=OA&&typeof KA!=eA,zA=wA.bytes,RA=class{constructor(A){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const t=e._tables[0][4],g=e._tables[1],i=A.length;let s,r,o,a=1;if(4!==i&&6!==i&&8!==i)throw new I("invalid aes key size");for(e._key=[r=A.slice(0),o=[]],s=i;4*i+28>s;s++){let A=r[s-1];(s%i===0||8===i&&s%i===4)&&(A=t[A>>>24]<<24^t[A>>16&255]<<16^t[A>>8&255]<<8^t[255&A],s%i===0&&(A=A<<8^A>>>24^a<<24,a=a<<1^283*(a>>7))),r[s]=r[s-i]^A}for(let A=0;s;A++,s--){const e=r[3&A?s:s-4];o[A]=4>=s||4>A?e:g[0][t[e>>>24]]^g[1][t[e>>16&255]]^g[2][t[e>>8&255]]^g[3][t[255&e]]}}encrypt(A){return this._crypt(A,0)}decrypt(A){return this._crypt(A,1)}_precompute(){const A=this._tables[0],e=this._tables[1],t=A[4],g=e[4],i=[],s=[];let r,o,a,n;for(let A=0;256>A;A++)s[(i[A]=A<<1^283*(A>>7))^A]=A;for(let B=r=0;!t[B];B^=o||1,r=s[r]||1){let s=r^r<<1^r<<2^r<<3^r<<4;s=s>>8^255&s^99,t[B]=s,g[s]=B,n=i[a=i[o=i[B]]];let c=16843009*n^65537*a^257*o^16843008*B,I=257*i[s]^16843008*s;for(let t=0;4>t;t++)A[t][B]=I=I<<24^I>>>8,e[t][s]=c=c<<24^c>>>8}for(let t=0;5>t;t++)A[t]=A[t].slice(0),e[t]=e[t].slice(0)}_crypt(A,e){if(4!==A.length)throw new I("invalid aes block size");const t=this._key[e],g=t.length/4-2,i=[0,0,0,0],s=this._tables[e],r=s[0],o=s[1],a=s[2],n=s[3],B=s[4];let c,E,l,C=A[0]^t[0],w=A[e?3:1]^t[1],d=A[2]^t[2],h=A[e?1:3]^t[3],u=4;for(let A=0;g>A;A++)c=r[C>>>24]^o[w>>16&255]^a[d>>8&255]^n[255&h]^t[u],E=r[w>>>24]^o[d>>16&255]^a[h>>8&255]^n[255&C]^t[u+1],l=r[d>>>24]^o[h>>16&255]^a[C>>8&255]^n[255&w]^t[u+2],h=r[h>>>24]^o[C>>16&255]^a[w>>8&255]^n[255&d]^t[u+3],u+=4,C=c,w=E,d=l;for(let A=0;4>A;A++)i[e?3&-A:A]=B[C>>>24]<<24^B[w>>16&255]<<16^B[d>>8&255]<<8^B[255&h]^t[u++],c=C,C=w,w=d,d=h,h=c;return i}},xA=class{constructor(A,e){this._prf=A,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(A){return this.calculate(this._prf,A,this._iv)}incWord(A){if(255&~(A>>24))A+=1<<24;else{let e=A>>16&255,t=A>>8&255,g=255&A;255===e?(e=0,255===t?(t=0,255===g?g=0:++g):++t):++e,A=0,A+=e<<16,A+=t<<8,A+=g}return A}incCounter(A){0===(A[0]=this.incWord(A[0]))&&(A[1]=this.incWord(A[1]))}calculate(A,e,t){let g;if(!(g=e.length))return[];const i=CA.bitLength(e);for(let i=0;g>i;i+=4){this.incCounter(t);const g=A.encrypt(t);e[i]^=g[0],e[i+1]^=g[1],e[i+2]^=g[2],e[i+3]^=g[3]}return CA.clamp(e,i)}},NA=uA.hmacSha1;let kA=OA&&TA&&typeof KA.importKey==tA,LA=OA&&TA&&typeof KA.deriveBits==tA;class HA extends p{constructor({password:A,rawPassword:e,signed:g,encryptionStrength:i,checkPasswordOnly:s}){super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:jA(A,e),signed:g,strength:i-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:r,ready:o}=t;g?(await(async(A,e,t,g)=>{const i=await VA(A,e,t,XA(g,0,WA[e])),s=XA(g,WA[e]);if(i[0]!=s[0]||i[1]!=s[1])throw new I(QA)})(t,i,g,XA(A,0,WA[i]+2)),A=XA(A,WA[i]+2),s?e.error(new I(YA)):r()):await o;const a=new E(A.length-GA-(A.length-GA)%mA);e.enqueue(PA(t,A,a,0,GA,!0))},async flush(A){const{signed:e,ctr:t,hmac:g,pending:i,ready:s}=this;if(g&&t){await s;const r=XA(i,0,i.length-GA),o=XA(i,i.length-GA);let a=new E;if(r.length){const A=vA(zA,r);g.update(A);const e=t.update(A);a=qA(zA,e)}if(e){const A=XA(qA(zA,g.digest()),0,GA);for(let e=0;GA>e;e++)if(A[e]!=o[e])throw new I(DA)}A.enqueue(a)}}})}}class JA extends p{constructor({password:A,rawPassword:e,encryptionStrength:g}){let i;super({start(){t.assign(this,{ready:new h(A=>this.resolveReady=A),password:jA(A,e),strength:g-1,pending:new E})},async transform(A,e){const t=this,{password:g,strength:i,resolveReady:s,ready:r}=t;let o=new E;g?(o=await(async(A,e,t)=>{const g=pA(new E(WA[e]));return ZA(g,await VA(A,e,t,g))})(t,i,g),s()):await r;const a=new E(o.length+A.length-A.length%mA);a.set(o,0),e.enqueue(PA(t,A,a,o.length,0))},async flush(A){const{ctr:e,hmac:t,pending:g,ready:s}=this;if(t&&e){await s;let r=new E;if(g.length){const A=e.update(vA(zA,g));t.update(A),r=qA(zA,A)}i.signature=qA(zA,t.digest()).slice(0,GA),A.enqueue(ZA(r,i.signature))}}}),i=this}}function PA(A,e,t,g,i,s){const{ctr:r,hmac:o,pending:a}=A,n=e.length-i;let B;for(a.length&&(e=ZA(a,e),t=((A,e)=>{if(e&&e>A.length){const t=A;(A=new E(e)).set(t,0)}return A})(t,n-n%mA)),B=0;n-mA>=B;B+=mA){const A=vA(zA,XA(e,B,B+mA));s&&o.update(A);const i=r.update(A);s||o.update(i),t.set(qA(zA,i),B+g)}return A.pending=XA(e,B),t}async function VA(A,g,i,s){A.password=null;const r=await(async(A,e,t,g,i)=>{if(!kA)return uA.importKey(e);try{return await KA.importKey("raw",e,t,!1,i)}catch{return kA=!1,uA.importKey(e)}})(0,i,SA,0,MA),o=await(async(A,e,t)=>{if(!LA)return uA.pbkdf2(e,A.salt,yA.iterations,t);try{return await KA.deriveBits(A,e,t)}catch{return LA=!1,uA.pbkdf2(e,A.salt,yA.iterations,t)}})(t.assign({salt:s},yA),r,8*(2*bA[g]+2)),a=new E(o),n=vA(zA,XA(a,0,bA[g])),B=vA(zA,XA(a,bA[g],2*bA[g])),c=XA(a,2*bA[g]);return t.assign(A,{keys:{key:n,authentication:B,passwordVerification:c},ctr:new xA(new RA(n),e.from(UA)),hmac:new NA(B)}),c}function jA(A,e){return e===$?lA(A):e}function ZA(A,e){let t=A;return A.length+e.length&&(t=new E(A.length+e.length),t.set(A,0),t.set(e,A.length)),t}function XA(A,e,t){return A.subarray(e,t)}function qA(A,e){return A.fromBits(e)}function vA(A,e){return A.toBits(e)}class _A extends p{constructor({password:A,passwordVerification:e,checkPasswordOnly:g}){super({start(){t.assign(this,{password:A,passwordVerification:e}),te(this,A)},transform(A,e){const t=this;if(t.password){const e=Ae(t,A.subarray(0,12));if(t.password=null,e.at(-1)!=t.passwordVerification)throw new I(QA);A=A.subarray(12)}g?e.error(new I(YA)):e.enqueue(Ae(t,A))}})}}class $A extends p{constructor({password:A,passwordVerification:e}){super({start(){t.assign(this,{password:A,passwordVerification:e}),te(this,A)},transform(A,e){const t=this;let g,i;if(t.password){t.password=null;const e=pA(new E(12));e[11]=t.passwordVerification,g=new E(A.length+e.length),g.set(ee(t,e),0),i=12}else g=new E(A.length),i=0;g.set(ee(t,A),i),e.enqueue(g)}})}}function Ae(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=ie(A)^e[g],ge(A,t[g]);return t}function ee(A,e){const t=new E(e.length);for(let g=0;g<e.length;g++)t[g]=ie(A)^e[g],ge(A,e[g]);return t}function te(A,e){const g=[305419896,591751049,878082192];t.assign(A,{keys:g,crcKey0:new IA(g[0]),crcKey2:new IA(g[2])});for(let t=0;t<e.length;t++)ge(A,e.charCodeAt(t))}function ge(A,e){let[t,g,i]=A.keys;A.crcKey0.append([e]),t=~A.crcKey0.get(),g=re(r.imul(re(g+se(t)),134775813)+1),A.crcKey2.append([g>>>24]),i=~A.crcKey2.get(),A.keys=[t,g,i]}function ie(A){const e=2|A.keys[2];return se(r.imul(e,1^e)>>>8)}function se(A){return 255&A}function re(A){return 4294967295&A}const oe="Invalid uncompressed size";class ae extends p{constructor(A,{chunkSize:e,CompressionStreamZlib:t,CompressionStream:g}){super({});const{compressed:i,encrypted:s,useCompressionStream:r,zipCrypto:o,signed:a,level:n}=A,B=this;let c,I,E=super.readable;s&&!o||!a||(c=new EA,E=Ie(E,c)),i&&(E=ce(E,r,{level:n,chunkSize:e},g,t,g)),s&&(o?E=Ie(E,new $A(A)):(I=new JA(A),E=Ie(E,I))),Be(B,E,()=>{let A;s&&!o&&(A=I.signature),s&&!o||!a||(A=new w(c.value.buffer).getUint32(0)),B.signature=A})}}class ne extends p{constructor(A,{chunkSize:e,DecompressionStreamZlib:t,DecompressionStream:g}){super({});const{zipCrypto:i,encrypted:s,signed:r,signature:o,compressed:a,useCompressionStream:n,deflate64:B}=A;let c,E,l=super.readable;s&&(i?l=Ie(l,new _A(A)):(E=new HA(A),l=Ie(l,E))),a&&(l=ce(l,n,{chunkSize:e,deflate64:B},g,t,g)),s&&!i||!r||(c=new EA,l=Ie(l,c)),Be(this,l,()=>{if((!s||i)&&r){const A=new w(c.value.buffer);if(o!=A.getUint32(0,!1))throw new I(DA)}})}}function Be(A,e,g){e=Ie(e,new p({flush:g})),t.defineProperty(A,"readable",{get:()=>e})}function ce(A,e,t,g,i,s){const r=e&&g?g:i||s,o=t.deflate64?"deflate64-raw":"deflate-raw";try{A=Ie(A,new r(o,t))}catch(g){if(!e)throw g;if(i)A=Ie(A,new i(o,t));else{if(!s)throw g;A=Ie(A,new s(o,t))}}return A}function Ie(A,e){return A.pipeThrough(e)}const Ee="data",le="close",Ce="deflate",we="inflate";class de extends p{constructor(A,e){super({});const g=this,{codecType:i}=A;let s;i.startsWith(Ce)?s=ae:i.startsWith(we)&&(s=ne),g.outputSize=0;let r=0;const o=new s(A,e),a=super.readable,n=new p({transform(A,e){A&&A.length&&(r+=A.length,e.enqueue(A))},flush(){t.assign(g,{inputSize:r})}}),B=new p({transform(e,t){if(e&&e.length&&(t.enqueue(e),g.outputSize+=e.length,A.outputSize!==$&&g.outputSize>A.outputSize))throw new I(oe)},flush(){const{signature:A}=o;t.assign(g,{signature:A,inputSize:r})}});t.defineProperty(g,"readable",{get:()=>a.pipeThrough(n).pipeThrough(o).pipeThrough(B)})}}class he extends p{constructor(A){let e;super({transform:function t(g,i){if(e){const A=new E(e.length+g.length);A.set(e),A.set(g,e.length),g=A,e=null}g.length>A?(i.enqueue(g.slice(0,A)),t(g.slice(A),i)):e=g},flush(A){e&&e.length&&A.enqueue(e)}})}}const ue={type:"module"};let Fe,Qe,De,Ye=!0;try{Ye=typeof structuredClone==tA&&structuredClone(new DOMException("","AbortError")).code!==$}catch{}class pe{constructor(A,{readable:e,writable:g},{options:i,config:s,streamOptions:r,useWebWorkers:o,transferStreams:a,workerURI:n},B){const{signal:c}=r;return t.assign(A,{busy:!0,readable:e.pipeThrough(new he(s.chunkSize)).pipeThrough(new me(r),{signal:c}),writable:g,options:t.assign({},i),workerURI:n,transferStreams:a,terminate:()=>new h(e=>{const{worker:t,busy:g}=A;t?(g?A.resolveTerminated=e:(t.terminate(),e()),A.interface=null):e()}),onTaskFinished(){const{resolveTerminated:e}=A;e&&(A.resolveTerminated=null,A.terminated=!0,A.worker.terminate(),e()),A.busy=!1,B(A)}}),Fe===$&&(Fe=typeof W!=eA),(o&&Fe?ye:Se)(A,s)}}class me extends p{constructor({onstart:A,onprogress:e,size:t,onend:g}){let i=0;super({async start(){A&&await fe(A,t)},async transform(A,g){i+=A.length,e&&await fe(e,i,t),g.enqueue(A)},async flush(){g&&await fe(g,i)}})}}async function fe(A,...e){try{await A(...e)}catch{}}function Se(A,e){return{run:()=>(async({options:A,readable:e,writable:t,onTaskFinished:g},i)=>{let s;try{if(!A.useCompressionStream)try{await void 0}catch{A.useCompressionStream=!0}s=new de(A,i),await e.pipeThrough(s).pipeTo(t,{preventClose:!0,preventAbort:!0});const{signature:g,inputSize:r,outputSize:o}=s;return{signature:g,inputSize:r,outputSize:o}}catch(A){throw s&&(A.outputSize=s.outputSize),A}finally{g()}})(A,e)}}function ye(A,e){const{baseURI:g,chunkSize:i}=e;let{wasmURI:s}=e;if(!A.interface){let r;typeof s==tA&&(s=s());try{r=Me(A.workerURI,g,A)}catch{return Fe=!1,Se(A,e)}t.assign(A,{worker:r,interface:{run:()=>(async(A,e)=>{let g,i;const s=new h((A,e)=>{g=A,i=e});t.assign(A,{reader:null,writer:null,resolveResult:g,rejectResult:i,result:s});const{readable:r,options:o}=A,{writable:a,closed:n}=(A=>{const{writable:e,readable:t}=new p;return{writable:e,closed:t.pipeTo(A,{preventClose:!0})}})(A.writable),B=We({type:"start",options:o,config:e,readable:r,writable:a},A);B||t.assign(A,{reader:r.getReader(),writer:a.getWriter()});const c=await s;return B||await a.getWriter().close(),await n,c})(A,{chunkSize:i,wasmURI:s,baseURI:g})}})}return A.interface}function Me(A,e,g,i,s=!0){let r,o,a;if(Qe===$){const t=typeof A==tA;o=t?A(s):A;const n=o.startsWith("data:"),B=o.startsWith("blob:");if(n||B){i===$&&(i=!1),i&&(a=ue);try{r=new W(o,a)}catch(s){if(B)try{c.revokeObjectURL(o)}catch{}if(t&&B)return Me(A,e,g,i,!1);if(i)throw s;return Me(A,e,g,!0,!1)}}else{i===$&&(i=!0),i&&(a=ue);try{o=new c(o,e)}catch{}try{r=new W(o,a)}catch(t){if(i)throw t;return Me(A,e,g,!1,s)}}Qe=o,De=a}else r=new W(Qe,De);return r.addEventListener("message",A=>(async({data:A},e)=>{const{type:g,value:i,messageId:s,result:r,error:o}=A,{reader:a,writer:n,resolveResult:B,rejectResult:c,onTaskFinished:l}=e;try{if(o){const{message:A,stack:e,code:g,name:i,outputSize:s}=o,r=new I(A);t.assign(r,{stack:e,code:g,name:i,outputSize:s}),C(r)}else{if("pull"==g){const{value:A,done:t}=await a.read();We({type:Ee,value:A,done:t,messageId:s},e)}g==Ee&&(await n.ready,await n.write(new E(i)),We({type:"ack",messageId:s},e)),g==le&&C(null,r)}}catch(o){We({type:le,messageId:s},e),C(o)}function C(A,e){A?c(A):B(e),n&&n.releaseLock(),l()}})(A,g)),r}function We(A,{worker:e,writer:t,onTaskFinished:g,transferStreams:i}){try{const{value:t,readable:g,writable:s}=A,r=[];if(t&&(A.value=t,r.push(A.value.buffer)),i&&Ye?(g&&r.push(g),s&&r.push(s)):A.readable=A.writable=null,r.length)try{return e.postMessage(A,r),!0}catch{Ye=!1,A.readable=A.writable=null,e.postMessage(A)}else e.postMessage(A)}catch(A){throw t&&t.releaseLock(),g(),A}}let be=[];const Ge=[];let Ue=0;async function Oe(A,e){const{options:t,config:g}=e,{transferStreams:s,useWebWorkers:r,useCompressionStream:o,compressed:a,signed:n,encrypted:B}=t,{workerURI:c,maxWorkers:I}=g;e.transferStreams=s||s===$;const E=!(a||n||B||e.transferStreams);return e.useWebWorkers=!E&&(r||r===$&&g.useWebWorkers),e.workerURI=e.useWebWorkers&&c?c:$,t.useCompressionStream=o||o===$&&g.useCompressionStream,(await(async()=>{const t=be.find(A=>!A.busy);if(t)return Ke(t),new pe(t,A,e,l);if(be.length<I){const t={indexWorker:Ue};return Ue++,be.push(t),new pe(t,A,e,l)}return new h(t=>Ge.push({resolve:t,stream:A,workerOptions:e}))})()).run();function l(A){if(Ge.length){const[{resolve:e,stream:t,workerOptions:g}]=Ge.splice(0,1);e(new pe(A,t,g,l))}else A.worker?(Ke(A),((A,e)=>{const{config:t}=e,{terminateWorkerTimeout:g}=t;i.isFinite(g)&&g>=0&&(A.terminated?A.terminated=!1:A.terminateTimeout=setTimeout(async()=>{be=be.filter(e=>e!=A);try{await A.terminate()}catch{}},g))})(A,e)):be=be.filter(e=>e!=A)}}function Ke(A){const{terminateTimeout:e}=A;e&&(clearTimeout(e),A.terminateTimeout=null)}const Te="HTTP error ",ze="HTTP Range not supported",Re="Range",xe="GET",Ne="bytes",ke=65536,Le="writable";class He{constructor(){this.size=0}init(){this.initialized=!0}}class Je extends He{get readable(){const A=this,{chunkSize:e=ke}=A,t=new m({start(){this.chunkOffset=0},async pull(g){const{offset:i=0,size:s,diskNumberStart:o}=t,{chunkOffset:a}=this,n=s===$?e:r.min(e,s-a),B=await Et(A,i+a,n,o);g.enqueue(B),a+e>s||s===$&&!B.length&&n?g.close():this.chunkOffset+=e}});return t}}class Pe extends He{constructor(){super();const A=this,e=new f({write(e){if(!A.initialized)throw new I("Writer not initialized");return A.writeUint8Array(e)}});t.defineProperty(A,Le,{get:()=>e})}writeUint8Array(){}}class Ve extends Je{constructor(A){super(),t.assign(this,{blob:A,size:A.size})}async readUint8Array(A,e){const t=this,g=A+e,i=A||g<t.size?t.blob.slice(A,g):t.blob;let s=await i.arrayBuffer();return s.byteLength>e&&(s=s.slice(A,g)),new E(s)}}class je extends He{constructor(A){super();const e=new p,g=[];A&&g.push(["Content-Type",A]),t.defineProperty(this,Le,{get:()=>e.writable}),this.blob=new B(e.readable,{headers:g}).blob()}getData(){return this.blob}}class Ze extends Je{constructor(A,e){super(),qe(this,A,e)}async init(){await ve(this,st,et),super.init()}readUint8Array(A,e){return _e(this,A,e,st,et)}}class Xe extends Je{constructor(A,e){super(),qe(this,A,e)}async init(){await ve(this,rt,tt),super.init()}readUint8Array(A,e){return _e(this,A,e,rt,tt)}}function qe(A,e,g){const{preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:o}=g;delete(g=t.assign({},g)).preventHeadRequest,delete g.useRangeHeader,delete g.forceRangeRequests,delete g.combineSizeEocd,delete g.useXHR,t.assign(A,{url:e,options:g,preventHeadRequest:i,useRangeHeader:s,forceRangeRequests:r,combineSizeEocd:o})}async function ve(A,e,t){const{url:g,preventHeadRequest:s,useRangeHeader:r,forceRangeRequests:o,combineSizeEocd:a}=A;if((A=>{const{baseURI:e}=rA(),{protocol:t}=new c(A,e);return"http:"==t||"https:"==t})(g)&&(r||o)&&(void 0===s||s)){const g=await e(xe,A,$e(A,a?-22:void 0)),s=g.headers.get("Accept-Ranges");if(!(o||s&&s.toLowerCase()==Ne))throw new I(ze);{let s;a&&(A.eocdCache=new E(await g.arrayBuffer()));const r=g.headers.get("Content-Range");if(r){const A=r.trim().split(/\s*\/\s*/);if(A.length){const e=A[1];e&&"*"!=e&&(s=i(e))}}s===$?await it(A,e,t):A.size=s}}else await it(A,e,t)}async function _e(A,e,t,g,i){const{useRangeHeader:s,forceRangeRequests:r,eocdCache:o,size:a,options:n}=A;if(s||r){if(o&&e==a-L&&t==L)return o;if(a>e){e+t>a&&(t=a-e);const i=await g(xe,A,$e(A,e,t));if(206!=i.status)throw new I(ze);return new E(await i.arrayBuffer())}return new E}{const{data:g}=A;return g||await i(A,n),new E(A.data.subarray(e,e+t))}}function $e(A,e=0,g=1){return t.assign({},At(A),{[Re]:Ne+"="+(0>e?e:e+"-"+(e+g-1))})}function At({options:A}){const{headers:e}=A;if(e)return Symbol.iterator in e?t.fromEntries(e):e}async function et(A){await gt(A,st)}async function tt(A){await gt(A,rt)}async function gt(A,e){const t=await e(xe,A,At(A));A.data=new E(await t.arrayBuffer()),A.size||(A.size=A.data.length)}async function it(A,e,t){if(A.preventHeadRequest)await t(A,A.options);else{const g=(await e("HEAD",A,At(A))).headers.get("Content-Length");g?A.size=i(g):await t(A,A.options)}}async function st(A,{options:e,url:g},i){const s=await fetch(g,t.assign({},e,{method:A,headers:i}));if(400>s.status)return s;throw 416==s.status?new I(ze):new I(Te+(s.statusText||s.status))}function rt(A,{url:e},g){return new h((i,s)=>{const r=new XMLHttpRequest;if(r.addEventListener("load",()=>{if(400>r.status){const A=[];r.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(e=>{const t=e.trim().split(/\s*:\s*/);t[0]=t[0].trim().replace(/^[a-z]|-[a-z]/g,A=>A.toUpperCase()),A.push(t)}),i({status:r.status,arrayBuffer:()=>r.response,headers:new a(A)})}else s(416==r.status?new I(ze):new I(Te+(r.statusText||r.status)))},!1),r.addEventListener("error",A=>s(A.detail?A.detail.error:new I("Network error")),!1),r.open(A,e),g)for(const A of t.entries(g))r.setRequestHeader(A[0],A[1]);r.responseType="arraybuffer",r.send()})}class ot extends Je{constructor(A,e={}){super(),t.assign(this,{url:A,reader:e.useXHR?new Xe(A,e):new Ze(A,e)})}set size(A){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(A,e){return this.reader.readUint8Array(A,e)}}class at extends Je{constructor(A){super(),this.readers=A}async init(){const A=this,{readers:e}=A;A.lastDiskNumber=0,A.lastDiskOffset=0,await h.all(e.map(async(t,g)=>{await t.init(),g!=e.length-1&&(A.lastDiskOffset+=t.size),A.size+=t.size})),super.init()}async readUint8Array(A,e,t=0){const g=this,{readers:i}=this;let s,o=t;-1==o&&(o=i.length-1);let a=A;for(;i[o]&&a>=i[o].size;)a-=i[o].size,o++;const n=i[o];if(n){const i=n.size;if(a+e>i){const r=i-a;s=new E(e);const o=await Et(n,a,r);s.set(o,0);const B=await g.readUint8Array(A+r,e-r,t);s.set(B,r),o.length+B.length<e&&(s=s.subarray(0,o.length+B.length))}else s=await Et(n,a,e)}else s=new E;return g.lastDiskNumber=r.max(o,g.lastDiskNumber),s}}class nt extends He{constructor(A,e=4294967295){super();const g=this;let i,s,r;t.assign(g,{diskNumber:0,diskOffset:0,size:0,maxSize:e,availableSize:e});const o=new f({async write(e){const{availableSize:t}=g;if(r)e.length<t?await a(e):(await a(e.subarray(0,t)),await n(),g.diskOffset+=i.size,g.diskNumber++,r=null,await this.write(e.subarray(t)));else{const{value:t,done:o}=await A.next();if(o&&!t)throw new I("Writer iterator completed too soon");i=t,i.size=0,i.maxSize&&(g.maxSize=i.maxSize),g.availableSize=g.maxSize,await It(i),s=t.writable,r=s.getWriter(),await this.write(e)}},async close(){await r.ready,await n()}});async function a(A){const e=A.length;e&&(await r.ready,await r.write(A),i.size+=e,g.size+=e,g.availableSize-=e)}async function n(){await r.close()}t.defineProperty(g,Le,{get:()=>o})}}class Bt{constructor(A){return e.isArray(A)&&(A=new at(A)),A instanceof m&&(A={readable:A}),A}}class ct{constructor(A){return A.writable===$&&typeof A.next==tA&&(A=new nt(A)),A instanceof f&&(A={writable:A}),A.size===$&&(A.size=0),A instanceof nt||t.assign(A,{diskNumber:0,diskOffset:0,availableSize:AA,maxSize:AA}),A}}async function It(A,e){if(!A.init||A.initialized)return h.resolve();await A.init(e)}function Et(A,e,t,g){return A.readUint8Array(e,t,g)}const lt="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function Ct(A,e){return e&&"cp437"==e.trim().toLowerCase()?(A=>{{let e="";for(let t=0;t<A.length;t++)e+=lt[A[t]];return e}})(A):new F(e).decode(A)}const wt="filename",dt="rawFilename",ht="comment",ut="rawComment",Ft="uncompressedSize",Qt="compressedSize",Dt="offset",Yt="diskNumberStart",pt="lastModDate",mt="rawLastModDate",ft="lastAccessDate",St="creationDate",yt="rawCreationDate",Mt="internalFileAttributes",Wt="externalFileAttributes",bt="msdosAttributesRaw",Gt="msdosAttributes",Ut="msDosCompatible",Ot="zip64",Kt="encrypted",Tt="version",zt="versionMadeBy",Rt="zipCrypto",xt="directory",Nt="executable",kt="compressionMethod",Lt="signature",Ht="extraField",Jt="unixMode",Pt="setuid",Vt="setgid",jt="sticky",Zt=[wt,dt,Ft,Qt,pt,mt,ht,ut,ft,St,yt,Dt,Yt,Mt,Wt,bt,Gt,Ut,Ot,Kt,Tt,zt,Rt,xt,Nt,kt,Lt,Ht,"extraFieldUnix","extraFieldInfoZip","uid","gid",Jt,Pt,Vt,jt,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Xt{constructor(A){Zt.forEach(e=>this[e]=A[e])}}const qt="password",vt="rawPassword",_t="passThrough",$t="signal",Ag="useWebWorkers",eg="useCompressionStream",tg="transferStreams",gg="preventClose",ig="supportZip64SplitFile",sg="offset",rg="usdz",og="File format is not recognized",ag="End of central directory not found",ng="End of Zip64 central directory locator not found",Bg="Central directory header not found",cg="Local file header not found",Ig="Zip64 extra field not found",Eg="File contains encrypted entry",lg="Encryption method not supported",Cg="Compression method not supported",wg="Split zip file",dg="Overlapping entry found",hg="utf-8",ug="cp437",Fg=[[Ft,G],[Qt,G],[Dt,G],[Yt,U]],Qg={[U]:{getValue:Og,bytes:4},[G]:{getValue:Kg,bytes:8}};class Dg{constructor(A,e={}){t.assign(this,{reader:new Bt(A),options:e,config:rA(),readRanges:[]})}async*getEntriesGenerator(A={}){const e=this;let{reader:g}=e;const{config:i}=e;if(await It(g),g.size!==$&&g.readUint8Array||(g=new Ve(await new B(g.readable).blob()),await It(g)),g.size<L)throw new I(og);g.chunkSize=oA(i);const s=await(async(A,e,t)=>{const g=new E(4);var i;return i=e,Tg(g).setUint32(0,i,!0),await s(22)||await s(r.min(1048582,t));async function s(e){const i=t-e,s=await Et(A,i,e);for(let A=s.length-22;A>=0;A--)if(s[A]==g[0]&&s[A+1]==g[1]&&s[A+2]==g[2]&&s[A+3]==g[3])return{offset:i+A,buffer:s.slice(A,A+22).buffer}}})(g,x,g.size);if(!s)throw Og(Tg(await Et(g,0,4)))==T?new I(wg):new I(ag);const o=Tg(s);let a=Og(o,12),n=Og(o,16);const c=s.offset,l=Ug(o,20),C=c+L+l;let w=Ug(o,4);const d=g.lastDiskNumber||0;let u=Ug(o,6),F=Ug(o,8),Q=0,D=0;if(n==G||a==G||F==U||u==U){const A=Tg(await Et(g,s.offset-20,20));if(Og(A,0)==k){n=Kg(A,8);let e=await Et(g,n,56,-1),t=Tg(e);const i=s.offset-20-56;if(Og(t,0)!=N&&n!=i){const A=n;n=i,n>A&&(Q=n-A),e=await Et(g,n,56,-1),t=Tg(e)}if(Og(t,0)!=N)throw new I(ng);w==U&&(w=Og(t,16)),u==U&&(u=Og(t,20)),F==U&&(F=Kg(t,32)),a==G&&(a=Kg(t,40)),n-=a}}if(n<g.size||(Q=g.size-n-a-L,n=g.size-a-L),d!=w)throw new I(wg);if(0>n)throw new I(og);let Y=0,m=await Et(g,n,a,u),f=Tg(m);if(a){const A=s.offset-a;if(Og(f,Y)!=R&&n!=A){const e=n;n=A,n>e&&(Q+=n-e),m=await Et(g,n,a,u),f=Tg(m)}}const S=s.offset-n-(g.lastDiskOffset||0);if(a==S||0>S||(a=S,m=await Et(g,n,a,u),f=Tg(m)),0>n||n>=g.size)throw new I(og);const y=Mg(e,A,"filenameEncoding"),M=Mg(e,A,"commentEncoding");for(let s=0;F>s;s++){const o=new Yg(g,i,e.options);if(Og(f,Y)!=R)throw new I(Bg);pg(o,f,Y+6);const a=!!o.bitFlag.languageEncodingFlag,n=Y+46,c=n+o.filenameLength,E=c+o.extraFieldLength,l=Ug(f,Y+4),C=!(l>>8),w=l>>8==3,d=m.subarray(n,c),u=Ug(f,Y+32),S=E+u,W=m.subarray(E,S),b=a,G=a,K=Og(f,Y+38),T=K&O,z={readOnly:!!(1&T),hidden:!!(2&T),system:!!(4&T),directory:!!(16&T),archive:!!(32&T)},x=Og(f,Y+42)+Q,N=Mg(e,A,"decodeText")||Ct,k=b?hg:y||ug,L=G?hg:M||ug;let H=N(d,k);H===$&&(H=Ct(d,k));let J=N(W,L);J===$&&(J=Ct(W,L)),t.assign(o,{versionMadeBy:l,msDosCompatible:C,compressedSize:0,uncompressedSize:0,commentLength:u,offset:x,diskNumberStart:Ug(f,Y+34),internalFileAttributes:Ug(f,Y+36),externalFileAttributes:K,msdosAttributesRaw:T,msdosAttributes:z,rawFilename:d,filenameUTF8:b,commentUTF8:G,rawExtraField:m.subarray(c,E),rawComment:W,filename:H,comment:J}),D=r.max(x,D),mg(o,o,f,Y+6);const q=o.externalFileAttributes>>16&U;o.unixMode===$&&16877&q&&(o.unixMode=q);const v=!!(o.unixMode&V),_=!!(o.unixMode&j),AA=!!(o.unixMode&Z),eA=o.unixMode!==$?!!(73&o.unixMode):w&&!!(73&q),tA=o.unixMode!==$&&(61440&o.unixMode)==P,gA=(61440&q)==P;t.assign(o,{setuid:v,setgid:_,sticky:AA,unixExternalUpper:q,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:eA,directory:tA||gA||C&&z.directory||H.endsWith(X)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const iA=new Xt(o);iA.getData=(A,t)=>o.getData(A,iA,e.readRanges,t),iA.arrayBuffer=async A=>{const t=new p,[g]=await h.all([new B(t.readable).arrayBuffer(),o.getData(t,iA,e.readRanges,A)]);return g},Y=S;const{onprogress:sA}=A;if(sA)try{await sA(s+1,F,new Xt(o))}catch{}yield iA}const W=Mg(e,A,"extractPrependedData"),b=Mg(e,A,"extractAppendedData");return W&&(e.prependedData=D>0?await Et(g,0,D):new E),e.comment=l?await Et(g,c+L,l):new E,b&&(e.appendedData=C<g.size?await Et(g,C,g.size-C):new E),!0}async getEntries(A={}){const e=[];for await(const t of this.getEntriesGenerator(A))e.push(t);return e}async close(){}}class Yg{constructor(A,e,g){t.assign(this,{reader:A,config:e,options:g})}async getData(A,e,g,i={}){const s=this,{reader:r,offset:o,diskNumberStart:a,extraFieldAES:n,extraFieldZip64:B,compressionMethod:c,config:l,bitFlag:C,signature:w,rawLastModDate:d,uncompressedSize:h,compressedSize:u}=s,{dataDescriptor:F}=C,Q=e.localDirectory={},D=Tg(await Et(r,o,q,a));let Y=Mg(s,i,qt),p=Mg(s,i,vt);const m=Mg(s,i,_t);if(Y=Y&&Y.length&&Y,p=p&&p.length&&p,n&&99!=n.originalCompressionMethod)throw new I(Cg);if(0!=c&&8!=c&&9!=c&&!m)throw new I(Cg);if(Og(D,0)!=K)throw new I(cg);pg(Q,D,4);const{extraFieldLength:S,filenameLength:y,lastAccessDate:M,creationDate:W}=Q;Q.rawExtraField=S?await Et(r,o+q+y,S,a):new E,mg(s,Q,D,4,!0),t.assign(e,{lastAccessDate:M,creationDate:W});const b=s.encrypted&&Q.encrypted&&!m,G=b&&!n;if(m||(e.zipCrypto=G),b){if(!G&&n.strength===$)throw new I(lg);if(!Y&&!p)throw new I(Eg)}const U=o+q+y+S,T=u,R=r.readable;t.assign(R,{diskNumberStart:a,offset:U,size:T});const x=Mg(s,i,$t),N=Mg(s,i,"checkPasswordOnly");let k=Mg(s,i,"checkOverlappingEntry");const L=Mg(s,i,"checkOverlappingEntryOnly");L&&(k=!0);const{onstart:H,onprogress:J,onend:P}=i,V=9==c;let j=Mg(s,i,eg);V&&(j=!1);const Z={options:{codecType:we,password:Y,rawPassword:p,zipCrypto:G,encryptionStrength:n&&n.strength,signed:Mg(s,i,"checkSignature")&&!m,passwordVerification:G&&(F?d>>>8&O:w>>>24&O),outputSize:m?u:h,signature:w,compressed:0!=c&&!m,encrypted:s.encrypted&&!m,useWebWorkers:Mg(s,i,Ag),useCompressionStream:j,transferStreams:Mg(s,i,tg),deflate64:V,checkPasswordOnly:N},config:l,streamOptions:{signal:x,size:T,onstart:H,onprogress:J,onend:P}};let X;k&&await(async({reader:A,fileEntry:e,offset:t,diskNumberStart:g,signature:i,compressedSize:s,uncompressedSize:r,dataOffset:o,dataDescriptor:a,extraFieldZip64:n,readRanges:B})=>{let c=0;if(g)for(let e=0;g>e;e++)c+=A.readers[e].size;let E=0;if(a&&(E=n?20:12),E){const t=await Et(A,o+s,E+4,g);if(Og(Tg(t),0)==z){const A=Og(Tg(t),4);let g,o;n?(g=Kg(Tg(t),8),o=Kg(Tg(t),16)):(g=Og(Tg(t),8),o=Og(Tg(t),12)),(e.encrypted&&!e.zipCrypto||A==i)&&g==s&&o==r&&(E+=4)}}const l={start:c+t,end:c+o+s+E,fileEntry:e};for(const A of B)if(A.fileEntry!=e&&l.start>=A.start&&l.start<A.end){const e=new I(dg);throw e.overlappingEntry=A.fileEntry,e}B.push(l)})({reader:r,fileEntry:e,offset:o,diskNumberStart:a,signature:w,compressedSize:u,uncompressedSize:h,dataOffset:U,dataDescriptor:F||Q.bitFlag.dataDescriptor,extraFieldZip64:B||Q.extraFieldZip64,readRanges:g});try{if(!L){N&&(A=new f),A=new ct(A),await It(A,m?u:h),({writable:X}=A);const{outputSize:e}=await Oe({readable:R,writable:X},Z);if(A.size+=e,e!=(m?u:h))throw new I(oe)}}catch(e){if(e.outputSize!==$&&(A.size+=e.outputSize),!N||e.message!=YA)throw e}finally{Mg(s,i,gg)||!X||X.locked||await X.getWriter().close()}return N||L?$:A.getData?A.getData():X}}function pg(A,e,g){const i=A.rawBitFlag=Ug(e,g+2),s=!(1&~i),r=Og(e,g+6);t.assign(A,{encrypted:s,version:Ug(e,g),bitFlag:{level:(6&i)>>1,dataDescriptor:!(8&~i),languageEncodingFlag:(i&J)==J},rawLastModDate:r,lastModDate:Wg(r),filenameLength:Ug(e,g+22),extraFieldLength:Ug(e,g+24)})}function mg(A,e,g,i,s){const{rawExtraField:r}=e,n=e.extraField=new a,B=Tg(new E(r));let c=0;try{for(;c<r.length;){const A=Ug(B,c),e=Ug(B,c+2);n.set(A,{type:A,data:r.slice(c+4,c+4+e)}),c+=4+e}}catch{}const l=Ug(g,i+4);t.assign(e,{signature:Og(g,i+10),compressedSize:Og(g,i+14),uncompressedSize:Og(g,i+18)});const C=n.get(1);C&&(((A,e)=>{e.zip64=!0;const t=Tg(A.data),g=Fg.filter(([A,t])=>e[A]==t);for(let i=0,s=0;i<g.length;i++){const[r,o]=g[i];if(e[r]==o){const g=Qg[o];e[r]=A[r]=g.getValue(t,s),s+=g.bytes}else if(A[r])throw new I(Ig)}})(C,e),e.extraFieldZip64=C);const w=n.get(28789);w&&(fg(w,wt,dt,e,A),e.extraFieldUnicodePath=w);const d=n.get(25461);d&&(fg(d,ht,ut,e,A),e.extraFieldUnicodeComment=d);const h=n.get(39169);h?(((A,e,g)=>{const i=Tg(A.data),s=Gg(i,4);t.assign(A,{vendorVersion:Gg(i,0),vendorId:Gg(i,2),strength:s,originalCompressionMethod:g,compressionMethod:Ug(i,5)}),e.compressionMethod=A.compressionMethod})(h,e,l),e.extraFieldAES=h):e.compressionMethod=l;const u=n.get(10);u&&(((A,e)=>{const g=Tg(A.data);let i,s=4;try{for(;s<A.data.length&&!i;){const e=Ug(g,s),t=Ug(g,s+2);1==e&&(i=A.data.slice(s+4,s+4+t)),s+=4+t}}catch{}try{if(i&&24==i.length){const g=Tg(i),s=g.getBigUint64(0,!0),r=g.getBigUint64(8,!0),o=g.getBigUint64(16,!0);t.assign(A,{rawLastModDate:s,rawLastAccessDate:r,rawCreationDate:o});const a={lastModDate:bg(s),lastAccessDate:bg(r),creationDate:bg(o)};t.assign(A,a),t.assign(e,a)}}catch{}})(u,e),e.extraFieldNTFS=u);const F=n.get(30805);if(F)Sg(F,e,!1),e.extraFieldUnix=F;else{const A=n.get(30837);A&&(Sg(A,e,!0),e.extraFieldInfoZip=A)}const Q=n.get(H);Q&&(((A,e,t)=>{const g=Tg(A.data),i=Gg(g,0),s=[],r=[];t?(1&~i||(s.push(pt),r.push(mt)),2&~i||(s.push(ft),r.push("rawLastAccessDate")),4&~i||(s.push(St),r.push(yt))):5>A.data.length||(s.push(pt),r.push(mt));let a=1;s.forEach((t,i)=>{if(A.data.length>=a+4){const s=Og(g,a);e[t]=A[t]=new o(1e3*s);const n=r[i];A[n]=s}a+=4})})(Q,e,s),e.extraFieldExtendedTimestamp=Q);const D=n.get(6534);D&&(e.extraFieldUSDZ=D)}function fg(A,e,g,i,s){const r=Tg(A.data),o=new IA;o.append(s[g]);const a=Tg(new E(4));a.setUint32(0,o.get(),!0);const n=Og(r,1);t.assign(A,{version:Gg(r,0),[e]:Ct(A.data.subarray(5)),valid:!s.bitFlag.languageEncodingFlag&&n==Og(a,0)}),A.valid&&(i[e]=A[e],i[e+"UTF8"]=!0)}function Sg(A,e,g){try{const i=Tg(new E(A.data));let s=0;const r=Gg(i,s++),o=Gg(i,s++),a=A.data.subarray(s,s+o);s+=o;const n=yg(a),B=Gg(i,s++),c=A.data.subarray(s,s+B);s+=B;const I=yg(c);let l=$;if(!g&&s+2<=A.data.length){const e=A.data;l=new w(e.buffer,e.byteOffset+s,2).getUint16(0,!0)}t.assign(A,{version:r,uid:n,gid:I,unixMode:l}),n!==$&&(e.uid=n),I!==$&&(e.gid=I),l!==$&&(e.unixMode=l)}catch{}}function yg(A){const e=new E(4);return e.set(A,0),new w(e.buffer,e.byteOffset,4).getUint32(0,!0)}function Mg(A,e,t){return e[t]===$?A.options[t]:e[t]}function Wg(A){const e=(4294901760&A)>>16,t=A&U;try{return new o(1980+((65024&e)>>9),((480&e)>>5)-1,31&e,(63488&t)>>11,(2016&t)>>5,2*(31&t),0)}catch{}}function bg(A){return new o(i(A/s(1e4)-s(116444736e5)))}function Gg(A,e){return A.getUint8(e)}function Ug(A,e){return A.getUint16(e,!0)}function Og(A,e){return A.getUint32(e,!0)}function Kg(A,e){return i(A.getBigUint64(e,!0))}function Tg(A){return new w(A.buffer)}const zg="File already exists",Rg="Zip file comment exceeds 64KB",xg="File entry comment exceeds 64KB",Ng="File entry name exceeds 64KB",kg="Version exceeds 65535",Lg="The strength must equal 1, 2, or 3",Hg="Extra field type exceeds 65535",Jg="Extra field data exceeds 64KB",Pg="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Vg="Undefined uncompressed size",jg="Zip file not empty",Zg=new E([7,0,2,0,65,69,3,0,0]),Xg="infozip",qg="unix";let vg=0;const _g=[];class $g{constructor(A,e={}){const g=(A=new ct(A)).availableSize!==$&&A.availableSize>0&&A.availableSize!==AA&&A.maxSize!==$&&A.maxSize>0&&A.maxSize!==AA;t.assign(this,{writer:A,addSplitZipSignature:g,options:e,config:rA(),files:new a,filenames:new n,offset:e[sg]===$?A.size||A.writable.size||0:e[sg],pendingEntriesSize:0,pendingAddFileCalls:new n,bufferedWrites:0})}async prependZip(A){if(this.filenames.size)throw new I(jg);A=new Bt(A);const e=new Dg(A.readable),g=await e.getEntries();await e.close(),await A.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=A.size,this.filenames=new n(g.map(A=>A.filename)),this.files=new a(g.map(A=>{const{version:e,compressionMethod:g,lastModDate:i,lastAccessDate:s,creationDate:r,rawFilename:o,bitFlag:a,encrypted:n,uncompressedSize:B,compressedSize:c,diskOffset:I,diskNumber:l,zip64:C}=A;let{rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q}=A;const{level:D,languageEncodingFlag:Y,dataDescriptor:p}=a;w=w||new E,d=d||new E,h=h||new E,u=u||new E,F=A.rawExtraFieldUnix||new E,Q=Q||new E;const m=Ii(w,d,h,u,F,Q),f=C&&B>G,S=C&&c>G,{headerArray:y,headerView:M}=Ei({version:e,bitFlag:li(D,Y,p,n,g),compressionMethod:g,uncompressedSize:B,compressedSize:c,lastModDate:i,rawFilename:o,zip64CompressedSize:S,zip64UncompressedSize:f,extraFieldLength:m});return t.assign(A,{zip64UncompressedSize:f,zip64CompressedSize:S,zip64Offset:C&&this.offset-I>G,zip64DiskNumberStart:C&&l>U,rawExtraFieldZip64:w,rawExtraFieldAES:d,rawExtraFieldExtendedTimestamp:h,rawExtraFieldNTFS:u,rawExtraFieldUnix:F,rawExtraField:Q,extendedTimestamp:h.length>0||u.length>0,extraFieldExtendedTimestampFlag:1+(s?2:0)+(r?4:0),headerArray:y,headerView:M}),[A.filename,A]}))}async add(A="",g,i={}){const a=this,{pendingAddFileCalls:n,config:B}=a;let c;vg<B.maxWorkers?vg++:await new h(A=>_g.push(A));try{if(A=A.trim(),a.filenames.has(A))throw new I(zg);return a.filenames.add(A),c=(async(A,g,i,a)=>{g=g.trim();let n=ii(A,a,Ut),B=ii(A,a,zt,n?20:768);const c=ii(A,a,Nt),C=ii(A,a,"uid"),d=ii(A,a,"gid");let u=ii(A,a,Jt);const F=ii(A,a,"unixExtraFieldType");let Q=ii(A,a,Pt),D=ii(A,a,Vt),Y=ii(A,a,jt);if(C!==$&&(0>C||C>G))throw new I("Invalid uid (must be integer 0..2^32-1)");if(d!==$&&(0>d||d>G))throw new I("Invalid gid (must be integer 0..2^32-1)");if(u!==$&&(0>u||u>U))throw new I("Invalid UNIX mode (must be integer 0..65535)");if(F!==$&&F!==Xg&&F!==qg)throw new I("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let m=ii(A,a,bt),f=ii(A,a,Gt);const S=m!==$||f!==$;if(C!==$||d!==$||u!==$||F?(n=!1,B=B&U|768):S&&(n=!0,B&=O),m!==$&&(0>m||m>O))throw new I("Invalid msdosAttributesRaw (must be integer 0..255)");if(f&&"object"!=typeof f)throw new I("Invalid msdosAttributes (must be an object with boolean flags)");if(B>U)throw new I(kg);let y=ii(A,a,Wt,0);!a[xt]&&g.endsWith(X)&&(a[xt]=!0);const M=ii(A,a,xt);let W;M?(g.endsWith(X)||(g+=X),0===y&&(y=16,n||(y|=16877<<16))):n||0!==y||(y=c?493<<16:27525120),n||(W=y>>16&U,u=u===$?W:u&U,Q?u|=V:Q=!!(u&V),D?u|=j:D=!!(u&j),Y?u|=Z:Y=!!(u&Z),M&&(u|=P),y=(u&U)<<16|y&O),({msdosAttributesRaw:m,msdosAttributes:f}=((A,e)=>{if(A!==$)A&=O;else if(e!==$){const{readOnly:t,hidden:g,system:i,directory:s,archive:r}=e;let o=0;t&&(o|=1),g&&(o|=2),i&&(o|=4),s&&(o|=16),r&&(o|=32),A=o&O}return e===$&&(e={readOnly:!!(1&A),hidden:!!(2&A),system:!!(4&A),directory:!!(16&A),archive:!!(32&A)}),{msdosAttributesRaw:A,msdosAttributes:e}})(m,f)),S&&(y=y&G|m&O);const b=ii(A,a,"encodeText",lA);let R=b(g);if(R===$&&(R=lA(g)),Ii(R)>U)throw new I(Ng);const x=a[ht]||"";let N=b(x);if(N===$&&(N=lA(x)),Ii(N)>U)throw new I(xg);const k=ii(A,a,Tt,20);if(k>U)throw new I(kg);const L=ii(A,a,pt,new o),J=ii(A,a,ft),eA=ii(A,a,St),tA=ii(A,a,Mt,0),gA=ii(A,a,_t);let iA,sA;gA||(iA=ii(A,a,qt),sA=ii(A,a,vt));const rA=ii(A,a,"encryptionStrength",3),aA=ii(A,a,Rt),nA=ii(A,a,"extendedTimestamp",!0),BA=ii(A,a,"keepOrder",!0),cA=ii(A,a,Ag),IA=ii(A,a,tg,!0),EA=ii(A,a,"bufferedWrite"),CA=ii(A,a,"createTempStream"),wA=ii(A,a,"dataDescriptorSignature",!1),dA=ii(A,a,$t),hA=ii(A,a,"useUnicodeFileNames",!0),uA=ii(A,a,kt);let FA=ii(A,a,"level"),QA=ii(A,a,eg),DA=ii(A,a,"dataDescriptor");EA&&DA===$&&(DA=!1),(DA===$||aA)&&(DA=!0),FA!==$&&6!=FA&&(QA=!1),QA||A.config.CompressionStream!==$||A.config.CompressionStreamZlib!==$||(FA=0);let YA=ii(A,a,Ot);if(!aA&&(iA!==$||sA!==$)&&(1>rA||rA>3))throw new I(Lg);let pA=new E;const mA=a[Ht];if(mA){let A=0,e=0;mA.forEach(e=>A+=4+Ii(e)),pA=new E(A),mA.forEach((A,t)=>{if(t>U)throw new I(Hg);if(Ii(A)>U)throw new I(Jg);Bi(pA,new l([t]),e),Bi(pA,new l([Ii(A)]),e+2),Bi(pA,A,e+4),e+=4+Ii(A)})}let fA=0,SA=0,yA=0;if(gA&&(yA=a[Ft],yA===$))throw new I(Vg);const MA=!0===YA;i&&(i=new Bt(i),await It(i),gA?(a.uncompressedSize=yA,fA=si(yA)):i.size===$?(DA=!0,(YA||YA===$)&&(YA=!0,yA=fA=4294967296)):(a.uncompressedSize=yA=i.size,fA=si(yA)));const{diskOffset:WA,diskNumber:bA,maxSize:GA}=A.writer,UA=MA||yA>G,OA=MA||fA>G,KA=MA||A.offset+A.pendingEntriesSize-WA>G,TA=ii(A,a,ig,!0)&&MA||bA+r.ceil(A.pendingEntriesSize/GA)>U;if(KA||UA||OA||TA){if(!1===YA||!BA)throw new I(Pg);YA=!0}YA=YA||!1;const zA=ii(A,a,Kt),RA=(A=>{const{rawFilename:e,lastModDate:t,lastAccessDate:g,creationDate:i,level:o,zip64:a,zipCrypto:n,useUnicodeFileNames:B,dataDescriptor:c,directory:I,rawExtraField:l,encryptionStrength:C,extendedTimestamp:d,passThrough:h,encrypted:u,zip64UncompressedSize:F,zip64CompressedSize:Q,zip64Offset:D,zip64DiskNumberStart:Y,uncompressedSize:p,offset:m,diskNumberStart:f}=A;let{version:S,compressionMethod:y}=A;const M=!I&&(o>0||o===$&&0!==y);let W,b;const G=h||!M,O=a&&(A.bufferedWrite||!F&&!Q||G);if(a){let A=4,e=4;F&&(A+=8,e+=8),Q&&(A+=8,e+=8),D&&(A+=8),Y&&(A+=4),W=new E(A);const t=ci(W);b=new E(e);const g=ci(b);if(oi(t,0,1),oi(t,2,Ii(W)-4),oi(g,0,1),oi(g,2,Ii(b)-4),O){const A=ci(W),e=ci(b);let t=4,g=4;F&&(ni(A,t,s(p)),t+=8,ni(e,g,s(p)),g+=8),Q&&G&&(ni(A,t,s(p)),t+=8,ni(e,g,s(p)),g+=8),D&&(ni(A,t,s(m)),t+=8),Y&&(ai(A,t,f),t+=4),4==g&&(b=new E)}}else W=new E,b=new E;let T,z,R,x,N;if(u&&!n){T=new E(Ii(Zg)+2);const A=ci(T);oi(A,0,39169),Bi(T,Zg,2),ri(A,8,C)}else T=new E;if(d){R=new E(9+(g?4:0)+(i?4:0));const A=ci(R);oi(A,0,H),oi(A,2,Ii(R)-4),x=1+(g?2:0)+(i?4:0),ri(A,4,x);let e=5;ai(A,e,r.floor(t.getTime()/1e3)),e+=4,g&&(ai(A,e,r.floor(g.getTime()/1e3)),e+=4),i&&ai(A,e,r.floor(i.getTime()/1e3));try{z=new E(36);const A=ci(z),e=gi(t);oi(A,0,10),oi(A,2,32),oi(A,8,1),oi(A,10,24),ni(A,12,e),ni(A,20,gi(g)||e),ni(A,28,gi(i)||e)}catch{z=new E}}else z=R=new E;try{const{uid:e,gid:t,unixMode:g,setuid:i,setgid:s,sticky:r,unixExtraFieldType:o}=A;if(!o||e===$&&t===$&&g===$)N=new E;else{const A=Ai(e),a=Ai(t);let n=new E;if(o==qg&&g!==$){let A=g&U;i&&(A|=V),s&&(A|=j),r&&(A|=Z),n=new E(2),new w(n.buffer).setUint16(0,A,!0)}const B=3+A.length+a.length+n.length;N=new E(4+B);const c=ci(N);oi(c,0,o==Xg?30837:30805),oi(c,2,B),ri(c,4,1),ri(c,5,A.length);let I=6;Bi(N,A,I),I+=A.length,ri(c,I,a.length),I++,Bi(N,a,I),I+=a.length,Bi(N,n,I)}}catch{N=new E}y===$&&(y=M?8:0),a&&(S=S>45?S:45),u&&!n&&(S=S>51?S:51,T[9]=y,y=99);const k=O?Ii(b):0,L=k+Ii(T,R,z,N,l),{headerArray:J,headerView:P,rawLastModDate:X}=Ei({version:S,bitFlag:li(o,B,c,u,y),compressionMethod:y,uncompressedSize:p,lastModDate:_>t?_:t>v?v:t,rawFilename:e,zip64CompressedSize:Q,zip64UncompressedSize:F,extraFieldLength:L});let AA=q;const eA=new E(AA+Ii(e)+L),tA=ci(eA);return ai(tA,0,K),Bi(eA,J,4),Bi(eA,e,AA),AA+=Ii(e),O&&Bi(eA,b,AA),AA+=k,Bi(eA,T,AA),AA+=Ii(T),Bi(eA,R,AA),AA+=Ii(R),Bi(eA,z,AA),AA+=Ii(z),Bi(eA,N,AA),AA+=Ii(N),Bi(eA,l,AA),c&&(ai(tA,18,0),ai(tA,22,0)),{localHeaderArray:eA,localHeaderView:tA,headerArray:J,headerView:P,lastModDate:t,rawLastModDate:X,encrypted:u,compressed:M,version:S,compressionMethod:y,extraFieldExtendedTimestampFlag:x,rawExtraFieldZip64:W,localExtraFieldZip64Length:k,rawExtraFieldExtendedTimestamp:R,rawExtraFieldNTFS:z,rawExtraFieldUnix:N,rawExtraFieldAES:T,extraFieldLength:L}})(a=t.assign({},a,{rawFilename:R,rawComment:N,version:k,versionMadeBy:B,lastModDate:L,lastAccessDate:J,creationDate:eA,rawExtraField:pA,zip64:YA,zip64UncompressedSize:UA,zip64CompressedSize:OA,zip64Offset:KA,zip64DiskNumberStart:TA,password:iA,rawPassword:sA,level:FA,useWebWorkers:cA,transferStreams:IA,encryptionStrength:rA,extendedTimestamp:nA,zipCrypto:aA,bufferedWrite:EA,createTempStream:CA,keepOrder:BA,useUnicodeFileNames:hA,dataDescriptor:DA,dataDescriptorSignature:wA,signal:dA,msDosCompatible:n,internalFileAttribute:tA,internalFileAttributes:tA,externalFileAttribute:y,externalFileAttributes:y,useCompressionStream:QA,passThrough:gA,encrypted:!!(iA&&Ii(iA)||sA&&Ii(sA))||gA&&zA,signature:a[Lt],compressionMethod:uA,uncompressedSize:yA,offset:A.offset-WA,diskNumberStart:bA,uid:C,gid:d,setuid:Q,setgid:D,sticky:Y,unixMode:u,msdosAttributesRaw:m,msdosAttributes:f,unixExternalUpper:W})),xA=(({zip64:A,dataDescriptor:e,dataDescriptorSignature:t})=>{let g,i=new E,s=0,r=A?20:12;return t&&(r+=4),e&&(i=new E(r),g=ci(i),t&&(s=4,ai(g,0,z))),{dataDescriptorArray:i,dataDescriptorView:g,dataDescriptorOffset:s}})(a),NA=Ii(RA.localHeaderArray,xA.dataDescriptorArray);let kA;SA=NA+fA,A.options[rg]&&(SA+=SA+64),A.pendingEntriesSize+=SA;try{kA=await(async(A,g,i,r,o)=>{const{files:a,writer:n}=A,{keepOrder:B,dataDescriptor:c,signal:l}=o,{headerInfo:C}=r,w=A.options[rg],d=e.from(a.values()).pop();let u,F,Q,D,Y,m,f={};a.set(g,f);try{let e;B&&(e=d&&d.lock,f.lock=new h(A=>Q=A)),!(o.bufferedWrite||A.writerLocked||A.bufferedWrites&&B)&&c||w?(m=n,await S()):(m=o.createTempStream?await o.createTempStream():new p($,$,{highWaterMark:AA}),m.size=0,u=!0,A.bufferedWrites++,await It(n)),await It(m);const{writable:F,diskOffset:M}=n;if(A.addSplitZipSignature){delete A.addSplitZipSignature;const e=new E(4);ai(ci(e),0,T),await ti(n,e),A.offset+=4}w&&((A,e)=>{const{headerInfo:t}=A;let{localHeaderArray:g,extraFieldLength:i}=t,s=ci(g),r=64-(e+Ii(g))%64;4>r&&(r+=64);const o=new E(r),a=ci(o);oi(a,0,6534),oi(a,2,r-2);const n=g;t.localHeaderArray=g=new E(Ii(n)+r),Bi(g,n),Bi(g,o,Ii(n)),s=ci(g),oi(s,28,i+r),A.metadataSize+=r})(r,A.offset-M);const{localHeaderView:W,localHeaderArray:b}=C;u||(await e,await y(F));const{diskNumber:U}=n;f.diskNumberStart=U,u||(Y=!0,await ti(m,b)),f=await(async(A,e,{diskNumberStart:g,lock:i},r,o,a)=>{const{headerInfo:n,dataDescriptorInfo:B,metadataSize:c}=r,{headerArray:I,headerView:E,lastModDate:l,rawLastModDate:C,encrypted:w,compressed:d,version:h,compressionMethod:u,rawExtraFieldZip64:F,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,extraFieldExtendedTimestampFlag:Y,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:f}=n,{dataDescriptorArray:S}=B,{rawFilename:y,lastAccessDate:M,creationDate:W,password:b,rawPassword:G,level:U,zip64:K,zip64UncompressedSize:T,zip64CompressedSize:z,zip64Offset:R,zip64DiskNumberStart:x,zipCrypto:N,dataDescriptor:k,directory:L,executable:H,versionMadeBy:J,rawComment:P,rawExtraField:V,useWebWorkers:j,transferStreams:Z,onstart:X,onprogress:q,onend:v,signal:_,encryptionStrength:AA,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,uid:sA,gid:rA,unixMode:aA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:IA,msdosAttributesRaw:EA,msdosAttributes:lA,useCompressionStream:CA,passThrough:wA}=a,dA={lock:i,versionMadeBy:J,zip64:K,directory:!!L,executable:!!H,filenameUTF8:!0,rawFilename:y,commentUTF8:!0,rawComment:P,rawExtraFieldZip64:F,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:D,rawExtraFieldNTFS:p,rawExtraFieldUnix:m,rawExtraFieldAES:f,rawExtraField:V,extendedTimestamp:eA,msDosCompatible:tA,internalFileAttributes:gA,externalFileAttributes:iA,diskNumberStart:g,uid:sA,gid:rA,unixMode:aA,setuid:nA,setgid:BA,sticky:cA,unixExternalUpper:IA,msdosAttributesRaw:EA,msdosAttributes:lA};let{signature:hA,uncompressedSize:uA}=a,FA=0;wA||(uA=0);const{writable:QA}=e;if(A){A.chunkSize=oA(o);const t=A.readable,g=A.size,i={options:{codecType:Ce,level:U,rawPassword:G,password:b,encryptionStrength:AA,zipCrypto:w&&N,passwordVerification:w&&N&&C>>8&O,signed:!wA,compressed:d&&!wA,encrypted:w&&!wA,useWebWorkers:j,useCompressionStream:CA,transferStreams:Z},config:o,streamOptions:{signal:_,size:g,onstart:X,onprogress:q,onend:v}};try{const A=await Oe({readable:t,writable:QA},i);FA=A.outputSize,e.size+=FA,wA||(uA=A.inputSize,hA=A.signature)}catch(A){throw A.outputSize!==$&&(e.size+=A.outputSize),A}}return(({signature:A,compressedSize:e,uncompressedSize:t,headerInfo:g,dataDescriptorInfo:i},{zip64:r,zipCrypto:o,dataDescriptor:a})=>{const{headerView:n,encrypted:B}=g,{dataDescriptorView:c,dataDescriptorOffset:I}=i;B&&!o||A===$||(ai(n,10,A),a&&ai(c,I,A)),r?a&&(ni(c,I+4,s(e)),ni(c,I+12,s(t))):(ai(n,14,e),ai(n,18,t),a&&(ai(c,I+4,e),ai(c,I+8,t)))})({signature:hA,compressedSize:FA,uncompressedSize:uA,headerInfo:n,dataDescriptorInfo:B},a),k&&await ti(e,S),t.assign(dA,{uncompressedSize:uA,compressedSize:FA,lastModDate:l,rawLastModDate:C,creationDate:W,lastAccessDate:M,encrypted:w,zipCrypto:N,size:c+FA,compressionMethod:u,version:h,headerArray:I,headerView:E,signature:hA,extraFieldExtendedTimestampFlag:Y,zip64UncompressedSize:T,zip64CompressedSize:z,zip64Offset:R,zip64DiskNumberStart:x}),dA})(i,m,f,r,A.config,o);const{zip64:K}=f;if(u||(Y=!1),a.set(g,f),f.filename=g,u?(await h.all([m.writable.getWriter().close(),e]),await S(),D=!0,f.diskNumberStart=n.diskNumber,f.offset=A.offset-n.diskOffset,K&&ei(f),(({rawFilename:A,encrypted:e,zip64:t,localExtraFieldZip64Length:g,signature:i,compressedSize:r,uncompressedSize:o,zip64UncompressedSize:a,zip64CompressedSize:n},B,{dataDescriptor:c})=>{if(c||(e||ai(B,14,i),n||ai(B,18,r),a||ai(B,22,o)),t&&g){let e=q+Ii(A)+4;a&&(ni(B,e,s(o)),e+=8),n&&(ni(B,e,s(r)),e+=8)}})(f,W,o),await y(F),await ti(n,b),await m.readable.pipeTo(F,{preventClose:!0,preventAbort:!0,signal:l}),n.size+=m.size,D=!1):(f.offset=A.offset-M,K&&ei(f)),f.offset>G&&!K)throw new I(Pg);return A.offset+=f.size,f}catch(e){if(D||Y){if(A.hasCorruptedEntries=!0,e)try{e.corruptedEntry=!0}catch{}u?A.offset+=m.size:A.offset=m.size}throw a.delete(g),e}finally{u&&A.bufferedWrites--,Q&&Q(),F&&F()}async function S(){A.writerLocked=!0;const{lockWriter:e}=A;A.lockWriter=new h(e=>F=()=>{A.writerLocked=!1,e()}),await e}async function y(A){Ii(C.localHeaderArray)>n.availableSize&&(n.availableSize=0,await ti(A,new E))}})(A,g,i,{headerInfo:RA,dataDescriptorInfo:xA,metadataSize:NA},a)}finally{A.pendingEntriesSize-=SA}return t.assign(kA,{name:g,comment:x,extraField:mA}),new Xt(kA)})(a,A,g,i),n.add(c),await c}catch(e){throw a.filenames.delete(A),e}finally{n.delete(c);const A=_g.shift();A?A():vg--}}remove(A){const{filenames:e,files:t}=this;if("string"==typeof A&&(A=t.get(A)),A&&A.filename!==$){const{filename:g}=A;if(e.has(g)&&t.has(g))return e.delete(g),t.delete(g),!0}return!1}async close(A=new E,t={}){const{pendingAddFileCalls:g,writer:i}=this,{writable:o}=i;for(;g.size;)await h.allSettled(e.from(g));return await(async(A,t,g)=>{const{files:i,writer:o}=A,{diskOffset:a}=o;let{diskNumber:n}=o,B=0,c=0,l=A.offset-a,C=i.size;for(const[,A]of i){const{rawFilename:e,rawExtraFieldZip64:t,rawExtraFieldAES:g,rawComment:i,rawExtraFieldNTFS:s,rawExtraFieldUnix:o,rawExtraField:a,extendedTimestamp:n,extraFieldExtendedTimestampFlag:B,lastModDate:I}=A;let l;if(n){l=new E(9);const A=ci(l);oi(A,0,H),oi(A,2,5),ri(A,4,B),ai(A,5,r.floor(I.getTime()/1e3))}else l=new E;A.rawExtraFieldExtendedTimestamp=l,c+=46+Ii(e,i,t,g,s,o,l,a)}const w=new E(c),d=ci(w);await It(o);let h=0;for(const[A,t]of e.from(i.values()).entries()){const{offset:e,rawFilename:s,rawExtraFieldZip64:r,rawExtraFieldAES:a,rawExtraFieldExtendedTimestamp:n,rawExtraFieldNTFS:c,rawExtraFieldUnix:I,rawExtraField:E,rawComment:l,versionMadeBy:C,headerArray:u,headerView:F,zip64:Q,zip64UncompressedSize:D,zip64CompressedSize:Y,zip64DiskNumberStart:p,zip64Offset:m,internalFileAttributes:f,externalFileAttributes:S,diskNumberStart:y,uncompressedSize:M,compressedSize:W}=t,b=Ii(r,a,n,c,I,E);ai(d,B,R),oi(d,B+4,C),D||ai(F,18,M),Y||ai(F,14,W),Bi(w,u,B+6);let O=B+q;if(oi(d,O,b),O+=2,oi(d,O,Ii(l)),O+=2,oi(d,O,Q&&p?U:y),O+=2,oi(d,O,f),O+=2,S&&ai(d,O,S),O+=4,ai(d,O,Q&&m?G:e),O+=4,Bi(w,s,O),O+=Ii(s),Bi(w,r,O),O+=Ii(r),Bi(w,a,O),O+=Ii(a),Bi(w,n,O),O+=Ii(n),Bi(w,c,O),O+=Ii(c),Bi(w,I,O),O+=Ii(I),Bi(w,E,O),O+=Ii(E),Bi(w,l,O),O+=Ii(l),B-h>o.availableSize&&(o.availableSize=0,await ti(o,w.slice(h,B)),h=B),B=O,g.onprogress)try{await g.onprogress(A+1,i.size,new Xt(t))}catch{}}await ti(o,h?w.slice(h):w);let u=o.diskNumber;const{availableSize:F}=o;L>F&&u++;let Q=ii(A,g,Ot);if(l>G||c>G||C>U||u>U){if(!1===Q)throw new I(Pg);Q=!0}const D=new E(Q?98:L),Y=ci(D);B=0,Q&&(ai(Y,0,N),ni(Y,4,s(44)),oi(Y,12,45),oi(Y,14,45),ai(Y,16,u),ai(Y,20,n),ni(Y,24,s(C)),ni(Y,32,s(C)),ni(Y,40,s(c)),ni(Y,48,s(l)),ai(Y,56,k),ni(Y,64,s(l)+s(c)),ai(Y,72,u+1),ii(A,g,ig,!0)&&(u=U,n=U),C=U,l=G,c=G,B+=76),ai(Y,B,x),oi(Y,B+4,u),oi(Y,B+6,n),oi(Y,B+8,C),oi(Y,B+10,C),ai(Y,B+12,c),ai(Y,B+16,l);const p=Ii(t);if(p){if(p>U)throw new I(Rg);oi(Y,B+20,p)}await ti(o,D),p&&await ti(o,t)})(this,A,t),ii(this,t,gg)||await o.getWriter().close(),i.getData?i.getData():o}}function Ai(A){if(A===$)return new E;{const e=new E(4);ci(e).setUint32(0,A,!0);let t=4;for(;t>1&&0===e[t-1];)t--;return e.subarray(0,t)}}function ei({compressedSize:A,uncompressedSize:e,offset:t,diskNumberStart:g,zip64UncompressedSize:i,zip64CompressedSize:r,zip64Offset:o,zip64DiskNumberStart:a,rawExtraFieldZip64:n}){const B=ci(n);let c=4;i&&(ni(B,c,s(e)),c+=8),r&&(ni(B,c,s(A)),c+=8),o&&(ni(B,c,s(t)),c+=8),a&&ai(B,c,g)}async function ti(A,e){const{writable:t}=A,g=t.getWriter();try{await g.ready,A.size+=Ii(e),await g.write(e)}finally{g.releaseLock()}}function gi(A){if(A)return(s(A.getTime())+s(116444736e5))*s(1e4)}function ii(A,e,t,g){const i=e[t]===$?A.options[t]:e[t];return i===$?g:i}function si(A){return A+5*(r.floor(A/16383)+1)}function ri(A,e,t){A.setUint8(e,t)}function oi(A,e,t){A.setUint16(e,t,!0)}function ai(A,e,t){A.setUint32(e,t,!0)}function ni(A,e,t){A.setBigUint64(e,t,!0)}function Bi(A,e,t){A.set(e,t)}function ci(A){return new w(A.buffer)}function Ii(...A){let e=0;return A.forEach(A=>A&&(e+=A.length)),e}function Ei({version:A,bitFlag:e,compressionMethod:t,uncompressedSize:g,compressedSize:i,lastModDate:s,rawFilename:r,zip64CompressedSize:o,zip64UncompressedSize:a,extraFieldLength:n}){const B=new E(26),c=ci(B);oi(c,0,A),oi(c,2,e),oi(c,4,t);const I=new C(1),l=ci(I);oi(l,0,(s.getHours()<<6|s.getMinutes())<<5|s.getSeconds()/2),oi(l,2,(s.getFullYear()-1980<<4|s.getMonth()+1)<<5|s.getDate());const w=I[0];return ai(c,6,w),(o||i!==$)&&ai(c,14,o?G:i),(a||g!==$)&&ai(c,18,a?G:g),oi(c,22,Ii(r)),oi(c,24,n),{headerArray:B,headerView:c,rawLastModDate:w}}function li(A,e,t,g,i){let s=0;return e&&(s|=J),t&&(s|=8),8!=i&&9!=i||(0>A||A>3||(s|=6),A>3&&5>=A&&(s|=4),9==A&&(s|=2)),g&&(s|=1),s}try{aA({baseURI:void 0===Q&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===Q?location.href:b&&"SCRIPT"===b.tagName.toUpperCase()&&b.src||new c("zip-legacy.min.js",Q.baseURI).href})}catch{}aA({workerURI:A=>{const e="text/javascript",t=(A=>{A=(A=>{const e=(A=(A+"").replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let g=0;e>g;g+=4){const e=BA.indexOf(A[g])<<18|BA.indexOf(A[g+1])<<12|(63&BA.indexOf(A[g+2]))<<6|63&BA.indexOf(A[g+3]);t.push(e>>16&255),"="!==A[g+2]&&t.push(e>>8&255),"="!==A[g+3]&&t.push(255&e)}return new E(t)})(A);let e=new E(1024),t=0;for(let i=0;i<A.length;){const s=A[i++];if(128&s){const r=3+(127&s),o=A[i++]<<8|A[i++],a=t-o;g(t+r);for(let A=0;r>A;A++)e[t++]=e[a+A]}else{const r=s;g(t+r);for(let g=0;r>g&&i<A.length;g++)e[t++]=A[i++]}}return(A=>{let e="";const t=A.length;let g=0;for(;t>g+2;g+=3){const t=A[g]<<16|A[g+1]<<8|A[g+2];e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+BA[63&t]}const i=t-g;if(1===i){const t=A[g]<<16;e+=BA[t>>18&63]+BA[t>>12&63]+"=="}else if(2===i){const t=A[g]<<16|A[g+1]<<8;e+=BA[t>>18&63]+BA[t>>12&63]+BA[t>>6&63]+"="}return e})(new E(e.buffer.slice(0,t)));function g(A){if(e.length<A){let g=2*e.length;for(;A>g;)g*=2;const i=new E(g);i.set(e.subarray(0,t)),e=i}}})("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");if(A){const A=atob(t),g=new d([A],{type:e});return c.createObjectURL(g)}return"data:"+e+";base64,"+t}}),A.BlobReader=Ve,A.BlobWriter=je,A.Data64URIReader=class extends Je{constructor(A){super();let e=A.length;for(;"="==A.charAt(e-1);)e--;const g=A.indexOf(",")+1;t.assign(this,{dataURI:A,dataStart:g,size:r.floor(.75*(e-g))})}readUint8Array(A,e){const{dataStart:t,dataURI:g}=this,i=new E(e),s=4*r.floor(A/3),o=atob(g.substring(s+t,4*r.ceil((A+e)/3)+t)),a=A-3*r.floor(s/4);let n=0;for(let A=a;a+e>A&&A<o.length;A++)i[A-a]=o.charCodeAt(A),n++;return n<i.length?i.subarray(0,n):i}},A.Data64URIWriter=class extends Pe{constructor(A){super(),t.assign(this,{data:"data:"+(A||"")+";base64,",pending:[]})}writeUint8Array(A){const e=this;let t=0,i=e.pending;const s=e.pending.length;for(e.pending="",t=0;t<3*r.floor((s+A.length)/3)-s;t++)i+=g.fromCharCode(A[t]);for(;t<A.length;t++)e.pending+=g.fromCharCode(A[t]);i.length&&(i.length>2?e.data+=Y(i):e.pending+=i)}getData(){return this.data+Y(this.pending)}},A.ERR_BAD_FORMAT=og,A.ERR_CENTRAL_DIRECTORY_NOT_FOUND=Bg,A.ERR_DUPLICATED_NAME=zg,A.ERR_ENCRYPTED=Eg,A.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=ng,A.ERR_EOCDR_NOT_FOUND=ag,A.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=Ig,A.ERR_HTTP_RANGE=ze,A.ERR_INVALID_COMMENT=Rg,A.ERR_INVALID_ENCRYPTION_STRENGTH=Lg,A.ERR_INVALID_ENTRY_COMMENT=xg,A.ERR_INVALID_ENTRY_NAME=Ng,A.ERR_INVALID_EXTRAFIELD_DATA=Jg,A.ERR_INVALID_EXTRAFIELD_TYPE=Hg,A.ERR_INVALID_PASSWORD=QA,A.ERR_INVALID_SIGNATURE=DA,A.ERR_INVALID_UNCOMPRESSED_SIZE=oe,A.ERR_INVALID_VERSION=kg,A.ERR_LOCAL_FILE_HEADER_NOT_FOUND=cg,A.ERR_OVERLAPPING_ENTRY=dg,A.ERR_SPLIT_ZIP_FILE=wg,A.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Vg,A.ERR_UNSUPPORTED_COMPRESSION=Cg,A.ERR_UNSUPPORTED_ENCRYPTION=lg,A.ERR_UNSUPPORTED_FORMAT=Pg,A.ERR_ZIP_NOT_EMPTY=jg,A.HttpRangeReader=class extends ot{constructor(A,e={}){e.useRangeHeader=!0,super(A,e)}},A.HttpReader=ot,A.Reader=Je,A.SplitDataReader=at,A.SplitDataWriter=nt,A.TextReader=class extends Ve{constructor(A){super(new d([A],{type:"text/plain"}))}},A.TextWriter=class extends je{constructor(A){super(A),t.assign(this,{encoding:A,utf8:!A||"utf-8"==A.toLowerCase()})}async getData(){const{encoding:A,utf8:e}=this,g=await super.getData();if(g.text&&e)return g.text();{const e=new FileReader;return new h((i,s)=>{t.assign(e,{onload:({target:A})=>i(A.result),onerror:()=>s(e.error)}),e.readAsText(g,A)})}}},A.Uint8ArrayReader=class extends Je{constructor(A){super(),A=new E(A.buffer,A.byteOffset,A.byteLength),t.assign(this,{array:A,size:A.length})}readUint8Array(A,e){return this.array.slice(A,A+e)}},A.Uint8ArrayWriter=class extends Pe{constructor(A){super(),this.defaultBufferSize=A||262144}init(A=0){t.assign(this,{offset:0,array:new E(A>0?A:this.defaultBufferSize)}),super.init()}writeUint8Array(A){const e=this,t=e.offset+A.length;if(t>e.array.length){let A=e.array.length?2*e.array.length:e.defaultBufferSize;for(;t>A;)A*=2;const g=e.array;e.array=new E(A),e.array.set(g)}e.array.set(A,e.offset),e.offset+=A.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},A.Writer=Pe,A.ZipReader=Dg,A.ZipReaderStream=class{constructor(A={}){const{readable:e,writable:t}=new p,g=new Dg(e,A).getEntriesGenerator();this.readable=new m({async pull(A){const{done:e,value:t}=await g.next();if(e)return A.close();const i={...t,readable:(()=>{const{readable:A,writable:e}=new p;if(t.getData)return t.getData(e),A})()};delete i.getData,A.enqueue(i)}}),this.writable=t}},A.ZipWriter=$g,A.ZipWriterStream=class{constructor(A={}){const{readable:e,writable:t}=new p;this.readable=e,this.zipWriter=new $g(t,A)}transform(A){const{readable:e,writable:t}=new p({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(A,e),{readable:this.readable,writable:t}}writable(A){const{readable:e,writable:t}=new p;return this.zipWriter.add(A,e),t}close(A,e={}){return this.zipWriter.close(A,e)}},A.configure=aA,A.getMimeType=()=>"application/octet-stream",A.terminateWorkers=async()=>{await h.allSettled(be.map(A=>(Ke(A),A.terminate())))}});
|