@zip.js/zip.js 2.8.17 → 2.8.19

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zip-js/zip-js",
3
- "version": "2.8.17",
3
+ "version": "2.8.19",
4
4
  "exports": {
5
5
  ".": "./index.js"
6
6
  },
package/dist/zip-core.js CHANGED
@@ -105,6 +105,7 @@
105
105
  const MIN_DATE = new Date(1980, 0, 1);
106
106
 
107
107
  const UNDEFINED_VALUE = undefined;
108
+ const INFINITY_VALUE = Infinity;
108
109
  const UNDEFINED_TYPE = "undefined";
109
110
  const FUNCTION_TYPE = "function";
110
111
  const OBJECT_TYPE = "object";
@@ -1962,6 +1963,8 @@
1962
1963
  */
1963
1964
 
1964
1965
 
1966
+ const MODULE_WORKER_OPTIONS = { type: "module" };
1967
+
1965
1968
  let webWorkerSupported, webWorkerURI, webWorkerOptions;
1966
1969
  let transferStreamsSupported = true;
1967
1970
  let initModule = () => { };
@@ -2170,11 +2173,8 @@
2170
2173
  return { writable, closed };
2171
2174
  }
2172
2175
 
2173
- function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI = true) {
2176
+ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
2174
2177
  let worker, resolvedURI, resolvedOptions;
2175
- if (isModuleType) {
2176
- resolvedOptions = { type: "module" };
2177
- }
2178
2178
  if (webWorkerURI === UNDEFINED_VALUE) {
2179
2179
  // deno-lint-ignore valid-typeof
2180
2180
  const isFunctionURI = typeof url == FUNCTION_TYPE;
@@ -2186,6 +2186,12 @@
2186
2186
  const isDataURI = resolvedURI.startsWith("data:");
2187
2187
  const isBlobURI = resolvedURI.startsWith("blob:");
2188
2188
  if (isDataURI || isBlobURI) {
2189
+ if (isModuleType === UNDEFINED_VALUE) {
2190
+ isModuleType = false;
2191
+ }
2192
+ if (isModuleType) {
2193
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2194
+ }
2189
2195
  try {
2190
2196
  worker = new Worker(resolvedURI, resolvedOptions);
2191
2197
  } catch (error) {
@@ -2205,6 +2211,12 @@
2205
2211
  }
2206
2212
  }
2207
2213
  } else {
2214
+ if (isModuleType === UNDEFINED_VALUE) {
2215
+ isModuleType = true;
2216
+ }
2217
+ if (isModuleType) {
2218
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2219
+ }
2208
2220
  try {
2209
2221
  resolvedURI = new URL(resolvedURI, baseURI);
2210
2222
  } catch {
@@ -2214,7 +2226,7 @@
2214
2226
  worker = new Worker(resolvedURI, resolvedOptions);
2215
2227
  } catch (error) {
2216
2228
  if (!isModuleType) {
2217
- return getWebWorker(url, baseURI, workerData, true, useBlobURI);
2229
+ return getWebWorker(url, baseURI, workerData, false, useBlobURI);
2218
2230
  } else {
2219
2231
  throw error;
2220
2232
  }
@@ -3155,8 +3167,8 @@
3155
3167
  Object.assign(writer, {
3156
3168
  diskNumber: 0,
3157
3169
  diskOffset: 0,
3158
- availableSize: Infinity,
3159
- maxSize: Infinity
3170
+ availableSize: INFINITY_VALUE,
3171
+ maxSize: INFINITY_VALUE
3160
3172
  });
3161
3173
  }
3162
3174
  return writer;
@@ -4391,8 +4403,8 @@
4391
4403
  constructor(writer, options = {}) {
4392
4404
  writer = new GenericWriter(writer);
4393
4405
  const addSplitZipSignature =
4394
- writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity &&
4395
- writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity;
4406
+ writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
4407
+ writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
4396
4408
  Object.assign(this, {
4397
4409
  writer,
4398
4410
  addSplitZipSignature,
@@ -4888,7 +4900,6 @@
4888
4900
  let writingBufferedEntryData;
4889
4901
  let writingEntryData;
4890
4902
  let fileWriter;
4891
- let blobPromise;
4892
4903
  files.set(name, fileEntry);
4893
4904
  try {
4894
4905
  let lockPreviousFileEntry;
@@ -4897,7 +4908,7 @@
4897
4908
  requestLockCurrentFileEntry();
4898
4909
  }
4899
4910
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
4900
- fileWriter = new TransformStream();
4911
+ fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
4901
4912
  fileWriter.size = 0;
4902
4913
  bufferedWrite = true;
4903
4914
  zipWriter.bufferedWrites++;
@@ -4928,20 +4939,20 @@
4928
4939
  await skipDiskIfNeeded(writable);
4929
4940
  }
4930
4941
  const { diskNumber } = writer;
4931
- writingEntryData = true;
4932
4942
  fileEntry.diskNumberStart = diskNumber;
4933
- if (bufferedWrite) {
4934
- blobPromise = new Response(fileWriter.readable).blob();
4935
- } else {
4943
+ if (!bufferedWrite) {
4944
+ writingEntryData = true;
4936
4945
  await writeData(fileWriter, localHeaderArray);
4937
4946
  }
4938
4947
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
4939
4948
  const { zip64 } = fileEntry;
4940
- writingEntryData = false;
4949
+ if (!bufferedWrite) {
4950
+ writingEntryData = false;
4951
+ }
4941
4952
  files.set(name, fileEntry);
4942
4953
  fileEntry.filename = name;
4943
4954
  if (bufferedWrite) {
4944
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4955
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4945
4956
  await requestLockWriter();
4946
4957
  writingBufferedEntryData = true;
4947
4958
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -4952,7 +4963,7 @@
4952
4963
  updateLocalHeader(fileEntry, localHeaderView, options);
4953
4964
  await skipDiskIfNeeded(writable);
4954
4965
  await writeData(writer, localHeaderArray);
4955
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4966
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4956
4967
  writer.size += fileWriter.size;
4957
4968
  writingBufferedEntryData = false;
4958
4969
  } else {
@@ -4967,7 +4978,7 @@
4967
4978
  zipWriter.offset += fileEntry.size;
4968
4979
  return fileEntry;
4969
4980
  } catch (error) {
4970
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
4981
+ if (writingBufferedEntryData || writingEntryData) {
4971
4982
  zipWriter.hasCorruptedEntries = true;
4972
4983
  if (error) {
4973
4984
  try {
@@ -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&&gt?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 U=void 0!==S?S.currentScript:null;const v=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=1/0,te="undefined",re="function";let se=2;try{typeof A!=te&&A.hardwareConcurrency&&(se=A.hardwareConcurrency)}catch{}const ne={workerURI:"./core/web-worker-wasm.js",wasmURI:"./core/streams/zlib-wasm/zlib-streams.wasm",chunkSize:65536,maxWorkers:se,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,CompressionStream:typeof D!=te&&D,DecompressionStream:typeof _!=te&&_},ae=r.assign({},ne);function ie(){return ae}function oe(e){return i.max(e.chunkSize,64)}function ce(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;le("baseURI",t),le("wasmURI",f),le("workerURI",u),le("chunkSize",r),le("maxWorkers",s),le("terminateWorkerTimeout",n),le("useCompressionStream",a),le("useWebWorkers",i),le("CompressionStream",o),le("DecompressionStream",c),le("CompressionStreamZlib",l),le("DecompressionStreamZlib",d)}function le(e,t){t!==$&&(ae[e]=t)}const de=[];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;de[e]=t}class ue{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^de[255&(t^e[r])];this.crc=t}get(){return~this.crc}}class fe extends F{constructor(){let e;const t=new ue;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 pe(e){if(typeof b==te){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 we={concat(e,t){if(0===e.length||0===t.length)return e.concat(t);const r=e[e.length-1],s=we.getPartial(r);return 32===s?e.concat(t):we._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)+we.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]=we.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=we.getPartial(n);return s.push(we.partial(t+a&31,t+a>32?r:s.pop(),1)),s}},he={bytes:{fromBits(e){const t=we.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(we.partial(8*(3&r),s)),t}}},me=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=he.utf8String.toBits(e));const r=t._buffer=we.concat(t._buffer,e),s=t._length,n=t._length=s+we.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=we.concat(t,[we.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}},ge={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}},ye={importKey:e=>new ye.hmacSha1(he.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=we;for(t=he.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=me,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)}}},be=typeof x!=te&&typeof x.getRandomValues==re,ze="Invalid password",Se="Invalid signature",xe="zipjs-abort-check-password";function Ee(e){return be?x.getRandomValues(e):ge.getRandomValues(e)}const Fe=16,Re={name:"PBKDF2"},ke=r.assign({hash:{name:"HMAC"}},Re),De=r.assign({iterations:1e3,hash:{name:"SHA-1"}},Re),_e=["deriveBits"],Ae=[8,12,16],Te=[16,24,32],Ue=10,ve=[0,0,0,0],Ce=typeof x!=te,Ie=Ce&&x.subtle,Ne=Ce&&typeof Ie!=te,We=he.bytes,Me=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}},Oe=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=we.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 we.clamp(t,n)}},Le=ye.hmacSha1;let Pe=Ce&&Ne&&typeof Ie.importKey==re,Ze=Ce&&Ne&&typeof Ie.deriveBits==re;class He 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:Ke(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 qe(e,t,r,Ye(s,0,Ae[t])),a=Ye(s,Ae[t]);if(n[0]!=a[0]||n[1]!=a[1])throw new f(ze)})(r,n,s,Ye(e,0,Ae[n]+2)),e=Ye(e,Ae[n]+2),a?t.error(new f(xe)):i()):await o;const c=new p(e.length-Ue-(e.length-Ue)%Fe);t.enqueue(Be(r,e,c,0,Ue,!0))},async flush(e){const{signed:t,ctr:r,hmac:s,pending:n,ready:a}=this;if(s&&r){await a;const i=Ye(n,0,n.length-Ue),o=Ye(n,n.length-Ue);let c=new p;if(i.length){const e=Xe(We,i);s.update(e);const t=r.update(e);c=Ge(We,t)}if(t){const e=Ye(Ge(We,s.digest()),0,Ue);for(let t=0;Ue>t;t++)if(e[t]!=o[t])throw new f(Se)}e.enqueue(c)}}})}}class Ve extends F{constructor({password:e,rawPassword:t,encryptionStrength:s}){let n;super({start(){r.assign(this,{ready:new y(e=>this.resolveReady=e),password:Ke(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=Ee(new p(Ae[t]));return je(s,await qe(e,t,r,s))})(r,n,s),a()):await i;const c=new p(o.length+e.length-e.length%Fe);c.set(o,0),t.enqueue(Be(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(Xe(We,s));r.update(e),i=Ge(We,e)}n.signature=Ge(We,r.digest()).slice(0,Ue),e.enqueue(je(i,n.signature))}}}),n=this}}function Be(e,t,r,s,n,a){const{ctr:i,hmac:o,pending:c}=e,l=t.length-n;let d;for(c.length&&(t=je(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%Fe)),d=0;l-Fe>=d;d+=Fe){const e=Xe(We,Ye(t,d,d+Fe));a&&o.update(e);const n=i.update(e);a||o.update(n),r.set(Ge(We,n),d+s)}return e.pending=Ye(t,d),r}async function qe(e,s,n,a){e.password=null;const i=await(async(e,t,r,s,n)=>{if(!Pe)return ye.importKey(t);try{return await Ie.importKey("raw",t,r,!1,n)}catch{return Pe=!1,ye.importKey(t)}})(0,n,ke,0,_e),o=await(async(e,t,r)=>{if(!Ze)return ye.pbkdf2(t,e.salt,De.iterations,r);try{return await Ie.deriveBits(e,t,r)}catch{return Ze=!1,ye.pbkdf2(t,e.salt,De.iterations,r)}})(r.assign({salt:a},De),i,8*(2*Te[s]+2)),c=new p(o),l=Xe(We,Ye(c,0,Te[s])),d=Xe(We,Ye(c,Te[s],2*Te[s])),u=Ye(c,2*Te[s]);return r.assign(e,{keys:{key:l,authentication:d,passwordVerification:u},ctr:new Oe(new Me(l),t.from(ve)),hmac:new Le(d)}),u}function Ke(e,t){return t===$?pe(e):t}function je(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 Ye(e,t,r){return e.subarray(t,r)}function Ge(e,t){return e.fromBits(t)}function Xe(e,t){return e.toBits(t)}class Je extends F{constructor({password:e,passwordVerification:t,checkPasswordOnly:s}){super({start(){r.assign(this,{password:e,passwordVerification:t}),tt(this,e)},transform(e,t){const r=this;if(r.password){const t=$e(r,e.subarray(0,12));if(r.password=null,t.at(-1)!=r.passwordVerification)throw new f(ze);e=e.subarray(12)}s?t.error(new f(xe)):t.enqueue($e(r,e))}})}}class Qe extends F{constructor({password:e,passwordVerification:t}){super({start(){r.assign(this,{password:e,passwordVerification:t}),tt(this,e)},transform(e,t){const r=this;let s,n;if(r.password){r.password=null;const t=Ee(new p(12));t[11]=r.passwordVerification,s=new p(e.length+t.length),s.set(et(r,t),0),n=12}else s=new p(e.length),n=0;s.set(et(r,e),n),t.enqueue(s)}})}}function $e(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=st(e)^t[s],rt(e,r[s]);return r}function et(e,t){const r=new p(t.length);for(let s=0;s<t.length;s++)r[s]=st(e)^t[s],rt(e,t[s]);return r}function tt(e,t){const s=[305419896,591751049,878082192];r.assign(e,{keys:s,crcKey0:new ue(s[0]),crcKey2:new ue(s[2])});for(let r=0;r<t.length;r++)rt(e,t.charCodeAt(r))}function rt(e,t){let[r,s,n]=e.keys;e.crcKey0.append([t]),r=~e.crcKey0.get(),s=at(i.imul(at(s+nt(r)),134775813)+1),e.crcKey2.append([s>>>24]),n=~e.crcKey2.get(),e.keys=[r,s,n]}function st(e){const t=2|e.keys[2];return nt(i.imul(t,1^t)>>>8)}function nt(e){return 255&e}function at(e){return 4294967295&e}const it="Invalid uncompressed size";class ot 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 fe,p=ut(p,u)),n&&(p=dt(p,i,{level:l,chunkSize:t},s,r,s)),a&&(o?p=ut(p,new Qe(e)):(f=new Ve(e),p=ut(p,f))),lt(d,p,()=>{let e;a&&!o&&(e=f.signature),a&&!o||!c||(e=new m(u.value.buffer).getUint32(0)),d.signature=e})}}class ct 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=ut(w,new Je(e)):(p=new He(e),w=ut(w,p))),c&&(w=dt(w,l,{chunkSize:t,deflate64:d},s,r,s)),a&&!n||!i||(u=new fe,w=ut(w,u)),lt(this,w,()=>{if((!a||n)&&i){const e=new m(u.value.buffer);if(o!=e.getUint32(0,!1))throw new f(Se)}})}}function lt(e,t,s){t=ut(t,new F({flush:s})),r.defineProperty(e,"readable",{get:()=>t})}function dt(e,t,r,s,n,a){const i=t&&s?s:n||a,o=r.deflate64?"deflate64-raw":"deflate-raw";try{e=ut(e,new i(o,r))}catch(s){if(!t)throw s;if(n)e=ut(e,new n(o,r));else{if(!a)throw s;e=ut(e,new a(o,r))}}return e}function ut(e,t){return e.pipeThrough(t)}const ft="data",pt="close",wt="deflate",ht="inflate";class mt extends F{constructor(e,t){super({});const s=this,{codecType:n}=e;let a;n.startsWith(wt)?a=ot:n.startsWith(ht)&&(a=ct),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(it)},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 gt 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 yt={type:"module"};let bt,zt,St,xt=!0;class Et{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 gt(a.chunkSize)).pipeThrough(new Ft(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)}}),bt===$&&(bt=typeof T!=te),(o&&bt?Dt:kt)(e,a)}}class Ft extends F{constructor({onstart:e,onprogress:t,size:r,onend:s}){let n=0;super({async start(){e&&await Rt(e,r)},async transform(e,s){n+=e.length,t&&await Rt(t,n,r),s.enqueue(e)},async flush(){s&&await Rt(s,n)}})}}async function Rt(e,...t){try{await e(...t)}catch{}}function kt(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 mt(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 Dt(e,t){const{baseURI:s,chunkSize:n}=t;let{wasmURI:a}=t;if(!e.interface){let i;typeof a==re&&(a=a());try{i=_t(e.workerURI,s,e)}catch{return bt=!1,kt(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=At({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 _t(e,t,s,n,a=!0){let i,o,c;if(zt===$){const r=typeof e==re;o=r?e(a):e;const l=o.startsWith("data:"),d=o.startsWith("blob:");if(l||d){n===$&&(n=!1),n&&(c=yt);try{i=new T(o,c)}catch(a){if(d)try{u.revokeObjectURL(o)}catch{}if(r&&d)return _t(e,t,s,n,!1);if(n)throw a;return _t(e,t,s,!0,!1)}}else{n===$&&(n=!0),n&&(c=yt);try{o=new u(o,t)}catch{}try{i=new T(o,c)}catch(r){if(n)throw r;return _t(e,t,s,!1,a)}}zt=o,St=c}else i=new T(zt,St);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();At({type:ft,value:e,done:r,messageId:a},t)}s==ft&&(await l.ready,await l.write(new p(n)),At({type:"ack",messageId:a},t)),s==pt&&h(null,i)}}catch(o){At({type:pt,messageId:a},t),h(o)}function h(e,t){e?u(e):d(t),l&&l.releaseLock(),w()}})(e,s)),i}function At(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&&xt?(s&&i.push(s),a&&i.push(a)):e.readable=e.writable=null,i.length)try{return t.postMessage(e,i),!0}catch{xt=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(e){throw r&&r.releaseLock(),s(),e}}let Tt=[];const Ut=[];let vt=0;async function Ct(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=Tt.find(e=>!e.busy);if(r)return It(r),new Et(r,e,t,w);if(Tt.length<f){const r={indexWorker:vt};return vt++,Tt.push(r),new Et(r,e,t,w)}return new y(r=>Ut.push({resolve:r,stream:e,workerOptions:t}))})()).run();function w(e){if(Ut.length){const[{resolve:t,stream:r,workerOptions:s}]=Ut.splice(0,1);t(new Et(e,r,s,w))}else e.worker?(It(e),((e,t)=>{const{config:r}=t,{terminateWorkerTimeout:s}=r;n.isFinite(s)&&s>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{Tt=Tt.filter(t=>t!=e);try{await e.terminate()}catch{}},s))})(e,t)):Tt=Tt.filter(t=>t!=e)}}function It(e){const{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}const Nt="HTTP error ",Wt="HTTP Range not supported",Mt="Range",Ot="GET",Lt="bytes",Pt=65536,Zt="writable";class Ht{constructor(){this.size=0}init(){this.initialized=!0}}class Vt extends Ht{get readable(){const e=this,{chunkSize:t=Pt}=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 fr(e,n+c,l,o);s.enqueue(d),c+t>a||a===$&&!d.length&&l?s.close():this.chunkOffset+=t}});return r}}class Bt extends Ht{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,Zt,{get:()=>t})}writeUint8Array(){}}class qt extends Vt{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 Kt extends Ht{constructor(e){super();const t=new F,s=[];e&&s.push(["Content-Type",e]),r.defineProperty(this,Zt,{get:()=>t.writable}),this.blob=new d(t.readable,{headers:s}).blob()}getData(){return this.blob}}class jt extends Vt{constructor(e,t){super(),Gt(this,e,t)}async init(){await Xt(this,nr,er),super.init()}readUint8Array(e,t){return Jt(this,e,t,nr,er)}}class Yt extends Vt{constructor(e,t){super(),Gt(this,e,t)}async init(){await Xt(this,ar,tr),super.init()}readUint8Array(e,t){return Jt(this,e,t,ar,tr)}}function Gt(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 Xt(e,t,r){const{url:s,preventHeadRequest:a,useRangeHeader:i,forceRangeRequests:o,combineSizeEocd:c}=e;if((e=>{const{baseURI:t}=ie(),{protocol:r}=new u(e,t);return"http:"==r||"https:"==r})(s)&&(i||o)&&(void 0===a||a)){const s=await t(Ot,e,Qt(e,c?-22:void 0)),a=s.headers.get("Accept-Ranges");if(!(o||a&&a.toLowerCase()==Lt))throw new f(Wt);{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 sr(e,t,r):e.size=a}}else await sr(e,t,r)}async function Jt(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,Qt(e,t,r));if(206!=n.status)throw new f(Wt);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 Qt(e,t=0,s=1){return r.assign({},$t(e),{[Mt]:Lt+"="+(0>t?t:t+"-"+(t+s-1))})}function $t({options:e}){const{headers:t}=e;if(t)return Symbol.iterator in t?r.fromEntries(t):t}async function er(e){await rr(e,nr)}async function tr(e){await rr(e,ar)}async function rr(e,t){const r=await t(Ot,e,$t(e));e.data=new p(await r.arrayBuffer()),e.size||(e.size=e.data.length)}async function sr(e,t,r){if(e.preventHeadRequest)await r(e,e.options);else{const s=(await t("HEAD",e,$t(e))).headers.get("Content-Length");s?e.size=n(s):await r(e,e.options)}}async function nr(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(Wt):new f(Nt+(a.statusText||a.status))}function ar(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(Wt):new f(Nt+(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 ir extends Vt{constructor(e,t={}){super(),r.assign(this,{url:e,reader:t.useXHR?new Yt(e,t):new jt(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 or extends Vt{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 fr(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 fr(l,c,t)}else a=new p;return s.lastDiskNumber=i.max(o,s.lastDiskNumber),a}}class cr extends Ht{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 ur(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,Zt,{get:()=>o})}}class lr{constructor(e){return t.isArray(e)&&(e=new or(e)),e instanceof R&&(e={readable:e}),e}}class dr{constructor(e){return e.writable===$&&typeof e.next==re&&(e=new cr(e)),e instanceof k&&(e={writable:e}),e.size===$&&(e.size=0),e instanceof cr||r.assign(e,{diskNumber:0,diskOffset:0,availableSize:ee,maxSize:ee}),e}}async function ur(e,t){if(!e.init||e.initialized)return y.resolve();await e.init(t)}function fr(e,t,r,s){return e.readUint8Array(t,r,s)}const pr="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ".split("");function wr(e,t){return t&&"cp437"==t.trim().toLowerCase()?(e=>{{let t="";for(let r=0;r<e.length;r++)t+=pr[e[r]];return t}})(e):new z(t).decode(e)}const hr="filename",mr="rawFilename",gr="comment",yr="rawComment",br="uncompressedSize",zr="compressedSize",Sr="offset",xr="diskNumberStart",Er="lastModDate",Fr="rawLastModDate",Rr="lastAccessDate",kr="creationDate",Dr="rawCreationDate",_r="internalFileAttributes",Ar="externalFileAttributes",Tr="msdosAttributesRaw",Ur="msdosAttributes",vr="msDosCompatible",Cr="zip64",Ir="encrypted",Nr="version",Wr="versionMadeBy",Mr="zipCrypto",Or="directory",Lr="executable",Pr="compressionMethod",Zr="signature",Hr="extraField",Vr="unixMode",Br="setuid",qr="setgid",Kr="sticky",jr=[hr,mr,br,zr,Er,Fr,gr,yr,Rr,kr,Dr,Sr,xr,_r,Ar,Tr,Ur,vr,Cr,Ir,Nr,Wr,Mr,Or,Lr,Pr,Zr,Hr,"extraFieldUnix","extraFieldInfoZip","uid","gid",Vr,Br,qr,Kr,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"];class Yr{constructor(e){jr.forEach(t=>this[t]=e[t])}}const Gr="password",Xr="rawPassword",Jr="passThrough",Qr="signal",$r="useWebWorkers",es="useCompressionStream",ts="preventClose",rs="supportZip64SplitFile",ss="offset",ns="usdz",as="File format is not recognized",is="End of central directory not found",os="End of Zip64 central directory locator not found",cs="Central directory header not found",ls="Local file header not found",ds="Zip64 extra field not found",us="File contains encrypted entry",fs="Encryption method not supported",ps="Compression method not supported",ws="Split zip file",hs="Overlapping entry found",ms="utf-8",gs="cp437",ys=[[br,v],[zr,v],[Sr,v],[xr,C]],bs={[C]:{getValue:vs,bytes:4},[v]:{getValue:Cs,bytes:8}};class zs{constructor(e,t={}){r.assign(this,{reader:new lr(e),options:t,config:ie(),readRanges:[]})}async*getEntriesGenerator(e={}){const t=this;let{reader:s}=t;const{config:n}=t;if(await ur(s),s.size!==$&&s.readUint8Array||(s=new qt(await new d(s.readable).blob()),await ur(s)),s.size<H)throw new f(as);s.chunkSize=oe(n);const a=await(async(e,t,r)=>{const s=new p(4);var n;return n=t,Is(s).setUint32(0,n,!0),await a(22)||await a(i.min(1048582,r));async function a(t){const n=r-t,a=await fr(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(Is(await fr(s,0,4)))==W?new f(ws):new f(is);const o=Is(a);let c=vs(o,12),l=vs(o,16);const u=a.offset,w=Us(o,20),h=u+H+w;let m=Us(o,4);const g=s.lastDiskNumber||0;let b=Us(o,6),z=Us(o,8),S=0,x=0;if(l==v||c==v||z==C||b==C){const e=Is(await fr(s,a.offset-20,20));if(vs(e,0)==Z){l=Cs(e,8);let t=await fr(s,l,56,-1),r=Is(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 fr(s,l,56,-1),r=Is(t)}if(vs(r,0)!=P)throw new f(os);m==C&&(m=vs(r,16)),b==C&&(b=vs(r,20)),z==C&&(z=Cs(r,32)),c==v&&(c=Cs(r,40)),l-=c}}if(l<s.size||(S=s.size-l-c-H,l=s.size-c-H),g!=m)throw new f(ws);if(0>l)throw new f(as);let E=0,R=await fr(s,l,c,b),k=Is(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 fr(s,l,c,b),k=Is(R)}}const D=a.offset-l-(s.lastDiskOffset||0);if(c==D||0>D||(c=D,R=await fr(s,l,c,b),k=Is(R)),0>l||l>=s.size)throw new f(as);const _=Ds(t,e,"filenameEncoding"),A=Ds(t,e,"commentEncoding");for(let a=0;z>a;a++){const o=new Ss(s,n,t.options);if(vs(k,E)!=O)throw new f(cs);xs(o,k,E+6);const c=!!o.bitFlag.languageEncodingFlag,l=E+46,u=l+o.filenameLength,p=u+o.extraFieldLength,w=Us(k,E+4),h=!(w>>8),m=w>>8==3,g=R.subarray(l,u),b=Us(k,E+32),D=p+b,T=R.subarray(p,D),U=c,v=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=Ds(t,e,"decodeText")||wr,Z=U?ms:_||gs,H=v?ms:A||gs;let V=P(g,Z);V===$&&(V=wr(g,Z));let B=P(T,H);B===$&&(B=wr(T,H)),r.assign(o,{versionMadeBy:w,msDosCompatible:h,compressedSize:0,uncompressedSize:0,commentLength:b,offset:L,diskNumberStart:Us(k,E+34),internalFileAttributes:Us(k,E+36),externalFileAttributes:N,msdosAttributesRaw:W,msdosAttributes:M,rawFilename:g,filenameUTF8:U,commentUTF8:v,rawExtraField:R.subarray(u,p),rawComment:T,filename:V,comment:B}),x=i.max(L,x),Es(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 Yr(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 Yr(o))}catch{}yield ne}const T=Ds(t,e,"extractPrependedData"),U=Ds(t,e,"extractAppendedData");return T&&(t.prependedData=x>0?await fr(s,0,x):new p),t.comment=w?await fr(s,u+H,w):new p,U&&(t.appendedData=h<s.size?await fr(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 Ss{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=Is(await fr(i,o,X,c));let E=Ds(a,n,Gr),F=Ds(a,n,Xr);const R=Ds(a,n,Jr);if(E=E&&E.length&&E,F=F&&F.length&&F,l&&99!=l.originalCompressionMethod)throw new f(ps);if(0!=u&&8!=u&&9!=u&&!R)throw new f(ps);if(vs(x,0)!=N)throw new f(ls);xs(S,x,4);const{extraFieldLength:D,filenameLength:_,lastAccessDate:A,creationDate:T}=S;S.rawExtraField=D?await fr(i,o+X+_,D,c):new p,Es(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(fs);if(!E&&!F)throw new f(us)}const C=o+X+_+D,W=b,O=i.readable;r.assign(O,{diskNumberStart:c,offset:C,size:W});const L=Ds(a,n,Qr),P=Ds(a,n,"checkPasswordOnly");let Z=Ds(a,n,"checkOverlappingEntry");const H=Ds(a,n,"checkOverlappingEntryOnly");H&&(Z=!0);const{onstart:V,onprogress:B,onend:q}=n,K=9==u;let j=Ds(a,n,es);K&&(j=!1);const Y={options:{codecType:ht,password:E,rawPassword:F,zipCrypto:v,encryptionStrength:l&&l.strength,signed:Ds(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:Ds(a,n,$r),useCompressionStream:j,transferStreams:Ds(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 fr(e,o+a,p+4,s);if(vs(Is(r),0)==M){const e=vs(Is(r),4);let s,o;l?(s=Cs(Is(r),8),o=Cs(Is(r),16)):(s=vs(Is(r),8),o=vs(Is(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(hs);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 dr(e),await ur(e,R?b:y),({writable:G}=e);const{outputSize:t}=await Ct({readable:O,writable:G},Y);if(e.size+=t,t!=(R?b:y))throw new f(it)}}catch(t){if(t.outputSize!==$&&(e.size+=t.outputSize),!P||t.message!=xe)throw t}finally{Ds(a,n,ts)||!G||G.locked||await G.getWriter().close()}return P||H?$:e.getData?e.getData():G}}function xs(e,t,s){const n=e.rawBitFlag=Us(t,s+2),a=!(1&~n),i=vs(t,s+6);r.assign(e,{encrypted:a,version:Us(t,s),bitFlag:{level:(6&n)>>1,dataDescriptor:!(8&~n),languageEncodingFlag:(n&B)==B},rawLastModDate:i,lastModDate:_s(i),filenameLength:Us(t,s+22),extraFieldLength:Us(t,s+24)})}function Es(e,t,s,n,a){const{rawExtraField:i}=t,l=t.extraField=new c,d=Is(new p(i));let u=0;try{for(;u<i.length;){const e=Us(d,u),t=Us(d,u+2);l.set(e,{type:e,data:i.slice(u+4,u+4+t)}),u+=4+t}}catch{}const w=Us(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=Is(e.data),s=ys.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=bs[o];t[i]=e[i]=s.getValue(r,a),a+=s.bytes}else if(e[i])throw new f(ds)}})(h,t),t.extraFieldZip64=h);const m=l.get(28789);m&&(Fs(m,hr,mr,t,e),t.extraFieldUnicodePath=m);const g=l.get(25461);g&&(Fs(g,gr,yr,t,e),t.extraFieldUnicodeComment=g);const y=l.get(39169);y?(((e,t,s)=>{const n=Is(e.data),a=Ts(n,4);r.assign(e,{vendorVersion:Ts(n,0),vendorId:Ts(n,2),strength:a,originalCompressionMethod:s,compressionMethod:Us(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=Is(e.data);let n,a=4;try{for(;a<e.data.length&&!n;){const t=Us(s,a),r=Us(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=Is(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:As(a),lastAccessDate:As(i),creationDate:As(o)};r.assign(e,c),r.assign(t,c)}}catch{}})(b,t),t.extraFieldNTFS=b);const z=l.get(30805);if(z)Rs(z,t,!1),t.extraFieldUnix=z;else{const e=l.get(30837);e&&(Rs(e,t,!0),t.extraFieldInfoZip=e)}const S=l.get(V);S&&(((e,t,r)=>{const s=Is(e.data),n=Ts(s,0),a=[],i=[];r?(1&~n||(a.push(Er),i.push(Fr)),2&~n||(a.push(Rr),i.push("rawLastAccessDate")),4&~n||(a.push(kr),i.push(Dr))):5>e.data.length||(a.push(Er),i.push(Fr));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 Fs(e,t,s,n,a){const i=Is(e.data),o=new ue;o.append(a[s]);const c=Is(new p(4));c.setUint32(0,o.get(),!0);const l=vs(i,1);r.assign(e,{version:Ts(i,0),[t]:wr(e.data.subarray(5)),valid:!a.bitFlag.languageEncodingFlag&&l==vs(c,0)}),e.valid&&(n[t]=e[t],n[t+"UTF8"]=!0)}function Rs(e,t,s){try{const n=Is(new p(e.data));let a=0;const i=Ts(n,a++),o=Ts(n,a++),c=e.data.subarray(a,a+o);a+=o;const l=ks(c),d=Ts(n,a++),u=e.data.subarray(a,a+d);a+=d;const f=ks(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 ks(e){const t=new p(4);return t.set(e,0),new m(t.buffer,t.byteOffset,4).getUint32(0,!0)}function Ds(e,t,r){return t[r]===$?e.options[r]:t[r]}function _s(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 As(e){return new o(n(e/a(1e4)-a(116444736e5)))}function Ts(e,t){return e.getUint8(t)}function Us(e,t){return e.getUint16(t,!0)}function vs(e,t){return e.getUint32(t,!0)}function Cs(e,t){return n(e.getBigUint64(t,!0))}function Is(e){return new m(e.buffer)}const Ns="File already exists",Ws="Zip file comment exceeds 64KB",Ms="File entry comment exceeds 64KB",Os="File entry name exceeds 64KB",Ls="Version exceeds 65535",Ps="The strength must equal 1, 2, or 3",Zs="Extra field type exceeds 65535",Hs="Extra field data exceeds 64KB",Vs="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Bs="Undefined uncompressed size",qs="Zip file not empty",Ks=new p([7,0,2,0,65,69,3,0,0]),js="infozip",Ys="unix";let Gs=0;const Xs=[];class Js{constructor(e,t={}){const s=(e=new dr(e)).availableSize!==$&&e.availableSize>0&&e.availableSize!==ee&&e.maxSize!==$&&e.maxSize>0&&e.maxSize!==ee;r.assign(this,{writer:e,addSplitZipSignature:s,options:t,config:ie(),files:new c,filenames:new l,offset:t[ss]===$?e.size||e.writable.size||0:t[ss],pendingEntriesSize:0,pendingAddFileCalls:new l,bufferedWrites:0})}async prependZip(e){if(this.filenames.size)throw new f(qs);e=new lr(e);const t=new zs(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=un(m,g,y,b,z,S),k=h&&d>v,D=h&&u>v,{headerArray:_,headerView:A}=fn({version:t,bitFlag:pn(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:d}=c;let u;Gs<d.maxWorkers?Gs++:await new y(e=>Xs.push(e));try{if(e=e.trim(),c.filenames.has(e))throw new f(Ns);return c.filenames.add(e),u=(async(e,s,n,c)=>{s=s.trim();let l=rn(e,c,vr),d=rn(e,c,Wr,l?20:768);const u=rn(e,c,Lr),h=rn(e,c,"uid"),g=rn(e,c,"gid");let b=rn(e,c,Vr);const z=rn(e,c,"unixExtraFieldType");let S=rn(e,c,Br),x=rn(e,c,qr),E=rn(e,c,Kr);if(h!==$&&(0>h||h>v))throw new f("Invalid uid (must be integer 0..2^32-1)");if(g!==$&&(0>g||g>v))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!==js&&z!==Ys)throw new f("Invalid unixExtraFieldType (must be 'infozip' or 'unix')");let R=rn(e,c,Tr),k=rn(e,c,Ur);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(Ls);let _=rn(e,c,Ar,0);!c[Or]&&s.endsWith(G)&&(c[Or]=!0);const A=rn(e,c,Or);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&&(_=_&v|R&I);const U=rn(e,c,"encodeText",pe);let O=U(s);if(O===$&&(O=pe(s)),un(O)>C)throw new f(Os);const L=c[gr]||"";let P=U(L);if(P===$&&(P=pe(L)),un(P)>C)throw new f(Ms);const Z=rn(e,c,Nr,20);if(Z>C)throw new f(Ls);const H=rn(e,c,Er,new o),B=rn(e,c,Rr),te=rn(e,c,kr),re=rn(e,c,_r,0),se=rn(e,c,Jr);let ne,ae;se||(ne=rn(e,c,Gr),ae=rn(e,c,Xr));const ie=rn(e,c,"encryptionStrength",3),ce=rn(e,c,Mr),le=rn(e,c,"extendedTimestamp",!0),de=rn(e,c,"keepOrder",!0),ue=rn(e,c,$r),fe=rn(e,c,"bufferedWrite"),we=rn(e,c,"dataDescriptorSignature",!1),he=rn(e,c,Qr),me=rn(e,c,"useUnicodeFileNames",!0),ge=rn(e,c,Pr);let ye=rn(e,c,"level"),be=rn(e,c,es),ze=rn(e,c,"dataDescriptor");fe&&ze===$&&(ze=!1),(ze===$||ce)&&(ze=!0),ye!==$&&6!=ye&&(be=!1),be||e.config.CompressionStream!==$||e.config.CompressionStreamZlib!==$||(ye=0);let Se=rn(e,c,Cr);if(!ce&&(ne!==$||ae!==$)&&(1>ie||ie>3))throw new f(Ps);let xe=new p;const Ee=c[Hr];if(Ee){let e=0,t=0;Ee.forEach(t=>e+=4+un(t)),xe=new p(e),Ee.forEach((e,r)=>{if(r>C)throw new f(Zs);if(un(e)>C)throw new f(Hs);ln(xe,new w([r]),t),ln(xe,new w([un(e)]),t+2),ln(xe,e,t+4),t+=4+un(e)})}let Fe=0,Re=0,ke=0;if(se&&(ke=c[br],ke===$))throw new f(Bs);const De=!0===Se;n&&(n=new lr(n),await ur(n),se?(c.uncompressedSize=ke,Fe=sn(ke)):n.size===$?(ze=!0,(Se||Se===$)&&(Se=!0,ke=Fe=4294967296)):(c.uncompressedSize=ke=n.size,Fe=sn(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=rn(e,c,rs,!0)&&De||Ae+i.ceil(e.pendingEntriesSize/Te)>C;if(Ce||Ue||ve||Ie){if(!1===Se||!de)throw new f(Vs);Se=!0}Se=Se||!1;const Ne=rn(e,c,Ir),We=(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=dn(T);U=new p(t);const s=dn(U);if(an(r,0,1),an(r,2,un(T)-4),an(s,0,1),an(s,2,un(U)-4),I){const e=dn(T),t=dn(U);let r=4,s=4;z&&(cn(e,r,a(F)),r+=8,cn(t,s,a(F)),s+=8),S&&v&&(cn(e,r,a(F)),r+=8,cn(t,s,a(F)),s+=8),x&&(cn(e,r,a(R)),r+=8),E&&(on(e,r,k),r+=4),4==s&&(U=new p)}}else T=new p,U=new p;let W,M,O,L,P;if(b&&!l){W=new p(un(Ks)+2);const e=dn(W);an(e,0,39169),ln(W,Ks,2),nn(e,8,h)}else W=new p;if(g){O=new p(9+(s?4:0)+(n?4:0));const e=dn(O);an(e,0,V),an(e,2,un(O)-4),L=1+(s?2:0)+(n?4:0),nn(e,4,L);let t=5;on(e,t,i.floor(r.getTime()/1e3)),t+=4,s&&(on(e,t,i.floor(s.getTime()/1e3)),t+=4),n&&on(e,t,i.floor(n.getTime()/1e3));try{M=new p(36);const e=dn(M),t=tn(r);an(e,0,10),an(e,2,32),an(e,8,1),an(e,10,24),cn(e,12,t),cn(e,20,tn(s)||t),cn(e,28,tn(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=Qs(t),c=Qs(r);let l=new p;if(o==Ys&&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=dn(P);an(u,0,o==js?30837:30805),an(u,2,d),nn(u,4,1),nn(u,5,e.length);let f=6;ln(P,e,f),f+=e.length,nn(u,f,c.length),f++,ln(P,c,f),f+=c.length,ln(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?un(U):0,H=Z+un(W,O,M,P,w),{headerArray:B,headerView:q,rawLastModDate:G}=fn({version:D,bitFlag:pn(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+un(t)+H),re=dn(te);return on(re,0,N),ln(te,B,4),ln(te,t,ee),ee+=un(t),I&&ln(te,U,ee),ee+=Z,ln(te,W,ee),ee+=un(W),ln(te,O,ee),ee+=un(O),ln(te,M,ee),ee+=un(M),ln(te,P,ee),ee+=un(P),ln(te,w,ee),u&&(on(re,18,0),on(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:te,rawExtraField:xe,zip64:Se,zip64UncompressedSize:Ue,zip64CompressedSize:ve,zip64Offset:Ce,zip64DiskNumberStart:Ie,password:ne,rawPassword:ae,level:ye,useWebWorkers:ue,encryptionStrength:ie,extendedTimestamp:le,zipCrypto:ce,bufferedWrite:fe,keepOrder:de,useUnicodeFileNames:me,dataDescriptor:ze,dataDescriptorSignature:we,signal:he,msDosCompatible:l,internalFileAttribute:re,internalFileAttributes:re,externalFileAttribute:_,externalFileAttributes:_,useCompressionStream:be,passThrough:se,encrypted:!!(ne&&un(ne)||ae&&un(ae))||se&&Ne,signature:c[Zr],compressionMethod:ge,uncompressedSize:ke,offset:e.offset-_e,diskNumberStart:Ae,uid:h,gid:g,setuid:S,setgid:x,sticky:E,unixMode:b,msdosAttributesRaw:R,msdosAttributes:k,unixExternalUpper:T})),Me=(({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=dn(n),r&&(a=4,on(s,0,M))),{dataDescriptorArray:n,dataDescriptorView:s,dataDescriptorOffset:a}})(c),Oe=un(We.localHeaderArray,Me.dataDescriptorArray);let Le;Re=Oe+Fe,e.options[ns]&&(Re+=Re+64),e.pendingEntriesSize+=Re;try{Le=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[ns],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($,$,{highWaterMark:ee}),R.size=0,b=!0,e.bufferedWrites++,await ur(l)),await ur(R);const{writable:z,diskOffset:A}=l;if(e.addSplitZipSignature){delete e.addSplitZipSignature;const t=new p(4);on(dn(t),0,W),await en(l,t),e.offset+=4}m&&((e,t)=>{const{headerInfo:r}=e;let{localHeaderArray:s,extraFieldLength:n}=r,a=dn(s),i=64-(t+un(s))%64;4>i&&(i+=64);const o=new p(i),c=dn(o);an(c,0,6534),an(c,2,i-2);const l=s;r.localHeaderArray=s=new p(un(l)+i),ln(s,l),ln(s,o,un(l)),a=dn(s),an(a,28,n+i),e.metadataSize+=i})(i,e.offset-A);const{localHeaderView:T,localHeaderArray:U}=h;b||(await t,await _(z));const{diskNumber:C}=l;k.diskNumberStart=C,b||(E=!0,await en(R,U)),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:U,rawPassword:v,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:ie,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:ie,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=oe(o);const r=e.readable,s=e.size,n={options:{codecType:wt,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 Ct({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===$||(on(l,10,e),c&&on(u,f,e)),i?c&&(cn(u,f+4,a(t)),cn(u,f+12,a(r))):(on(l,14,t),on(l,18,r),c&&(on(u,f+4,t),on(u,f+8,r)))})({signature:ge,compressedSize:be,uncompressedSize:ye,headerInfo:l,dataDescriptorInfo:d},c),Z&&await en(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&&$s(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||on(d,14,n),l||on(d,18,i),c||on(d,22,o)),r&&s){let t=X+un(e)+4;c&&(cn(d,t,a(o)),t+=8),l&&(cn(d,t,a(i)),t+=8)}})(k,T,o),await _(z),await en(l,U),await R.readable.pipeTo(z,{preventClose:!0,preventAbort:!0,signal:w}),l.size+=R.size,x=!1):(k.offset=e.offset-A,N&&$s(k)),k.offset>v&&!N)throw new f(Vs);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){un(h.localHeaderArray)>l.availableSize&&(l.availableSize=0,await en(e,new p))}})(e,s,n,{headerInfo:We,dataDescriptorInfo:Me,metadataSize:Oe},c)}finally{e.pendingEntriesSize-=Re}return r.assign(Le,{name:s,comment:L,extraField:Ee}),new Yr(Le)})(c,e,s,n),l.add(u),await u}catch(t){throw c.filenames.delete(e),t}finally{l.delete(u);const e=Xs.shift();e?e():Gs--}}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=dn(w);an(e,0,V),an(e,2,5),nn(e,4,d),on(e,5,i.floor(f.getTime()/1e3))}else w=new p;e.rawExtraFieldExtendedTimestamp=w,u+=46+un(t,n,r,s,a,o,w,c)}const m=new p(u),g=dn(m);await ur(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=un(i,c,l,u,f,p);on(g,d,O),an(g,d+4,h),x||on(z,18,A),E||on(z,14,T),ln(m,b,d+6);let I=d+X;if(an(g,I,U),I+=2,an(g,I,un(w)),I+=2,an(g,I,S&&F?C:_),I+=2,an(g,I,k),I+=2,D&&on(g,I,D),I+=4,on(g,I,S&&R?v:t),I+=4,ln(m,a,I),I+=un(a),ln(m,i,I),I+=un(i),ln(m,c,I),I+=un(c),ln(m,l,I),I+=un(l),ln(m,u,I),I+=un(u),ln(m,f,I),I+=un(f),ln(m,p,I),I+=un(p),ln(m,w,I),I+=un(w),d-y>o.availableSize&&(o.availableSize=0,await en(o,m.slice(y,d)),y=d),d=I,s.onprogress)try{await s.onprogress(e+1,n.size,new Yr(r))}catch{}}await en(o,y?m.slice(y):m);let b=o.diskNumber;const{availableSize:z}=o;H>z&&b++;let S=rn(e,s,Cr);if(w>v||u>v||h>C||b>C){if(!1===S)throw new f(Vs);S=!0}const x=new p(S?98:H),E=dn(x);d=0,S&&(on(E,0,P),cn(E,4,a(44)),an(E,12,45),an(E,14,45),on(E,16,b),on(E,20,l),cn(E,24,a(h)),cn(E,32,a(h)),cn(E,40,a(u)),cn(E,48,a(w)),on(E,56,Z),cn(E,64,a(w)+a(u)),on(E,72,b+1),rn(e,s,rs,!0)&&(b=C,l=C),h=C,w=v,u=v,d+=76),on(E,d,L),an(E,d+4,b),an(E,d+6,l),an(E,d+8,h),an(E,d+10,h),on(E,d+12,u),on(E,d+16,w);const F=un(r);if(F){if(F>C)throw new f(Ws);an(E,d+20,F)}await en(o,x),F&&await en(o,r)})(this,e,r),rn(this,r,ts)||await o.getWriter().close(),n.getData?n.getData():o}}function Qs(e){if(e===$)return new p;{const t=new p(4);dn(t).setUint32(0,e,!0);let r=4;for(;r>1&&0===t[r-1];)r--;return t.subarray(0,r)}}function $s({compressedSize:e,uncompressedSize:t,offset:r,diskNumberStart:s,zip64UncompressedSize:n,zip64CompressedSize:i,zip64Offset:o,zip64DiskNumberStart:c,rawExtraFieldZip64:l}){const d=dn(l);let u=4;n&&(cn(d,u,a(t)),u+=8),i&&(cn(d,u,a(e)),u+=8),o&&(cn(d,u,a(r)),u+=8),c&&on(d,u,s)}async function en(e,t){const{writable:r}=e,s=r.getWriter();try{await s.ready,e.size+=un(t),await s.write(t)}finally{s.releaseLock()}}function tn(e){if(e)return(a(e.getTime())+a(116444736e5))*a(1e4)}function rn(e,t,r,s){const n=t[r]===$?e.options[r]:t[r];return n===$?s:n}function sn(e){return e+5*(i.floor(e/16383)+1)}function nn(e,t,r){e.setUint8(t,r)}function an(e,t,r){e.setUint16(t,r,!0)}function on(e,t,r){e.setUint32(t,r,!0)}function cn(e,t,r){e.setBigUint64(t,r,!0)}function ln(e,t,r){e.set(t,r)}function dn(e){return new m(e.buffer)}function un(...e){let t=0;return e.forEach(e=>e&&(t+=e.length)),t}function fn({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=dn(d);an(u,0,e),an(u,2,t),an(u,4,r);const f=new h(1),w=dn(f);an(w,0,(a.getHours()<<6|a.getMinutes())<<5|a.getSeconds()/2),an(w,2,(a.getFullYear()-1980<<4|a.getMonth()+1)<<5|a.getDate());const m=f[0];return on(u,6,m),(o||n!==$)&&on(u,14,o?v:n),(c||s!==$)&&on(u,18,c?v:s),an(u,22,un(i)),an(u,24,l),{headerArray:d,headerView:u,rawLastModDate:m}}function pn(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{ce({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=qt,e.BlobWriter=Kt,e.Data64URIReader=class extends Vt{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 Bt{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=as,e.ERR_CENTRAL_DIRECTORY_NOT_FOUND=cs,e.ERR_DUPLICATED_NAME=Ns,e.ERR_ENCRYPTED=us,e.ERR_EOCDR_LOCATOR_ZIP64_NOT_FOUND=os,e.ERR_EOCDR_NOT_FOUND=is,e.ERR_EXTRAFIELD_ZIP64_NOT_FOUND=ds,e.ERR_HTTP_RANGE=Wt,e.ERR_INVALID_COMMENT=Ws,e.ERR_INVALID_ENCRYPTION_STRENGTH=Ps,e.ERR_INVALID_ENTRY_COMMENT=Ms,e.ERR_INVALID_ENTRY_NAME=Os,e.ERR_INVALID_EXTRAFIELD_DATA=Hs,e.ERR_INVALID_EXTRAFIELD_TYPE=Zs,e.ERR_INVALID_PASSWORD=ze,e.ERR_INVALID_SIGNATURE=Se,e.ERR_INVALID_UNCOMPRESSED_SIZE=it,e.ERR_INVALID_VERSION=Ls,e.ERR_LOCAL_FILE_HEADER_NOT_FOUND=ls,e.ERR_OVERLAPPING_ENTRY=hs,e.ERR_SPLIT_ZIP_FILE=ws,e.ERR_UNDEFINED_UNCOMPRESSED_SIZE=Bs,e.ERR_UNSUPPORTED_COMPRESSION=ps,e.ERR_UNSUPPORTED_ENCRYPTION=fs,e.ERR_UNSUPPORTED_FORMAT=Vs,e.ERR_ZIP_NOT_EMPTY=qs,e.HttpRangeReader=class extends ir{constructor(e,t={}){t.useRangeHeader=!0,super(e,t)}},e.HttpReader=ir,e.Reader=Vt,e.SplitDataReader=or,e.SplitDataWriter=cr,e.TextReader=class extends qt{constructor(e){super(new g([e],{type:"text/plain"}))}},e.TextWriter=class extends Kt{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 Vt{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 Bt{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=Bt,e.ZipReader=zs,e.ZipReaderStream=class{constructor(e={}){const{readable:t,writable:r}=new F,s=new zs(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=Js,e.ZipWriterStream=class{constructor(e={}){const{readable:t,writable:r}=new F;this.readable=t,this.zipWriter=new Js(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=ce,e.getMimeType=()=>"application/octet-stream",e.terminateWorkers=async()=>{await y.allSettled(Tt.map(e=>(It(e),e.terminate())))}});
@@ -104,6 +104,7 @@
104
104
  const MIN_DATE = new Date(1980, 0, 1);
105
105
 
106
106
  const UNDEFINED_VALUE = undefined;
107
+ const INFINITY_VALUE = Infinity;
107
108
  const UNDEFINED_TYPE = "undefined";
108
109
  const FUNCTION_TYPE = "function";
109
110
  const OBJECT_TYPE = "object";
@@ -898,8 +899,8 @@
898
899
  Object.assign(writer, {
899
900
  diskNumber: 0,
900
901
  diskOffset: 0,
901
- availableSize: Infinity,
902
- maxSize: Infinity
902
+ availableSize: INFINITY_VALUE,
903
+ maxSize: INFINITY_VALUE
903
904
  });
904
905
  }
905
906
  return writer;
@@ -2682,6 +2683,8 @@
2682
2683
  */
2683
2684
 
2684
2685
 
2686
+ const MODULE_WORKER_OPTIONS = { type: "module" };
2687
+
2685
2688
  let webWorkerSupported, webWorkerURI, webWorkerOptions;
2686
2689
  let transferStreamsSupported = true;
2687
2690
  let initModule = () => { };
@@ -2890,11 +2893,8 @@
2890
2893
  return { writable, closed };
2891
2894
  }
2892
2895
 
2893
- function getWebWorker(url, baseURI, workerData, isModuleType = false, useBlobURI = true) {
2896
+ function getWebWorker(url, baseURI, workerData, isModuleType, useBlobURI = true) {
2894
2897
  let worker, resolvedURI, resolvedOptions;
2895
- if (isModuleType) {
2896
- resolvedOptions = { type: "module" };
2897
- }
2898
2898
  if (webWorkerURI === UNDEFINED_VALUE) {
2899
2899
  // deno-lint-ignore valid-typeof
2900
2900
  const isFunctionURI = typeof url == FUNCTION_TYPE;
@@ -2906,6 +2906,12 @@
2906
2906
  const isDataURI = resolvedURI.startsWith("data:");
2907
2907
  const isBlobURI = resolvedURI.startsWith("blob:");
2908
2908
  if (isDataURI || isBlobURI) {
2909
+ if (isModuleType === UNDEFINED_VALUE) {
2910
+ isModuleType = false;
2911
+ }
2912
+ if (isModuleType) {
2913
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2914
+ }
2909
2915
  try {
2910
2916
  worker = new Worker(resolvedURI, resolvedOptions);
2911
2917
  } catch (error) {
@@ -2925,6 +2931,12 @@
2925
2931
  }
2926
2932
  }
2927
2933
  } else {
2934
+ if (isModuleType === UNDEFINED_VALUE) {
2935
+ isModuleType = true;
2936
+ }
2937
+ if (isModuleType) {
2938
+ resolvedOptions = MODULE_WORKER_OPTIONS;
2939
+ }
2928
2940
  try {
2929
2941
  resolvedURI = new URL(resolvedURI, baseURI);
2930
2942
  } catch {
@@ -2934,7 +2946,7 @@
2934
2946
  worker = new Worker(resolvedURI, resolvedOptions);
2935
2947
  } catch (error) {
2936
2948
  if (!isModuleType) {
2937
- return getWebWorker(url, baseURI, workerData, true, useBlobURI);
2949
+ return getWebWorker(url, baseURI, workerData, false, useBlobURI);
2938
2950
  } else {
2939
2951
  throw error;
2940
2952
  }
@@ -4312,8 +4324,8 @@
4312
4324
  constructor(writer, options = {}) {
4313
4325
  writer = new GenericWriter(writer);
4314
4326
  const addSplitZipSignature =
4315
- writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== Infinity &&
4316
- writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== Infinity;
4327
+ writer.availableSize !== UNDEFINED_VALUE && writer.availableSize > 0 && writer.availableSize !== INFINITY_VALUE &&
4328
+ writer.maxSize !== UNDEFINED_VALUE && writer.maxSize > 0 && writer.maxSize !== INFINITY_VALUE;
4317
4329
  Object.assign(this, {
4318
4330
  writer,
4319
4331
  addSplitZipSignature,
@@ -4782,7 +4794,6 @@
4782
4794
  let writingBufferedEntryData;
4783
4795
  let writingEntryData;
4784
4796
  let fileWriter;
4785
- let blobPromise;
4786
4797
  files.set(name, fileEntry);
4787
4798
  try {
4788
4799
  let lockPreviousFileEntry;
@@ -4791,7 +4802,7 @@
4791
4802
  requestLockCurrentFileEntry();
4792
4803
  }
4793
4804
  if ((options.bufferedWrite || zipWriter.writerLocked || (zipWriter.bufferedWrites && keepOrder) || !dataDescriptor) && !usdz) {
4794
- fileWriter = new TransformStream();
4805
+ fileWriter = new TransformStream(UNDEFINED_VALUE, UNDEFINED_VALUE, { highWaterMark: INFINITY_VALUE });
4795
4806
  fileWriter.size = 0;
4796
4807
  bufferedWrite = true;
4797
4808
  zipWriter.bufferedWrites++;
@@ -4822,20 +4833,20 @@
4822
4833
  await skipDiskIfNeeded(writable);
4823
4834
  }
4824
4835
  const { diskNumber } = writer;
4825
- writingEntryData = true;
4826
4836
  fileEntry.diskNumberStart = diskNumber;
4827
- if (bufferedWrite) {
4828
- blobPromise = new Response(fileWriter.readable).blob();
4829
- } else {
4837
+ if (!bufferedWrite) {
4838
+ writingEntryData = true;
4830
4839
  await writeData(fileWriter, localHeaderArray);
4831
4840
  }
4832
4841
  fileEntry = await createFileEntry(reader, fileWriter, fileEntry, entryInfo, zipWriter.config, options);
4833
4842
  const { zip64 } = fileEntry;
4834
- writingEntryData = false;
4843
+ if (!bufferedWrite) {
4844
+ writingEntryData = false;
4845
+ }
4835
4846
  files.set(name, fileEntry);
4836
4847
  fileEntry.filename = name;
4837
4848
  if (bufferedWrite) {
4838
- const [blob] = await Promise.all([blobPromise, fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4849
+ await Promise.all([fileWriter.writable.getWriter().close(), lockPreviousFileEntry]);
4839
4850
  await requestLockWriter();
4840
4851
  writingBufferedEntryData = true;
4841
4852
  fileEntry.diskNumberStart = writer.diskNumber;
@@ -4846,7 +4857,7 @@
4846
4857
  updateLocalHeader(fileEntry, localHeaderView, options);
4847
4858
  await skipDiskIfNeeded(writable);
4848
4859
  await writeData(writer, localHeaderArray);
4849
- await blob.stream().pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4860
+ await fileWriter.readable.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
4850
4861
  writer.size += fileWriter.size;
4851
4862
  writingBufferedEntryData = false;
4852
4863
  } else {
@@ -4861,7 +4872,7 @@
4861
4872
  zipWriter.offset += fileEntry.size;
4862
4873
  return fileEntry;
4863
4874
  } catch (error) {
4864
- if ((bufferedWrite && writingBufferedEntryData) || (!bufferedWrite && writingEntryData)) {
4875
+ if (writingBufferedEntryData || writingEntryData) {
4865
4876
  zipWriter.hasCorruptedEntries = true;
4866
4877
  if (error) {
4867
4878
  try {