@zip.js/zip.js 2.8.17 → 2.8.18
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 +25 -15
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core.js +25 -15
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-native.js +25 -15
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +25 -15
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +25 -15
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +25 -15
- package/dist/zip-native.min.js +1 -1
- package/dist/zip.js +25 -15
- package/dist/zip.min.js +1 -1
- package/index-native.cjs +25 -15
- package/index-native.min.js +1 -1
- package/index.cjs +25 -15
- package/index.d.ts +7 -0
- package/index.min.js +1 -1
- package/lib/core/codec-worker.js +16 -5
- package/lib/core/options.js +2 -0
- package/lib/core/zip-writer.js +10 -11
- package/package.json +3 -3
package/deno.json
CHANGED
package/dist/zip-core.js
CHANGED
|
@@ -1962,6 +1962,8 @@
|
|
|
1962
1962
|
*/
|
|
1963
1963
|
|
|
1964
1964
|
|
|
1965
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
1966
|
+
|
|
1965
1967
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
1966
1968
|
let transferStreamsSupported = true;
|
|
1967
1969
|
let initModule = () => { };
|
|
@@ -2170,11 +2172,8 @@
|
|
|
2170
2172
|
return { writable, closed };
|
|
2171
2173
|
}
|
|
2172
2174
|
|
|
2173
|
-
function getWebWorker(url, baseURI, workerData, isModuleType
|
|
2175
|
+
function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
|
|
2174
2176
|
let worker, resolvedURI, resolvedOptions;
|
|
2175
|
-
if (isModuleType) {
|
|
2176
|
-
resolvedOptions = { type: "module" };
|
|
2177
|
-
}
|
|
2178
2177
|
if (webWorkerURI === UNDEFINED_VALUE) {
|
|
2179
2178
|
// deno-lint-ignore valid-typeof
|
|
2180
2179
|
const isFunctionURI = typeof url == FUNCTION_TYPE;
|
|
@@ -2186,6 +2185,12 @@
|
|
|
2186
2185
|
const isDataURI = resolvedURI.startsWith("data:");
|
|
2187
2186
|
const isBlobURI = resolvedURI.startsWith("blob:");
|
|
2188
2187
|
if (isDataURI || isBlobURI) {
|
|
2188
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2189
|
+
isModuleType = false;
|
|
2190
|
+
}
|
|
2191
|
+
if (isModuleType) {
|
|
2192
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2193
|
+
}
|
|
2189
2194
|
try {
|
|
2190
2195
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2191
2196
|
} catch (error) {
|
|
@@ -2205,6 +2210,12 @@
|
|
|
2205
2210
|
}
|
|
2206
2211
|
}
|
|
2207
2212
|
} else {
|
|
2213
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2214
|
+
isModuleType = true;
|
|
2215
|
+
}
|
|
2216
|
+
if (isModuleType) {
|
|
2217
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2218
|
+
}
|
|
2208
2219
|
try {
|
|
2209
2220
|
resolvedURI = new URL(resolvedURI, baseURI);
|
|
2210
2221
|
} catch {
|
|
@@ -2214,7 +2225,7 @@
|
|
|
2214
2225
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2215
2226
|
} catch (error) {
|
|
2216
2227
|
if (!isModuleType) {
|
|
2217
|
-
return getWebWorker(url, baseURI, workerData,
|
|
2228
|
+
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
2218
2229
|
} else {
|
|
2219
2230
|
throw error;
|
|
2220
2231
|
}
|
|
@@ -4888,7 +4899,6 @@
|
|
|
4888
4899
|
let writingBufferedEntryData;
|
|
4889
4900
|
let writingEntryData;
|
|
4890
4901
|
let fileWriter;
|
|
4891
|
-
let blobPromise;
|
|
4892
4902
|
files.set(name, fileEntry);
|
|
4893
4903
|
try {
|
|
4894
4904
|
let lockPreviousFileEntry;
|
|
@@ -4897,7 +4907,7 @@
|
|
|
4897
4907
|
requestLockCurrentFileEntry();
|
|
4898
4908
|
}
|
|
4899
4909
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
4900
|
-
fileWriter = new TransformStream();
|
|
4910
|
+
fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
|
|
4901
4911
|
fileWriter.size = 0;
|
|
4902
4912
|
bufferedWrite = true;
|
|
4903
4913
|
zipWriter.bufferedWrites++;
|
|
@@ -4928,20 +4938,20 @@
|
|
|
4928
4938
|
await skipDiskIfNeeded(writable);
|
|
4929
4939
|
}
|
|
4930
4940
|
const { diskNumber } = writer;
|
|
4931
|
-
writingEntryData = true;
|
|
4932
4941
|
fileEntry.diskNumberStart = diskNumber;
|
|
4933
|
-
if (bufferedWrite) {
|
|
4934
|
-
|
|
4935
|
-
} else {
|
|
4942
|
+
if (!bufferedWrite) {
|
|
4943
|
+
writingEntryData = true;
|
|
4936
4944
|
await writeData(fileWriter, localHeaderArray);
|
|
4937
4945
|
}
|
|
4938
4946
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
4939
4947
|
const { zip64 } = fileEntry;
|
|
4940
|
-
|
|
4948
|
+
if (!bufferedWrite) {
|
|
4949
|
+
writingEntryData = false;
|
|
4950
|
+
}
|
|
4941
4951
|
files.set(name, fileEntry);
|
|
4942
4952
|
fileEntry.filename = name;
|
|
4943
4953
|
if (bufferedWrite) {
|
|
4944
|
-
|
|
4954
|
+
await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
|
|
4945
4955
|
await requestLockWriter();
|
|
4946
4956
|
writingBufferedEntryData = true;
|
|
4947
4957
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
@@ -4952,7 +4962,7 @@
|
|
|
4952
4962
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
4953
4963
|
await skipDiskIfNeeded(writable);
|
|
4954
4964
|
await writeData(writer, localHeaderArray);
|
|
4955
|
-
await
|
|
4965
|
+
await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
4956
4966
|
writer.size += fileWriter.size;
|
|
4957
4967
|
writingBufferedEntryData = false;
|
|
4958
4968
|
} else {
|
|
@@ -4967,7 +4977,7 @@
|
|
|
4967
4977
|
zipWriter.offset += fileEntry.size;
|
|
4968
4978
|
return fileEntry;
|
|
4969
4979
|
} catch (error) {
|
|
4970
|
-
if (
|
|
4980
|
+
if (writingBufferedEntryData || writingEntryData) {
|
|
4971
4981
|
zipWriter.hasCorruptedEntries = true;
|
|
4972
4982
|
if (error) {
|
|
4973
4983
|
try {
|
package/dist/zip-core.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:f,Uint8Array:p,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:E,TransformStream:F,ReadableStream:R,WritableStream:k,CompressionStream:D,DecompressionStream:_,navigator:A,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var U=void 0!==S?S.currentScript:null;const v=4294967295,C=65535,I=255,N=67324752,O=134695760,W=O,M=33639248,L=101010256,P=101075792,Z=117853008,H=22,V=21589,B=2048,q=16384,K=2048,j=1024,Y=512,G="/",X=30,J=new o(2107,11,31),Q=new o(1980,0,1),$=void 0,ee="undefined",te="function";let re=2;try{typeof A!=ee&&A.hardwareConcurrency&&(re=A.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof _!=ee&&_},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,useCompressionStream:a,useWebWorkers:i,CompressionStream:o,DecompressionStream:c,CompressionStreamZlib:l,DecompressionStreamZlib:d,workerURI:u,wasmURI:f}=e;ce("baseURI",t),ce("wasmURI",f),ce("workerURI",u),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("useCompressionStream",a),ce("useWebWorkers",i),ce("CompressionStream",o),ce("DecompressionStream",c),ce("CompressionStreamZlib",l),ce("DecompressionStreamZlib",d)}function ce(e,t){t!==$&&(ne[e]=t)}const le=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;le[e]=t}class de{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new p(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function fe(e){if(typeof b==ee){const t=new p((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const pe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=pe.getPartial(r);return 32===s?e.concat(t):pe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+pe.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=pe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=pe.getPartial(n);return s.push(pe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=pe.bitLength(e)/8,r=new p(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(pe.partial(8*(3&r),s)),t}}},he=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=we.utf8String.toBits(e));const r=t._buffer=pe.concat(t._buffer,e),s=t._length,n=t._length=s+pe.bitLength(e);if(n>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=pe.concat(t,[pe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},me={getRandomValues(e){const t=new h(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},ge={importKey:e=>new ge.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new f("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let p=0;const w=pe;for(t=we.bytes.toBits(t),l=1;(n||1)>p;l++){for(a=i=e.encrypt(w.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>p&&o<a.length;o++)u.setInt32(p,a[o]),p+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ye=typeof x!=ee&&typeof x.getRandomValues==te,be="Invalid password",ze="Invalid signature",Se="zipjs-abort-check-password";function xe(e){return ye?x.getRandomValues(e):me.getRandomValues(e)}const Ee=16,Fe={name:"PBKDF2"},Re=r.assign({hash:{name:"HMAC"}},Fe),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Fe),De=["deriveBits"],_e=[8,12,16],Ae=[16,24,32],Te=10,Ue=[0,0,0,0],ve=typeof x!=ee,Ce=ve&&x.subtle,Ie=ve&&typeof Ce!=ee,Ne=we.bytes,Oe=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new f("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,f=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=f=f<<24^f>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new f("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,p,w,h=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],p=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=p,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},We=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=pe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return pe.clamp(t,n)}},Me=ge.hmacSha1;let Le=ve&&Ie&&typeof Ce.importKey==te,Pe=ve&&Ie&&typeof Ce.deriveBits==te;class Ze extends F{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),signed:s,strength:n-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Be(e,t,r,je(s,0,_e[t])),a=je(s,_e[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new f(be)})(r,n,s,je(e,0,_e[n]+2)),e=je(e,_e[n]+2),a?t.error(new f(Se)):i()):await o;const c=new p(e.length-Te-(e.length-Te)%Ee);t.enqueue(Ve(r,e,c,0,Te,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=je(n,0,n.length-Te),o=je(n,n.length-Te);let c=new p;if(i.length){const e=Ge(Ne,i);s.update(e);const t=r.update(e);c=Ye(Ne,t)}if(t){const e=je(Ye(Ne,s.digest()),0,Te);for(let t=0;Te>t;t++)if(e[t]!=o[t])throw new f(ze)}e.enqueue(c)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),strength:s-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new p;s?(o=await(async(e,t,r)=>{const s=xe(new p(_e[t]));return Ke(s,await Be(e,t,r,s))})(r,n,s),a()):await i;const c=new p(o.length+e.length-e.length%Ee);c.set(o,0),t.enqueue(Ve(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new p;if(s.length){const e=t.update(Ge(Ne,s));r.update(e),i=Ye(Ne,e)}n.signature=Ye(Ne,r.digest()).slice(0,Te),e.enqueue(Ke(i,n.signature))}}}),n=this}}function Ve(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=Ke(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new p(t)).set(r,0)}return e})(r,l-l%Ee)),d=0;l-Ee>=d;d+=Ee){const e=Ge(Ne,je(t,d,d+Ee));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Ye(Ne,n),d+s)}return e.pending=je(t,d),r}async function Be(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!Le)return ge.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return Le=!1,ge.importKey(t)}})(0,n,Re,0,De),o=await(async(e,t,r)=>{if(!Pe)return ge.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Pe=!1,ge.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new p(o),l=Ge(Ne,je(c,0,Ae[s])),d=Ge(Ne,je(c,Ae[s],2*Ae[s])),u=je(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new We(new Oe(l),t.from(Ue)),hmac:new Me(d)}),u}function qe(e,t){return t===$?fe(e):t}function Ke(e,t){let r=e;return e.length+t.length&&(r=new p(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function je(e,t,r){return e.subarray(t,r)}function Ye(e,t){return e.fromBits(t)}function Ge(e,t){return e.toBits(t)}class Xe extends F{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;if(r.password){const t=Qe(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new f(be);e=e.subarray(12)}s?t.error(new f(Se)):t.enqueue(Qe(r,e))}})}}class Je extends F{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=xe(new p(12));t[11]=r.passwordVerification,s=new p(e.length+t.length),s.set($e(r,t),0),n=12}else s=new p(e.length),n=0;s.set($e(r,e),n),t.enqueue(s)}})}}function Qe(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,r[s]);return r}function $e(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,t[s]);return r}function et(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new de(s[0]),crcKey2:new de(s[2])});for(let r=0;r<t.length;r++)tt(e,t.charCodeAt(r))}function tt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=nt(i.imul(nt(s+st(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function rt(e){const t=2|e.keys[2];return st(i.imul(t,1^t)>>>8)}function st(e){return 255&e}function nt(e){return 4294967295&e}const at="Invalid uncompressed size";class it extends F{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,f,p=super.readable;a&&!o||!c||(u=new ue,p=dt(p,u)),n&&(p=lt(p,i,{level:l,chunkSize:t},s,r,s)),a&&(o?p=dt(p,new Je(e)):(f=new He(e),p=dt(p,f))),ct(d,p,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,p,w=super.readable;a&&(n?w=dt(w,new Xe(e)):(p=new Ze(e),w=dt(w,p))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(ze)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=dt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=dt(e,new n(o,r));else{if(!a)throw s;e=dt(e,new a(o,r))}}return e}function dt(e,t){return e.pipeThrough(t)}const ut="data",ft="close",pt="deflate",wt="inflate";class ht extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(pt)?a=it:n.startsWith(wt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==$&&s.outputSize>e.outputSize))throw new f(at)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class mt extends F{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new p(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}let gt,yt,bt,zt=!0;class St{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new mt(a.chunkSize)).pipeThrough(new xt(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),gt===$&&(gt=typeof T!=ee),(o&>?Rt:Ft)(e,a)}}class xt extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await Et(e,r)},async transform(e,s){n+=e.length,t&&await Et(t,n,r),s.enqueue(e)},async flush(){s&&await Et(s,n)}})}}async function Et(e,...t){try{await e(...t)}catch{}}function Ft(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new ht(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function Rt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=kt(e.workerURI,s,e)}catch{return gt=!1,Ft(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new k({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=Dt({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function kt(e,t,s,n=!1,a=!0){let i,o,c;if(n&&(c={type:"module"}),yt===$){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d)try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return kt(e,t,s,n,!1);if(n)throw a;return kt(e,t,s,!0,!1)}else{try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return kt(e,t,s,!0,a)}}yt=o,bt=c}else i=new T(yt,bt);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:w}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new f(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),h(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();Dt({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new p(n)),Dt({type:"ack",messageId:a},t)),s==ft&&h(null,i)}}catch(o){Dt({type:ft,messageId:a},t),h(o)}function h(e,t){e?u(e):d(t),l&&l.releaseLock(),w()}})(e,s)),i}function Dt(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&zt?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{zt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let _t=[];const At=[];let Tt=0;async function Ut(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:f}=s;t.transferStreams=a||a===$;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(i||i===$&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:$,r.useCompressionStream=o||o===$&&s.useCompressionStream,(await(async()=>{const r=_t.find(e=>!e.busy);if(r)return vt(r),new St(r,e,t,w);if(_t.length<f){const r={indexWorker:Tt};return Tt++,_t.push(r),new St(r,e,t,w)}return new y(r=>At.push({resolve:r,stream:e,workerOptions:t}))})()).run();function w(e){if(At.length){const[{resolve:t,stream:r,workerOptions:s}]=At.splice(0,1);t(new St(e,r,s,w))}else e.worker?(vt(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{_t=_t.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):_t=_t.filter(t=>t!=e)}}function vt(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Ct="HTTP error ",It="HTTP Range not supported",Nt="Range",Ot="GET",Wt="bytes",Mt=65536,Lt="writable";class Pt{constructor(){this.size=0}init(){this.initialized=!0}}class Zt extends Pt{get readable(){const e=this,{chunkSize:t=Mt}=e,r=new R({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===$?t:i.min(t,a-c),d=await dr(e,n+c,l,o);s.enqueue(d),c+t>a||a===$&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class Ht extends Pt{constructor(){super();const e=this,t=new k({write(t){if(!e.initialized)throw new f("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Lt,{get:()=>t})}writeUint8Array(){}}class Vt extends Zt{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new p(a)}}class Bt extends Pt{constructor(e){super();const t=new F,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,Lt,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class qt extends Zt{constructor(e,t){super(),jt(this,e,t)}async init(){await Yt(this,rr,Qt),super.init()}readUint8Array(e,t){return Gt(this,e,t,rr,Qt)}}class Kt extends Zt{constructor(e,t){super(),jt(this,e,t)}async init(){await Yt(this,sr,$t),super.init()}readUint8Array(e,t){return Gt(this,e,t,sr,$t)}}function jt(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function Yt(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Ot,e,Xt(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Wt))throw new f(It);{let a;c&&(e.eocdCache=new p(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===$?await tr(e,t,r):e.size=a}}else await tr(e,t,r)}async function Gt(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(Ot,e,Xt(e,t,r));if(206!=n.status)throw new f(It);return new p(await n.arrayBuffer())}return new p}{const{data:s}=e;return s||await n(e,l),new p(e.data.subarray(t,t+r))}}function Xt(e,t=0,s=1){return r.assign({},Jt(e),{[Nt]:Wt+"="+(0>t?t:t+"-"+(t+s-1))})}function Jt({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function Qt(e){await er(e,rr)}async function $t(e){await er(e,sr)}async function er(e,t){const r=await t(Ot,e,Jt(e));e.data=new p(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function tr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Jt(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function rr(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new f(It):new f(Ct+(a.statusText||a.status))}function sr(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new f(It):new f(Ct+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new f("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class nr extends Zt{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Kt(e,t):new qt(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class ar extends Zt{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new p(t);const o=await dr(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await dr(l,c,t)}else a=new p;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class ir extends Pt{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new k({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new f("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await lr(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,Lt,{get:()=>o})}}class or{constructor(e){return t.isArray(e)&&(e=new ar(e)),e instanceof R&&(e={readable:e}),e}}class cr{constructor(e){return e.writable===$&&typeof e.next==te&&(e=new ir(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof ir||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function lr(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function dr(e,t,r,s){return e.readUint8Array(t,r,s)}const ur="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function fr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=ur[e[r]];return t}})(e):new z(t).decode(e)}const pr="filename",wr="rawFilename",hr="comment",mr="rawComment",gr="uncompressedSize",yr="compressedSize",br="offset",zr="diskNumberStart",Sr="lastModDate",xr="rawLastModDate",Er="lastAccessDate",Fr="creationDate",Rr="rawCreationDate",kr="internalFileAttributes",Dr="externalFileAttributes",_r="msdosAttributesRaw",Ar="msdosAttributes",Tr="msDosCompatible",Ur="zip64",vr="encrypted",Cr="version",Ir="versionMadeBy",Nr="zipCrypto",Or="directory",Wr="executable",Mr="compressionMethod",Lr="signature",Pr="extraField",Zr="unixMode",Hr="setuid",Vr="setgid",Br="sticky",qr=[pr,wr,gr,yr,Sr,xr,hr,mr,Er,Fr,Rr,br,zr,kr,Dr,_r,Ar,Tr,Ur,vr,Cr,Ir,Nr,Or,Wr,Mr,Lr,Pr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Zr,Hr,Vr,Br,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Kr{constructor(e){qr.forEach(t=>this[t]=e[t])}}const jr="password",Yr="rawPassword",Gr="passThrough",Xr="signal",Jr="useWebWorkers",Qr="useCompressionStream",$r="preventClose",es="supportZip64SplitFile",ts="offset",rs="usdz",ss="File format is not recognized",ns="End of central directory not found",as="End of Zip64 central directory locator not found",is="Central directory header not found",os="Local file header not found",cs="Zip64 extra field not found",ls="File contains encrypted entry",ds="Encryption method not supported",us="Compression method not supported",fs="Split zip file",ps="Overlapping entry found",ws="utf-8",hs="cp437",ms=[[gr,v],[yr,v],[br,v],[zr,C]],gs={[C]:{getValue:Ts,bytes:4},[v]:{getValue:Us,bytes:8}};class ys{constructor(e,t={}){r.assign(this,{reader:new or(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await lr(s),s.size!==$&&s.readUint8Array||(s=new Vt(await new d(s.readable).blob()),await lr(s)),s.size<H)throw new f(ss);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new p(4);var n;return n=t,vs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await dr(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,L,s.size);if(!a)throw Ts(vs(await dr(s,0,4)))==O?new f(fs):new f(ns);const o=vs(a);let c=Ts(o,12),l=Ts(o,16);const u=a.offset,w=As(o,20),h=u+H+w;let m=As(o,4);const g=s.lastDiskNumber||0;let b=As(o,6),z=As(o,8),S=0,x=0;if(l==v||c==v||z==C||b==C){const e=vs(await dr(s,a.offset-20,20));if(Ts(e,0)==Z){l=Us(e,8);let t=await dr(s,l,56,-1),r=vs(t);const n=a.offset-20-56;if(Ts(r,0)!=P&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await dr(s,l,56,-1),r=vs(t)}if(Ts(r,0)!=P)throw new f(as);m==C&&(m=Ts(r,16)),b==C&&(b=Ts(r,20)),z==C&&(z=Us(r,32)),c==v&&(c=Us(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new f(fs);if(0>l)throw new f(ss);let E=0,R=await dr(s,l,c,b),k=vs(R);if(c){const e=a.offset-c;if(Ts(k,E)!=M&&l!=e){const t=l;l=e,l>t&&(S+=l-t),R=await dr(s,l,c,b),k=vs(R)}}const D=a.offset-l-(s.lastDiskOffset||0);if(c==D||0>D||(c=D,R=await dr(s,l,c,b),k=vs(R)),0>l||l>=s.size)throw new f(ss);const _=Rs(t,e,"filenameEncoding"),A=Rs(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new bs(s,n,t.options);if(Ts(k,E)!=M)throw new f(is);zs(o,k,E+6);const c=!!o.bitFlag.languageEncodingFlag,l=E+46,u=l+o.filenameLength,p=u+o.extraFieldLength,w=As(k,E+4),h=!(w>>8),m=w>>8==3,g=R.subarray(l,u),b=As(k,E+32),D=p+b,T=R.subarray(p,D),U=c,v=c,N=Ts(k,E+38),O=N&I,W={readOnly:!!(1&O),hidden:!!(2&O),system:!!(4&O),directory:!!(16&O),archive:!!(32&O)},L=Ts(k,E+42)+S,P=Rs(t,e,"decodeText")||fr,Z=U?ws:_||hs,H=v?ws:A||hs;let V=P(g,Z);V===$&&(V=fr(g,Z));let B=P(T,H);B===$&&(B=fr(T,H)),r.assign(o,{versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:b,offset:L,diskNumberStart:As(k,E+34),internalFileAttributes:As(k,E+36),externalFileAttributes:N,msdosAttributesRaw:O,msdosAttributes:W,rawFilename:g,filenameUTF8:U,commentUTF8:v,rawExtraField:R.subarray(u,p),rawComment:T,filename:V,comment:B}),x=i.max(L,x),Ss(o,o,k,E+6);const X=o.externalFileAttributes>>16&C;o.unixMode===$&&16877&X&&(o.unixMode=X);const J=!!(o.unixMode&K),Q=!!(o.unixMode&j),ee=!!(o.unixMode&Y),te=o.unixMode!==$?!!(73&o.unixMode):m&&!!(73&X),re=o.unixMode!==$&&(61440&o.unixMode)==q,se=(61440&X)==q;r.assign(o,{setuid:J,setgid:Q,sticky:ee,unixExternalUpper:X,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||h&&W.directory||V.endsWith(G)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new Kr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},E=D;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new Kr(o))}catch{}yield ne}const T=Rs(t,e,"extractPrependedData"),U=Rs(t,e,"extractAppendedData");return T&&(t.prependedData=x>0?await dr(s,0,x):new p),t.comment=w?await dr(s,u+H,w):new p,U&&(t.appendedData=h<s.size?await dr(s,h,s.size-h):new p),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class bs{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:w,bitFlag:h,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=h,S=t.localDirectory={},x=vs(await dr(i,o,X,c));let E=Rs(a,n,jr),F=Rs(a,n,Yr);const R=Rs(a,n,Gr);if(E=E&&E.length&&E,F=F&&F.length&&F,l&&99!=l.originalCompressionMethod)throw new f(us);if(0!=u&&8!=u&&9!=u&&!R)throw new f(us);if(Ts(x,0)!=N)throw new f(os);zs(S,x,4);const{extraFieldLength:D,filenameLength:_,lastAccessDate:A,creationDate:T}=S;S.rawExtraField=D?await dr(i,o+X+_,D,c):new p,Ss(a,S,x,4,!0),r.assign(t,{lastAccessDate:A,creationDate:T});const U=a.encrypted&&S.encrypted&&!R,v=U&&!l;if(R||(t.zipCrypto=v),U){if(!v&&l.strength===$)throw new f(ds);if(!E&&!F)throw new f(ls)}const C=o+X+_+D,O=b,M=i.readable;r.assign(M,{diskNumberStart:c,offset:C,size:O});const L=Rs(a,n,Xr),P=Rs(a,n,"checkPasswordOnly");let Z=Rs(a,n,"checkOverlappingEntry");const H=Rs(a,n,"checkOverlappingEntryOnly");H&&(Z=!0);const{onstart:V,onprogress:B,onend:q}=n,K=9==u;let j=Rs(a,n,Qr);K&&(j=!1);const Y={options:{codecType:wt,password:E,rawPassword:F,zipCrypto:v,encryptionStrength:l&&l.strength,signed:Rs(a,n,"checkSignature")&&!R,passwordVerification:v&&(z?g>>>8&I:m>>>24&I),outputSize:R?b:y,signature:m,compressed:0!=u&&!R,encrypted:a.encrypted&&!R,useWebWorkers:Rs(a,n,Jr),useCompressionStream:j,transferStreams:Rs(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:P},config:w,streamOptions:{signal:L,size:O,onstart:V,onprogress:B,onend:q}};let G;Z&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let p=0;if(c&&(p=l?20:12),p){const r=await dr(e,o+a,p+4,s);if(Ts(vs(r),0)==W){const e=Ts(vs(r),4);let s,o;l?(s=Us(vs(r),8),o=Us(vs(r),16)):(s=Ts(vs(r),8),o=Ts(vs(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(p+=4)}}const w={start:u+r,end:u+o+a+p,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&w.start>=e.start&&w.start<e.end){const t=new f(ps);throw t.overlappingEntry=e.fileEntry,t}d.push(w)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:C,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!H){P&&(e=new k),e=new cr(e),await lr(e,R?b:y),({writable:G}=e);const{outputSize:t}=await Ut({readable:M,writable:G},Y);if(e.size+=t,t!=(R?b:y))throw new f(at)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!P||t.message!=Se)throw t}finally{Rs(a,n,$r)||!G||G.locked||await G.getWriter().close()}return P||H?$:e.getData?e.getData():G}}function zs(e,t,s){const n=e.rawBitFlag=As(t,s+2),a=!(1&~n),i=Ts(t,s+6);r.assign(e,{encrypted:a,version:As(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&B)==B},rawLastModDate:i,lastModDate:ks(i),filenameLength:As(t,s+22),extraFieldLength:As(t,s+24)})}function Ss(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=vs(new p(i));let u=0;try{for(;u<i.length;){const e=As(d,u),t=As(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=As(s,n+4);r.assign(t,{signature:Ts(s,n+10),compressedSize:Ts(s,n+14),uncompressedSize:Ts(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=vs(e.data),s=ms.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=gs[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new f(cs)}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(xs(m,pr,wr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(xs(g,hr,mr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=vs(e.data),a=_s(n,4);r.assign(e,{vendorVersion:_s(n,0),vendorId:_s(n,2),strength:a,originalCompressionMethod:s,compressionMethod:As(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=vs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=As(s,a),r=As(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=vs(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:Ds(a),lastAccessDate:Ds(i),creationDate:Ds(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)Es(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(Es(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(V);S&&(((e,t,r)=>{const s=vs(e.data),n=_s(s,0),a=[],i=[];r?(1&~n||(a.push(Sr),i.push(xr)),2&~n||(a.push(Er),i.push("rawLastAccessDate")),4&~n||(a.push(Fr),i.push(Rr))):5>e.data.length||(a.push(Sr),i.push(xr));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=Ts(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function xs(e,t,s,n,a){const i=vs(e.data),o=new de;o.append(a[s]);const c=vs(new p(4));c.setUint32(0,o.get(),!0);const l=Ts(i,1);r.assign(e,{version:_s(i,0),[t]:fr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==Ts(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Es(e,t,s){try{const n=vs(new p(e.data));let a=0;const i=_s(n,a++),o=_s(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=Fs(c),d=_s(n,a++),u=e.data.subarray(a,a+d);a+=d;const f=Fs(u);let w=$;if(!s&&a+2<=e.data.length){const t=e.data;w=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:f,unixMode:w}),l!==$&&(t.uid=l),f!==$&&(t.gid=f),w!==$&&(t.unixMode=w)}catch{}}function Fs(e){const t=new p(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Rs(e,t,r){return t[r]===$?e.options[r]:t[r]}function ks(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function Ds(e){return new o(n(e/a(1e4)-a(116444736e5)))}function _s(e,t){return e.getUint8(t)}function As(e,t){return e.getUint16(t,!0)}function Ts(e,t){return e.getUint32(t,!0)}function Us(e,t){return n(e.getBigUint64(t,!0))}function vs(e){return new m(e.buffer)}const Cs="File already exists",Is="Zip file comment exceeds 64KB",Ns="File entry comment exceeds 64KB",Os="File entry name exceeds 64KB",Ws="Version exceeds 65535",Ms="The strength must equal 1, 2, or 3",Ls="Extra field type exceeds 65535",Ps="Extra field data exceeds 64KB",Zs="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Hs="Undefined uncompressed size",Vs="Zip file not empty",Bs=new p([7,0,2,0,65,69,3,0,0]),qs="infozip",Ks="unix";let js=0;const Ys=[];class Gs{constructor(e,t={}){const s=(e=new cr(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[ts]===$?e.size||e.writable.size||0:t[ts],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new f(Vs);e=new or(e);const t=new ys(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:f,diskNumber:w,zip64:h}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=c;m=m||new p,g=g||new p,y=y||new p,b=b||new p,z=e.rawExtraFieldUnix||new p,S=S||new p;const R=ln(m,g,y,b,z,S),k=h&&d>v,D=h&&u>v,{headerArray:_,headerView:A}=dn({version:t,bitFlag:un(x,E,F,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:D,zip64UncompressedSize:k,extraFieldLength:R});return r.assign(e,{zip64UncompressedSize:k,zip64CompressedSize:D,zip64Offset:h&&this.offset-f>v,zip64DiskNumberStart:h&&w>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:_,headerView:A}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:u}=c;let h;js<u.maxWorkers?js++:await new y(e=>Ys.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new f(Cs);return c.filenames.add(e),h=(async(e,s,n,c)=>{s=s.trim();let l=en(e,c,Tr),u=en(e,c,Ir,l?20:768);const h=en(e,c,Wr),g=en(e,c,"uid"),b=en(e,c,"gid");let z=en(e,c,Zr);const S=en(e,c,"unixExtraFieldType");let x=en(e,c,Hr),E=en(e,c,Vr),R=en(e,c,Br);if(g!==$&&(0>g||g>v))throw new f("Invalid uid (must be integer 0..2^32-1)");if(b!==$&&(0>b||b>v))throw new f("Invalid gid (must be integer 0..2^32-1)");if(z!==$&&(0>z||z>C))throw new f("Invalid UNIX mode (must be integer 0..65535)");if(S!==$&&S!==qs&&S!==Ks)throw new f("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let k=en(e,c,_r),D=en(e,c,Ar);const _=k!==$||D!==$;if(g!==$||b!==$||z!==$||S?(l=!1,u=u&C|768):_&&(l=!0,u&=I),k!==$&&(0>k||k>I))throw new f("Invalid msdosAttributesRaw (must be integer 0..255)");if(D&&"object"!=typeof D)throw new f("Invalid msdosAttributes (must be an object with boolean flags)");if(u>C)throw new f(Ws);let A=en(e,c,Dr,0);!c[Or]&&s.endsWith(G)&&(c[Or]=!0);const T=en(e,c,Or);let U;T?(s.endsWith(G)||(s+=G),0===A&&(A=16,l||(A|=16877<<16))):l||0!==A||(A=h?493<<16:27525120),l||(U=A>>16&C,z=z===$?U:z&C,x?z|=K:x=!!(z&K),E?z|=j:E=!!(z&j),R?z|=Y:R=!!(z&Y),T&&(z|=q),A=(z&C)<<16|A&I),({msdosAttributesRaw:k,msdosAttributes:D}=((e,t)=>{if(e!==$)e&=I;else if(t!==$){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&I}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(k,D)),_&&(A=A&v|k&I);const M=en(e,c,"encodeText",fe);let L=M(s);if(L===$&&(L=fe(s)),ln(L)>C)throw new f(Os);const P=c[hr]||"";let Z=M(P);if(Z===$&&(Z=fe(P)),ln(Z)>C)throw new f(Ns);const H=en(e,c,Cr,20);if(H>C)throw new f(Ws);const B=en(e,c,Sr,new o),ee=en(e,c,Er),te=en(e,c,Fr),re=en(e,c,kr,0),se=en(e,c,Gr);let ne,ae;se||(ne=en(e,c,jr),ae=en(e,c,Yr));const oe=en(e,c,"encryptionStrength",3),ce=en(e,c,Nr),le=en(e,c,"extendedTimestamp",!0),de=en(e,c,"keepOrder",!0),ue=en(e,c,Jr),pe=en(e,c,"bufferedWrite"),we=en(e,c,"dataDescriptorSignature",!1),he=en(e,c,Xr),me=en(e,c,"useUnicodeFileNames",!0),ge=en(e,c,Mr);let ye=en(e,c,"level"),be=en(e,c,Qr),ze=en(e,c,"dataDescriptor");pe&&ze===$&&(ze=!1),(ze===$||ce)&&(ze=!0),ye!==$&&6!=ye&&(be=!1),be||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(ye=0);let Se=en(e,c,Ur);if(!ce&&(ne!==$||ae!==$)&&(1>oe||oe>3))throw new f(Ms);let xe=new p;const Ee=c[Pr];if(Ee){let e=0,t=0;Ee.forEach(t=>e+=4+ln(t)),xe=new p(e),Ee.forEach((e,r)=>{if(r>C)throw new f(Ls);if(ln(e)>C)throw new f(Ps);on(xe,new w([r]),t),on(xe,new w([ln(e)]),t+2),on(xe,e,t+4),t+=4+ln(e)})}let Fe=0,Re=0,ke=0;if(se&&(ke=c[gr],ke===$))throw new f(Hs);const De=!0===Se;n&&(n=new or(n),await lr(n),se?(c.uncompressedSize=ke,Fe=tn(ke)):n.size===$?(ze=!0,(Se||Se===$)&&(Se=!0,ke=Fe=4294967296)):(c.uncompressedSize=ke=n.size,Fe=tn(ke)));const{diskOffset:_e,diskNumber:Ae,maxSize:Te}=e.writer,Ue=De||ke>v,ve=De||Fe>v,Ce=De||e.offset+e.pendingEntriesSize-_e>v,Ie=en(e,c,es,!0)&&De||Ae+i.ceil(e.pendingEntriesSize/Te)>C;if(Ce||Ue||ve||Ie){if(!1===Se||!de)throw new f(Zs);Se=!0}Se=Se||!1;const Ne=en(e,c,vr),Oe=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:f,rawExtraField:w,encryptionStrength:h,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:E,uncompressedSize:F,offset:R,diskNumberStart:k}=e;let{version:D,compressionMethod:_}=e;const A=!f&&(o>0||o===$&&0!==_);let T,U;const v=y||!A,I=c&&(e.bufferedWrite||!z&&!S||v);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),E&&(e+=4),T=new p(e);const r=cn(T);U=new p(t);const s=cn(U);if(sn(r,0,1),sn(r,2,ln(T)-4),sn(s,0,1),sn(s,2,ln(U)-4),I){const e=cn(T),t=cn(U);let r=4,s=4;z&&(an(e,r,a(F)),r+=8,an(t,s,a(F)),s+=8),S&&v&&(an(e,r,a(F)),r+=8,an(t,s,a(F)),s+=8),x&&(an(e,r,a(R)),r+=8),E&&(nn(e,r,k),r+=4),4==s&&(U=new p)}}else T=new p,U=new p;let O,W,M,L,P;if(b&&!l){O=new p(ln(Bs)+2);const e=cn(O);sn(e,0,39169),on(O,Bs,2),rn(e,8,h)}else O=new p;if(g){M=new p(9+(s?4:0)+(n?4:0));const e=cn(M);sn(e,0,V),sn(e,2,ln(M)-4),L=1+(s?2:0)+(n?4:0),rn(e,4,L);let t=5;nn(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(nn(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&nn(e,t,i.floor(n.getTime()/1e3));try{W=new p(36);const e=cn(W),t=$s(r);sn(e,0,10),sn(e,2,32),sn(e,8,1),sn(e,10,24),an(e,12,t),an(e,20,$s(s)||t),an(e,28,$s(n)||t)}catch{W=new p}}else W=M=new p;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===$&&r===$&&s===$)P=new p;else{const e=Xs(t),c=Xs(r);let l=new p;if(o==Ks&&s!==$){let e=s&C;n&&(e|=K),a&&(e|=j),i&&(e|=Y),l=new p(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;P=new p(4+d);const u=cn(P);sn(u,0,o==qs?30837:30805),sn(u,2,d),rn(u,4,1),rn(u,5,e.length);let f=6;on(P,e,f),f+=e.length,rn(u,f,c.length),f++,on(P,c,f),f+=c.length,on(P,l,f)}}catch{P=new p}_===$&&(_=A?8:0),c&&(D=D>45?D:45),b&&!l&&(D=D>51?D:51,O[9]=_,_=99);const Z=I?ln(U):0,H=Z+ln(O,M,W,P,w),{headerArray:B,headerView:q,rawLastModDate:G}=dn({version:D,bitFlag:un(o,d,u,b,_),compressionMethod:_,uncompressedSize:F,lastModDate:Q>r?Q:r>J?J:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:H});let ee=X;const te=new p(ee+ln(t)+H),re=cn(te);return nn(re,0,N),on(te,B,4),on(te,t,ee),ee+=ln(t),I&&on(te,U,ee),ee+=Z,on(te,O,ee),ee+=ln(O),on(te,M,ee),ee+=ln(M),on(te,W,ee),ee+=ln(W),on(te,P,ee),ee+=ln(P),on(te,w,ee),u&&(nn(re,18,0),nn(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:B,headerView:q,lastModDate:r,rawLastModDate:G,encrypted:b,compressed:A,version:D,compressionMethod:_,extraFieldExtendedTimestampFlag:L,rawExtraFieldZip64:T,localExtraFieldZip64Length:Z,rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:W,rawExtraFieldUnix:P,rawExtraFieldAES:O,extraFieldLength:H}})(c=r.assign({},c,{rawFilename:L,rawComment:Z,version:H,versionMadeBy:u,lastModDate:B,lastAccessDate:ee,creationDate:te,rawExtraField:xe,zip64:Se,zip64UncompressedSize:Ue,zip64CompressedSize:ve,zip64Offset:Ce,zip64DiskNumberStart:Ie,password:ne,rawPassword:ae,level:ye,useWebWorkers:ue,encryptionStrength:oe,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:pe,keepOrder:de,useUnicodeFileNames:me,dataDescriptor:ze,dataDescriptorSignature:we,signal:he,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:A,externalFileAttributes:A,useCompressionStream:be,passThrough:se,encrypted:!!(ne&&ln(ne)||ae&&ln(ae))||se&&Ne,signature:c[Lr],compressionMethod:ge,uncompressedSize:ke,offset:e.offset-_e,diskNumberStart:Ae,uid:g,gid:b,setuid:x,setgid:E,sticky:R,unixMode:z,msdosAttributesRaw:k,msdosAttributes:D,unixExternalUpper:U})),We=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new p,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new p(i),s=cn(n),r&&(a=4,nn(s,0,W))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Me=ln(Oe.localHeaderArray,We.dataDescriptorArray);let Le;Re=Me+Fe,e.options[rs]&&(Re+=Re+64),e.pendingEntriesSize+=Re;try{Le=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:u,dataDescriptor:w,signal:h}=o,{headerInfo:m}=i,g=e.options[rs],b=t.from(c.values()).pop();let z,S,x,E,R,k,D,_={};c.set(s,_);try{let t;u&&(t=b&&b.lock,_.lock=new y(e=>x=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&u)&&w||g?(k=l,await A()):(k=new F,k.size=0,z=!0,e.bufferedWrites++,await lr(l)),await lr(k);const{writable:S,diskOffset:U}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new p(4);nn(cn(t),0,O),await Qs(l,t),e.offset+=4}g&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=cn(s),i=64-(t+ln(s))%64;4>i&&(i+=64);const o=new p(i),c=cn(o);sn(c,0,6534),sn(c,2,i-2);const l=s;r.localHeaderArray=s=new p(ln(l)+i),on(s,l),on(s,o,ln(l)),a=cn(s),sn(a,28,n+i),e.metadataSize+=i})(i,e.offset-U);const{localHeaderView:C,localHeaderArray:N}=m;z||(await t,await T(S));const{diskNumber:W}=l;R=!0,_.diskNumberStart=W,z?D=new d(k.readable).blob():await Qs(k,N),_=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:f,headerView:p,lastModDate:w,rawLastModDate:h,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:E,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k}=l,{dataDescriptorArray:D}=d,{rawFilename:_,lastAccessDate:A,creationDate:T,password:U,rawPassword:v,level:C,zip64:N,zip64UncompressedSize:O,zip64CompressedSize:W,zip64Offset:M,zip64DiskNumberStart:L,zipCrypto:P,dataDescriptor:Z,directory:H,executable:V,versionMadeBy:B,rawComment:q,rawExtraField:K,useWebWorkers:j,onstart:Y,onprogress:G,onend:X,signal:J,encryptionStrength:Q,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe,useCompressionStream:we,passThrough:he}=c,me={lock:n,versionMadeBy:B,zip64:N,directory:!!H,executable:!!V,filenameUTF8:!0,rawFilename:_,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe};let{signature:ge,uncompressedSize:ye}=c,be=0;he||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:pt,level:C,rawPassword:v,password:U,encryptionStrength:Q,zipCrypto:m&&P,passwordVerification:m&&P&&h>>8&I,signed:!he,compressed:g&&!he,encrypted:m&&!he,useWebWorkers:j,useCompressionStream:we,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:Y,onprogress:G,onend:X}};try{const e=await Ut({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,he||(ye=e.inputSize,ge=e.signature)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:f}=n;d&&!o||e===$||(nn(l,10,e),c&&nn(u,f,e)),i?c&&(an(u,f+4,a(t)),an(u,f+12,a(r))):(nn(l,14,t),nn(l,18,r),c&&(nn(u,f+4,t),nn(u,f+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),Z&&await Qs(t,D),r.assign(me,{uncompressedSize:ye,compressedSize:be,lastModDate:w,rawLastModDate:h,creationDate:T,lastAccessDate:A,encrypted:m,zipCrypto:P,size:u+be,compressionMethod:b,version:y,headerArray:f,headerView:p,signature:ge,extraFieldExtendedTimestampFlag:E,zip64UncompressedSize:O,zip64CompressedSize:W,zip64Offset:M,zip64DiskNumberStart:L}),me})(n,k,_,i,e.config,o);const{zip64:M}=_;if(R=!1,c.set(s,_),_.filename=s,z){const[r]=await y.all([D,k.writable.getWriter().close(),t]);await A(),E=!0,_.diskNumberStart=l.diskNumber,_.offset=e.offset-l.diskOffset,M&&Js(_),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||nn(d,14,n),l||nn(d,18,i),c||nn(d,22,o)),r&&s){let t=X+ln(e)+4;c&&(an(d,t,a(o)),t+=8),l&&(an(d,t,a(i)),t+=8)}})(_,C,o),await T(S),await Qs(l,N),await r.stream().pipeTo(S,{preventClose:!0,preventAbort:!0,signal:h}),l.size+=k.size,E=!1}else _.offset=e.offset-U,M&&Js(_);if(_.offset>v&&!M)throw new f(Zs);return e.offset+=_.size,_}catch(t){if(z&&E||!z&&R){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}z?e.offset+=k.size:e.offset=k.size}throw c.delete(s),t}finally{z&&e.bufferedWrites--,x&&x(),S&&S()}async function A(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>S=()=>{e.writerLocked=!1,t()}),await t}async function T(e){ln(m.localHeaderArray)>l.availableSize&&(l.availableSize=0,await Qs(e,new p))}})(e,s,n,{headerInfo:Oe,dataDescriptorInfo:We,metadataSize:Me},c)}finally{e.pendingEntriesSize-=Re}return r.assign(Le,{name:s,comment:P,extraField:Ee}),new Kr(Le)})(c,e,s,n),l.add(h),await h}catch(t){throw c.filenames.delete(e),t}finally{l.delete(h);const e=Ys.shift();e?e():js--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new p,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,w=e.offset-c,h=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:f}=e;let w;if(l){w=new p(9);const e=cn(w);sn(e,0,V),sn(e,2,5),rn(e,4,d),nn(e,5,i.floor(f.getTime()/1e3))}else w=new p;e.rawExtraFieldExtendedTimestamp=w,u+=46+ln(t,n,r,s,a,o,w,c)}const m=new p(u),g=cn(m);await lr(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:f,rawExtraField:p,rawComment:w,versionMadeBy:h,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:E,zip64DiskNumberStart:F,zip64Offset:R,internalFileAttributes:k,externalFileAttributes:D,diskNumberStart:_,uncompressedSize:A,compressedSize:T}=r,U=ln(i,c,l,u,f,p);nn(g,d,M),sn(g,d+4,h),x||nn(z,18,A),E||nn(z,14,T),on(m,b,d+6);let I=d+X;if(sn(g,I,U),I+=2,sn(g,I,ln(w)),I+=2,sn(g,I,S&&F?C:_),I+=2,sn(g,I,k),I+=2,D&&nn(g,I,D),I+=4,nn(g,I,S&&R?v:t),I+=4,on(m,a,I),I+=ln(a),on(m,i,I),I+=ln(i),on(m,c,I),I+=ln(c),on(m,l,I),I+=ln(l),on(m,u,I),I+=ln(u),on(m,f,I),I+=ln(f),on(m,p,I),I+=ln(p),on(m,w,I),I+=ln(w),d-y>o.availableSize&&(o.availableSize=0,await Qs(o,m.slice(y,d)),y=d),d=I,s.onprogress)try{await s.onprogress(e+1,n.size,new Kr(r))}catch{}}await Qs(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=en(e,s,Ur);if(w>v||u>v||h>C||b>C){if(!1===S)throw new f(Zs);S=!0}const x=new p(S?98:H),E=cn(x);d=0,S&&(nn(E,0,P),an(E,4,a(44)),sn(E,12,45),sn(E,14,45),nn(E,16,b),nn(E,20,l),an(E,24,a(h)),an(E,32,a(h)),an(E,40,a(u)),an(E,48,a(w)),nn(E,56,Z),an(E,64,a(w)+a(u)),nn(E,72,b+1),en(e,s,es,!0)&&(b=C,l=C),h=C,w=v,u=v,d+=76),nn(E,d,L),sn(E,d+4,b),sn(E,d+6,l),sn(E,d+8,h),sn(E,d+10,h),nn(E,d+12,u),nn(E,d+16,w);const F=ln(r);if(F){if(F>C)throw new f(Is);sn(E,d+20,F)}await Qs(o,x),F&&await Qs(o,r)})(this,e,r),en(this,r,$r)||await o.getWriter().close(),n.getData?n.getData():o}}function Xs(e){if(e===$)return new p;{const t=new p(4);cn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Js({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=cn(l);let u=4;n&&(an(d,u,a(t)),u+=8),i&&(an(d,u,a(e)),u+=8),o&&(an(d,u,a(r)),u+=8),c&&nn(d,u,s)}async function Qs(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=ln(t),await s.write(t)}finally{s.releaseLock()}}function $s(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function en(e,t,r,s){const n=t[r]===$?e.options[r]:t[r];return n===$?s:n}function tn(e){return e+5*(i.floor(e/16383)+1)}function rn(e,t,r){e.setUint8(t,r)}function sn(e,t,r){e.setUint16(t,r,!0)}function nn(e,t,r){e.setUint32(t,r,!0)}function an(e,t,r){e.setBigUint64(t,r,!0)}function on(e,t,r){e.set(t,r)}function cn(e){return new m(e.buffer)}function ln(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function dn({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new p(26),u=cn(d);sn(u,0,e),sn(u,2,t),sn(u,4,r);const f=new h(1),w=cn(f);sn(w,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),sn(w,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=f[0];return nn(u,6,m),(o||n!==$)&&nn(u,14,o?v:n),(c||s!==$)&&nn(u,18,c?v:s),sn(u,22,ln(i)),sn(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function un(e,t,r,s,n){let a=0;return t&&(a|=B),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}try{oe({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:U&&"SCRIPT"===U.tagName.toUpperCase()&&U.src||new u("zip-core.min.js",S.baseURI).href})}catch{}e.BlobReader=Vt,e.BlobWriter=Bt,e.Data64URIReader=class extends Zt{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new p(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}},e.Data64URIWriter=class extends Ht{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=E(n):t.pending+=n)}getData(){return this.data+E(this.pending)}},e.ERR_BAD_FORMAT=ss,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=is,e.ERR_DUPLICATED_NAME=Cs,e.ERR_ENCRYPTED=ls,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=as,e.ERR_EOCDR_NOT_FOUND=ns,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=cs,e.ERR_HTTP_RANGE=It,e.ERR_INVALID_COMMENT=Is,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ms,e.ERR_INVALID_ENTRY_COMMENT=Ns,e.ERR_INVALID_ENTRY_NAME=Os,e.ERR_INVALID_EXTRAFIELD_DATA=Ps,e.ERR_INVALID_EXTRAFIELD_TYPE=Ls,e.ERR_INVALID_PASSWORD=be,e.ERR_INVALID_SIGNATURE=ze,e.ERR_INVALID_UNCOMPRESSED_SIZE=at,e.ERR_INVALID_VERSION=Ws,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=os,e.ERR_OVERLAPPING_ENTRY=ps,e.ERR_SPLIT_ZIP_FILE=fs,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Hs,e.ERR_UNSUPPORTED_COMPRESSION=us,e.ERR_UNSUPPORTED_ENCRYPTION=ds,e.ERR_UNSUPPORTED_FORMAT=Zs,e.ERR_ZIP_NOT_EMPTY=Vs,e.HttpRangeReader=class extends nr{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.HttpReader=nr,e.Reader=Zt,e.SplitDataReader=ar,e.SplitDataWriter=ir,e.TextReader=class extends Vt{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends Bt{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}},e.Uint8ArrayReader=class extends Zt{constructor(e){super(),e=new p(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends Ht{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new p(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new p(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=Ht,e.ZipReader=ys,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new ys(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return r.getData(t),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=Gs,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new Gs(r,e)}transform(e){const{readable:t,writable:r}=new F({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(e,t),{readable:this.readable,writable:r}}writable(e){const{readable:t,writable:r}=new F;return this.zipWriter.add(e,t),r}close(e,t={}){return this.zipWriter.close(e,t)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(_t.map(e=>(vt(e),e.terminate())))}});
|
|
1
|
+
((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).zip={})})(this,function(e){"use strict";const{Array:t,Object:r,String:s,Number:n,BigInt:a,Math:i,Date:o,Map:c,Set:l,Response:d,URL:u,Error:f,Uint8Array:p,Uint16Array:w,Uint32Array:h,DataView:m,Blob:g,Promise:y,TextEncoder:b,TextDecoder:z,document:S,crypto:x,btoa:E,TransformStream:F,ReadableStream:R,WritableStream:k,CompressionStream:D,DecompressionStream:_,navigator:A,Worker:T}="undefined"!=typeof globalThis?globalThis:this||self;var v=void 0!==S?S.currentScript:null;const U=4294967295,C=65535,I=255,N=67324752,W=134695760,M=W,O=33639248,L=101010256,P=101075792,Z=117853008,H=22,V=21589,B=2048,q=16384,K=2048,j=1024,Y=512,G="/",X=30,J=new o(2107,11,31),Q=new o(1980,0,1),$=void 0,ee="undefined",te="function";let re=2;try{typeof A!=ee&&A.hardwareConcurrency&&(re=A.hardwareConcurrency)}catch{}const se={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:re,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=ee&&D,DecompressionStream:typeof _!=ee&&_},ne=r.assign({},se);function ae(){return ne}function ie(e){return i.max(e.chunkSize,64)}function oe(e){const{baseURI:t,chunkSize:r,maxWorkers:s,terminateWorkerTimeout:n,useCompressionStream:a,useWebWorkers:i,CompressionStream:o,DecompressionStream:c,CompressionStreamZlib:l,DecompressionStreamZlib:d,workerURI:u,wasmURI:f}=e;ce("baseURI",t),ce("wasmURI",f),ce("workerURI",u),ce("chunkSize",r),ce("maxWorkers",s),ce("terminateWorkerTimeout",n),ce("useCompressionStream",a),ce("useWebWorkers",i),ce("CompressionStream",o),ce("DecompressionStream",c),ce("CompressionStreamZlib",l),ce("DecompressionStreamZlib",d)}function ce(e,t){t!==$&&(ne[e]=t)}const le=[];for(let e=0;256>e;e++){let t=e;for(let e=0;8>e;e++)1&t?t=t>>>1^3988292384:t>>>=1;le[e]=t}class de{constructor(e){this.crc=e||-1}append(e){let t=0|this.crc;for(let r=0,s=0|e.length;s>r;r++)t=t>>>8^le[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class ue extends F{constructor(){let e;const t=new de;super({transform(e,r){t.append(e),r.enqueue(e)},flush(){const r=new p(4);new m(r.buffer).setUint32(0,t.get()),e.value=r}}),e=this}}function fe(e){if(typeof b==ee){const t=new p((e=unescape(encodeURIComponent(e))).length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return t}return(new b).encode(e)}const pe={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=pe.getPartial(r);return 32===s?e.concat(t):pe._shiftRight(t,s,0|r,e.slice(0,e.length-1))},bitLength(e){const t=e.length;if(0===t)return 0;const r=e[t-1];return 32*(t-1)+pe.getPartial(r)},clamp(e,t){if(32*e.length<t)return e;const r=(e=e.slice(0,i.ceil(t/32))).length;return t&=31,r>0&&t&&(e[r-1]=pe.partial(t,e[r-1]&2147483648>>t-1,1)),e},partial:(e,t,r)=>32===e?t:(r?0|t:t<<32-e)+1099511627776*e,getPartial:e=>i.round(e/1099511627776)||32,_shiftRight(e,t,r,s){for(void 0===s&&(s=[]);t>=32;t-=32)s.push(r),r=0;if(0===t)return s.concat(e);for(let n=0;n<e.length;n++)s.push(r|e[n]>>>t),r=e[n]<<32-t;const n=e.length?e[e.length-1]:0,a=pe.getPartial(n);return s.push(pe.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},we={bytes:{fromBits(e){const t=pe.bitLength(e)/8,r=new p(t);let s;for(let n=0;t>n;n++)3&n||(s=e[n/4]),r[n]=s>>>24,s<<=8;return r},toBits(e){const t=[];let r,s=0;for(r=0;r<e.length;r++)s=s<<8|e[r],3&~r||(t.push(s),s=0);return 3&r&&t.push(pe.partial(8*(3&r),s)),t}}},he=class{constructor(e){const t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){const e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){const t=this;"string"==typeof e&&(e=we.utf8String.toBits(e));const r=t._buffer=pe.concat(t._buffer,e),s=t._length,n=t._length=s+pe.bitLength(e);if(n>9007199254740991)throw new f("Cannot hash more than 2^53 - 1 bits");const a=new h(r);let i=0;for(let e=t.blockSize+s-(t.blockSize+s&t.blockSize-1);n>=e;e+=t.blockSize)t._block(a.subarray(16*i,16*(i+1))),i+=1;return r.splice(0,16*i),t}finalize(){const e=this;let t=e._buffer;const r=e._h;t=pe.concat(t,[pe.partial(1,1)]);for(let e=t.length+2;15&e;e++)t.push(0);for(t.push(i.floor(e._length/4294967296)),t.push(0|e._length);t.length;)e._block(t.splice(0,16));return e.reset(),r}_f(e,t,r,s){return e>19?e>39?e>59?e>79?void 0:t^r^s:t&r|t&s|r&s:t^r^s:t&r|~t&s}_S(e,t){return t<<e|t>>>32-e}_block(e){const r=this,s=r._h,n=t(80);for(let t=0;16>t;t++)n[t]=e[t];let a=s[0],o=s[1],c=s[2],l=s[3],d=s[4];for(let e=0;79>=e;e++){16>e||(n[e]=r._S(1,n[e-3]^n[e-8]^n[e-14]^n[e-16]));const t=r._S(5,a)+r._f(e,o,c,l)+d+n[e]+r._key[i.floor(e/20)]|0;d=l,l=c,c=r._S(30,o),o=a,a=t}s[0]=s[0]+a|0,s[1]=s[1]+o|0,s[2]=s[2]+c|0,s[3]=s[3]+l|0,s[4]=s[4]+d|0}},me={getRandomValues(e){const t=new h(e.buffer),r=e=>{let t=987654321;const r=4294967295;return()=>(t=36969*(65535&t)+(t>>16)&r,(((t<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r)/4294967296+.5)*(i.random()>.5?1:-1))};for(let s,n=0;n<e.length;n+=4){const e=r(4294967296*(s||i.random()));s=987654071*e(),t[n/4]=4294967296*e()|0}return e}},ge={importKey:e=>new ge.hmacSha1(we.bytes.toBits(e)),pbkdf2(e,t,r,s){if(r=r||1e4,0>s||0>r)throw new f("invalid params to pbkdf2");const n=1+(s>>5)<<2;let a,i,o,c,l;const d=new ArrayBuffer(n),u=new m(d);let p=0;const w=pe;for(t=we.bytes.toBits(t),l=1;(n||1)>p;l++){for(a=i=e.encrypt(w.concat(t,[l])),o=1;r>o;o++)for(i=e.encrypt(i),c=0;c<i.length;c++)a[c]^=i[c];for(o=0;(n||1)>p&&o<a.length;o++)u.setInt32(p,a[o]),p+=4}return d.slice(0,s/8)},hmacSha1:class{constructor(e){const t=this,r=t._hash=he,s=[[],[]];t._baseHash=[new r,new r];const n=t._baseHash[0].blockSize/32;e.length>n&&(e=(new r).update(e).finalize());for(let t=0;n>t;t++)s[0][t]=909522486^e[t],s[1][t]=1549556828^e[t];t._baseHash[0].update(s[0]),t._baseHash[1].update(s[1]),t._resultHash=new r(t._baseHash[0])}reset(){const e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){this._updated=!0,this._resultHash.update(e)}digest(){const e=this,t=e._resultHash.finalize(),r=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),r}encrypt(e){if(this._updated)throw new f("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}}},ye=typeof x!=ee&&typeof x.getRandomValues==te,be="Invalid password",ze="Invalid signature",Se="zipjs-abort-check-password";function xe(e){return ye?x.getRandomValues(e):me.getRandomValues(e)}const Ee=16,Fe={name:"PBKDF2"},Re=r.assign({hash:{name:"HMAC"}},Fe),ke=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Fe),De=["deriveBits"],_e=[8,12,16],Ae=[16,24,32],Te=10,ve=[0,0,0,0],Ue=typeof x!=ee,Ce=Ue&&x.subtle,Ie=Ue&&typeof Ce!=ee,Ne=we.bytes,We=class{constructor(e){const t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();const r=t._tables[0][4],s=t._tables[1],n=e.length;let a,i,o,c=1;if(4!==n&&6!==n&&8!==n)throw new f("invalid aes key size");for(t._key=[i=e.slice(0),o=[]],a=n;4*n+28>a;a++){let e=i[a-1];(a%n===0||8===n&&a%n===4)&&(e=r[e>>>24]<<24^r[e>>16&255]<<16^r[e>>8&255]<<8^r[255&e],a%n===0&&(e=e<<8^e>>>24^c<<24,c=c<<1^283*(c>>7))),i[a]=i[a-n]^e}for(let e=0;a;e++,a--){const t=i[3&e?a:a-4];o[e]=4>=a||4>e?t:s[0][r[t>>>24]]^s[1][r[t>>16&255]]^s[2][r[t>>8&255]]^s[3][r[255&t]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){const e=this._tables[0],t=this._tables[1],r=e[4],s=t[4],n=[],a=[];let i,o,c,l;for(let e=0;256>e;e++)a[(n[e]=e<<1^283*(e>>7))^e]=e;for(let d=i=0;!r[d];d^=o||1,i=a[i]||1){let a=i^i<<1^i<<2^i<<3^i<<4;a=a>>8^255&a^99,r[d]=a,s[a]=d,l=n[c=n[o=n[d]]];let u=16843009*l^65537*c^257*o^16843008*d,f=257*n[a]^16843008*a;for(let r=0;4>r;r++)e[r][d]=f=f<<24^f>>>8,t[r][a]=u=u<<24^u>>>8}for(let r=0;5>r;r++)e[r]=e[r].slice(0),t[r]=t[r].slice(0)}_crypt(e,t){if(4!==e.length)throw new f("invalid aes block size");const r=this._key[t],s=r.length/4-2,n=[0,0,0,0],a=this._tables[t],i=a[0],o=a[1],c=a[2],l=a[3],d=a[4];let u,p,w,h=e[0]^r[0],m=e[t?3:1]^r[1],g=e[2]^r[2],y=e[t?1:3]^r[3],b=4;for(let e=0;s>e;e++)u=i[h>>>24]^o[m>>16&255]^c[g>>8&255]^l[255&y]^r[b],p=i[m>>>24]^o[g>>16&255]^c[y>>8&255]^l[255&h]^r[b+1],w=i[g>>>24]^o[y>>16&255]^c[h>>8&255]^l[255&m]^r[b+2],y=i[y>>>24]^o[h>>16&255]^c[m>>8&255]^l[255&g]^r[b+3],b+=4,h=u,m=p,g=w;for(let e=0;4>e;e++)n[t?3&-e:e]=d[h>>>24]<<24^d[m>>16&255]<<16^d[g>>8&255]<<8^d[255&y]^r[b++],u=h,h=m,m=g,g=y,y=u;return n}},Me=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if(255&~(e>>24))e+=1<<24;else{let t=e>>16&255,r=e>>8&255,s=255&e;255===t?(t=0,255===r?(r=0,255===s?s=0:++s):++r):++t,e=0,e+=t<<16,e+=r<<8,e+=s}return e}incCounter(e){0===(e[0]=this.incWord(e[0]))&&(e[1]=this.incWord(e[1]))}calculate(e,t,r){let s;if(!(s=t.length))return[];const n=pe.bitLength(t);for(let n=0;s>n;n+=4){this.incCounter(r);const s=e.encrypt(r);t[n]^=s[0],t[n+1]^=s[1],t[n+2]^=s[2],t[n+3]^=s[3]}return pe.clamp(t,n)}},Oe=ge.hmacSha1;let Le=Ue&&Ie&&typeof Ce.importKey==te,Pe=Ue&&Ie&&typeof Ce.deriveBits==te;class Ze extends F{constructor({password:e,rawPassword:t,signed:s,encryptionStrength:n,checkPasswordOnly:a}){super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),signed:s,strength:n-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:i,ready:o}=r;s?(await(async(e,t,r,s)=>{const n=await Be(e,t,r,je(s,0,_e[t])),a=je(s,_e[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new f(be)})(r,n,s,je(e,0,_e[n]+2)),e=je(e,_e[n]+2),a?t.error(new f(Se)):i()):await o;const c=new p(e.length-Te-(e.length-Te)%Ee);t.enqueue(Ve(r,e,c,0,Te,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=je(n,0,n.length-Te),o=je(n,n.length-Te);let c=new p;if(i.length){const e=Ge(Ne,i);s.update(e);const t=r.update(e);c=Ye(Ne,t)}if(t){const e=je(Ye(Ne,s.digest()),0,Te);for(let t=0;Te>t;t++)if(e[t]!=o[t])throw new f(ze)}e.enqueue(c)}}})}}class He extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:qe(e,t),strength:s-1,pending:new p})},async transform(e,t){const r=this,{password:s,strength:n,resolveReady:a,ready:i}=r;let o=new p;s?(o=await(async(e,t,r)=>{const s=xe(new p(_e[t]));return Ke(s,await Be(e,t,r,s))})(r,n,s),a()):await i;const c=new p(o.length+e.length-e.length%Ee);c.set(o,0),t.enqueue(Ve(r,e,c,o.length,0))},async flush(e){const{ctr:t,hmac:r,pending:s,ready:a}=this;if(r&&t){await a;let i=new p;if(s.length){const e=t.update(Ge(Ne,s));r.update(e),i=Ye(Ne,e)}n.signature=Ye(Ne,r.digest()).slice(0,Te),e.enqueue(Ke(i,n.signature))}}}),n=this}}function Ve(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=Ke(c,t),r=((e,t)=>{if(t&&t>e.length){const r=e;(e=new p(t)).set(r,0)}return e})(r,l-l%Ee)),d=0;l-Ee>=d;d+=Ee){const e=Ge(Ne,je(t,d,d+Ee));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Ye(Ne,n),d+s)}return e.pending=je(t,d),r}async function Be(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!Le)return ge.importKey(t);try{return await Ce.importKey("raw",t,r,!1,n)}catch{return Le=!1,ge.importKey(t)}})(0,n,Re,0,De),o=await(async(e,t,r)=>{if(!Pe)return ge.pbkdf2(t,e.salt,ke.iterations,r);try{return await Ce.deriveBits(e,t,r)}catch{return Pe=!1,ge.pbkdf2(t,e.salt,ke.iterations,r)}})(r.assign({salt:a},ke),i,8*(2*Ae[s]+2)),c=new p(o),l=Ge(Ne,je(c,0,Ae[s])),d=Ge(Ne,je(c,Ae[s],2*Ae[s])),u=je(c,2*Ae[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new Me(new We(l),t.from(ve)),hmac:new Oe(d)}),u}function qe(e,t){return t===$?fe(e):t}function Ke(e,t){let r=e;return e.length+t.length&&(r=new p(e.length+t.length),r.set(e,0),r.set(t,e.length)),r}function je(e,t,r){return e.subarray(t,r)}function Ye(e,t){return e.fromBits(t)}function Ge(e,t){return e.toBits(t)}class Xe extends F{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;if(r.password){const t=Qe(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new f(be);e=e.subarray(12)}s?t.error(new f(Se)):t.enqueue(Qe(r,e))}})}}class Je extends F{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),et(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=xe(new p(12));t[11]=r.passwordVerification,s=new p(e.length+t.length),s.set($e(r,t),0),n=12}else s=new p(e.length),n=0;s.set($e(r,e),n),t.enqueue(s)}})}}function Qe(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,r[s]);return r}function $e(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=rt(e)^t[s],tt(e,t[s]);return r}function et(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new de(s[0]),crcKey2:new de(s[2])});for(let r=0;r<t.length;r++)tt(e,t.charCodeAt(r))}function tt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=nt(i.imul(nt(s+st(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function rt(e){const t=2|e.keys[2];return st(i.imul(t,1^t)>>>8)}function st(e){return 255&e}function nt(e){return 4294967295&e}const at="Invalid uncompressed size";class it extends F{constructor(e,{chunkSize:t,CompressionStreamZlib:r,CompressionStream:s}){super({});const{compressed:n,encrypted:a,useCompressionStream:i,zipCrypto:o,signed:c,level:l}=e,d=this;let u,f,p=super.readable;a&&!o||!c||(u=new ue,p=dt(p,u)),n&&(p=lt(p,i,{level:l,chunkSize:t},s,r,s)),a&&(o?p=dt(p,new Je(e)):(f=new He(e),p=dt(p,f))),ct(d,p,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ot extends F{constructor(e,{chunkSize:t,DecompressionStreamZlib:r,DecompressionStream:s}){super({});const{zipCrypto:n,encrypted:a,signed:i,signature:o,compressed:c,useCompressionStream:l,deflate64:d}=e;let u,p,w=super.readable;a&&(n?w=dt(w,new Xe(e)):(p=new Ze(e),w=dt(w,p))),c&&(w=lt(w,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new ue,w=dt(w,u)),ct(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(ze)}})}}function ct(e,t,s){t=dt(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function lt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=dt(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=dt(e,new n(o,r));else{if(!a)throw s;e=dt(e,new a(o,r))}}return e}function dt(e,t){return e.pipeThrough(t)}const ut="data",ft="close",pt="deflate",wt="inflate";class ht extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(pt)?a=it:n.startsWith(wt)&&(a=ot),s.outputSize=0;let i=0;const o=new a(e,t),c=super.readable,l=new F({transform(e,t){e&&e.length&&(i+=e.length,t.enqueue(e))},flush(){r.assign(s,{inputSize:i})}}),d=new F({transform(t,r){if(t&&t.length&&(r.enqueue(t),s.outputSize+=t.length,e.outputSize!==$&&s.outputSize>e.outputSize))throw new f(at)},flush(){const{signature:e}=o;r.assign(s,{signature:e,inputSize:i})}});r.defineProperty(s,"readable",{get:()=>c.pipeThrough(l).pipeThrough(o).pipeThrough(d)})}}class mt extends F{constructor(e){let t;super({transform:function r(s,n){if(t){const e=new p(t.length+s.length);e.set(t),e.set(s,t.length),s=e,t=null}s.length>e?(n.enqueue(s.slice(0,e)),r(s.slice(e),n)):t=s},flush(e){t&&t.length&&e.enqueue(t)}})}}const gt={type:"module"};let yt,bt,zt,St=!0;class xt{constructor(e,{readable:t,writable:s},{options:n,config:a,streamOptions:i,useWebWorkers:o,transferStreams:c,workerURI:l},d){const{signal:u}=i;return r.assign(e,{busy:!0,readable:t.pipeThrough(new mt(a.chunkSize)).pipeThrough(new Et(i),{signal:u}),writable:s,options:r.assign({},n),workerURI:l,transferStreams:c,terminate:()=>new y(t=>{const{worker:r,busy:s}=e;r?(s?e.resolveTerminated=t:(r.terminate(),t()),e.interface=null):t()}),onTaskFinished(){const{resolveTerminated:t}=e;t&&(e.resolveTerminated=null,e.terminated=!0,e.worker.terminate(),t()),e.busy=!1,d(e)}}),yt===$&&(yt=typeof T!=ee),(o&&yt?kt:Rt)(e,a)}}class Et extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await Ft(e,r)},async transform(e,s){n+=e.length,t&&await Ft(t,n,r),s.enqueue(e)},async flush(){s&&await Ft(s,n)}})}}async function Ft(e,...t){try{await e(...t)}catch{}}function Rt(e,t){return{run:()=>(async({options:e,readable:t,writable:r,onTaskFinished:s},n)=>{let a;try{if(!e.useCompressionStream)try{await void 0}catch{e.useCompressionStream=!0}a=new ht(e,n),await t.pipeThrough(a).pipeTo(r,{preventClose:!0,preventAbort:!0});const{signature:s,inputSize:i,outputSize:o}=a;return{signature:s,inputSize:i,outputSize:o}}catch(e){throw a&&(e.outputSize=a.outputSize),e}finally{s()}})(e,t)}}function kt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==te&&(a=a());try{i=Dt(e.workerURI,s,e)}catch{return yt=!1,Rt(e,t)}r.assign(e,{worker:i,interface:{run:()=>(async(e,t)=>{let s,n;const a=new y((e,t)=>{s=e,n=t});r.assign(e,{reader:null,writer:null,resolveResult:s,rejectResult:n,result:a});const{readable:i,options:o}=e,{writable:c,closed:l}=(e=>{let t;const r=new y(e=>t=e);return{writable:new k({async write(t){const r=e.getWriter();await r.ready,await r.write(t),r.releaseLock()},close(){t()},abort:t=>e.getWriter().abort(t)}),closed:r}})(e.writable),d=_t({type:"start",options:o,config:t,readable:i,writable:c},e);d||r.assign(e,{reader:i.getReader(),writer:c.getWriter()});const u=await a;return d||await c.getWriter().close(),await l,u})(e,{chunkSize:n,wasmURI:a,baseURI:s})}})}return e.interface}function Dt(e,t,s,n,a=!0){let i,o,c;if(bt===$){const r=typeof e==te;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===$&&(n=!1),n&&(c=gt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return Dt(e,t,s,n,!1);if(n)throw a;return Dt(e,t,s,!0,!1)}}else{n===$&&(n=!0),n&&(c=gt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return Dt(e,t,s,!1,a)}}bt=o,zt=c}else i=new T(bt,zt);return i.addEventListener("message",e=>(async({data:e},t)=>{const{type:s,value:n,messageId:a,result:i,error:o}=e,{reader:c,writer:l,resolveResult:d,rejectResult:u,onTaskFinished:w}=t;try{if(o){const{message:e,stack:t,code:s,name:n,outputSize:a}=o,i=new f(e);r.assign(i,{stack:t,code:s,name:n,outputSize:a}),h(i)}else{if("pull"==s){const{value:e,done:r}=await c.read();_t({type:ut,value:e,done:r,messageId:a},t)}s==ut&&(await l.ready,await l.write(new p(n)),_t({type:"ack",messageId:a},t)),s==ft&&h(null,i)}}catch(o){_t({type:ft,messageId:a},t),h(o)}function h(e,t){e?u(e):d(t),l&&l.releaseLock(),w()}})(e,s)),i}function _t(e,{worker:t,writer:r,onTaskFinished:s,transferStreams:n}){try{const{value:r,readable:s,writable:a}=e,i=[];if(r&&(e.value=r,i.push(e.value.buffer)),n&&St?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{St=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let At=[];const Tt=[];let vt=0;async function Ut(e,t){const{options:r,config:s}=t,{transferStreams:a,useWebWorkers:i,useCompressionStream:o,compressed:c,signed:l,encrypted:d}=r,{workerURI:u,maxWorkers:f}=s;t.transferStreams=a||a===$;const p=!(c||l||d||t.transferStreams);return t.useWebWorkers=!p&&(i||i===$&&s.useWebWorkers),t.workerURI=t.useWebWorkers&&u?u:$,r.useCompressionStream=o||o===$&&s.useCompressionStream,(await(async()=>{const r=At.find(e=>!e.busy);if(r)return Ct(r),new xt(r,e,t,w);if(At.length<f){const r={indexWorker:vt};return vt++,At.push(r),new xt(r,e,t,w)}return new y(r=>Tt.push({resolve:r,stream:e,workerOptions:t}))})()).run();function w(e){if(Tt.length){const[{resolve:t,stream:r,workerOptions:s}]=Tt.splice(0,1);t(new xt(e,r,s,w))}else e.worker?(Ct(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{At=At.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):At=At.filter(t=>t!=e)}}function Ct(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const It="HTTP error ",Nt="HTTP Range not supported",Wt="Range",Mt="GET",Ot="bytes",Lt=65536,Pt="writable";class Zt{constructor(){this.size=0}init(){this.initialized=!0}}class Ht extends Zt{get readable(){const e=this,{chunkSize:t=Lt}=e,r=new R({start(){this.chunkOffset=0},async pull(s){const{offset:n=0,size:a,diskNumberStart:o}=r,{chunkOffset:c}=this,l=a===$?t:i.min(t,a-c),d=await ur(e,n+c,l,o);s.enqueue(d),c+t>a||a===$&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class Vt extends Zt{constructor(){super();const e=this,t=new k({write(t){if(!e.initialized)throw new f("Writer not initialized");return e.writeUint8Array(t)}});r.defineProperty(e,Pt,{get:()=>t})}writeUint8Array(){}}class Bt extends Ht{constructor(e){super(),r.assign(this,{blob:e,size:e.size})}async readUint8Array(e,t){const r=this,s=e+t,n=e||s<r.size?r.blob.slice(e,s):r.blob;let a=await n.arrayBuffer();return a.byteLength>t&&(a=a.slice(e,s)),new p(a)}}class qt extends Zt{constructor(e){super();const t=new F,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,Pt,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class Kt extends Ht{constructor(e,t){super(),Yt(this,e,t)}async init(){await Gt(this,sr,$t),super.init()}readUint8Array(e,t){return Xt(this,e,t,sr,$t)}}class jt extends Ht{constructor(e,t){super(),Yt(this,e,t)}async init(){await Gt(this,nr,er),super.init()}readUint8Array(e,t){return Xt(this,e,t,nr,er)}}function Yt(e,t,s){const{preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o}=s;delete(s=r.assign({},s)).preventHeadRequest,delete s.useRangeHeader,delete s.forceRangeRequests,delete s.combineSizeEocd,delete s.useXHR,r.assign(e,{url:t,options:s,preventHeadRequest:n,useRangeHeader:a,forceRangeRequests:i,combineSizeEocd:o})}async function Gt(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ae(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Mt,e,Jt(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Ot))throw new f(Nt);{let a;c&&(e.eocdCache=new p(await s.arrayBuffer()));const i=s.headers.get("Content-Range");if(i){const e=i.trim().split(/\s*\/\s*/);if(e.length){const t=e[1];t&&"*"!=t&&(a=n(t))}}a===$?await rr(e,t,r):e.size=a}}else await rr(e,t,r)}async function Xt(e,t,r,s,n){const{useRangeHeader:a,forceRangeRequests:i,eocdCache:o,size:c,options:l}=e;if(a||i){if(o&&t==c-H&&r==H)return o;if(c>t){t+r>c&&(r=c-t);const n=await s(Mt,e,Jt(e,t,r));if(206!=n.status)throw new f(Nt);return new p(await n.arrayBuffer())}return new p}{const{data:s}=e;return s||await n(e,l),new p(e.data.subarray(t,t+r))}}function Jt(e,t=0,s=1){return r.assign({},Qt(e),{[Wt]:Ot+"="+(0>t?t:t+"-"+(t+s-1))})}function Qt({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function $t(e){await tr(e,sr)}async function er(e){await tr(e,nr)}async function tr(e,t){const r=await t(Mt,e,Qt(e));e.data=new p(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function rr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,Qt(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function sr(e,{options:t,url:s},n){const a=await fetch(s,r.assign({},t,{method:e,headers:n}));if(400>a.status)return a;throw 416==a.status?new f(Nt):new f(It+(a.statusText||a.status))}function nr(e,{url:t},s){return new y((n,a)=>{const i=new XMLHttpRequest;if(i.addEventListener("load",()=>{if(400>i.status){const e=[];i.getAllResponseHeaders().trim().split(/[\r\n]+/).forEach(t=>{const r=t.trim().split(/\s*:\s*/);r[0]=r[0].trim().replace(/^[a-z]|-[a-z]/g,e=>e.toUpperCase()),e.push(r)}),n({status:i.status,arrayBuffer:()=>i.response,headers:new c(e)})}else a(416==i.status?new f(Nt):new f(It+(i.statusText||i.status)))},!1),i.addEventListener("error",e=>a(e.detail?e.detail.error:new f("Network error")),!1),i.open(e,t),s)for(const e of r.entries(s))i.setRequestHeader(e[0],e[1]);i.responseType="arraybuffer",i.send()})}class ar extends Ht{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new jt(e,t):new Kt(e,t)})}set size(e){}get size(){return this.reader.size}async init(){await this.reader.init(),super.init()}readUint8Array(e,t){return this.reader.readUint8Array(e,t)}}class ir extends Ht{constructor(e){super(),this.readers=e}async init(){const e=this,{readers:t}=e;e.lastDiskNumber=0,e.lastDiskOffset=0,await y.all(t.map(async(r,s)=>{await r.init(),s!=t.length-1&&(e.lastDiskOffset+=r.size),e.size+=r.size})),super.init()}async readUint8Array(e,t,r=0){const s=this,{readers:n}=this;let a,o=r;-1==o&&(o=n.length-1);let c=e;for(;n[o]&&c>=n[o].size;)c-=n[o].size,o++;const l=n[o];if(l){const n=l.size;if(c+t>n){const i=n-c;a=new p(t);const o=await ur(l,c,i);a.set(o,0);const d=await s.readUint8Array(e+i,t-i,r);a.set(d,i),o.length+d.length<t&&(a=a.subarray(0,o.length+d.length))}else a=await ur(l,c,t)}else a=new p;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class or extends Zt{constructor(e,t=4294967295){super();const s=this;let n,a,i;r.assign(s,{diskNumber:0,diskOffset:0,size:0,maxSize:t,availableSize:t});const o=new k({async write(t){const{availableSize:r}=s;if(i)t.length<r?await c(t):(await c(t.subarray(0,r)),await l(),s.diskOffset+=n.size,s.diskNumber++,i=null,await this.write(t.subarray(r)));else{const{value:r,done:o}=await e.next();if(o&&!r)throw new f("Writer iterator completed too soon");n=r,n.size=0,n.maxSize&&(s.maxSize=n.maxSize),s.availableSize=s.maxSize,await dr(n),a=r.writable,i=a.getWriter(),await this.write(t)}},async close(){await i.ready,await l()}});async function c(e){const t=e.length;t&&(await i.ready,await i.write(e),n.size+=t,s.size+=t,s.availableSize-=t)}async function l(){await i.close()}r.defineProperty(s,Pt,{get:()=>o})}}class cr{constructor(e){return t.isArray(e)&&(e=new ir(e)),e instanceof R&&(e={readable:e}),e}}class lr{constructor(e){return e.writable===$&&typeof e.next==te&&(e=new or(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof or||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),e}}async function dr(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function ur(e,t,r,s){return e.readUint8Array(t,r,s)}const fr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function pr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=fr[e[r]];return t}})(e):new z(t).decode(e)}const wr="filename",hr="rawFilename",mr="comment",gr="rawComment",yr="uncompressedSize",br="compressedSize",zr="offset",Sr="diskNumberStart",xr="lastModDate",Er="rawLastModDate",Fr="lastAccessDate",Rr="creationDate",kr="rawCreationDate",Dr="internalFileAttributes",_r="externalFileAttributes",Ar="msdosAttributesRaw",Tr="msdosAttributes",vr="msDosCompatible",Ur="zip64",Cr="encrypted",Ir="version",Nr="versionMadeBy",Wr="zipCrypto",Mr="directory",Or="executable",Lr="compressionMethod",Pr="signature",Zr="extraField",Hr="unixMode",Vr="setuid",Br="setgid",qr="sticky",Kr=[wr,hr,yr,br,xr,Er,mr,gr,Fr,Rr,kr,zr,Sr,Dr,_r,Ar,Tr,vr,Ur,Cr,Ir,Nr,Wr,Mr,Or,Lr,Pr,Zr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Hr,Vr,Br,qr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class jr{constructor(e){Kr.forEach(t=>this[t]=e[t])}}const Yr="password",Gr="rawPassword",Xr="passThrough",Jr="signal",Qr="useWebWorkers",$r="useCompressionStream",es="preventClose",ts="supportZip64SplitFile",rs="offset",ss="usdz",ns="File format is not recognized",as="End of central directory not found",is="End of Zip64 central directory locator not found",os="Central directory header not found",cs="Local file header not found",ls="Zip64 extra field not found",ds="File contains encrypted entry",us="Encryption method not supported",fs="Compression method not supported",ps="Split zip file",ws="Overlapping entry found",hs="utf-8",ms="cp437",gs=[[yr,U],[br,U],[zr,U],[Sr,C]],ys={[C]:{getValue:vs,bytes:4},[U]:{getValue:Us,bytes:8}};class bs{constructor(e,t={}){r.assign(this,{reader:new cr(e),options:t,config:ae(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await dr(s),s.size!==$&&s.readUint8Array||(s=new Bt(await new d(s.readable).blob()),await dr(s)),s.size<H)throw new f(ns);s.chunkSize=ie(n);const a=await(async(e,t,r)=>{const s=new p(4);var n;return n=t,Cs(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await ur(e,n,t);for(let e=a.length-22;e>=0;e--)if(a[e]==s[0]&&a[e+1]==s[1]&&a[e+2]==s[2]&&a[e+3]==s[3])return{offset:n+e,buffer:a.slice(e,e+22).buffer}}})(s,L,s.size);if(!a)throw vs(Cs(await ur(s,0,4)))==W?new f(ps):new f(as);const o=Cs(a);let c=vs(o,12),l=vs(o,16);const u=a.offset,w=Ts(o,20),h=u+H+w;let m=Ts(o,4);const g=s.lastDiskNumber||0;let b=Ts(o,6),z=Ts(o,8),S=0,x=0;if(l==U||c==U||z==C||b==C){const e=Cs(await ur(s,a.offset-20,20));if(vs(e,0)==Z){l=Us(e,8);let t=await ur(s,l,56,-1),r=Cs(t);const n=a.offset-20-56;if(vs(r,0)!=P&&l!=n){const e=l;l=n,l>e&&(S=l-e),t=await ur(s,l,56,-1),r=Cs(t)}if(vs(r,0)!=P)throw new f(is);m==C&&(m=vs(r,16)),b==C&&(b=vs(r,20)),z==C&&(z=Us(r,32)),c==U&&(c=Us(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new f(ps);if(0>l)throw new f(ns);let E=0,R=await ur(s,l,c,b),k=Cs(R);if(c){const e=a.offset-c;if(vs(k,E)!=O&&l!=e){const t=l;l=e,l>t&&(S+=l-t),R=await ur(s,l,c,b),k=Cs(R)}}const D=a.offset-l-(s.lastDiskOffset||0);if(c==D||0>D||(c=D,R=await ur(s,l,c,b),k=Cs(R)),0>l||l>=s.size)throw new f(ns);const _=ks(t,e,"filenameEncoding"),A=ks(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new zs(s,n,t.options);if(vs(k,E)!=O)throw new f(os);Ss(o,k,E+6);const c=!!o.bitFlag.languageEncodingFlag,l=E+46,u=l+o.filenameLength,p=u+o.extraFieldLength,w=Ts(k,E+4),h=!(w>>8),m=w>>8==3,g=R.subarray(l,u),b=Ts(k,E+32),D=p+b,T=R.subarray(p,D),v=c,U=c,N=vs(k,E+38),W=N&I,M={readOnly:!!(1&W),hidden:!!(2&W),system:!!(4&W),directory:!!(16&W),archive:!!(32&W)},L=vs(k,E+42)+S,P=ks(t,e,"decodeText")||pr,Z=v?hs:_||ms,H=U?hs:A||ms;let V=P(g,Z);V===$&&(V=pr(g,Z));let B=P(T,H);B===$&&(B=pr(T,H)),r.assign(o,{versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:b,offset:L,diskNumberStart:Ts(k,E+34),internalFileAttributes:Ts(k,E+36),externalFileAttributes:N,msdosAttributesRaw:W,msdosAttributes:M,rawFilename:g,filenameUTF8:v,commentUTF8:U,rawExtraField:R.subarray(u,p),rawComment:T,filename:V,comment:B}),x=i.max(L,x),xs(o,o,k,E+6);const X=o.externalFileAttributes>>16&C;o.unixMode===$&&16877&X&&(o.unixMode=X);const J=!!(o.unixMode&K),Q=!!(o.unixMode&j),ee=!!(o.unixMode&Y),te=o.unixMode!==$?!!(73&o.unixMode):m&&!!(73&X),re=o.unixMode!==$&&(61440&o.unixMode)==q,se=(61440&X)==q;r.assign(o,{setuid:J,setgid:Q,sticky:ee,unixExternalUpper:X,internalFileAttribute:o.internalFileAttributes,externalFileAttribute:o.externalFileAttributes,executable:te,directory:re||se||h&&M.directory||V.endsWith(G)&&!o.uncompressedSize,zipCrypto:o.encrypted&&!o.extraFieldAES});const ne=new jr(o);ne.getData=(e,r)=>o.getData(e,ne,t.readRanges,r),ne.arrayBuffer=async e=>{const r=new F,[s]=await y.all([new d(r.readable).arrayBuffer(),o.getData(r,ne,t.readRanges,e)]);return s},E=D;const{onprogress:ae}=e;if(ae)try{await ae(a+1,z,new jr(o))}catch{}yield ne}const T=ks(t,e,"extractPrependedData"),v=ks(t,e,"extractAppendedData");return T&&(t.prependedData=x>0?await ur(s,0,x):new p),t.comment=w?await ur(s,u+H,w):new p,v&&(t.appendedData=h<s.size?await ur(s,h,s.size-h):new p),!0}async getEntries(e={}){const t=[];for await(const r of this.getEntriesGenerator(e))t.push(r);return t}async close(){}}class zs{constructor(e,t,s){r.assign(this,{reader:e,config:t,options:s})}async getData(e,t,s,n={}){const a=this,{reader:i,offset:o,diskNumberStart:c,extraFieldAES:l,extraFieldZip64:d,compressionMethod:u,config:w,bitFlag:h,signature:m,rawLastModDate:g,uncompressedSize:y,compressedSize:b}=a,{dataDescriptor:z}=h,S=t.localDirectory={},x=Cs(await ur(i,o,X,c));let E=ks(a,n,Yr),F=ks(a,n,Gr);const R=ks(a,n,Xr);if(E=E&&E.length&&E,F=F&&F.length&&F,l&&99!=l.originalCompressionMethod)throw new f(fs);if(0!=u&&8!=u&&9!=u&&!R)throw new f(fs);if(vs(x,0)!=N)throw new f(cs);Ss(S,x,4);const{extraFieldLength:D,filenameLength:_,lastAccessDate:A,creationDate:T}=S;S.rawExtraField=D?await ur(i,o+X+_,D,c):new p,xs(a,S,x,4,!0),r.assign(t,{lastAccessDate:A,creationDate:T});const v=a.encrypted&&S.encrypted&&!R,U=v&&!l;if(R||(t.zipCrypto=U),v){if(!U&&l.strength===$)throw new f(us);if(!E&&!F)throw new f(ds)}const C=o+X+_+D,W=b,O=i.readable;r.assign(O,{diskNumberStart:c,offset:C,size:W});const L=ks(a,n,Jr),P=ks(a,n,"checkPasswordOnly");let Z=ks(a,n,"checkOverlappingEntry");const H=ks(a,n,"checkOverlappingEntryOnly");H&&(Z=!0);const{onstart:V,onprogress:B,onend:q}=n,K=9==u;let j=ks(a,n,$r);K&&(j=!1);const Y={options:{codecType:wt,password:E,rawPassword:F,zipCrypto:U,encryptionStrength:l&&l.strength,signed:ks(a,n,"checkSignature")&&!R,passwordVerification:U&&(z?g>>>8&I:m>>>24&I),outputSize:R?b:y,signature:m,compressed:0!=u&&!R,encrypted:a.encrypted&&!R,useWebWorkers:ks(a,n,Qr),useCompressionStream:j,transferStreams:ks(a,n,"transferStreams"),deflate64:K,checkPasswordOnly:P},config:w,streamOptions:{signal:L,size:W,onstart:V,onprogress:B,onend:q}};let G;Z&&await(async({reader:e,fileEntry:t,offset:r,diskNumberStart:s,signature:n,compressedSize:a,uncompressedSize:i,dataOffset:o,dataDescriptor:c,extraFieldZip64:l,readRanges:d})=>{let u=0;if(s)for(let t=0;s>t;t++)u+=e.readers[t].size;let p=0;if(c&&(p=l?20:12),p){const r=await ur(e,o+a,p+4,s);if(vs(Cs(r),0)==M){const e=vs(Cs(r),4);let s,o;l?(s=Us(Cs(r),8),o=Us(Cs(r),16)):(s=vs(Cs(r),8),o=vs(Cs(r),12)),(t.encrypted&&!t.zipCrypto||e==n)&&s==a&&o==i&&(p+=4)}}const w={start:u+r,end:u+o+a+p,fileEntry:t};for(const e of d)if(e.fileEntry!=t&&w.start>=e.start&&w.start<e.end){const t=new f(ws);throw t.overlappingEntry=e.fileEntry,t}d.push(w)})({reader:i,fileEntry:t,offset:o,diskNumberStart:c,signature:m,compressedSize:b,uncompressedSize:y,dataOffset:C,dataDescriptor:z||S.bitFlag.dataDescriptor,extraFieldZip64:d||S.extraFieldZip64,readRanges:s});try{if(!H){P&&(e=new k),e=new lr(e),await dr(e,R?b:y),({writable:G}=e);const{outputSize:t}=await Ut({readable:O,writable:G},Y);if(e.size+=t,t!=(R?b:y))throw new f(at)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!P||t.message!=Se)throw t}finally{ks(a,n,es)||!G||G.locked||await G.getWriter().close()}return P||H?$:e.getData?e.getData():G}}function Ss(e,t,s){const n=e.rawBitFlag=Ts(t,s+2),a=!(1&~n),i=vs(t,s+6);r.assign(e,{encrypted:a,version:Ts(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&B)==B},rawLastModDate:i,lastModDate:Ds(i),filenameLength:Ts(t,s+22),extraFieldLength:Ts(t,s+24)})}function xs(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Cs(new p(i));let u=0;try{for(;u<i.length;){const e=Ts(d,u),t=Ts(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=Ts(s,n+4);r.assign(t,{signature:vs(s,n+10),compressedSize:vs(s,n+14),uncompressedSize:vs(s,n+18)});const h=l.get(1);h&&(((e,t)=>{t.zip64=!0;const r=Cs(e.data),s=gs.filter(([e,r])=>t[e]==r);for(let n=0,a=0;n<s.length;n++){const[i,o]=s[n];if(t[i]==o){const s=ys[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new f(ls)}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(Es(m,wr,hr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Es(g,mr,gr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=Cs(e.data),a=As(n,4);r.assign(e,{vendorVersion:As(n,0),vendorId:As(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Ts(n,5)}),t.compressionMethod=e.compressionMethod})(y,t,w),t.extraFieldAES=y):t.compressionMethod=w;const b=l.get(10);b&&(((e,t)=>{const s=Cs(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Ts(s,a),r=Ts(s,a+2);1==t&&(n=e.data.slice(a+4,a+4+r)),a+=4+r}}catch{}try{if(n&&24==n.length){const s=Cs(n),a=s.getBigUint64(0,!0),i=s.getBigUint64(8,!0),o=s.getBigUint64(16,!0);r.assign(e,{rawLastModDate:a,rawLastAccessDate:i,rawCreationDate:o});const c={lastModDate:_s(a),lastAccessDate:_s(i),creationDate:_s(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)Fs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(Fs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(V);S&&(((e,t,r)=>{const s=Cs(e.data),n=As(s,0),a=[],i=[];r?(1&~n||(a.push(xr),i.push(Er)),2&~n||(a.push(Fr),i.push("rawLastAccessDate")),4&~n||(a.push(Rr),i.push(kr))):5>e.data.length||(a.push(xr),i.push(Er));let c=1;a.forEach((r,n)=>{if(e.data.length>=c+4){const a=vs(s,c);t[r]=e[r]=new o(1e3*a);const l=i[n];e[l]=a}c+=4})})(S,t,a),t.extraFieldExtendedTimestamp=S);const x=l.get(6534);x&&(t.extraFieldUSDZ=x)}function Es(e,t,s,n,a){const i=Cs(e.data),o=new de;o.append(a[s]);const c=Cs(new p(4));c.setUint32(0,o.get(),!0);const l=vs(i,1);r.assign(e,{version:As(i,0),[t]:pr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==vs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Fs(e,t,s){try{const n=Cs(new p(e.data));let a=0;const i=As(n,a++),o=As(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=Rs(c),d=As(n,a++),u=e.data.subarray(a,a+d);a+=d;const f=Rs(u);let w=$;if(!s&&a+2<=e.data.length){const t=e.data;w=new m(t.buffer,t.byteOffset+a,2).getUint16(0,!0)}r.assign(e,{version:i,uid:l,gid:f,unixMode:w}),l!==$&&(t.uid=l),f!==$&&(t.gid=f),w!==$&&(t.unixMode=w)}catch{}}function Rs(e){const t=new p(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function ks(e,t,r){return t[r]===$?e.options[r]:t[r]}function Ds(e){const t=(4294901760&e)>>16,r=e&C;try{return new o(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&r)>>11,(2016&r)>>5,2*(31&r),0)}catch{}}function _s(e){return new o(n(e/a(1e4)-a(116444736e5)))}function As(e,t){return e.getUint8(t)}function Ts(e,t){return e.getUint16(t,!0)}function vs(e,t){return e.getUint32(t,!0)}function Us(e,t){return n(e.getBigUint64(t,!0))}function Cs(e){return new m(e.buffer)}const Is="File already exists",Ns="Zip file comment exceeds 64KB",Ws="File entry comment exceeds 64KB",Ms="File entry name exceeds 64KB",Os="Version exceeds 65535",Ls="The strength must equal 1, 2, or 3",Ps="Extra field type exceeds 65535",Zs="Extra field data exceeds 64KB",Hs="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Vs="Undefined uncompressed size",Bs="Zip file not empty",qs=new p([7,0,2,0,65,69,3,0,0]),Ks="infozip",js="unix";let Ys=0;const Gs=[];class Xs{constructor(e,t={}){const s=(e=new lr(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==1/0&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==1/0;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ae(),files:new c,filenames:new l,offset:t[rs]===$?e.size||e.writable.size||0:t[rs],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new f(Bs);e=new cr(e);const t=new bs(e.readable),s=await t.getEntries();await t.close(),await e.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=e.size,this.filenames=new l(s.map(e=>e.filename)),this.files=new c(s.map(e=>{const{version:t,compressionMethod:s,lastModDate:n,lastAccessDate:a,creationDate:i,rawFilename:o,bitFlag:c,encrypted:l,uncompressedSize:d,compressedSize:u,diskOffset:f,diskNumber:w,zip64:h}=e;let{rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S}=e;const{level:x,languageEncodingFlag:E,dataDescriptor:F}=c;m=m||new p,g=g||new p,y=y||new p,b=b||new p,z=e.rawExtraFieldUnix||new p,S=S||new p;const R=dn(m,g,y,b,z,S),k=h&&d>U,D=h&&u>U,{headerArray:_,headerView:A}=un({version:t,bitFlag:fn(x,E,F,l,s),compressionMethod:s,uncompressedSize:d,compressedSize:u,lastModDate:n,rawFilename:o,zip64CompressedSize:D,zip64UncompressedSize:k,extraFieldLength:R});return r.assign(e,{zip64UncompressedSize:k,zip64CompressedSize:D,zip64Offset:h&&this.offset-f>U,zip64DiskNumberStart:h&&w>C,rawExtraFieldZip64:m,rawExtraFieldAES:g,rawExtraFieldExtendedTimestamp:y,rawExtraFieldNTFS:b,rawExtraFieldUnix:z,rawExtraField:S,extendedTimestamp:y.length>0||b.length>0,extraFieldExtendedTimestampFlag:1+(a?2:0)+(i?4:0),headerArray:_,headerView:A}),[e.filename,e]}))}async add(e="",s,n={}){const c=this,{pendingAddFileCalls:l,config:d}=c;let u;Ys<d.maxWorkers?Ys++:await new y(e=>Gs.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new f(Is);return c.filenames.add(e),u=(async(e,s,n,c)=>{s=s.trim();let l=tn(e,c,vr),d=tn(e,c,Nr,l?20:768);const u=tn(e,c,Or),h=tn(e,c,"uid"),g=tn(e,c,"gid");let b=tn(e,c,Hr);const z=tn(e,c,"unixExtraFieldType");let S=tn(e,c,Vr),x=tn(e,c,Br),E=tn(e,c,qr);if(h!==$&&(0>h||h>U))throw new f("Invalid uid (must be integer 0..2^32-1)");if(g!==$&&(0>g||g>U))throw new f("Invalid gid (must be integer 0..2^32-1)");if(b!==$&&(0>b||b>C))throw new f("Invalid UNIX mode (must be integer 0..65535)");if(z!==$&&z!==Ks&&z!==js)throw new f("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let R=tn(e,c,Ar),k=tn(e,c,Tr);const D=R!==$||k!==$;if(h!==$||g!==$||b!==$||z?(l=!1,d=d&C|768):D&&(l=!0,d&=I),R!==$&&(0>R||R>I))throw new f("Invalid msdosAttributesRaw (must be integer 0..255)");if(k&&"object"!=typeof k)throw new f("Invalid msdosAttributes (must be an object with boolean flags)");if(d>C)throw new f(Os);let _=tn(e,c,_r,0);!c[Mr]&&s.endsWith(G)&&(c[Mr]=!0);const A=tn(e,c,Mr);let T;A?(s.endsWith(G)||(s+=G),0===_&&(_=16,l||(_|=16877<<16))):l||0!==_||(_=u?493<<16:27525120),l||(T=_>>16&C,b=b===$?T:b&C,S?b|=K:S=!!(b&K),x?b|=j:x=!!(b&j),E?b|=Y:E=!!(b&Y),A&&(b|=q),_=(b&C)<<16|_&I),({msdosAttributesRaw:R,msdosAttributes:k}=((e,t)=>{if(e!==$)e&=I;else if(t!==$){const{readOnly:r,hidden:s,system:n,directory:a,archive:i}=t;let o=0;r&&(o|=1),s&&(o|=2),n&&(o|=4),a&&(o|=16),i&&(o|=32),e=o&I}return t===$&&(t={readOnly:!!(1&e),hidden:!!(2&e),system:!!(4&e),directory:!!(16&e),archive:!!(32&e)}),{msdosAttributesRaw:e,msdosAttributes:t}})(R,k)),D&&(_=_&U|R&I);const v=tn(e,c,"encodeText",fe);let O=v(s);if(O===$&&(O=fe(s)),dn(O)>C)throw new f(Ms);const L=c[mr]||"";let P=v(L);if(P===$&&(P=fe(L)),dn(P)>C)throw new f(Ws);const Z=tn(e,c,Ir,20);if(Z>C)throw new f(Os);const H=tn(e,c,xr,new o),B=tn(e,c,Fr),ee=tn(e,c,Rr),te=tn(e,c,Dr,0),re=tn(e,c,Xr);let se,ne;re||(se=tn(e,c,Yr),ne=tn(e,c,Gr));const ae=tn(e,c,"encryptionStrength",3),oe=tn(e,c,Wr),ce=tn(e,c,"extendedTimestamp",!0),le=tn(e,c,"keepOrder",!0),de=tn(e,c,Qr),ue=tn(e,c,"bufferedWrite"),pe=tn(e,c,"dataDescriptorSignature",!1),we=tn(e,c,Jr),he=tn(e,c,"useUnicodeFileNames",!0),me=tn(e,c,Lr);let ge=tn(e,c,"level"),ye=tn(e,c,$r),be=tn(e,c,"dataDescriptor");ue&&be===$&&(be=!1),(be===$||oe)&&(be=!0),ge!==$&&6!=ge&&(ye=!1),ye||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(ge=0);let ze=tn(e,c,Ur);if(!oe&&(se!==$||ne!==$)&&(1>ae||ae>3))throw new f(Ls);let Se=new p;const xe=c[Zr];if(xe){let e=0,t=0;xe.forEach(t=>e+=4+dn(t)),Se=new p(e),xe.forEach((e,r)=>{if(r>C)throw new f(Ps);if(dn(e)>C)throw new f(Zs);cn(Se,new w([r]),t),cn(Se,new w([dn(e)]),t+2),cn(Se,e,t+4),t+=4+dn(e)})}let Ee=0,Fe=0,Re=0;if(re&&(Re=c[yr],Re===$))throw new f(Vs);const ke=!0===ze;n&&(n=new cr(n),await dr(n),re?(c.uncompressedSize=Re,Ee=rn(Re)):n.size===$?(be=!0,(ze||ze===$)&&(ze=!0,Re=Ee=4294967296)):(c.uncompressedSize=Re=n.size,Ee=rn(Re)));const{diskOffset:De,diskNumber:_e,maxSize:Ae}=e.writer,Te=ke||Re>U,ve=ke||Ee>U,Ue=ke||e.offset+e.pendingEntriesSize-De>U,Ce=tn(e,c,ts,!0)&&ke||_e+i.ceil(e.pendingEntriesSize/Ae)>C;if(Ue||Te||ve||Ce){if(!1===ze||!le)throw new f(Hs);ze=!0}ze=ze||!1;const Ie=tn(e,c,Cr),Ne=(e=>{const{rawFilename:t,lastModDate:r,lastAccessDate:s,creationDate:n,level:o,zip64:c,zipCrypto:l,useUnicodeFileNames:d,dataDescriptor:u,directory:f,rawExtraField:w,encryptionStrength:h,extendedTimestamp:g,passThrough:y,encrypted:b,zip64UncompressedSize:z,zip64CompressedSize:S,zip64Offset:x,zip64DiskNumberStart:E,uncompressedSize:F,offset:R,diskNumberStart:k}=e;let{version:D,compressionMethod:_}=e;const A=!f&&(o>0||o===$&&0!==_);let T,v;const U=y||!A,I=c&&(e.bufferedWrite||!z&&!S||U);if(c){let e=4,t=4;z&&(e+=8,t+=8),S&&(e+=8,t+=8),x&&(e+=8),E&&(e+=4),T=new p(e);const r=ln(T);v=new p(t);const s=ln(v);if(nn(r,0,1),nn(r,2,dn(T)-4),nn(s,0,1),nn(s,2,dn(v)-4),I){const e=ln(T),t=ln(v);let r=4,s=4;z&&(on(e,r,a(F)),r+=8,on(t,s,a(F)),s+=8),S&&U&&(on(e,r,a(F)),r+=8,on(t,s,a(F)),s+=8),x&&(on(e,r,a(R)),r+=8),E&&(an(e,r,k),r+=4),4==s&&(v=new p)}}else T=new p,v=new p;let W,M,O,L,P;if(b&&!l){W=new p(dn(qs)+2);const e=ln(W);nn(e,0,39169),cn(W,qs,2),sn(e,8,h)}else W=new p;if(g){O=new p(9+(s?4:0)+(n?4:0));const e=ln(O);nn(e,0,V),nn(e,2,dn(O)-4),L=1+(s?2:0)+(n?4:0),sn(e,4,L);let t=5;an(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(an(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&an(e,t,i.floor(n.getTime()/1e3));try{M=new p(36);const e=ln(M),t=en(r);nn(e,0,10),nn(e,2,32),nn(e,8,1),nn(e,10,24),on(e,12,t),on(e,20,en(s)||t),on(e,28,en(n)||t)}catch{M=new p}}else M=O=new p;try{const{uid:t,gid:r,unixMode:s,setuid:n,setgid:a,sticky:i,unixExtraFieldType:o}=e;if(!o||t===$&&r===$&&s===$)P=new p;else{const e=Js(t),c=Js(r);let l=new p;if(o==js&&s!==$){let e=s&C;n&&(e|=K),a&&(e|=j),i&&(e|=Y),l=new p(2),new m(l.buffer).setUint16(0,e,!0)}const d=3+e.length+c.length+l.length;P=new p(4+d);const u=ln(P);nn(u,0,o==Ks?30837:30805),nn(u,2,d),sn(u,4,1),sn(u,5,e.length);let f=6;cn(P,e,f),f+=e.length,sn(u,f,c.length),f++,cn(P,c,f),f+=c.length,cn(P,l,f)}}catch{P=new p}_===$&&(_=A?8:0),c&&(D=D>45?D:45),b&&!l&&(D=D>51?D:51,W[9]=_,_=99);const Z=I?dn(v):0,H=Z+dn(W,O,M,P,w),{headerArray:B,headerView:q,rawLastModDate:G}=un({version:D,bitFlag:fn(o,d,u,b,_),compressionMethod:_,uncompressedSize:F,lastModDate:Q>r?Q:r>J?J:r,rawFilename:t,zip64CompressedSize:S,zip64UncompressedSize:z,extraFieldLength:H});let ee=X;const te=new p(ee+dn(t)+H),re=ln(te);return an(re,0,N),cn(te,B,4),cn(te,t,ee),ee+=dn(t),I&&cn(te,v,ee),ee+=Z,cn(te,W,ee),ee+=dn(W),cn(te,O,ee),ee+=dn(O),cn(te,M,ee),ee+=dn(M),cn(te,P,ee),ee+=dn(P),cn(te,w,ee),u&&(an(re,18,0),an(re,22,0)),{localHeaderArray:te,localHeaderView:re,headerArray:B,headerView:q,lastModDate:r,rawLastModDate:G,encrypted:b,compressed:A,version:D,compressionMethod:_,extraFieldExtendedTimestampFlag:L,rawExtraFieldZip64:T,localExtraFieldZip64Length:Z,rawExtraFieldExtendedTimestamp:O,rawExtraFieldNTFS:M,rawExtraFieldUnix:P,rawExtraFieldAES:W,extraFieldLength:H}})(c=r.assign({},c,{rawFilename:O,rawComment:P,version:Z,versionMadeBy:d,lastModDate:H,lastAccessDate:B,creationDate:ee,rawExtraField:Se,zip64:ze,zip64UncompressedSize:Te,zip64CompressedSize:ve,zip64Offset:Ue,zip64DiskNumberStart:Ce,password:se,rawPassword:ne,level:ge,useWebWorkers:de,encryptionStrength:ae,extendedTimestamp:ce,zipCrypto:oe,bufferedWrite:ue,keepOrder:le,useUnicodeFileNames:he,dataDescriptor:be,dataDescriptorSignature:pe,signal:we,msDosCompatible:l,internalFileAttribute:te,internalFileAttributes:te,externalFileAttribute:_,externalFileAttributes:_,useCompressionStream:ye,passThrough:re,encrypted:!!(se&&dn(se)||ne&&dn(ne))||re&&Ie,signature:c[Pr],compressionMethod:me,uncompressedSize:Re,offset:e.offset-De,diskNumberStart:_e,uid:h,gid:g,setuid:S,setgid:x,sticky:E,unixMode:b,msdosAttributesRaw:R,msdosAttributes:k,unixExternalUpper:T})),We=(({zip64:e,dataDescriptor:t,dataDescriptorSignature:r})=>{let s,n=new p,a=0,i=e?20:12;return r&&(i+=4),t&&(n=new p(i),s=ln(n),r&&(a=4,an(s,0,M))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Me=dn(Ne.localHeaderArray,We.dataDescriptorArray);let Oe;Fe=Me+Ee,e.options[ss]&&(Fe+=Fe+64),e.pendingEntriesSize+=Fe;try{Oe=await(async(e,s,n,i,o)=>{const{files:c,writer:l}=e,{keepOrder:d,dataDescriptor:u,signal:w}=o,{headerInfo:h}=i,m=e.options[ss],g=t.from(c.values()).pop();let b,z,S,x,E,R,k={};c.set(s,k);try{let t;d&&(t=g&&g.lock,k.lock=new y(e=>S=e)),!(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&d)&&u||m?(R=l,await D()):(R=new F(void 0,void 0,{highWaterMark:1/0}),R.size=0,b=!0,e.bufferedWrites++,await dr(l)),await dr(R);const{writable:z,diskOffset:A}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new p(4);an(ln(t),0,W),await $s(l,t),e.offset+=4}m&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=ln(s),i=64-(t+dn(s))%64;4>i&&(i+=64);const o=new p(i),c=ln(o);nn(c,0,6534),nn(c,2,i-2);const l=s;r.localHeaderArray=s=new p(dn(l)+i),cn(s,l),cn(s,o,dn(l)),a=ln(s),nn(a,28,n+i),e.metadataSize+=i})(i,e.offset-A);const{localHeaderView:T,localHeaderArray:v}=h;b||(await t,await _(z));const{diskNumber:C}=l;k.diskNumberStart=C,b||(E=!0,await $s(R,v)),k=await(async(e,t,{diskNumberStart:s,lock:n},i,o,c)=>{const{headerInfo:l,dataDescriptorInfo:d,metadataSize:u}=i,{headerArray:f,headerView:p,lastModDate:w,rawLastModDate:h,encrypted:m,compressed:g,version:y,compressionMethod:b,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,extraFieldExtendedTimestampFlag:E,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k}=l,{dataDescriptorArray:D}=d,{rawFilename:_,lastAccessDate:A,creationDate:T,password:v,rawPassword:U,level:C,zip64:N,zip64UncompressedSize:W,zip64CompressedSize:M,zip64Offset:O,zip64DiskNumberStart:L,zipCrypto:P,dataDescriptor:Z,directory:H,executable:V,versionMadeBy:B,rawComment:q,rawExtraField:K,useWebWorkers:j,onstart:Y,onprogress:G,onend:X,signal:J,encryptionStrength:Q,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe,useCompressionStream:we,passThrough:he}=c,me={lock:n,versionMadeBy:B,zip64:N,directory:!!H,executable:!!V,filenameUTF8:!0,rawFilename:_,commentUTF8:!0,rawComment:q,rawExtraFieldZip64:z,localExtraFieldZip64Length:S,rawExtraFieldExtendedTimestamp:x,rawExtraFieldNTFS:F,rawExtraFieldUnix:R,rawExtraFieldAES:k,rawExtraField:K,extendedTimestamp:ee,msDosCompatible:te,internalFileAttributes:re,externalFileAttributes:se,diskNumberStart:s,uid:ne,gid:ae,unixMode:oe,setuid:ce,setgid:le,sticky:de,unixExternalUpper:ue,msdosAttributesRaw:fe,msdosAttributes:pe};let{signature:ge,uncompressedSize:ye}=c,be=0;he||(ye=0);const{writable:ze}=t;if(e){e.chunkSize=ie(o);const r=e.readable,s=e.size,n={options:{codecType:pt,level:C,rawPassword:U,password:v,encryptionStrength:Q,zipCrypto:m&&P,passwordVerification:m&&P&&h>>8&I,signed:!he,compressed:g&&!he,encrypted:m&&!he,useWebWorkers:j,useCompressionStream:we,transferStreams:!1},config:o,streamOptions:{signal:J,size:s,onstart:Y,onprogress:G,onend:X}};try{const e=await Ut({readable:r,writable:ze},n);be=e.outputSize,t.size+=be,he||(ye=e.inputSize,ge=e.signature)}catch(e){throw e.outputSize!==$&&(t.size+=e.outputSize),e}}return(({signature:e,compressedSize:t,uncompressedSize:r,headerInfo:s,dataDescriptorInfo:n},{zip64:i,zipCrypto:o,dataDescriptor:c})=>{const{headerView:l,encrypted:d}=s,{dataDescriptorView:u,dataDescriptorOffset:f}=n;d&&!o||e===$||(an(l,10,e),c&&an(u,f,e)),i?c&&(on(u,f+4,a(t)),on(u,f+12,a(r))):(an(l,14,t),an(l,18,r),c&&(an(u,f+4,t),an(u,f+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),Z&&await $s(t,D),r.assign(me,{uncompressedSize:ye,compressedSize:be,lastModDate:w,rawLastModDate:h,creationDate:T,lastAccessDate:A,encrypted:m,zipCrypto:P,size:u+be,compressionMethod:b,version:y,headerArray:f,headerView:p,signature:ge,extraFieldExtendedTimestampFlag:E,zip64UncompressedSize:W,zip64CompressedSize:M,zip64Offset:O,zip64DiskNumberStart:L}),me})(n,R,k,i,e.config,o);const{zip64:N}=k;if(b||(E=!1),c.set(s,k),k.filename=s,b?(await y.all([R.writable.getWriter().close(),t]),await D(),x=!0,k.diskNumberStart=l.diskNumber,k.offset=e.offset-l.diskOffset,N&&Qs(k),(({rawFilename:e,encrypted:t,zip64:r,localExtraFieldZip64Length:s,signature:n,compressedSize:i,uncompressedSize:o,zip64UncompressedSize:c,zip64CompressedSize:l},d,{dataDescriptor:u})=>{if(u||(t||an(d,14,n),l||an(d,18,i),c||an(d,22,o)),r&&s){let t=X+dn(e)+4;c&&(on(d,t,a(o)),t+=8),l&&(on(d,t,a(i)),t+=8)}})(k,T,o),await _(z),await $s(l,v),await R.readable.pipeTo(z,{preventClose:!0,preventAbort:!0,signal:w}),l.size+=R.size,x=!1):(k.offset=e.offset-A,N&&Qs(k)),k.offset>U&&!N)throw new f(Hs);return e.offset+=k.size,k}catch(t){if(x||E){if(e.hasCorruptedEntries=!0,t)try{t.corruptedEntry=!0}catch{}b?e.offset+=R.size:e.offset=R.size}throw c.delete(s),t}finally{b&&e.bufferedWrites--,S&&S(),z&&z()}async function D(){e.writerLocked=!0;const{lockWriter:t}=e;e.lockWriter=new y(t=>z=()=>{e.writerLocked=!1,t()}),await t}async function _(e){dn(h.localHeaderArray)>l.availableSize&&(l.availableSize=0,await $s(e,new p))}})(e,s,n,{headerInfo:Ne,dataDescriptorInfo:We,metadataSize:Me},c)}finally{e.pendingEntriesSize-=Fe}return r.assign(Oe,{name:s,comment:L,extraField:xe}),new jr(Oe)})(c,e,s,n),l.add(u),await u}catch(t){throw c.filenames.delete(e),t}finally{l.delete(u);const e=Gs.shift();e?e():Ys--}}remove(e){const{filenames:t,files:r}=this;if("string"==typeof e&&(e=r.get(e)),e&&e.filename!==$){const{filename:s}=e;if(t.has(s)&&r.has(s))return t.delete(s),r.delete(s),!0}return!1}async close(e=new p,r={}){const{pendingAddFileCalls:s,writer:n}=this,{writable:o}=n;for(;s.size;)await y.allSettled(t.from(s));return await(async(e,r,s)=>{const{files:n,writer:o}=e,{diskOffset:c}=o;let{diskNumber:l}=o,d=0,u=0,w=e.offset-c,h=n.size;for(const[,e]of n){const{rawFilename:t,rawExtraFieldZip64:r,rawExtraFieldAES:s,rawComment:n,rawExtraFieldNTFS:a,rawExtraFieldUnix:o,rawExtraField:c,extendedTimestamp:l,extraFieldExtendedTimestampFlag:d,lastModDate:f}=e;let w;if(l){w=new p(9);const e=ln(w);nn(e,0,V),nn(e,2,5),sn(e,4,d),an(e,5,i.floor(f.getTime()/1e3))}else w=new p;e.rawExtraFieldExtendedTimestamp=w,u+=46+dn(t,n,r,s,a,o,w,c)}const m=new p(u),g=ln(m);await dr(o);let y=0;for(const[e,r]of t.from(n.values()).entries()){const{offset:t,rawFilename:a,rawExtraFieldZip64:i,rawExtraFieldAES:c,rawExtraFieldExtendedTimestamp:l,rawExtraFieldNTFS:u,rawExtraFieldUnix:f,rawExtraField:p,rawComment:w,versionMadeBy:h,headerArray:b,headerView:z,zip64:S,zip64UncompressedSize:x,zip64CompressedSize:E,zip64DiskNumberStart:F,zip64Offset:R,internalFileAttributes:k,externalFileAttributes:D,diskNumberStart:_,uncompressedSize:A,compressedSize:T}=r,v=dn(i,c,l,u,f,p);an(g,d,O),nn(g,d+4,h),x||an(z,18,A),E||an(z,14,T),cn(m,b,d+6);let I=d+X;if(nn(g,I,v),I+=2,nn(g,I,dn(w)),I+=2,nn(g,I,S&&F?C:_),I+=2,nn(g,I,k),I+=2,D&&an(g,I,D),I+=4,an(g,I,S&&R?U:t),I+=4,cn(m,a,I),I+=dn(a),cn(m,i,I),I+=dn(i),cn(m,c,I),I+=dn(c),cn(m,l,I),I+=dn(l),cn(m,u,I),I+=dn(u),cn(m,f,I),I+=dn(f),cn(m,p,I),I+=dn(p),cn(m,w,I),I+=dn(w),d-y>o.availableSize&&(o.availableSize=0,await $s(o,m.slice(y,d)),y=d),d=I,s.onprogress)try{await s.onprogress(e+1,n.size,new jr(r))}catch{}}await $s(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=tn(e,s,Ur);if(w>U||u>U||h>C||b>C){if(!1===S)throw new f(Hs);S=!0}const x=new p(S?98:H),E=ln(x);d=0,S&&(an(E,0,P),on(E,4,a(44)),nn(E,12,45),nn(E,14,45),an(E,16,b),an(E,20,l),on(E,24,a(h)),on(E,32,a(h)),on(E,40,a(u)),on(E,48,a(w)),an(E,56,Z),on(E,64,a(w)+a(u)),an(E,72,b+1),tn(e,s,ts,!0)&&(b=C,l=C),h=C,w=U,u=U,d+=76),an(E,d,L),nn(E,d+4,b),nn(E,d+6,l),nn(E,d+8,h),nn(E,d+10,h),an(E,d+12,u),an(E,d+16,w);const F=dn(r);if(F){if(F>C)throw new f(Ns);nn(E,d+20,F)}await $s(o,x),F&&await $s(o,r)})(this,e,r),tn(this,r,es)||await o.getWriter().close(),n.getData?n.getData():o}}function Js(e){if(e===$)return new p;{const t=new p(4);ln(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function Qs({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=ln(l);let u=4;n&&(on(d,u,a(t)),u+=8),i&&(on(d,u,a(e)),u+=8),o&&(on(d,u,a(r)),u+=8),c&&an(d,u,s)}async function $s(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=dn(t),await s.write(t)}finally{s.releaseLock()}}function en(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function tn(e,t,r,s){const n=t[r]===$?e.options[r]:t[r];return n===$?s:n}function rn(e){return e+5*(i.floor(e/16383)+1)}function sn(e,t,r){e.setUint8(t,r)}function nn(e,t,r){e.setUint16(t,r,!0)}function an(e,t,r){e.setUint32(t,r,!0)}function on(e,t,r){e.setBigUint64(t,r,!0)}function cn(e,t,r){e.set(t,r)}function ln(e){return new m(e.buffer)}function dn(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function un({version:e,bitFlag:t,compressionMethod:r,uncompressedSize:s,compressedSize:n,lastModDate:a,rawFilename:i,zip64CompressedSize:o,zip64UncompressedSize:c,extraFieldLength:l}){const d=new p(26),u=ln(d);nn(u,0,e),nn(u,2,t),nn(u,4,r);const f=new h(1),w=ln(f);nn(w,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),nn(w,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=f[0];return an(u,6,m),(o||n!==$)&&an(u,14,o?U:n),(c||s!==$)&&an(u,18,c?U:s),nn(u,22,dn(i)),nn(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function fn(e,t,r,s,n){let a=0;return t&&(a|=B),r&&(a|=8),8!=n&&9!=n||(0>e||e>3||(a|=6),e>3&&5>=e&&(a|=4),9==e&&(a|=2)),s&&(a|=1),a}try{oe({baseURI:void 0===S&&"undefined"==typeof location?require("url").pathToFileURL(__filename).href:void 0===S?location.href:v&&"SCRIPT"===v.tagName.toUpperCase()&&v.src||new u("zip-core.min.js",S.baseURI).href})}catch{}e.BlobReader=Bt,e.BlobWriter=qt,e.Data64URIReader=class extends Ht{constructor(e){super();let t=e.length;for(;"="==e.charAt(t-1);)t--;const s=e.indexOf(",")+1;r.assign(this,{dataURI:e,dataStart:s,size:i.floor(.75*(t-s))})}readUint8Array(e,t){const{dataStart:r,dataURI:s}=this,n=new p(t),a=4*i.floor(e/3),o=atob(s.substring(a+r,4*i.ceil((e+t)/3)+r)),c=e-3*i.floor(a/4);let l=0;for(let e=c;c+t>e&&e<o.length;e++)n[e-c]=o.charCodeAt(e),l++;return l<n.length?n.subarray(0,l):n}},e.Data64URIWriter=class extends Vt{constructor(e){super(),r.assign(this,{data:"data:"+(e||"")+";base64,",pending:[]})}writeUint8Array(e){const t=this;let r=0,n=t.pending;const a=t.pending.length;for(t.pending="",r=0;r<3*i.floor((a+e.length)/3)-a;r++)n+=s.fromCharCode(e[r]);for(;r<e.length;r++)t.pending+=s.fromCharCode(e[r]);n.length&&(n.length>2?t.data+=E(n):t.pending+=n)}getData(){return this.data+E(this.pending)}},e.ERR_BAD_FORMAT=ns,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=os,e.ERR_DUPLICATED_NAME=Is,e.ERR_ENCRYPTED=ds,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=is,e.ERR_EOCDR_NOT_FOUND=as,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=ls,e.ERR_HTTP_RANGE=Nt,e.ERR_INVALID_COMMENT=Ns,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ls,e.ERR_INVALID_ENTRY_COMMENT=Ws,e.ERR_INVALID_ENTRY_NAME=Ms,e.ERR_INVALID_EXTRAFIELD_DATA=Zs,e.ERR_INVALID_EXTRAFIELD_TYPE=Ps,e.ERR_INVALID_PASSWORD=be,e.ERR_INVALID_SIGNATURE=ze,e.ERR_INVALID_UNCOMPRESSED_SIZE=at,e.ERR_INVALID_VERSION=Os,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=cs,e.ERR_OVERLAPPING_ENTRY=ws,e.ERR_SPLIT_ZIP_FILE=ps,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Vs,e.ERR_UNSUPPORTED_COMPRESSION=fs,e.ERR_UNSUPPORTED_ENCRYPTION=us,e.ERR_UNSUPPORTED_FORMAT=Hs,e.ERR_ZIP_NOT_EMPTY=Bs,e.HttpRangeReader=class extends ar{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.HttpReader=ar,e.Reader=Ht,e.SplitDataReader=ir,e.SplitDataWriter=or,e.TextReader=class extends Bt{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends qt{constructor(e){super(e),r.assign(this,{encoding:e,utf8:!e||"utf-8"==e.toLowerCase()})}async getData(){const{encoding:e,utf8:t}=this,s=await super.getData();if(s.text&&t)return s.text();{const t=new FileReader;return new y((n,a)=>{r.assign(t,{onload:({target:e})=>n(e.result),onerror:()=>a(t.error)}),t.readAsText(s,e)})}}},e.Uint8ArrayReader=class extends Ht{constructor(e){super(),e=new p(e.buffer,e.byteOffset,e.byteLength),r.assign(this,{array:e,size:e.length})}readUint8Array(e,t){return this.array.slice(e,e+t)}},e.Uint8ArrayWriter=class extends Vt{constructor(e){super(),this.defaultBufferSize=e||262144}init(e=0){r.assign(this,{offset:0,array:new p(e>0?e:this.defaultBufferSize)}),super.init()}writeUint8Array(e){const t=this,r=t.offset+e.length;if(r>t.array.length){let e=t.array.length?2*t.array.length:t.defaultBufferSize;for(;r>e;)e*=2;const s=t.array;t.array=new p(e),t.array.set(s)}t.array.set(e,t.offset),t.offset+=e.length}getData(){return this.offset===this.array.length?this.array:this.array.slice(0,this.offset)}},e.Writer=Vt,e.ZipReader=bs,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new bs(t,e).getEntriesGenerator();this.readable=new R({async pull(e){const{done:t,value:r}=await s.next();if(t)return e.close();const n={...r,readable:(()=>{const{readable:e,writable:t}=new F;if(r.getData)return r.getData(t),e})()};delete n.getData,e.enqueue(n)}}),this.writable=r}},e.ZipWriter=Xs,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new Xs(r,e)}transform(e){const{readable:t,writable:r}=new F({flush:()=>{this.zipWriter.close()}});return this.zipWriter.add(e,t),{readable:this.readable,writable:r}}writable(e){const{readable:t,writable:r}=new F;return this.zipWriter.add(e,t),r}close(e,t={}){return this.zipWriter.close(e,t)}},e.configure=oe,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(At.map(e=>(Ct(e),e.terminate())))}});
|
package/dist/zip-fs-core.js
CHANGED
|
@@ -2682,6 +2682,8 @@
|
|
|
2682
2682
|
*/
|
|
2683
2683
|
|
|
2684
2684
|
|
|
2685
|
+
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2686
|
+
|
|
2685
2687
|
let webWorkerSupported, webWorkerURI, webWorkerOptions;
|
|
2686
2688
|
let transferStreamsSupported = true;
|
|
2687
2689
|
let initModule = () => { };
|
|
@@ -2890,11 +2892,8 @@
|
|
|
2890
2892
|
return { writable, closed };
|
|
2891
2893
|
}
|
|
2892
2894
|
|
|
2893
|
-
function getWebWorker(url, baseURI, workerData, isModuleType
|
|
2895
|
+
function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
|
|
2894
2896
|
let worker, resolvedURI, resolvedOptions;
|
|
2895
|
-
if (isModuleType) {
|
|
2896
|
-
resolvedOptions = { type: "module" };
|
|
2897
|
-
}
|
|
2898
2897
|
if (webWorkerURI === UNDEFINED_VALUE) {
|
|
2899
2898
|
// deno-lint-ignore valid-typeof
|
|
2900
2899
|
const isFunctionURI = typeof url == FUNCTION_TYPE;
|
|
@@ -2906,6 +2905,12 @@
|
|
|
2906
2905
|
const isDataURI = resolvedURI.startsWith("data:");
|
|
2907
2906
|
const isBlobURI = resolvedURI.startsWith("blob:");
|
|
2908
2907
|
if (isDataURI || isBlobURI) {
|
|
2908
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2909
|
+
isModuleType = false;
|
|
2910
|
+
}
|
|
2911
|
+
if (isModuleType) {
|
|
2912
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2913
|
+
}
|
|
2909
2914
|
try {
|
|
2910
2915
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2911
2916
|
} catch (error) {
|
|
@@ -2925,6 +2930,12 @@
|
|
|
2925
2930
|
}
|
|
2926
2931
|
}
|
|
2927
2932
|
} else {
|
|
2933
|
+
if (isModuleType === UNDEFINED_VALUE) {
|
|
2934
|
+
isModuleType = true;
|
|
2935
|
+
}
|
|
2936
|
+
if (isModuleType) {
|
|
2937
|
+
resolvedOptions = MODULE_WORKER_OPTIONS;
|
|
2938
|
+
}
|
|
2928
2939
|
try {
|
|
2929
2940
|
resolvedURI = new URL(resolvedURI, baseURI);
|
|
2930
2941
|
} catch {
|
|
@@ -2934,7 +2945,7 @@
|
|
|
2934
2945
|
worker = new Worker(resolvedURI, resolvedOptions);
|
|
2935
2946
|
} catch (error) {
|
|
2936
2947
|
if (!isModuleType) {
|
|
2937
|
-
return getWebWorker(url, baseURI, workerData,
|
|
2948
|
+
return getWebWorker(url, baseURI, workerData, false, useBlobURI);
|
|
2938
2949
|
} else {
|
|
2939
2950
|
throw error;
|
|
2940
2951
|
}
|
|
@@ -4782,7 +4793,6 @@
|
|
|
4782
4793
|
let writingBufferedEntryData;
|
|
4783
4794
|
let writingEntryData;
|
|
4784
4795
|
let fileWriter;
|
|
4785
|
-
let blobPromise;
|
|
4786
4796
|
files.set(name, fileEntry);
|
|
4787
4797
|
try {
|
|
4788
4798
|
let lockPreviousFileEntry;
|
|
@@ -4791,7 +4801,7 @@
|
|
|
4791
4801
|
requestLockCurrentFileEntry();
|
|
4792
4802
|
}
|
|
4793
4803
|
if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
|
|
4794
|
-
fileWriter = new TransformStream();
|
|
4804
|
+
fileWriter = new TransformStream(undefined, undefined, { highWaterMark: Infinity });
|
|
4795
4805
|
fileWriter.size = 0;
|
|
4796
4806
|
bufferedWrite = true;
|
|
4797
4807
|
zipWriter.bufferedWrites++;
|
|
@@ -4822,20 +4832,20 @@
|
|
|
4822
4832
|
await skipDiskIfNeeded(writable);
|
|
4823
4833
|
}
|
|
4824
4834
|
const { diskNumber } = writer;
|
|
4825
|
-
writingEntryData = true;
|
|
4826
4835
|
fileEntry.diskNumberStart = diskNumber;
|
|
4827
|
-
if (bufferedWrite) {
|
|
4828
|
-
|
|
4829
|
-
} else {
|
|
4836
|
+
if (!bufferedWrite) {
|
|
4837
|
+
writingEntryData = true;
|
|
4830
4838
|
await writeData(fileWriter, localHeaderArray);
|
|
4831
4839
|
}
|
|
4832
4840
|
fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
|
|
4833
4841
|
const { zip64 } = fileEntry;
|
|
4834
|
-
|
|
4842
|
+
if (!bufferedWrite) {
|
|
4843
|
+
writingEntryData = false;
|
|
4844
|
+
}
|
|
4835
4845
|
files.set(name, fileEntry);
|
|
4836
4846
|
fileEntry.filename = name;
|
|
4837
4847
|
if (bufferedWrite) {
|
|
4838
|
-
|
|
4848
|
+
await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
|
|
4839
4849
|
await requestLockWriter();
|
|
4840
4850
|
writingBufferedEntryData = true;
|
|
4841
4851
|
fileEntry.diskNumberStart = writer.diskNumber;
|
|
@@ -4846,7 +4856,7 @@
|
|
|
4846
4856
|
updateLocalHeader(fileEntry, localHeaderView, options);
|
|
4847
4857
|
await skipDiskIfNeeded(writable);
|
|
4848
4858
|
await writeData(writer, localHeaderArray);
|
|
4849
|
-
await
|
|
4859
|
+
await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
4850
4860
|
writer.size += fileWriter.size;
|
|
4851
4861
|
writingBufferedEntryData = false;
|
|
4852
4862
|
} else {
|
|
@@ -4861,7 +4871,7 @@
|
|
|
4861
4871
|
zipWriter.offset += fileEntry.size;
|
|
4862
4872
|
return fileEntry;
|
|
4863
4873
|
} catch (error) {
|
|
4864
|
-
if (
|
|
4874
|
+
if (writingBufferedEntryData || writingEntryData) {
|
|
4865
4875
|
zipWriter.hasCorruptedEntries = true;
|
|
4866
4876
|
if (error) {
|
|
4867
4877
|
try {
|