@zip.js/zip.js 2.16.0 → 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deno.json +1 -1
- package/dist/zip-core-external.js +429 -274
- package/dist/zip-core-external.min.js +1 -1
- package/dist/zip-core.js +230 -151
- package/dist/zip-core.min.js +1 -1
- package/dist/zip-fs-core-external.js +580 -283
- package/dist/zip-fs-core-external.min.js +1 -1
- package/dist/zip-fs-core.js +383 -160
- package/dist/zip-fs-core.min.js +1 -1
- package/dist/zip-fs-external.js +580 -283
- package/dist/zip-fs-external.min.js +1 -1
- package/dist/zip-fs-native.js +386 -163
- package/dist/zip-fs-native.min.js +1 -1
- package/dist/zip-fs.js +583 -283
- package/dist/zip-fs.min.js +1 -1
- package/dist/zip-legacy.js +232 -153
- package/dist/zip-legacy.min.js +1 -1
- package/dist/zip-native.js +233 -154
- package/dist/zip-native.min.js +1 -1
- package/dist/zip-web-worker-native.js +1 -1
- package/dist/zip-web-worker.js +1 -1
- package/dist/zip.js +430 -274
- package/dist/zip.min.js +1 -1
- package/eslint.config.mjs +1 -1
- package/index-native.cjs +386 -163
- package/index-native.min.js +1 -1
- package/index.cjs +583 -283
- package/index.d.cts +168 -29
- package/index.d.ts +168 -29
- package/index.min.js +1 -1
- package/lib/core/codec-pool.js +2 -0
- package/lib/core/codec-worker-web.js +11 -3
- package/lib/core/codec-worker.js +2 -1
- package/lib/core/streams/aes-crypto-stream.js +60 -17
- package/lib/core/streams/codec-stream.js +2 -0
- package/lib/core/streams/zip-crypto-stream.js +7 -7
- package/lib/core/streams/zip-entry-stream.js +130 -113
- package/lib/core/streams/zlib-js/zlib-streams.min.js +1 -1
- package/lib/core/streams/zlib-wasm/zlib-streams.js +199 -122
- package/lib/core/util/compatible-streams.js +10 -5
- package/lib/core/version.js +1 -1
- package/lib/core/web-worker-base.js +1 -1
- package/lib/core/web-worker-inline-native.js +1 -1
- package/lib/core/web-worker-inline-wasm.js +1 -1
- package/lib/core/zip-fs.js +157 -10
- package/lib/core/zip-reader.js +8 -5
- package/lib/core/zip-writer.js +5 -2
- package/lib/zip-core-reader.js +1 -0
- package/package.json +3 -2
package/index-native.cjs
CHANGED
|
@@ -217,7 +217,7 @@ const ERR_INVALID_SIGNAL = "Invalid signal (must be an AbortSignal instance)";
|
|
|
217
217
|
const ERR_INVALID_PASSWORD_TYPE = "Invalid password (password must be a string, rawPassword must be a Uint8Array)";
|
|
218
218
|
const ERR_INVALID_PASS_THROUGH_VALUE = "Invalid passThrough option (must be a boolean or 'compressed')";
|
|
219
219
|
const ERR_ABORTED = "The operation was aborted";
|
|
220
|
-
const ABORT_ERROR_NAME = "AbortError";
|
|
220
|
+
const ABORT_ERROR_NAME$1 = "AbortError";
|
|
221
221
|
|
|
222
222
|
function checkFunctionOption(value) {
|
|
223
223
|
if (value && typeof value != FUNCTION_TYPE) {
|
|
@@ -235,7 +235,7 @@ function checkSignalOption(signal) {
|
|
|
235
235
|
|
|
236
236
|
function throwIfAborted(signal) {
|
|
237
237
|
if (signal && signal.aborted) {
|
|
238
|
-
throw signal.reason === UNDEFINED_VALUE ? new DOMException(ERR_ABORTED, ABORT_ERROR_NAME) : signal.reason;
|
|
238
|
+
throw signal.reason === UNDEFINED_VALUE ? new DOMException(ERR_ABORTED, ABORT_ERROR_NAME$1) : signal.reason;
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
|
|
@@ -439,7 +439,7 @@ function resetConfiguration() {
|
|
|
439
439
|
Object.assign(config, DEFAULT_CONFIGURATION);
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
-
const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],r=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],t=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],f=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],e=new Uint8Array(288);e.fill(8,0,144),e.fill(9,144,256),e.fill(7,256,280),e.fill(8,280,288);const o=new Uint8Array(30).fill(5);function u(n){const r=new Uint16Array(16);for(const t of n)r[t]++;r[0]=0;const t=new Uint16Array(17);for(let n=1;n<=15;n++)t[n+1]=t[n]+r[n];const f=new Uint16Array(n.length);for(let r=0;r<n.length;r++)n[r]&&(f[t[n[r]]++]=r);return {lengthCounts:r,symbols:f}}const h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g$1=(O=()=>function(h){let g=0,O=0,w=0,l=new Uint8Array(1024),W=0,V=0;for(;!V;){V=c(1);const n=c(2);if(0==n)L();else if(1==n)Y(u(e),u(o));else {if(2!=n)throw new Error("invalid deflate block type");Y(...i());}}return l.subarray(0,W);function y(){if(g>=h.length)throw new Error("unexpected end of deflate data");return h[g++]}function c(n){for(;w<n;)O|=y()<<w,w+=8;const r=O&(1<<n)-1;return O>>>=n,w-=n,r}function L(){O=0,w=0;const n=y()|y()<<8;g+=2,B(W+n);for(let r=0;r<n;r++)l[W++]=y();}function Y(s,e){let o=m(s);for(;256!=o;){if(o<256)B(W+1),l[W++]=o;else {const s=o-257,u=n[s]+c(r[s]),h=m(e),g=t[h]+c(f[h]);B(W+u);const O=W-g;for(let n=0;n<u;n++)l[W++]=l[O+n];}o=m(s);}}function i(){const n=c(5)+257,r=c(5)+1,t=c(4)+4,f=new Uint8Array(19);for(let n=0;n<t;n++)f[s[n]]=c(3);const e=u(f),o=new Uint8Array(n+r);let h=0;for(;h<o.length;){const n=m(e);if(n<16)o[h++]=n;else if(16==n){const n=o[h-1];let r=c(2)+3;for(;r--;)o[h++]=n;}else h+=17==n?c(3)+3:c(7)+11;}return [u(o.subarray(0,n)),u(o.subarray(n))]}function m(n){const{lengthCounts:r,symbols:t}=n;let f=0,s=0,e=0;for(let n=1;n<=15;n++){f|=c(1);const o=r[n];if(f-s<o)return t[e+(f-s)];e+=o,s=s+o<<1,f<<=1;}throw new Error("invalid huffman code")}function B(n){if(l.length<n){let r=2*l.length;for(;r<n;)r*=2;const t=new Uint8Array(r);t.set(l.subarray(0,W)),l=t;}}}(function(n){const r=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,t=[];for(let f=0;f<r;f+=4){const r=h.indexOf(n[f])<<18|h.indexOf(n[f+1])<<12|(63&h.indexOf(n[f+2]))<<6|63&h.indexOf(n[f+3]);t.push(r>>16&255),"="!==n[f+2]&&t.push(r>>8&255),"="!==n[f+3]&&t.push(255&r);}return new Uint8Array(t)}("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")),n=>n({workerURI:n=>{const r="text/javascript";let t=O();if("string"==typeof t&&(t=(new TextEncoder).encode(t)),n){const n=new Blob([t],{type:r});return URL.createObjectURL(n)}return "data:"+r+";base64,"+function(n){let r="";const t=n.length;let f=0;for(;f+2<t;f+=3){const t=n[f]<<16|n[f+1]<<8|n[f+2];r+=h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+h[63&t];}const s=t-f;if(1===s){const t=n[f]<<16;r+=h[t>>18&63]+h[t>>12&63]+"==";}else if(2===s){const t=n[f]<<16|n[f+1]<<8;r+=h[t>>18&63]+h[t>>12&63]+h[t>>6&63]+"=";}return r}(t)}}));var O;
|
|
442
|
+
const n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],r=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],l=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],e=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],o=new Uint8Array(288);o.fill(8,0,144),o.fill(9,144,256),o.fill(7,256,280),o.fill(8,280,288);const u=new Uint8Array(30).fill(5);function w(n){const t=new Uint16Array(16);for(const r of n)t[r]++;t[0]=0;const r=new Uint16Array(17);for(let n=1;n<=15;n++)r[n+1]=r[n]+t[n];const l=new Uint16Array(n.length);for(let t=0;t<n.length;t++)n[t]&&(l[r[n[t]]++]=t);return {lengthCounts:t,symbols:l}}const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",F=(O$1=()=>function(s){let F=0,O=0,a=0,Q=new Uint8Array(1024),c=0,W=0;for(;!W;){W=U(1);const n=U(2);if(0==n)f();else if(1==n)h(w(o),w(u));else {if(2!=n)throw new Error("invalid deflate block type");h(...v());}}return Q.subarray(0,c);function g(){if(F>=s.length)throw new Error("unexpected end of deflate data");return s[F++]}function U(n){for(;a<n;)O|=g()<<a,a+=8;const t=O&(1<<n)-1;return O>>>=n,a-=n,t}function f(){O=0,a=0;const n=g()|g()<<8;F+=2,p(c+n);for(let t=0;t<n;t++)Q[c++]=g();}function h(e,o){let u=L(e);for(;256!=u;){if(u<256)p(c+1),Q[c++]=u;else {const e=u-257,w=n[e]+U(t[e]),s=L(o),F=r[s]+U(l[s]);p(c+w);const O=c-F;for(let n=0;n<w;n++)Q[c++]=Q[O+n];}u=L(e);}}function v(){const n=U(5)+257,t=U(5)+1,r=U(4)+4,l=new Uint8Array(19);for(let n=0;n<r;n++)l[e[n]]=U(3);const o=w(l),u=new Uint8Array(n+t);let s=0;for(;s<u.length;){const n=L(o);if(n<16)u[s++]=n;else if(16==n){const n=u[s-1];let t=U(2)+3;for(;t--;)u[s++]=n;}else s+=17==n?U(3)+3:U(7)+11;}return [w(u.subarray(0,n)),w(u.subarray(n))]}function L(n){const{lengthCounts:t,symbols:r}=n;let l=0,e=0,o=0;for(let n=1;n<=15;n++){l|=U(1);const u=t[n];if(l-e<u)return r[o+(l-e)];o+=u,e=e+u<<1,l<<=1;}throw new Error("invalid huffman code")}function p(n){if(Q.length<n){let t=2*Q.length;for(;t<n;)t*=2;const r=new Uint8Array(t);r.set(Q.subarray(0,c)),Q=r;}}}(function(n){const t=(n=String(n).replace(/[^A-Za-z0-9+/=]/g,"")).length,r=[];for(let l=0;l<t;l+=4){const t=s.indexOf(n[l])<<18|s.indexOf(n[l+1])<<12|(63&s.indexOf(n[l+2]))<<6|63&s.indexOf(n[l+3]);r.push(t>>16&255),"="!==n[l+2]&&r.push(t>>8&255),"="!==n[l+3]&&r.push(255&t);}return new Uint8Array(r)}("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")),n=>n({workerURI:n=>{const t="text/javascript";let r=O$1();if("string"==typeof r&&(r=(new TextEncoder).encode(r)),n){const n=new Blob([r],{type:t});return URL.createObjectURL(n)}return "data:"+t+";base64,"+function(n){let t="";const r=n.length;let l=0;for(;l+2<r;l+=3){const r=n[l]<<16|n[l+1]<<8|n[l+2];t+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+s[63&r];}const e=r-l;if(1===e){const r=n[l]<<16;t+=s[r>>18&63]+s[r>>12&63]+"==";}else if(2===e){const r=n[l]<<16|n[l+1]<<8;t+=s[r>>18&63]+s[r>>12&63]+s[r>>6&63]+"=";}return t}(r)}}));var O$1;
|
|
443
443
|
|
|
444
444
|
/*
|
|
445
445
|
Copyright (c) 2026 Gildas Lormeau. All rights reserved.
|
|
@@ -1279,12 +1279,12 @@ let createEngine = createEngine$1;
|
|
|
1279
1279
|
class AESDecryptionStream extends TransformStream {
|
|
1280
1280
|
|
|
1281
1281
|
constructor({ password, rawPassword, encryptionStrength, checkPasswordOnly, checkAuthenticationCode = true }) {
|
|
1282
|
+
const aesCrypto = {};
|
|
1282
1283
|
super({
|
|
1283
1284
|
start() {
|
|
1284
|
-
initAesCrypto(
|
|
1285
|
+
initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength);
|
|
1285
1286
|
},
|
|
1286
1287
|
async transform(chunk, controller) {
|
|
1287
|
-
const aesCrypto = this;
|
|
1288
1288
|
const {
|
|
1289
1289
|
password,
|
|
1290
1290
|
strength,
|
|
@@ -1303,6 +1303,9 @@ class AESDecryptionStream extends TransformStream {
|
|
|
1303
1303
|
} else {
|
|
1304
1304
|
await ready;
|
|
1305
1305
|
}
|
|
1306
|
+
if (aesCrypto.discarded) {
|
|
1307
|
+
return;
|
|
1308
|
+
}
|
|
1306
1309
|
const output = new Uint8Array(chunk.length - AUTHENTICATION_CODE_LENGTH - ((chunk.length - AUTHENTICATION_CODE_LENGTH) % BLOCK_LENGTH));
|
|
1307
1310
|
controller.enqueue(append(aesCrypto, chunk, output, 0, AUTHENTICATION_CODE_LENGTH, true));
|
|
1308
1311
|
},
|
|
@@ -1311,9 +1314,12 @@ class AESDecryptionStream extends TransformStream {
|
|
|
1311
1314
|
engine,
|
|
1312
1315
|
pendingInput,
|
|
1313
1316
|
ready
|
|
1314
|
-
} =
|
|
1317
|
+
} = aesCrypto;
|
|
1315
1318
|
if (engine) {
|
|
1316
1319
|
await ready;
|
|
1320
|
+
if (aesCrypto.discarded) {
|
|
1321
|
+
return;
|
|
1322
|
+
}
|
|
1317
1323
|
const originalAuthenticationCode = subarray(pendingInput, pendingInput.length - AUTHENTICATION_CODE_LENGTH);
|
|
1318
1324
|
const decryptedChunkArray = new Uint8Array(subarray(pendingInput, 0, pendingInput.length - AUTHENTICATION_CODE_LENGTH));
|
|
1319
1325
|
engine.process(decryptedChunkArray, true);
|
|
@@ -1323,27 +1329,26 @@ class AESDecryptionStream extends TransformStream {
|
|
|
1323
1329
|
invalidAuthenticationCode |= authenticationCode[indexByte] ^ originalAuthenticationCode[indexByte];
|
|
1324
1330
|
}
|
|
1325
1331
|
if (invalidAuthenticationCode && checkAuthenticationCode) {
|
|
1326
|
-
|
|
1332
|
+
controller.error(new Error(ERR_INVALID_AUTHENTICATION_CODE));
|
|
1333
|
+
return;
|
|
1327
1334
|
}
|
|
1328
1335
|
controller.enqueue(decryptedChunkArray);
|
|
1329
1336
|
}
|
|
1330
|
-
},
|
|
1331
|
-
cancel() {
|
|
1332
|
-
disposeEngine(this);
|
|
1333
1337
|
}
|
|
1334
1338
|
});
|
|
1339
|
+
setDisposingReadable(this, aesCrypto);
|
|
1335
1340
|
}
|
|
1336
1341
|
}
|
|
1337
1342
|
|
|
1338
1343
|
class AESEncryptionStream extends TransformStream {
|
|
1339
1344
|
|
|
1340
1345
|
constructor({ password, rawPassword, encryptionStrength }) {
|
|
1346
|
+
const aesCrypto = {};
|
|
1341
1347
|
super({
|
|
1342
1348
|
start() {
|
|
1343
|
-
initAesCrypto(
|
|
1349
|
+
initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength);
|
|
1344
1350
|
},
|
|
1345
1351
|
async transform(chunk, controller) {
|
|
1346
|
-
const aesCrypto = this;
|
|
1347
1352
|
const {
|
|
1348
1353
|
password,
|
|
1349
1354
|
strength,
|
|
@@ -1357,6 +1362,9 @@ class AESEncryptionStream extends TransformStream {
|
|
|
1357
1362
|
} else {
|
|
1358
1363
|
await ready;
|
|
1359
1364
|
}
|
|
1365
|
+
if (aesCrypto.discarded) {
|
|
1366
|
+
return;
|
|
1367
|
+
}
|
|
1360
1368
|
const output = new Uint8Array(preamble.length + chunk.length - (chunk.length % BLOCK_LENGTH));
|
|
1361
1369
|
output.set(preamble, 0);
|
|
1362
1370
|
controller.enqueue(append(aesCrypto, chunk, output, preamble.length, 0, false));
|
|
@@ -1366,19 +1374,20 @@ class AESEncryptionStream extends TransformStream {
|
|
|
1366
1374
|
engine,
|
|
1367
1375
|
pendingInput,
|
|
1368
1376
|
ready
|
|
1369
|
-
} =
|
|
1377
|
+
} = aesCrypto;
|
|
1370
1378
|
if (engine) {
|
|
1371
1379
|
await ready;
|
|
1380
|
+
if (aesCrypto.discarded) {
|
|
1381
|
+
return;
|
|
1382
|
+
}
|
|
1372
1383
|
const encryptedChunkArray = new Uint8Array(pendingInput);
|
|
1373
1384
|
engine.process(encryptedChunkArray, false);
|
|
1374
1385
|
const authenticationCode = subarray(engine.digest(), 0, AUTHENTICATION_CODE_LENGTH);
|
|
1375
1386
|
controller.enqueue(concat(encryptedChunkArray, authenticationCode));
|
|
1376
1387
|
}
|
|
1377
|
-
},
|
|
1378
|
-
cancel() {
|
|
1379
|
-
disposeEngine(this);
|
|
1380
1388
|
}
|
|
1381
1389
|
});
|
|
1390
|
+
setDisposingReadable(this, aesCrypto);
|
|
1382
1391
|
}
|
|
1383
1392
|
}
|
|
1384
1393
|
|
|
@@ -1387,7 +1396,37 @@ function initAesCrypto(aesCrypto, password, rawPassword, encryptionStrength) {
|
|
|
1387
1396
|
ready: new Promise(resolve => aesCrypto.resolveReady = resolve),
|
|
1388
1397
|
password: encodePassword(password, rawPassword),
|
|
1389
1398
|
strength: encryptionStrength - 1,
|
|
1390
|
-
pendingInput: EMPTY_UINT8_ARRAY
|
|
1399
|
+
pendingInput: EMPTY_UINT8_ARRAY,
|
|
1400
|
+
discarded: false
|
|
1401
|
+
});
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
function setDisposingReadable(stream, aesCrypto) {
|
|
1405
|
+
const reader = stream.readable.getReader();
|
|
1406
|
+
const readable = new ReadableStream({
|
|
1407
|
+
async pull(controller) {
|
|
1408
|
+
try {
|
|
1409
|
+
const { value, done } = await reader.read();
|
|
1410
|
+
if (done) {
|
|
1411
|
+
controller.close();
|
|
1412
|
+
} else {
|
|
1413
|
+
controller.enqueue(value);
|
|
1414
|
+
}
|
|
1415
|
+
} catch (error) {
|
|
1416
|
+
disposeEngine(aesCrypto);
|
|
1417
|
+
reader.cancel(error).catch(() => { });
|
|
1418
|
+
throw error;
|
|
1419
|
+
}
|
|
1420
|
+
},
|
|
1421
|
+
cancel(reason) {
|
|
1422
|
+
disposeEngine(aesCrypto);
|
|
1423
|
+
return reader.cancel(reason);
|
|
1424
|
+
}
|
|
1425
|
+
});
|
|
1426
|
+
Object.defineProperty(stream, "readable", {
|
|
1427
|
+
get() {
|
|
1428
|
+
return readable;
|
|
1429
|
+
}
|
|
1391
1430
|
});
|
|
1392
1431
|
}
|
|
1393
1432
|
|
|
@@ -1420,7 +1459,9 @@ async function createDecryptionKeys(decrypt, strength, password, preamble) {
|
|
|
1420
1459
|
}
|
|
1421
1460
|
}
|
|
1422
1461
|
|
|
1423
|
-
function disposeEngine(
|
|
1462
|
+
function disposeEngine(aesCrypto) {
|
|
1463
|
+
const { engine } = aesCrypto;
|
|
1464
|
+
aesCrypto.discarded = true;
|
|
1424
1465
|
if (engine && engine.dispose) {
|
|
1425
1466
|
engine.dispose();
|
|
1426
1467
|
}
|
|
@@ -1437,6 +1478,9 @@ async function createKeys$1(aesCrypto, strength, password, salt) {
|
|
|
1437
1478
|
const keyLength = KEY_LENGTH[strength];
|
|
1438
1479
|
const compositeKey = await deriveKey(password, salt, keyLength * 2 + PASSWORD_VERIFICATION_LENGTH);
|
|
1439
1480
|
aesCrypto.engine = createEngine(subarray(compositeKey, 0, keyLength), subarray(compositeKey, keyLength, keyLength * 2));
|
|
1481
|
+
if (aesCrypto.discarded) {
|
|
1482
|
+
disposeEngine(aesCrypto);
|
|
1483
|
+
}
|
|
1440
1484
|
return subarray(compositeKey, keyLength * 2);
|
|
1441
1485
|
}
|
|
1442
1486
|
|
|
@@ -1588,11 +1632,11 @@ function encrypt(target, input) {
|
|
|
1588
1632
|
}
|
|
1589
1633
|
|
|
1590
1634
|
function createKeys(target, password, rawPassword) {
|
|
1591
|
-
const
|
|
1635
|
+
const cryptoKeys = [0x12345678, 0x23456789, 0x34567890];
|
|
1592
1636
|
Object.assign(target, {
|
|
1593
|
-
|
|
1594
|
-
crcKey0: new Crc32(
|
|
1595
|
-
crcKey2: new Crc32(
|
|
1637
|
+
cryptoKeys,
|
|
1638
|
+
crcKey0: new Crc32(cryptoKeys[0]),
|
|
1639
|
+
crcKey2: new Crc32(cryptoKeys[2])
|
|
1596
1640
|
});
|
|
1597
1641
|
if (rawPassword) {
|
|
1598
1642
|
for (let index = 0; index < rawPassword.length; index++) {
|
|
@@ -1606,17 +1650,17 @@ function createKeys(target, password, rawPassword) {
|
|
|
1606
1650
|
}
|
|
1607
1651
|
|
|
1608
1652
|
function updateKeys(target, byte) {
|
|
1609
|
-
let [, key1] = target.
|
|
1653
|
+
let [, key1] = target.cryptoKeys;
|
|
1610
1654
|
target.crcKey0.append([byte]);
|
|
1611
1655
|
const key0 = ~target.crcKey0.get();
|
|
1612
1656
|
key1 = getInt32(Math.imul(getInt32(key1 + getInt8(key0)), 134775813) + 1);
|
|
1613
1657
|
target.crcKey2.append([key1 >>> 24]);
|
|
1614
1658
|
const key2 = ~target.crcKey2.get();
|
|
1615
|
-
target.
|
|
1659
|
+
target.cryptoKeys = [key0, key1, key2];
|
|
1616
1660
|
}
|
|
1617
1661
|
|
|
1618
1662
|
function getByte(target) {
|
|
1619
|
-
const temp = target.
|
|
1663
|
+
const temp = target.cryptoKeys[2] | 2;
|
|
1620
1664
|
return getInt8(Math.imul(temp, (temp ^ 1)) >>> 8);
|
|
1621
1665
|
}
|
|
1622
1666
|
|
|
@@ -1664,11 +1708,16 @@ function toCompatibleReadable(readable) {
|
|
|
1664
1708
|
const reader = readable.getReader();
|
|
1665
1709
|
return new ReadableStream({
|
|
1666
1710
|
async pull(controller) {
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1711
|
+
try {
|
|
1712
|
+
const { value, done } = await reader.read();
|
|
1713
|
+
if (done) {
|
|
1714
|
+
controller.close();
|
|
1715
|
+
} else {
|
|
1716
|
+
controller.enqueue(value);
|
|
1717
|
+
}
|
|
1718
|
+
} catch (error) {
|
|
1719
|
+
reader.cancel(error).catch(() => { });
|
|
1720
|
+
throw error;
|
|
1672
1721
|
}
|
|
1673
1722
|
},
|
|
1674
1723
|
cancel(reason) {
|
|
@@ -1847,7 +1896,9 @@ async function ensureCodecStreams(format, codecURI) {
|
|
|
1847
1896
|
|
|
1848
1897
|
const ERR_INVALID_UNCOMPRESSED_SIZE = "Invalid uncompressed size";
|
|
1849
1898
|
const ERR_INVALID_COMPRESSED_DATA = "Invalid compressed data";
|
|
1899
|
+
const ERR_CODEC_OUT_OF_MEMORY = "Codec out of memory";
|
|
1850
1900
|
const ERR_INVALID_CRC32 = "Invalid CRC32";
|
|
1901
|
+
const Z_MEM_ERROR_CODE = "Z_MEM_ERROR";
|
|
1851
1902
|
const FORMAT_DEFLATE_RAW = "deflate-raw";
|
|
1852
1903
|
const FORMAT_DEFLATE64_RAW = "deflate64-raw";
|
|
1853
1904
|
const FORMAT_GZIP = "gzip";
|
|
@@ -1882,13 +1933,13 @@ class DeflateStream extends TransformStream {
|
|
|
1882
1933
|
readable = pipeThroughCompressionStream(readable, useCompressionStream, { level, chunkSize }, CompressionStream, CompressionStreamFallback);
|
|
1883
1934
|
} catch (error) {
|
|
1884
1935
|
if (!useCompressionStream && CompressionStreamFallback) {
|
|
1885
|
-
throw error;
|
|
1936
|
+
throw mapMemoryError(error);
|
|
1886
1937
|
}
|
|
1887
1938
|
let gzipStream;
|
|
1888
1939
|
try {
|
|
1889
1940
|
gzipStream = new CompressionStream(FORMAT_GZIP);
|
|
1890
1941
|
} catch {
|
|
1891
|
-
throw error;
|
|
1942
|
+
throw mapMemoryError(error);
|
|
1892
1943
|
}
|
|
1893
1944
|
readable = pipeThroughBackpressured(readable, gzipStream);
|
|
1894
1945
|
readable = pipeThrough(readable, new GzipToRawDeflateStream());
|
|
@@ -1952,53 +2003,30 @@ class GzipToRawDeflateStream extends TransformStream {
|
|
|
1952
2003
|
}
|
|
1953
2004
|
}
|
|
1954
2005
|
|
|
1955
|
-
function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32) {
|
|
2006
|
+
function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32, sourceErrors) {
|
|
1956
2007
|
const writer = gzipStream.writable.getWriter();
|
|
1957
2008
|
const reader = gzipStream.readable.getReader();
|
|
1958
2009
|
const outputCrc32 = crc32 === UNDEFINED_VALUE ? new Crc32() : UNDEFINED_VALUE;
|
|
1959
2010
|
let outputLength = 0;
|
|
1960
|
-
let inputDone = false;
|
|
1961
2011
|
let trailerWritten = false;
|
|
1962
|
-
let
|
|
1963
|
-
let
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
trailerReady.catch(() => { });
|
|
1971
|
-
pump();
|
|
1972
|
-
return new ReadableStream({
|
|
1973
|
-
async pull(controller) {
|
|
1974
|
-
let result;
|
|
1975
|
-
try {
|
|
1976
|
-
result = await read();
|
|
1977
|
-
} catch (error) {
|
|
1978
|
-
throw trailerWritten ? getTrailerError(error) : error;
|
|
1979
|
-
}
|
|
1980
|
-
const { value, done } = result;
|
|
1981
|
-
if (done) {
|
|
1982
|
-
controller.close();
|
|
1983
|
-
} else {
|
|
1984
|
-
outputLength += value.length;
|
|
1985
|
-
if (outputLength > outputSize) {
|
|
1986
|
-
const error = new Error(ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
1987
|
-
rejectTrailerReady(error);
|
|
1988
|
-
await cancel(reader, error);
|
|
1989
|
-
throw error;
|
|
1990
|
-
}
|
|
1991
|
-
if (outputCrc32) {
|
|
1992
|
-
outputCrc32.append(value);
|
|
1993
|
-
}
|
|
1994
|
-
controller.enqueue(value);
|
|
1995
|
-
}
|
|
2012
|
+
let settled = false;
|
|
2013
|
+
let resolvePull, controller;
|
|
2014
|
+
const output = new ReadableStream({
|
|
2015
|
+
start(streamController) {
|
|
2016
|
+
controller = streamController;
|
|
2017
|
+
},
|
|
2018
|
+
pull() {
|
|
2019
|
+
resumePump();
|
|
1996
2020
|
},
|
|
1997
2021
|
cancel(reason) {
|
|
1998
|
-
|
|
2022
|
+
settled = true;
|
|
2023
|
+
resumePump();
|
|
1999
2024
|
return reader.cancel(reason);
|
|
2000
2025
|
}
|
|
2001
2026
|
});
|
|
2027
|
+
pump();
|
|
2028
|
+
drain();
|
|
2029
|
+
return output;
|
|
2002
2030
|
|
|
2003
2031
|
async function pump() {
|
|
2004
2032
|
const inputReader = readable.getReader();
|
|
@@ -2007,19 +2035,16 @@ function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, cr
|
|
|
2007
2035
|
header.set(GZIP_HEADER_BYTES);
|
|
2008
2036
|
await writer.write(header);
|
|
2009
2037
|
for (; ;) {
|
|
2038
|
+
await outputCapacity();
|
|
2010
2039
|
await writer.ready;
|
|
2011
|
-
const { value, done } = await inputReader
|
|
2040
|
+
const { value, done } = await readSource(inputReader, sourceErrors);
|
|
2012
2041
|
if (done) {
|
|
2013
2042
|
break;
|
|
2014
2043
|
}
|
|
2015
2044
|
await writer.write(value);
|
|
2016
2045
|
}
|
|
2017
|
-
inputDone = true;
|
|
2018
2046
|
if (outputCrc32) {
|
|
2019
|
-
|
|
2020
|
-
armIdleCheck();
|
|
2021
|
-
}
|
|
2022
|
-
await trailerReady;
|
|
2047
|
+
await writer.write(new Uint8Array(0));
|
|
2023
2048
|
}
|
|
2024
2049
|
const trailer = new Uint8Array(GZIP_TRAILER_LENGTH);
|
|
2025
2050
|
const dataView = getDataView(trailer);
|
|
@@ -2034,54 +2059,68 @@ function pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, cr
|
|
|
2034
2059
|
}
|
|
2035
2060
|
}
|
|
2036
2061
|
|
|
2037
|
-
function
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2062
|
+
async function drain() {
|
|
2063
|
+
try {
|
|
2064
|
+
for (; ;) {
|
|
2065
|
+
const { value, done } = await read();
|
|
2066
|
+
if (done) {
|
|
2067
|
+
break;
|
|
2068
|
+
}
|
|
2069
|
+
outputLength += value.length;
|
|
2070
|
+
if (outputLength > outputSize) {
|
|
2071
|
+
throw new Error(ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
2072
|
+
}
|
|
2073
|
+
if (outputCrc32) {
|
|
2074
|
+
outputCrc32.append(value);
|
|
2075
|
+
}
|
|
2076
|
+
controller.enqueue(value);
|
|
2077
|
+
}
|
|
2078
|
+
if (!settled) {
|
|
2079
|
+
settled = true;
|
|
2080
|
+
controller.close();
|
|
2081
|
+
}
|
|
2082
|
+
} catch (error) {
|
|
2083
|
+
fail(error);
|
|
2084
|
+
await cancel(reader, error);
|
|
2044
2085
|
}
|
|
2045
|
-
return result;
|
|
2046
|
-
}
|
|
2047
|
-
|
|
2048
|
-
function onReadSettled() {
|
|
2049
|
-
readPending = false;
|
|
2050
2086
|
}
|
|
2051
2087
|
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
|
-
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
resolveTrailerReady();
|
|
2061
|
-
} else {
|
|
2062
|
-
armIdleCheck();
|
|
2088
|
+
function read() {
|
|
2089
|
+
return reader.read().catch(error => {
|
|
2090
|
+
if (trailerWritten) {
|
|
2091
|
+
if (!outputCrc32) {
|
|
2092
|
+
throw mapError(error, ERR_INVALID_CRC32);
|
|
2093
|
+
}
|
|
2094
|
+
if (outputLength != outputSize) {
|
|
2095
|
+
throw mapError(error, ERR_INVALID_UNCOMPRESSED_SIZE);
|
|
2063
2096
|
}
|
|
2097
|
+
return { done: true };
|
|
2064
2098
|
}
|
|
2065
|
-
|
|
2099
|
+
throw mapCodecError(error, sourceErrors);
|
|
2100
|
+
});
|
|
2066
2101
|
}
|
|
2067
2102
|
|
|
2068
|
-
function
|
|
2069
|
-
|
|
2070
|
-
|
|
2071
|
-
|
|
2103
|
+
function outputCapacity() {
|
|
2104
|
+
if (!settled && controller.desiredSize <= 0) {
|
|
2105
|
+
return new Promise(resolve => resolvePull = resolve);
|
|
2106
|
+
}
|
|
2072
2107
|
}
|
|
2073
|
-
}
|
|
2074
2108
|
|
|
2075
|
-
function
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
port1.close();
|
|
2080
|
-
port2.close();
|
|
2109
|
+
function resumePump() {
|
|
2110
|
+
if (resolvePull) {
|
|
2111
|
+
const resolve = resolvePull;
|
|
2112
|
+
resolvePull = UNDEFINED_VALUE;
|
|
2081
2113
|
resolve();
|
|
2082
|
-
}
|
|
2083
|
-
|
|
2084
|
-
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
function fail(error) {
|
|
2118
|
+
if (!settled) {
|
|
2119
|
+
settled = true;
|
|
2120
|
+
controller.error(error);
|
|
2121
|
+
resumePump();
|
|
2122
|
+
}
|
|
2123
|
+
}
|
|
2085
2124
|
}
|
|
2086
2125
|
|
|
2087
2126
|
class InflateStream extends TransformStream {
|
|
@@ -2100,11 +2139,12 @@ class InflateStream extends TransformStream {
|
|
|
2100
2139
|
}
|
|
2101
2140
|
}
|
|
2102
2141
|
if (compressed) {
|
|
2142
|
+
const sourceErrors = new Set();
|
|
2103
2143
|
const codecStreams = format && getCodecStreams(format);
|
|
2144
|
+
let gzipStream;
|
|
2104
2145
|
if (codecStreams) {
|
|
2105
|
-
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }));
|
|
2146
|
+
readable = pipeThroughBackpressured(readable, createCodecStream(codecStreams.DecompressionStream, format, { chunkSize, compressionMethod, rawBitFlag, uncompressedSize: outputSize }), sourceErrors);
|
|
2106
2147
|
} else {
|
|
2107
|
-
let gzipStream;
|
|
2108
2148
|
const GzipDecompressionStream = getGzipCodecStream(useCompressionStream, DecompressionStream, DecompressionStreamFallback);
|
|
2109
2149
|
if (checkCrc32 && !deflate64 && crc32 !== UNDEFINED_VALUE && outputSize !== UNDEFINED_VALUE && GzipDecompressionStream) {
|
|
2110
2150
|
try {
|
|
@@ -2115,24 +2155,25 @@ class InflateStream extends TransformStream {
|
|
|
2115
2155
|
}
|
|
2116
2156
|
if (!gzipStream) {
|
|
2117
2157
|
try {
|
|
2118
|
-
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamFallback);
|
|
2158
|
+
readable = pipeThroughCompressionStream(readable, useCompressionStream, { chunkSize, deflate64 }, DecompressionStream, DecompressionStreamFallback, sourceErrors);
|
|
2119
2159
|
} catch (error) {
|
|
2120
2160
|
if (deflate64 || outputSize === UNDEFINED_VALUE || (!useCompressionStream && DecompressionStreamFallback)) {
|
|
2121
|
-
throw error;
|
|
2161
|
+
throw mapMemoryError(error);
|
|
2122
2162
|
}
|
|
2123
2163
|
try {
|
|
2124
2164
|
gzipStream = new DecompressionStream(FORMAT_GZIP);
|
|
2125
2165
|
} catch {
|
|
2126
|
-
throw error;
|
|
2166
|
+
throw mapMemoryError(error);
|
|
2127
2167
|
}
|
|
2128
2168
|
}
|
|
2129
2169
|
}
|
|
2130
|
-
if (gzipStream) {
|
|
2131
|
-
gzipCrc32 = true;
|
|
2132
|
-
readable = pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32);
|
|
2133
|
-
}
|
|
2134
2170
|
}
|
|
2135
|
-
|
|
2171
|
+
if (gzipStream) {
|
|
2172
|
+
gzipCrc32 = true;
|
|
2173
|
+
readable = pipeThroughGzipDecompressionStream(readable, gzipStream, outputSize, crc32, sourceErrors);
|
|
2174
|
+
} else {
|
|
2175
|
+
readable = mapInflateStreamError(readable, sourceErrors);
|
|
2176
|
+
}
|
|
2136
2177
|
}
|
|
2137
2178
|
if (checkCrc32 && !gzipCrc32) {
|
|
2138
2179
|
crc32Stream = new Crc32Stream();
|
|
@@ -2205,7 +2246,7 @@ function getGzipCodecStream(useCompressionStream, CodecStreamNative, CodecStream
|
|
|
2205
2246
|
}
|
|
2206
2247
|
}
|
|
2207
2248
|
|
|
2208
|
-
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamFallback) {
|
|
2249
|
+
function pipeThroughCompressionStream(readable, useCompressionStream, options, CompressionStreamNative, CompressionStreamFallback, sourceErrors) {
|
|
2209
2250
|
const Stream = useCompressionStream && CompressionStreamNative ?
|
|
2210
2251
|
CompressionStreamNative :
|
|
2211
2252
|
CompressionStreamFallback || CompressionStreamNative;
|
|
@@ -2220,14 +2261,14 @@ function pipeThroughCompressionStream(readable, useCompressionStream, options, C
|
|
|
2220
2261
|
throw error;
|
|
2221
2262
|
}
|
|
2222
2263
|
}
|
|
2223
|
-
return pipeThroughBackpressured(readable, codecStream);
|
|
2264
|
+
return pipeThroughBackpressured(readable, codecStream, sourceErrors);
|
|
2224
2265
|
}
|
|
2225
2266
|
|
|
2226
2267
|
function pipeThrough(readable, transformStream) {
|
|
2227
2268
|
return toCompatibleReadable(readable).pipeThrough(transformStream);
|
|
2228
2269
|
}
|
|
2229
2270
|
|
|
2230
|
-
function pipeThroughBackpressured(readable, transformStream) {
|
|
2271
|
+
function pipeThroughBackpressured(readable, transformStream, sourceErrors) {
|
|
2231
2272
|
const writer = transformStream.writable.getWriter();
|
|
2232
2273
|
const reader = readable.getReader();
|
|
2233
2274
|
pump();
|
|
@@ -2237,7 +2278,7 @@ function pipeThroughBackpressured(readable, transformStream) {
|
|
|
2237
2278
|
try {
|
|
2238
2279
|
for (; ;) {
|
|
2239
2280
|
await writer.ready;
|
|
2240
|
-
const result = await reader
|
|
2281
|
+
const result = await readSource(reader, sourceErrors);
|
|
2241
2282
|
if (result.done) {
|
|
2242
2283
|
await writer.close();
|
|
2243
2284
|
break;
|
|
@@ -2267,26 +2308,49 @@ async function cancel(reader, error) {
|
|
|
2267
2308
|
}
|
|
2268
2309
|
}
|
|
2269
2310
|
|
|
2270
|
-
function
|
|
2311
|
+
function readSource(reader, sourceErrors) {
|
|
2312
|
+
const result = reader.read();
|
|
2313
|
+
return sourceErrors ? result.catch(error => {
|
|
2314
|
+
sourceErrors.add(error);
|
|
2315
|
+
throw error;
|
|
2316
|
+
}) : result;
|
|
2317
|
+
}
|
|
2318
|
+
|
|
2319
|
+
function mapCodecError(error, sourceErrors) {
|
|
2320
|
+
if (sourceErrors.has(error)) {
|
|
2321
|
+
return error;
|
|
2322
|
+
}
|
|
2323
|
+
return mapError(error, isMemoryError(error) ? ERR_CODEC_OUT_OF_MEMORY : ERR_INVALID_COMPRESSED_DATA);
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2326
|
+
function mapMemoryError(error) {
|
|
2327
|
+
return isMemoryError(error) ? mapError(error, ERR_CODEC_OUT_OF_MEMORY) : error;
|
|
2328
|
+
}
|
|
2329
|
+
|
|
2330
|
+
function isMemoryError(error) {
|
|
2331
|
+
return isErrorObject(error) && error.code == Z_MEM_ERROR_CODE;
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2334
|
+
function mapError(error, message) {
|
|
2335
|
+
const mappedError = new Error(message);
|
|
2336
|
+
mappedError.cause = error;
|
|
2337
|
+
return mappedError;
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
function mapInflateStreamError(readable, sourceErrors) {
|
|
2271
2341
|
const reader = readable.getReader();
|
|
2272
2342
|
return new ReadableStream({
|
|
2273
2343
|
async pull(controller) {
|
|
2274
|
-
let result;
|
|
2275
2344
|
try {
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2345
|
+
const { value, done } = await reader.read();
|
|
2346
|
+
if (done) {
|
|
2347
|
+
controller.close();
|
|
2348
|
+
} else {
|
|
2349
|
+
controller.enqueue(value);
|
|
2280
2350
|
}
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
throw
|
|
2284
|
-
}
|
|
2285
|
-
const { value, done } = result;
|
|
2286
|
-
if (done) {
|
|
2287
|
-
controller.close();
|
|
2288
|
-
} else {
|
|
2289
|
-
controller.enqueue(value);
|
|
2351
|
+
} catch (error) {
|
|
2352
|
+
await cancel(reader, error);
|
|
2353
|
+
throw mapCodecError(error, sourceErrors);
|
|
2290
2354
|
}
|
|
2291
2355
|
},
|
|
2292
2356
|
cancel(reason) {
|
|
@@ -2650,10 +2714,11 @@ async function runWorker$1({ options, readable, writable, onTaskFinished, worker
|
|
|
2650
2714
|
}
|
|
2651
2715
|
codecStream = new CodecStream(options, config);
|
|
2652
2716
|
chunkStream = new ChunkStream(getChunkSize(config));
|
|
2717
|
+
const { signal } = workerOptions.streamOptions;
|
|
2653
2718
|
await readable
|
|
2654
2719
|
.pipeThrough(codecStream)
|
|
2655
2720
|
.pipeThrough(chunkStream)
|
|
2656
|
-
.pipeTo(writable, { preventClose: true, preventAbort: true });
|
|
2721
|
+
.pipeTo(writable, { preventClose: true, preventAbort: true, signal });
|
|
2657
2722
|
const {
|
|
2658
2723
|
crc32,
|
|
2659
2724
|
inputSize,
|
|
@@ -2721,6 +2786,7 @@ async function runWorker$1({ options, readable, writable, onTaskFinished, worker
|
|
|
2721
2786
|
const MODULE_WORKER_OPTIONS = { type: "module" };
|
|
2722
2787
|
const ERROR_EVENT_TYPE = "error";
|
|
2723
2788
|
const MESSAGE_ERROR_EVENT_TYPE = "messageerror";
|
|
2789
|
+
const ABORT_EVENT_TYPE = "abort";
|
|
2724
2790
|
|
|
2725
2791
|
let webWorkerSource, webWorkerURI, webWorkerOptions;
|
|
2726
2792
|
let transferStreamsSupported = true;
|
|
@@ -2897,6 +2963,13 @@ function watchClosedStream(writableSource, workerData) {
|
|
|
2897
2963
|
Object.assign(workerData, { destinationFailed: true, destinationError: error });
|
|
2898
2964
|
}
|
|
2899
2965
|
});
|
|
2966
|
+
const { signal } = workerData.workerOptions.streamOptions;
|
|
2967
|
+
if (signal) {
|
|
2968
|
+
const onAbort = () => abortController.abort(signal.reason);
|
|
2969
|
+
const removeAbortListener = () => signal.removeEventListener(ABORT_EVENT_TYPE, onAbort);
|
|
2970
|
+
signal.addEventListener(ABORT_EVENT_TYPE, onAbort);
|
|
2971
|
+
closed.then(removeAbortListener, removeAbortListener);
|
|
2972
|
+
}
|
|
2900
2973
|
return {
|
|
2901
2974
|
writable, closed, abortPipe: () => {
|
|
2902
2975
|
aborting = true;
|
|
@@ -3159,9 +3232,6 @@ function getResponseError(errorData, errorValue) {
|
|
|
3159
3232
|
responseError = errorValue.value;
|
|
3160
3233
|
} else {
|
|
3161
3234
|
responseError = Object.assign(new Error(message), { stack, code, name });
|
|
3162
|
-
if (cause) {
|
|
3163
|
-
responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
|
|
3164
|
-
}
|
|
3165
3235
|
}
|
|
3166
3236
|
if (isErrorObject(responseError)) {
|
|
3167
3237
|
try {
|
|
@@ -3171,6 +3241,9 @@ function getResponseError(errorData, errorValue) {
|
|
|
3171
3241
|
if (codecImportFailed) {
|
|
3172
3242
|
responseError.codecImportFailed = true;
|
|
3173
3243
|
}
|
|
3244
|
+
if (cause && !isErrorObject(responseError.cause)) {
|
|
3245
|
+
responseError.cause = Object.assign(new Error(cause.message), { name: cause.name });
|
|
3246
|
+
}
|
|
3174
3247
|
if (errorValue) {
|
|
3175
3248
|
if (responseError.name !== name) {
|
|
3176
3249
|
responseError.name = name;
|
|
@@ -5362,8 +5435,8 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5362
5435
|
const passThroughCompression = Boolean(passThrough);
|
|
5363
5436
|
const passThroughEncryption = passThrough === true;
|
|
5364
5437
|
checkPasswordOption(password, rawPassword);
|
|
5365
|
-
password = password && password.length
|
|
5366
|
-
rawPassword = rawPassword && rawPassword.length
|
|
5438
|
+
password = password && password.length ? password : UNDEFINED_VALUE;
|
|
5439
|
+
rawPassword = rawPassword && rawPassword.length ? rawPassword : UNDEFINED_VALUE;
|
|
5367
5440
|
if (extraFieldAES) {
|
|
5368
5441
|
if (extraFieldAES.originalCompressionMethod != COMPRESSION_METHOD_AES) {
|
|
5369
5442
|
throw new Error(ERR_UNSUPPORTED_COMPRESSION);
|
|
@@ -5513,6 +5586,7 @@ let ZipEntry$1 = class ZipEntry {
|
|
|
5513
5586
|
({ writable } = writer);
|
|
5514
5587
|
const readable = toCompatibleReadable(reader.createReadable({ offset: dataOffset, size }));
|
|
5515
5588
|
const { outputSize: writtenSize } = await runWorker({ readable, writable }, workerOptions);
|
|
5589
|
+
throwIfAborted(signal);
|
|
5516
5590
|
if (writtenSize != outputSize) {
|
|
5517
5591
|
throw Object.assign(new Error(ERR_INVALID_UNCOMPRESSED_SIZE), { outputSize: writtenSize });
|
|
5518
5592
|
}
|
|
@@ -6124,7 +6198,7 @@ function getMaxAppendedDataSize(maxAppendedDataSize, strictness) {
|
|
|
6124
6198
|
async function findEndOfCentralDirectory(reader, rejectAmbiguous, maxAppendedDataSize) {
|
|
6125
6199
|
const { size } = reader;
|
|
6126
6200
|
const anchoredLength = Math.min(size, END_OF_CENTRAL_DIR_LENGTH + MAX_16_BITS);
|
|
6127
|
-
const remoteProbeBudget = {
|
|
6201
|
+
const remoteProbeBudget = { remaining: MAX_END_OF_CENTRAL_DIR_PROBES };
|
|
6128
6202
|
let endOfDirectoryInfo;
|
|
6129
6203
|
let plausibleEndOfDirectoryInfo;
|
|
6130
6204
|
let endOfDirectoryReachingEndCount = 0;
|
|
@@ -6217,8 +6291,8 @@ async function readSignature(reader, view, anchoredOffset, signatureOffset, size
|
|
|
6217
6291
|
if (signatureOffset >= anchoredOffset) {
|
|
6218
6292
|
return getUint32$1(view, signatureOffset - anchoredOffset);
|
|
6219
6293
|
}
|
|
6220
|
-
if (remoteProbeBudget.
|
|
6221
|
-
remoteProbeBudget.
|
|
6294
|
+
if (remoteProbeBudget.remaining > 0) {
|
|
6295
|
+
remoteProbeBudget.remaining--;
|
|
6222
6296
|
const signatureArray = await readUint8Array(reader, signatureOffset, 4);
|
|
6223
6297
|
return getUint32$1(getDataView(signatureArray), 0);
|
|
6224
6298
|
}
|
|
@@ -6308,6 +6382,7 @@ var zipReader = /*#__PURE__*/Object.freeze({
|
|
|
6308
6382
|
ERR_AMBIGUOUS_ARCHIVE: ERR_AMBIGUOUS_ARCHIVE,
|
|
6309
6383
|
ERR_BAD_FORMAT: ERR_BAD_FORMAT,
|
|
6310
6384
|
ERR_CENTRAL_DIRECTORY_NOT_FOUND: ERR_CENTRAL_DIRECTORY_NOT_FOUND,
|
|
6385
|
+
ERR_CODEC_OUT_OF_MEMORY: ERR_CODEC_OUT_OF_MEMORY,
|
|
6311
6386
|
ERR_ENCRYPTED: ERR_ENCRYPTED,
|
|
6312
6387
|
ERR_ENCRYPTED_CENTRAL_DIRECTORY: ERR_ENCRYPTED_CENTRAL_DIRECTORY,
|
|
6313
6388
|
ERR_ENTRY_DATA_OUT_OF_BOUNDS: ERR_ENTRY_DATA_OUT_OF_BOUNDS,
|
|
@@ -7134,9 +7209,11 @@ function resolveMetadata(zipWriter, name, options) {
|
|
|
7134
7209
|
const passThrough = checkPassThroughOption(getOptionValue(zipWriter, options, OPTION_PASS_THROUGH));
|
|
7135
7210
|
const passThroughCompression = Boolean(passThrough);
|
|
7136
7211
|
const passThroughEncryption = passThrough === true;
|
|
7137
|
-
|
|
7138
|
-
|
|
7212
|
+
let password = getOptionValue(zipWriter, options, OPTION_PASSWORD);
|
|
7213
|
+
let rawPassword = getOptionValue(zipWriter, options, OPTION_RAW_PASSWORD);
|
|
7139
7214
|
checkPasswordOption(password, rawPassword);
|
|
7215
|
+
password = password && password.length ? password : UNDEFINED_VALUE;
|
|
7216
|
+
rawPassword = rawPassword && rawPassword.length ? rawPassword : UNDEFINED_VALUE;
|
|
7140
7217
|
const encryptionStrength = getNumberOptionValue(zipWriter, options, OPTION_ENCRYPTION_STRENGTH, 3);
|
|
7141
7218
|
const zipCrypto = getOptionValue(zipWriter, options, PROPERTY_NAME_ZIPCRYPTO);
|
|
7142
7219
|
const extendedTimestamp = getOptionValue(zipWriter, options, OPTION_EXTENDED_TIMESTAMP, true);
|
|
@@ -7753,6 +7830,7 @@ async function createFileEntry(reader, writer, { diskNumberStart, lockFileEntry
|
|
|
7753
7830
|
const result = await runWorker({ readable, writable }, workerOptions);
|
|
7754
7831
|
compressedSize = result.outputSize;
|
|
7755
7832
|
writer.size += compressedSize;
|
|
7833
|
+
throwIfAborted(signal);
|
|
7756
7834
|
if (!passThroughCompression) {
|
|
7757
7835
|
uncompressedSize = result.inputSize;
|
|
7758
7836
|
if (!encrypted || zipCrypto) {
|
|
@@ -8932,7 +9010,7 @@ function formatSupported(StreamClass, format) {
|
|
|
8932
9010
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
8933
9011
|
*/
|
|
8934
9012
|
|
|
8935
|
-
const VERSION = "2.
|
|
9013
|
+
const VERSION = "2.17.0";
|
|
8936
9014
|
|
|
8937
9015
|
/*
|
|
8938
9016
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9381,7 +9459,7 @@ try {
|
|
|
9381
9459
|
// ignored
|
|
9382
9460
|
}
|
|
9383
9461
|
|
|
9384
|
-
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:z,Error:L,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),_=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(_,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,_:0,l:void 0}}function Je(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,k:t,m:0,v:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.I=e,this.M=t,this.C=0;}},re=class{constructor(e,t,n,r,i){this.Z=e,this.W=t,this.q=n,this.S=r,this.L=i;}};function D_(e){return Q_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function $e(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.$[e.D++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.A+e.H;return e.$[f]=255&i,e.$[f+1]=i>>>8&255,e.$[f+2]=r,e.H+=3,i=i-1&65535,e.N[__[r]+ie+1].j++,e.U[y_(i)].j++,e.H==e.R}function De(e,t){let n=255&t,r=e.A+e.H;return e.$[r]=0,e.$[r+1]=0,e.$[r+2]=n,e.H+=3,e.N[n].j++,e.H==e.R}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=z.floor((t+I-1)/I),f=1<<8+Ce;return {...Je(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,O:n,V:r,X:i,J:new g(32768),K:new g(n),ee:f,$:new p(32768),te:0,ne:32768,D:0,re:0,ie:0,fe:0,_e:0,le:0,oe:-2,ue:0,ae:0,ce:0,se:0,he:0,de:0,we:0,be:0,ke:0,ge:0,me:0,ve:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),Ie:new g(be+1),H:0,R:0,ze:Z,A:0,Me:0,Ce:0,Ze:8,We:32768,qe:0,Se:0,Le:0,N:new k(fe).fill(0).map(()=>Q()),U:new k(2*me+1).fill(0).map(()=>Q()),$e:new k(2*oe+1).fill(0).map(()=>Q()),De:w_(),Ae:w_(),He:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=Q();f.Qe=r,f.je=i,t.push(f);}return t}function Q(){return {j:0,Qe:0,Ne:0,je:0}}function w_(){return new ne([],dn(null,Z,0,0,0))}function dn(e,t,n,r,i){return new re(e,t,n,r,i)}function $_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=mn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,_=t[f]||0;r[i++]=e?$e(_,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,_=e[r];if(n>=_&&n<=_+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,_=e[n];if(i>=_&&i<=_+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function mn(e){let t=z.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,I=3,ee=258,ae=ee+I+1,nt=4096,Ue=16,He=ee,bn=29,ie=256,Te=ie+1+bn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,$=-1,Q_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var hn=k_($_()),sn=k_(new k(30).fill(5)),Fe=I_(hn),R_=I_(sn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function he(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,xn,pn,Sn,En,gn,Tn,wn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=z.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=wn[255&t]^Tn[t>>>8&255]^gn[t>>>16&255]^En[t>>>24&255]^Sn[255&n]^pn[n>>>8&255]^xn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.Me=1+(e.T-1&7),e.p=0,e.T=0;}function An(e,t,n){let r,i,f=[],_=0;for(r=1;r<=be;r++)_=_+n[r-1]<<1,f[r]=_;for(i=0;i<=t;i++){let t=e[i].je;0!=t&&(e[i].Qe=$e(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.N.length;t++)e.N[t].j=0;for(let t=0;t<e.U.length;t++)e.U[t].j=0;for(let t=0;t<e.$e.length;t++)e.$e[t].j=0;e.N[ve].j=1,e.ie=e.fe=0,e.H=e._e=0;}function Et(e){if(e.N&&e.N.length>=fe)for(let t=0;t<fe;t++)e.N[t]=Q();else {e.N=[];for(let t=0;t<fe;t++)e.N.push(Q());}if(e.U&&e.U.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.U[t]=Q();else {e.U=[];for(let t=0;t<2*me+1;t++)e.U.push(Q());}if(e.$e&&e.$e.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.$e[t]=Q();else {e.$e=[];for(let t=0;t<2*oe+1;t++)e.$e.push(Q());}e.De=new ne(e.N,new re(Fe,a_,ie+1,Te,be)),e.Ae=new ne(e.U,new re(R_,i_,0,me,be)),e.He=new ne(e.$e,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.Me=0,St(e);}var se=1;function Dn(e,t,n){return n=e.Te[se],e.Te[se]=e.Te[e.Se--],z_(e,t,se),n}function mt(e,t,n,r){return e[t].j<e[n].j||e[t].j==e[n].j&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Se&&(i<e.Se&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function yn(e,t){let n,r,i,f,_,l,o=t.I,u=t.C,a=t.M.Z,c=t.M.W,s=t.M.q,h=t.M.L,d=0;for(f=0;f<=be;f++)e.Ie[f]=0;for(o[e.Te[e.Le]].je=0,n=e.Le+1;n<fe;n++)r=e.Te[n],f=o[o[r].Ne].je+1,f>h&&(f=h,d++),o[r].je=f,!(r>u)&&(e.Ie[f]++,_=0,r>=s&&(_=c[r-s]),l=o[r].j,e.ie+=l*(f+_),a&&(e.fe+=l*(a[r].je+_)));if(0!=d){do{for(f=h-1;0==e.Ie[f];)f--;e.Ie[f]--,e.Ie[f+1]+=2,e.Ie[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.Ie[f];0!=r;)i=e.Te[--n],!(i>u)&&(o[i].je!=f&&(e.ie+=(f-o[i].je)*o[i].j,o[i].je=f),r--);}}function L_(e,t){let n,r,i,f=t.I,_=t.M.Z,l=t.M.S,o=-1;for(e.Se=0,e.Le=fe,n=0;n<l;n++)0!=f[n].j?(e.Te[++e.Se]=o=n,e.ye[n]=0):f[n].je=0;for(;e.Se<2;)i=e.Te[++e.Se]=o<2?++o:0,f[i].j=1,e.ye[i]=0,e.ie--,_&&(e.fe-=_[i].je);for(t.C=o,n=z.floor(e.Se/2);n>=1;n--)z_(e,f,n);i=l;do{n=Dn(e,f,n),r=e.Te[se],e.Te[--e.Le]=n,e.Te[--e.Le]=r,f[i].j=f[n].j+f[r].j,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].Ne=f[r].Ne=i,e.Te[se]=i++,z_(e,f,se);}while(e.Se>=2);e.Te[--e.Le]=e.Te[se],yn(e,t),An(f,t.C,e.Ie);}function bt(e,t,n){let r,i,f=-1,_=t[0].je,l=0,o=7,u=4;for(0==_&&(o=138,u=3),t[n+1].je=65535,r=0;r<=n;r++)i=_,_=t[r+1].je,!(++l<o&&i==_)&&(l<u?e.$e[i].j+=l:0!=i?(i!=f&&e.$e[i].j++,e.$e[t_].j++):l<=10?e.$e[n_].j++:e.$e[r_].j++,l=0,f=i,0==_?(o=138,u=3):i==_?(o=6,u=3):(o=7,u=4));}function ht(e,t,n){let r,i=-1,f=t[0].je,_=0,l=7,o=4;0==f&&(l=138,o=3);for(let u=0;u<=n;u++)if(r=f,f=t[u+1].je,!(++_<l&&r==f)){if(_<o)do{C(e,e.$e[r].Qe,e.$e[r].je);}while(0!=--_);else 0!=r?(r!=i&&(C(e,e.$e[r].Qe,e.$e[r].je),_--),C(e,e.$e[t_].Qe,e.$e[t_].je),C(e,_-3,2)):_<=10?(C(e,e.$e[n_].Qe,e.$e[n_].je),C(e,_-3,3)):(C(e,e.$e[r_].Qe,e.$e[r_].je),C(e,_-11,7));_=0,i=r,0==f?(l=138,o=3):r==f?(l=6,o=3):(l=7,o=4);}}function vn(e){let t;for(bt(e,e.N,e.De.C),bt(e,e.U,e.Ae.C),L_(e,e.He),t=oe-1;t>=3&&0==e.$e[pe[t]].je;t--);return e.ie+=3*(t+1)+5+5+4,t}function In(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.$e[pe[i]].je,3);ht(e,e.N,t-1),ht(e,e.U,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.$,e.D,t,i,n),e.D+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Qe,Fe[ve].je),xt(e);}function st(e,t,n){let r,i,f,_,l=0;if(0!=e.H)do{r=255&e.ze[l],r+=(255&e.ze[l+1])<<8,i=e.ze[l+2],l+=3,0==r?C(e,t[i].Qe,t[i].je):(f=__[i],C(e,t[f+ie+1].Qe,t[f+ie+1].je),_=a_[f],0!=_&&(i-=ge[f],C(e,i,_)),r--,f=y_(r),C(e,n[f].Qe,n[f].je),_=i_[f],0!=_&&(r-=Ee[f],C(e,r,_)));}while(l<e.H);C(e,t[ve].Qe,t[ve].je);}function kn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.N[t].j)return 0;if(0!=e.N[9].j||0!=e.N[10].j||0!=e.N[13].j)return 1;for(t=32;t<ie;t++)if(0!=e.N[t].j)return 1;return 0}function wt(e,t,n,r,i=0){let f,_,l=0;e.ke>0?(2==e.o.t&&(e.o.t=kn(e)),L_(e,e.De),L_(e,e.Ae),l=vn(e),f=e.ie+3+7>>3,_=e.fe+3+7>>3,(_<=f||4==e.ge)&&(f=_)):f=_=n+5,n+4<=f&&t?Pe(e,t,n,r,i):_==f?(C(e,(N_<<1)+r,3),st(e,Fe,R_)):(C(e,(lt<<1)+r,3),In(e,e.De.C+1,e.Ae.C+1,l+1),st(e,e.N,e.U)),St(e),r&&pt(e);}function vt(){let e=je();return e.l=v_(e),e}var Ye=[{Ue:Lt,Re:0,Ye:0,Ee:0,Pe:0},{Ue:U_,Re:4,Ye:4,Ee:8,Pe:4},{Ue:U_,Re:4,Ye:5,Ee:16,Pe:8},{Ue:U_,Re:4,Ye:6,Ee:32,Pe:32},{Ue:Ne,Re:4,Ye:4,Ee:16,Pe:16},{Ue:Ne,Re:8,Ye:16,Ee:32,Pe:32},{Ue:Ne,Re:8,Ye:16,Ee:128,Pe:128},{Ue:Ne,Re:8,Ye:32,Ee:128,Pe:256},{Ue:Ne,Re:32,Ye:128,Ee:258,Pe:1024},{Ue:Ne,Re:32,Ye:258,Ee:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.V)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(I-1)]);let n=e.J[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.O-1]=0,Ve(e.K,0,(e.O-1)*e.K.BYTES_PER_ELEMENT);}function Un(e){let t,n,r=e.h;for(t=e.O;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.J[t],e.J[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e.l.P?e.i=he(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e.l.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.We-e.ce-e.ae,0==n&&0==e.ae&&0==e.ce?n=r:-1==n&&n--,e.ae>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.qe-=r,e.ae-=r,e.ue-=r,e.le>e.ae&&(e.le=e.ae),Un(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ae+e.ce,n),e.ce+=t,e.ce+e.le>=I){let t=e.ae-e.le;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e.le&&(e.be=l_(e,e.be,e.u[t+I-1]),e.J[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e.le--,!(e.ce+e.le<I)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.m<e.We){let t,n=e.ae+e.ce;e.m<n?(t=e.We-n,t>He&&(t=He),Ve(e.u,n,t),e.m=n+t):e.m<n+He&&(t=n+He-e.m,t>e.We-e.m&&(t=e.We-e.m),Ve(e.u,e.m,t),e.m+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let _=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(_=0,r<-15)return -2;r=-r;}else r>15&&(_=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=_)return -2;8==r&&(r=9);let l=v_(e);return l?(e.l=l,l.o=e,l.Y=42,l.P=_,l.B=void 0,l.k=r,l.h=1<<l.k,l.F=l.h-1,l.G=i+7,l.O=1<<l.G,l.V=l.O-1,l.X=(l.G+I-1)/I,l.u=new p(2*l.h),l.J=new g(l.h),l.K=new g(l.O),l.m=0,l.ee=1<<i+6,l.$=new p(l.ee*ot),l.ne=4*l.ee,l.u&&l.J&&l.K&&l.$?(l.ze=l.$.subarray(l.ee),l.A=l.te+l.ee,l.R=3*(l.ee-1),l.ke=t,l.ge=f,l.Ze=n,Fn(e)):(l.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e.l;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Hn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e.l,t.D=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):he(0),t.oe=-2,Et(t),0)}function Bn(e){e.We=2*e.h,It(e),e.xe=Ye[e.ke].Ye,e.me=Ye[e.ke].Re,e.ve=Ye[e.ke].Ee,e.pe=Ye[e.ke].Pe,e.ae=0,e.ue=0,e.ce=0,e.le=0,e.se=e.he=I-1,e.we=0,e.be=0;}function Fn(e){let t=Hn(e);return 0==t&&Bn(e.l),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e.l;gt(n),t=n.D,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.$,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.D-=t,0==n.D&&(n.re=n.te));}function Ie(e,t){let n=e.l;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.$.buffer,n.te+t,n.D-t),n.D-t));}function Nt(e,t){let n,r=e.l;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.D){if(q(e),0==e.avail_out)return r.oe=$,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.ke<2?0:r.ke<6?1:6==r.ke?2:3,n|=t<<6,0!=r.ae&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ae&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.D)return r.oe=$,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Oe?0:8)+(null==r.B.Ve?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,255&r.B.Je),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.$,r.D)),r.Ce=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,at),r.Y=113,q(e),0!=r.D)return r.oe=$,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.D,n=(65535&r.B.Ke)-r.Ce;for(;r.D+n>r.ne;){let i=r.ne-r.D;if(M(r.$,r.D,r.B.Ge,r.Ce,i),r.D=r.ne,Ie(e,t),r.Ce+=i,q(e),0!=r.D)return r.oe=$,0;t=0,n-=i;}M(r.$,r.D,r.B.Ge,r.Ce,n),r.D+=n,Ie(e,t),r.Ce=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Oe&&r.B.Oe.length){let t,n=r.D;do{if(r.D==r.ne){if(Ie(e,n),q(e),0!=r.D)return r.oe=$,0;n=0;}t=r.B.Oe[r.Ce++],T(r,t);}while(0!=t);Ie(e,n),r.Ce=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.D;do{if(r.D==r.ne){if(Ie(e,n),q(e),0!=r.D)return r.oe=$,0;n=0;}t=r.B.Ve[r.Ce++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.D+2>r.ne&&(q(e),0!=r.D))return r.oe=$,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.D)return r.oe=$,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ke?Lt(r,t):2==r.ge?Pn(r,t):3==r.ge?Zn(r,t):Ye[r.ke].Ue(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=$),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ae=0,r.ue=0,r.le=0))),q(e),0==e.avail_out))return r.oe=$,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.D?0:1)}function P_(e){if(Z_(e))return -2;let t=e.l,n=t.Y;return t.u=Z,t.J=qe,t.K=qe,t.$=Z,t.ze=Z,t.Te=new R(0),t.ye=Z,t.Ie=qe,t.N.length=0,t.U.length=0,t.$e.length=0,t.B=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ae,_=e.he,l=e.ve,o=e.ae>ye(e)?e.ae-ye(e):0,u=e.J,a=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+_-1],k=c[f+_];_>=e.me&&(i>>=2),l>s&&(l=s);do{if(n=t,c[n+_]!=k||c[n+_-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>_){if(e.qe=t,_=r,r>=l)break;b=c[f+_-1],k=c[f+_];}}while((t=u[t&a])>o&&0!=--i);return _<=s?_:s}function zt(e,t){wt(e,e.u,e.ae-e.ue,t,e.ue),e.ue=e.ae,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Lt(e,t){let n,r,i,f=ke(e.ne-5,e.h),_=0,l=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ae-e.ue,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;_=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,_),e.$[e.D-4]=n,e.$[e.D-3]=n>>8,e.$[e.D-2]=~n,e.$[e.D-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ue,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ue+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==_);if(l-=e.o.avail_in,l){if(l>=e.h){e._e=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ae=e.h,e.le=e.ae;}else e.We-e.ae<=l&&(e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,e.le>e.ae&&(e.le=e.ae)),M(e.u,e.ae,e.o.next_in,e.o.next_in_index-l,l),e.ae+=l,e.le+=ke(l,e.h-e.le);e.ue=e.ae;}return e.m<e.ae&&(e.m=e.ae),_?(e.Me=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ae==e.ue?1:(i=e.We-e.ae,e.o.avail_in>i&&e.ue>=e.h&&(e.ue-=e.h,e.ae-=e.h,M(e.u,0,e.u,e.h,e.ae),e._e<2&&e._e++,i+=e.h,e.le>e.ae&&(e.le=e.ae)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ae,i),e.ae+=i,e.le+=ke(i,e.h-e.le)),e.m<e.ae&&(e.m=e.ae),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ae-e.ue,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),_=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,_,e.ue),e.ue+=n,q(e.o)),_&&(e.Me=8),_?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ae)),0!=n&&e.ae-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=I)if(e.ae,e.qe,e.se,r=e_(e,e.ae-e.qe,e.se-I),e.ce-=e.se,e.se<=e.xe&&e.ce>=I){e.se--;do{e.ae++,n=u_(e,e.ae);}while(0!=--e.se);e.ae++;}else e.ae+=e.se,e.se=0,e.be=e.u[e.ae],e.be=l_(e,e.be,e.u[e.ae+1]);else r=De(e,e.u[e.ae]),e.ce--,e.ae++;if(r){let t=j(e,false);if(null!=t)return t}}if(e.le=e.ae<I-1?e.ae:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ae)),e.he=e.se,e.de=e.qe,e.se=I-1,0!=n&&e.he<e.xe&&e.ae-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ge||e.se==I&&e.ae-e.qe>nt)&&(e.se=I-1)),e.he>=I&&e.se<=e.he){let t=e.ae+e.ce-I;e.ae,e.de,e.he,r=e_(e,e.ae-1-e.de,e.he-I),e.ce-=e.he-1,e.he-=2;do{++e.ae<=t&&(n=u_(e,e.ae));}while(0!=--e.he);if(e.we=0,e.se=I-1,e.ae++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ae-1]),r&&zt(e,0),e.ae++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ae++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ae-1]),e.we=0),e.le=e.ae<I-1?e.ae:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Zn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=I&&e.ae>0&&(i=e.ae-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ae+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=I?(e.ae,e.ae,e.se,n=e_(e,1,e.se-I),e.ce-=e.se,e.ae+=e.se,e.se=0):(n=De(e,e.u[e.ae]),e.ce--,e.ae++),n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}function Pn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ae]),e.ce--,e.ae++,n){let t=j(e,false);if(null!=t)return t}}if(e.le=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.H){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Ot=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Mn=[16,1,73,1,200,1],Yn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Mn),Ft.push(...Yn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Ot,0,0]),Wt=new g([...Ot,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function Jt(e,t){let n,r=e.l,i=e.next_in_index,f=e.next_out_index,_=e.next_in,l=e.next_out,o=r.u,u=r.p>>>0,a=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.m>>>0,k=r.v>>>0,g=r.it,m=f-(t-e.avail_out),v=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,I=0;e:do{for(;a<15;){if(!(i<_.length))break e;u+=_[i++]<<a,a+=8;}n=c[u&h];t:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,0==y){l[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}x+=u&(1<<y)-1,u>>>=y,a-=y;}for(;a<15;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}n=s[u&d];n:for(;;){if(y=n>>>16&255,u>>>=y,a-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;a<y;){if(!(i<_.length)){r.ft=16200;break e}u+=_[i++]<<a,a+=8;}T+=u&(1<<y)-1,u>>>=y,a-=y;}let t=x,c=f-m;if(T>c){let n=T-c;if(n>b&&g){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==k){if(I=w-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<n;++e)l[f++]=o[I++];t-=n,I=f-T;}else if(k<n){I=w+k-n;let e=n-k;if(!(e<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let t=0;t<e;++t)l[f++]=o[I++];if(t-=e,I=0,!(k<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<k;++e)l[f++]=o[I++];t-=k,I=f-T;}else {if(I=k-n,!(n<t)){for(let e=0;e<t;++e)l[f++]=o[I++];continue e}for(let e=0;e<n;++e)l[f++]=o[I++];t-=n,I=f-T;}for(;t>2;)l[f++]=l[I++],l[f++]=l[I++],l[f++]=l[I++],t-=3;t&&(l[f++]=l[I++],t>1&&(l[f++]=l[I++]));}else {for(I=f-T;t>2;)l[f++]=l[I++],l[f++]=l[I++],l[f++]=l[I++],t-=3;t&&(l[f++]=l[I++],t>1&&(l[f++]=l[I++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(u&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(u&(1<<y)-1)];continue t}}while(i<p&&f<v);let z=a>>3;i-=z,a-=z<<3,u&=(1<<a)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<v?v-f+257:257-(f-v),r.p=u>>>0,r.T=a>>>0;}var Xn=new R(0);function M_(e,t){let n=Xn,r=t?ue+m_:ue+d_;return {...Je(e,0),o:e,ft:16180,_t:false,P:0,lt:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,kt:0,gt:0,vt:n,xt:new g(320),Tt:new g(288),yt:new R(r),It:0,it:true,zt:0,Mt:0,Ct:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function h_(e=1){return We(64,e,0)}function Qt(e=0){return We(96,e,0)}function Y_(e){return ((255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255)>>>0}var Le=15,Gn={Ct:false,Zt:Zt,Wt:Mt,qt:Xt,St:Gt,Lt:20,$t:257,Dt:0,At:d_,Ht:false,Qt:true},Kn={Ct:true,Zt:Pt,Wt:Yt,qt:Wt,St:Kt,Lt:19,$t:256,Dt:-1,At:m_,Ht:true,Qt:false};function Oe(e,t,n,r,i,f,_,l){let o,u,a,c,s,h,d,w,b,k,m,v,p,x,T,y,I,z,M,C=new g(Le+1),Z=new g(Le+1),W=l?Kn:Gn;for(o=0;o<=Le;o++)C[o]=0;for(u=0;u<n;u++)C[t[u]]++;for(s=i.jt,c=Le;c>=1&&0==C[c];c--);if(s>c&&(s=c),0==c)return W.Qt?(T=h_(1),r.jt[0]=T,r.jt[1]=T,i.jt=1,0):-1;for(a=1;a<c&&0==C[a];a++);for(s<a&&(s=a),w=1,o=1;o<=Le;o++)if(w<<=1,w-=C[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(Z[1]=0,o=1;o<Le;o++)Z[o+1]=Z[o]+C[o];for(u=0;u<n;u++)0!=t[u]&&(f[Z[t[u]]++]=u);switch(e){case 0:I=z=f,M=W.Lt;break;case 1:I=W.Zt,z=W.Wt,M=W.$t;break;default:I=W.qt,z=W.St,M=W.Dt;}if(k=0,u=0,o=a,y=_.jt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(W.Ht?b>=ue:b>ue)||2==e&&(W.Ht?b>=W.At:b>W.At))return 1;for(;;){T=qn(f,u,o,d,e,I,z,M,W.Ct),m=1<<o-d,v=1<<h,a=v;do{v-=m;let e=(k>>d)+v;r.jt[y+e]=T;}while(0!=v);for(m=1<<o-1;k&m;)m>>=1;if(0!=m?(k&=m-1,k+=m):k=0,u++,0==--C[o]){if(o==c)break;o=t[f[u]];}if(o>s&&(k&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=C[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(W.Ht?b>=ue:b>ue)||2==e&&(W.Ht?b>=W.At:b>W.At))return 1;p=k&x,r.jt[_.jt+p]=We(h,s,y-_.jt);}}if(0!=k)for(T=h_(o-d);0!=k;){for(0!=d&&(k&x)!=p&&(d=0,o=s,y=_.jt,h=s,T=h_(o)),r.jt[y+(k>>d)]=T,m=1<<o-1;k&m;)m>>=1;0!=m?(k&=m-1,k+=m):k=0;}return _.jt+=b,i.jt=s,0}function qn(e,t,n,r,i,f,_,l,o){let u;if(o?e[t]<l:e[t]+1<l)u=b_(0,n-r,e[t]);else if(o?e[t]>l:e[t]>=l)if(o&&1==i){let i=e[t]-257;u=b_(_[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-l;u=b_(_[i],n-r,f[i]);}else u=Qt(n-r);return u}var p_=new R(0),Qn={Nt:true,Ut:new R(544),Rt:p_,Yt:p_},$n={Nt:true,Ut:new R(544),Rt:p_,Yt:p_};function $t(){let e=je();return e.l=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e.l,!(!t||t.o!=e||t.Ct&&(t.ft<16191||t.ft>16209)||!t.Ct&&(t.ft<16180||t.ft>16211))))}function er(e){let t;return Ge(e)?-2:(t=e.l,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Ct?16191:16180,t._t=false,t.lt=false,t.ot=-1,t.ut=t.Ct?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.vt=t.yt,t.it=true,t.zt=-1,0)}function _r(e){let t;return Ge(e)?-2:(t=e.l,t.h=0,t.m=0,t.v=0,er(e))}function tr(e,t){let n,r;if(Ge(e))return -2;if(r=e.l,t<0){if(t<-16)return -2;n=0,r.Ct=-16==t,t=-t;}else n=5+(t>>4),r.Ct=false,t<48&&(t&=15);let i=r.Ct?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.P=n,r.k=t,_r(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e.l=r,r.o=e,r.ft=i?16191:16180,n=tr(e,t),n}function nr(e){let t=e.Ct?$n:Qn,n={jt:0};if(t.Nt){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Ut.fill(0),f=t.Ut,t.Rt=f,i=9;let _={jt:f},l={jt:i},o={jt:0};for(Oe(1,e.xt,288,_,l,e.Tt,o,e.Ct),f=_.jt,i=l.jt,e.It=o.jt,r=0;r<32;)e.xt[r++]=5;i=5;let u=o.jt,a={jt:f},c={jt:i};n.jt=u,Oe(2,e.xt,32,a,c,e.Tt,n,e.Ct),t.Yt=f.slice(u),t.Nt=false;}e.et=t.Rt,e.nt=9,e.tt=t.Yt,e.rt=5,e.It=n.jt;}function rr(e,t,n){let r=e.l;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.v=0,r.m=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.v=0,r.m=r.h;else {let e=r.h-r.v;e>n&&(e=n),M(r.u,r.v,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.v=n,r.m=r.h):(r.v+=e,r.v==r.h&&(r.v=0),r.m<r.h&&(r.m+=e));}return 0}var S_=class extends L{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,_,l,o,u,a,c,s,h,d,w,b,k,g,m=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;l=0,u=0,o=0,a=0,r=Z,i=0,f=Z,_=0,n=e.l,16191==n.ft&&(n.ft=16192),I(),c=l,s=o,g=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(S(16),2&n.P&&35615==u){0==n.k&&(n.k=15),n.ct=W(0),n.ct=T(n.ct,u),C(),n.ft=16181;break}if(n.B&&(n.B.Et=-1),!(1&n.P)||((L(8)<<8)+(u>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=L(4)){e.msg="unknown compression method",n.ft=16209;break}if($(4),k=L(4)+8,0==n.k&&(n.k=k),k>15||k>n.k){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<k,n.ot=0,e.i=n.ct=he(0),n.ft=512&u?16189:16191,C();break;case 16181:if(S(16),n.ot=u,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=u>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C(),n.ft=16182;case 16182:S(32),n.B&&(n.B.Xe=u),512&n.ot&&4&n.P&&(n.ct=y(n.ct,u)),C(),n.ft=16183;case 16183:S(16),n.B&&(n.B.Pt=255&u,n.B.Je=u>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C(),n.ft=16184;case 16184:1024&n.ot?(S(16),n.ht=u,n.B&&(n.B.Ke=u),512&n.ot&&4&n.P&&(n.ct=T(n.ct,u)),C()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>l&&(h=l),h&&(n.B&&n.B.Ge&&n.B.Bt&&(k=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,k,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,n.ht-=h),n.ht))return v();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==l)return v();h=0;do{k=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Oe[n.ht++]=k);}while(k&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,k)return v()}else n.B&&(n.B.Oe=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==l)return v();h=0;do{k=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Ve[n.ht++]=k);}while(k&&h<l);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),l-=h,i+=h,k)return v()}else n.B&&(n.B.Ve=Z);n.ft=16188;case 16188:if(512&n.ot){if(S(16),4&n.P&&u!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}C();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Et=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:S(32),e.i=n.ct=Y_(u),C(),n.ft=16190;case 16190:if(!n.lt)return z(),2;e.i=n.ct=he(0),n.ft=16191;case 16191:if(5==t||6==t)return v();case 16192:if(n._t){D(),n.ft=16206;break}switch(S(3),n._t=!!L(1),$(1),L(2)){case 0:n.ft=16193;break;case 1:if(nr(n),n.ft=16199,6==t)return $(2),v();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}$(2);break;case 16193:if(D(),S(32),(65535&u)!=(u>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&u,C(),n.ft=16194,6==t)return v();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>l&&(h=l),h>o&&(h=o),0==h)return v();M(f,_,r,i,h),l-=h,i+=h,o-=h,_+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(S(14),n.bt=L(5)+257,$(5),n.kt=L(5)+1,$(5),n.wt=L(4)+4,$(4),n.bt>286||!n.Ct&&n.kt>30){e.msg=n.Ct?"too many length":"too many length or distance symbols",n.ft=16209;break}n.gt=0,n.ft=16197;case 16197:for(;n.gt<n.wt;)S(3),n.xt[pe[n.gt++]]=L(3),$(3);for(;n.gt<19;)n.xt[pe[n.gt++]]=0;n.vt=n.yt,n.et=n.tt=n.vt,n.nt=7;let c={jt:n.vt},m={jt:n.nt},p={jt:0};if(g=Oe(0,n.xt,19,c,m,n.Tt,p,n.Ct),n.vt=c.jt,n.nt=m.jt,g){e.msg="invalid code lengths set",n.ft=16209;break}n.gt=0,n.ft=16198;case 16198:for(;n.gt<n.bt+n.kt;){for(;w=n.et[L(n.nt)],!((w>>>16&255)<=a);)q();if((65535&w)<16)$(w>>>16&255),n.xt[n.gt++]=65535&w;else {if(16==(65535&w)){if(S(2+(w>>>16&255)),$(w>>>16&255),0==n.gt){e.msg="invalid bit length repeat",n.ft=16209;break}k=n.xt[n.gt-1],h=3+L(2),$(2);}else 17==(65535&w)?(S(3+(w>>>16&255)),$(w>>>16&255),k=0,h=3+L(3),$(3)):(S(7+(w>>>16&255)),$(w>>>16&255),k=0,h=11+L(7),$(7));if(n.gt+h>n.bt+n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.gt++]=k;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.vt=n.yt,n.nt=9;let A={jt:n.vt},H={jt:n.nt},Q={jt:0};g=Oe(1,n.xt,n.bt,A,H,n.Tt,Q,n.Ct),n.vt=A.jt,n.nt=H.jt;let j=Q.jt;if(n.et=n.vt.slice(0,j),g){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let N=n.xt.subarray(n.bt,n.bt+n.kt),U={jt:n.vt},R={jt:n.rt},Y={jt:j};if(g=Oe(2,N,n.kt,U,R,n.Tt,Y,n.Ct),n.vt=U.jt,n.rt=R.jt,n.tt=n.vt.slice(j),g){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return v();case 16199:n.ft=16200;case 16200:if(!n.Ct&&l>=6&&o>=258){z(),Jt(e,s),I(),16191==n.ft&&(n.zt=-1);break}for(n.zt=0;w=n.et[L(n.nt)],!((w>>>16&255)<=a);)q();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+(L((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)q();$(b>>>16&255),n.zt+=b>>>16&255;}if($(w>>>16&255),n.zt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.zt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Ct?31:15),n.ft=16201;case 16201:n.Ge&&(S(n.Ge),n.ht+=L(n.Ge),$(n.Ge),n.zt+=n.Ge),n.Mt=n.ht,n.ft=16202;case 16202:for(;w=n.tt[L(n.rt)],!((w>>>16&255)<=a);)q();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+(L((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=a);)q();$(b>>>16&255),n.zt+=b>>>16&255;}if($(w>>>16&255),n.zt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(S(n.Ge),n.dt+=L(n.Ge),$(n.Ge),n.zt+=n.Ge),n.ft=16204;case 16204:if(0==o)return v();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.m&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.v?(h-=n.v,d=n.h-h):d=n.v-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[_]=255&n.u[d],++_,++d;}else {d=_-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[_]=f[d],++_,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return v();f[_++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(S(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(_-s,_);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?u:Y_(u)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}C();}n.ft=16207;case 16207:if(n.P&&n.ot){if(S(32),4&n.P&&u!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}C();}n.ft=16208;case 16208:return g=1,v();case 16209:return g=-3,v();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return v();throw e}function v(){if(z(),n.h||s!=e.avail_out&&n.ft<16209&&((n.Ct?n.ft<16208:n.ft<16206)||4!=t)){let t=s-e.avail_out;if(rr(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n._t?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function x(e,t,r){return n.ot?W(e,t,r):he(e,t,r)}function T(e,t){return m[0]=255&t,m[1]=t>>>8&255,W(e,m,2)>>>0}function y(e,t){return m[0]=255&t,m[1]=t>>>8&255,m[2]=t>>>16&255,m[3]=t>>>24&255,W(e,m,4)>>>0}function I(){f=e.next_out,_=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,l=e.avail_in,u=n.p,a=n.T;}function z(){e.next_out=f,e.next_out_index=_,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=l,n.p=u,n.T=a;}function C(){u=0,a=0;}function q(){if(0==l)throw new S_;l--,u+=(255&r[i])<<a,i++,u>>>=0,a+=8;}function S(e){for(;a<e;)q();}function L(e){return u&(1<<e)-1}function $(e){u>>>=e,a-=e;}function D(){u>>>=7&a,a-=7&a;}}function tn(e){return Ge(e)?-2:0}var X_=65536,ar=32768,W_=class{constructor(e=16,t=X_){this.Ot=[],this.Vt=e;for(let n=0;n<z.min(e,4);n++)this.Ot.push(new p(t));}acquire(e=X_){for(let t=this.Ot.length-1;t>=0;t--){let n=this.Ot[t];if(n.length>=e)return this.Ot.splice(t,1),n}return new p(e)}release(e){this.Ot.length<this.Vt&&this.Ot.push(e);}};function nn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.Jt(t);if(0!=n&&0!=n)throw new L("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,_){n||(n=r());let l=n.o;if(n.Kt)return;let o=0;for(;o<f.length;){let r=z.min(f.length-o,ar),u=f.subarray(o,o+r);for(l.next_in=u,l.next_in_index=0,l.avail_in=u.length;l.avail_in>0;){let r=t.acquire(),f=false;try{l.next_out=r,l.next_out_index=0,l.avail_out=r.length;let i=e.en(l,0),o=r.length-l.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,_.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new L("process error: "+i)}finally{f||i(r);}}if(n.Kt)break;o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let _=n.o;for(;;){let n=t.acquire(),r=false;try{_.next_out=n,_.next_out_index=0,_.avail_out=n.length;let i=e.en(_,4),l=n.length-_.avail_out;if(l>0){let e=!1,i={tn:n.subarray(0,l),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new L("finalization error: "+i)}finally{r||i(n);}}let l=e.nn(_);if(0!=l&&0!=l)throw new L("end failed: "+l)}})}function rn(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}function ir(e="deflate",t){let n="gzip"==e?31:"deflate-raw"==e?-15:15,r=t&&"number"==typeof t.level?t.level:-1;return nn({Xt:()=>vt(),Jt:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function or(e="deflate"){let t="gzip"==e?31:"deflate-raw"==e?-15:"deflate64-raw"==e?-16:15;return nn({Xt:()=>$t(),Jt:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ir(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(rn());}},g_=class{constructor(e="deflate"){let t=or(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(rn());}};
|
|
9462
|
+
var{Uint8Array:p,Uint16Array:g,Int32Array:R,TransformStream:H,Math:O,Error:z,Array:k}=globalThis,pe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],Z=new p(0),qe=new g(0),de=[];for(let e=0;e<6;e++)de.push(e,0==e?8:4);de.push(0,1);var Se=[];for(let e=0;e<14;e++)Se.push(e,0==e?4:2);var Ee=new g([0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576]),ge=new g([0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0]);function M(e,t,n,r,i){if(0==i)return;let f=e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength),l=n instanceof p?n.subarray(r,r+i):new p(n.buffer,n.byteOffset+r,i);f.set(l,t);}function Ve(e,t,n){0!=n&&(e instanceof p?e:new p(e.buffer,e.byteOffset,e.byteLength)).fill(0,t,t+n);}function je(){return {next_in:Z,next_in_index:0,avail_in:0,total_in:0,next_out:Z,next_out_index:0,avail_out:0,total_out:0,msg:"",t:0,i:0,l:0,_:void 0}}function $e(e,t){let n=1<<t;return {o:e,u:new p(n),h:n,k:t,m:0,v:0,p:0,T:0}}function te(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1];for(let e=0;e<i;e++)t.push(r);}return new g(t)}var ne=class{constructor(e,t){this.I=e,this.M=t,this.C=0;}},re=class{constructor(e,t,n,r,i){this.Z=e,this.W=t,this.q=n,this.O=r,this.S=i;}};function D_(e){return J_[e<-6||e>2?9:2-e]||""}function we(e,t){try{e.msg=D_(t);}catch(n){e.msg="zlib error "+String(t)+" ("+n+")";}return t}function Qe(e,t){let n=e>>>0,r=0;for(let e=0;e<t;e++)r=r<<1|1&n,n>>>=1;return r}function T(e,t){e.D[e.j++]=t;}function Ae(e,t){T(e,255&t),T(e,t>>>8&255);}function e_(e,t,n){let r=255&n,i=65535&t,f=e.A+e.N;return e.D[f]=255&i,e.D[f+1]=i>>>8&255,e.D[f+2]=r,e.N+=3,i=i-1&65535,e.H[__[r]+ie+1].R++,e.J[y_(i)].R++,e.N==e.U}function De(e,t){let n=255&t,r=e.A+e.N;return e.D[r]=0,e.D[r+1]=0,e.D[r+2]=n,e.N+=3,e.H[n].R++,e.N==e.U}function ye(e){return e.h-ae}function y_(e){return e<256?A_[e]:A_[256+(e>>7)]}function v_(e){let t=Ce+7,n=1<<t,r=(1<<t)-1,i=O.floor((t+I-1)/I),f=1<<8+Ce;return {...$e(e,15),o:e,Y:42,P:0,B:void 0,F:32767,G:t,V:n,L:r,X:i,$:new g(32768),K:new g(n),ee:f,D:new p(32768),te:0,ne:32768,j:0,re:0,ie:0,fe:0,le:0,_e:0,oe:-2,ae:0,ue:0,ce:0,se:0,he:0,de:0,we:0,be:0,ke:0,ge:0,me:0,ve:0,pe:0,xe:0,Te:new R(2*Te+1),ye:new p(2*Te+1),Ie:new g(be+1),N:0,U:0,Me:Z,A:0,ze:0,Ce:0,Ze:8,We:32768,qe:0,Oe:0,Se:0,H:new k(fe).fill(0).map(()=>J()),J:new k(2*me+1).fill(0).map(()=>J()),De:new k(2*oe+1).fill(0).map(()=>J()),je:w_(),Ae:w_(),Qe:w_()}}function I_(e){let t=[];for(let n=0;n<e.length;n+=2){let r=e[n],i=e[n+1],f=J();f.Ne=r,f.Re=i,t.push(f);}return t}function J(){return {R:0,Ne:0,He:0,Re:0}}function w_(){return new ne([],bn(null,Z,0,0,0))}function bn(e,t,n,r,i){return new re(e,t,n,r,i)}function Q_(){let e=new k(288).fill(0);for(let t=0;t<=143;t++)e[t]=8;for(let t=144;t<=255;t++)e[t]=9;for(let t=256;t<=279;t++)e[t]=7;for(let t=280;t<=287;t++)e[t]=8;return e}function k_(e){let{code:t,length:n}=sn(e),r=new g(2*e.length),i=0;for(let f=0;f<e.length;f++){let e=n[f]||0,l=t[f]||0;r[i++]=e?Qe(l,e):0,r[i++]=e;}return new g(r)}function et(e,t,n){let r=0;for(let n=0;n<e.length;n++){let i=t[n]?1<<t[n]:1,f=e[n]+i-1;f>r&&(r=f);}r<n&&(r=n);let i=new p(r+1);for(let n=0;n<=r;n++)for(let r=0;r<e.length;r++){let f=t[r]?1<<t[r]:1,l=e[r];if(n>=l&&n<=l+f-1){i[n]=r;break}}let f=0;for(let n=0;n<e.length-1;n++){let r=t[n]?1<<t[n]:1,i=e[n]+r-1;i>f&&(f=i);}return i[f]=e.length-1,i}function _t(e,t){let n=0;for(let r=0;r<e.length;r++){let i=t[r]?1<<t[r]:1,f=e[r]+i-1;f>n&&(n=f);}let r=new p(n+1);for(let i=0;i<=n;i++)for(let n=0;n<e.length;n++){let f=t[n]?1<<t[n]:1,l=e[n];if(i>=l&&i<=l+f-1){r[i]=n;break}}return r}function tt(e){let t=new p(512),n=e.length-1;for(let r=0;r<256;r++)t[r]=r<=n?e[r]:e[n];for(let r=256;r<=n;r++){let n=r>>7;t[256+(n>255?255:n)]=e[r];}for(let e=257;e<512;e++)0==t[e]&&(t[e]=t[e-1]);return t}function sn(e){let t=O.max(...e),n=new k(t+1).fill(0);for(let t of e)t>0&&n[t]++;let r=new k(e.length).fill(0),i=new k(t+1).fill(0),f=0;for(let e=1;e<=t;e++)f=f+n[e-1]<<1,i[e]=f;for(let t=0;t<e.length;t++){let n=e[t];0!=n&&(r[t]=i[n]++);}return {code:r,length:e}}var Ce=8,I=3,ee=258,ae=ee+I+1,nt=4096,Ue=16,He=ee,hn=29,ie=256,Te=ie+1+hn,me=30,oe=19,fe=2*Te+1,be=15,rt=9,at=255,it=32,ot=4,ve=256,t_=16,n_=17,r_=18,ft=0,N_=1,lt=2,Q=-1,J_=["need dictionary","stream end","","file error","stream error","data error","insufficient memory","buffer error",""],a_=te(de),i_=te(Se),Be=new g(19);Be[16]=2,Be[17]=3,Be[18]=7;var xn=k_(Q_()),pn=k_(new k(30).fill(5)),Fe=I_(xn),R_=I_(pn),__=et(ge,a_,ee),A_=tt(_t(Ee,i_));function se(e,t,n){if(void 0===t||void 0===n)return 1;let r=65535&e,i=e>>>16&65535,f=0;for(;n>0;){let e=n>2e3?2e3:n;n-=e;do{r=r+t[f++]|0,i=i+r|0;}while(--e);r%=65521,i%=65521;}return (i<<16|r)>>>0}var Ze=[[],[],[],[],[],[],[],[]];for(let e=0;e<256;e++){let t=e;for(let e=0;e<8;e++)t=1&t?3988292384^t>>>1:t>>>1;Ze[0][e]=t;}for(let e=0;e<256;e++)for(let t=1;t<8;t++){let n=Ze[t-1][e];Ze[t][e]=n>>>8^Ze[0][255&n];}var[ut,Sn,En,gn,Tn,wn,An,Dn]=Ze;function W(e=0,t,n){if(!t)return 0;void 0===n&&(n=t.length);let r=0|~e,i=0;if((n=O.min(n,t.length))>=8){let e=new DataView(t.buffer,t.byteOffset,n),f=n-8;for(;i<=f;i+=8){let t=r^e.getInt32(i,true),n=e.getInt32(i+4,true);r=Dn[255&t]^An[t>>>8&255]^wn[t>>>16&255]^Tn[t>>>24&255]^gn[255&n]^En[n>>>8&255]^Sn[n>>>16&255]^ut[n>>>24&255];}}for(;i<n;i++)r=r>>>8^ut[255&(r^t[i])];return (4294967295^r)>>>0}function xt(e){16==e.T?(Ae(e,e.p),e.p=0,e.T=0):e.T>=8&&(T(e,e.p),e.p>>=8,e.T-=8);}function pt(e){e.T>8?Ae(e,e.p):e.T>0&&T(e,e.p),e.ze=1+(e.T-1&7),e.p=0,e.T=0;}function yn(e,t,n){let r,i,f=[],l=0;for(r=1;r<=be;r++)l=l+n[r-1]<<1,f[r]=l;for(i=0;i<=t;i++){let t=e[i].Re;0!=t&&(e[i].Ne=Qe(f[t]++,t));}}function C(e,t,n){e.T>Ue-n?(e.p=65535&(e.p|t<<e.T),Ae(e,e.p),e.p=t>>Ue-e.T&65535,e.T+=n-Ue):(e.p=65535&(e.p|t<<e.T),e.T+=n);}function St(e){for(let t=0;t<e.H.length;t++)e.H[t].R=0;for(let t=0;t<e.J.length;t++)e.J[t].R=0;for(let t=0;t<e.De.length;t++)e.De[t].R=0;e.H[ve].R=1,e.ie=e.fe=0,e.N=e.le=0;}function Et(e){if(e.H&&e.H.length>=fe)for(let t=0;t<fe;t++)e.H[t]=J();else {e.H=[];for(let t=0;t<fe;t++)e.H.push(J());}if(e.J&&e.J.length>=2*me+1)for(let t=0;t<2*me+1;t++)e.J[t]=J();else {e.J=[];for(let t=0;t<2*me+1;t++)e.J.push(J());}if(e.De&&e.De.length>=2*oe+1)for(let t=0;t<2*oe+1;t++)e.De[t]=J();else {e.De=[];for(let t=0;t<2*oe+1;t++)e.De.push(J());}e.je=new ne(e.H,new re(Fe,a_,ie+1,Te,be)),e.Ae=new ne(e.J,new re(R_,i_,0,me,be)),e.Qe=new ne(e.De,new re(null,Be,0,oe,7)),e.p=0,e.T=0,e.ze=0,St(e);}var he=1;function vn(e,t,n){return n=e.Te[he],e.Te[he]=e.Te[e.Oe--],z_(e,t,he),n}function mt(e,t,n,r){return e[t].R<e[n].R||e[t].R==e[n].R&&r[t]<=r[n]}function z_(e,t,n){let r=e.Te[n],i=n<<1;for(;i<=e.Oe&&(i<e.Oe&&mt(t,e.Te[i+1],e.Te[i],e.ye)&&i++,!mt(t,r,e.Te[i],e.ye));)e.Te[n]=e.Te[i],n=i,i<<=1;e.Te[n]=r;}function In(e,t){let n,r,i,f,l,_,o=t.I,a=t.C,u=t.M.Z,c=t.M.W,s=t.M.q,h=t.M.S,d=0;for(f=0;f<=be;f++)e.Ie[f]=0;for(o[e.Te[e.Se]].Re=0,n=e.Se+1;n<fe;n++)r=e.Te[n],f=o[o[r].He].Re+1,f>h&&(f=h,d++),o[r].Re=f,!(r>a)&&(e.Ie[f]++,l=0,r>=s&&(l=c[r-s]),_=o[r].R,e.ie+=_*(f+l),u&&(e.fe+=_*(u[r].Re+l)));if(0!=d){do{for(f=h-1;0==e.Ie[f];)f--;e.Ie[f]--,e.Ie[f+1]+=2,e.Ie[h]--,d-=2;}while(d>0);for(f=h;0!=f;f--)for(r=e.Ie[f];0!=r;)i=e.Te[--n],!(i>a)&&(o[i].Re!=f&&(e.ie+=(f-o[i].Re)*o[i].R,o[i].Re=f),r--);}}function O_(e,t){let n,r,i,f=t.I,l=t.M.Z,_=t.M.O,o=-1;for(e.Oe=0,e.Se=fe,n=0;n<_;n++)0!=f[n].R?(e.Te[++e.Oe]=o=n,e.ye[n]=0):f[n].Re=0;for(;e.Oe<2;)i=e.Te[++e.Oe]=o<2?++o:0,f[i].R=1,e.ye[i]=0,e.ie--,l&&(e.fe-=l[i].Re);for(t.C=o,n=O.floor(e.Oe/2);n>=1;n--)z_(e,f,n);i=_;do{n=vn(e,f,n),r=e.Te[he],e.Te[--e.Se]=n,e.Te[--e.Se]=r,f[i].R=f[n].R+f[r].R,e.ye[i]=(e.ye[n]>=e.ye[r]?e.ye[n]:e.ye[r])+1,f[n].He=f[r].He=i,e.Te[he]=i++,z_(e,f,he);}while(e.Oe>=2);e.Te[--e.Se]=e.Te[he],In(e,t),yn(f,t.C,e.Ie);}function bt(e,t,n){let r,i,f=-1,l=t[0].Re,_=0,o=7,a=4;for(0==l&&(o=138,a=3),t[n+1].Re=65535,r=0;r<=n;r++)i=l,l=t[r+1].Re,!(++_<o&&i==l)&&(_<a?e.De[i].R+=_:0!=i?(i!=f&&e.De[i].R++,e.De[t_].R++):_<=10?e.De[n_].R++:e.De[r_].R++,_=0,f=i,0==l?(o=138,a=3):i==l?(o=6,a=3):(o=7,a=4));}function st(e,t,n){let r,i=-1,f=t[0].Re,l=0,_=7,o=4;0==f&&(_=138,o=3);for(let a=0;a<=n;a++)if(r=f,f=t[a+1].Re,!(++l<_&&r==f)){if(l<o)do{C(e,e.De[r].Ne,e.De[r].Re);}while(0!=--l);else 0!=r?(r!=i&&(C(e,e.De[r].Ne,e.De[r].Re),l--),C(e,e.De[t_].Ne,e.De[t_].Re),C(e,l-3,2)):l<=10?(C(e,e.De[n_].Ne,e.De[n_].Re),C(e,l-3,3)):(C(e,e.De[r_].Ne,e.De[r_].Re),C(e,l-11,7));l=0,i=r,0==f?(_=138,o=3):r==f?(_=6,o=3):(_=7,o=4);}}function kn(e){let t;for(bt(e,e.H,e.je.C),bt(e,e.J,e.Ae.C),O_(e,e.Qe),t=oe-1;t>=3&&0==e.De[pe[t]].Re;t--);return e.ie+=3*(t+1)+5+5+4,t}function Nn(e,t,n,r){let i;for(C(e,t-257,5),C(e,n-1,5),C(e,r-4,4),i=0;i<r;i++)C(e,e.De[pe[i]].Re,3);st(e,e.H,t-1),st(e,e.J,n-1);}function Pe(e,t,n,r,i=0){C(e,(ft<<1)+r,3),pt(e),Ae(e,n),Ae(e,~n),n&&t&&M(e.D,e.j,t,i,n),e.j+=n;}function gt(e){xt(e);}function Tt(e){C(e,N_<<1,3),C(e,Fe[ve].Ne,Fe[ve].Re),xt(e);}function ht(e,t,n){let r,i,f,l,_=0;if(0!=e.N)do{r=255&e.Me[_],r+=(255&e.Me[_+1])<<8,i=e.Me[_+2],_+=3,0==r?C(e,t[i].Ne,t[i].Re):(f=__[i],C(e,t[f+ie+1].Ne,t[f+ie+1].Re),l=a_[f],0!=l&&(i-=ge[f],C(e,i,l)),r--,f=y_(r),C(e,n[f].Ne,n[f].Re),l=i_[f],0!=l&&(r-=Ee[f],C(e,r,l)));}while(_<e.N);C(e,t[ve].Ne,t[ve].Re);}function Rn(e){let t,n=4093624447;for(t=0;t<=31;t++,n>>=1)if(1&n&&0!=e.H[t].R)return 0;if(0!=e.H[9].R||0!=e.H[10].R||0!=e.H[13].R)return 1;for(t=32;t<ie;t++)if(0!=e.H[t].R)return 1;return 0}function wt(e,t,n,r,i=0){let f,l,_=0;e.ke>0?(2==e.o.t&&(e.o.t=Rn(e)),O_(e,e.je),O_(e,e.Ae),_=kn(e),f=e.ie+3+7>>3,l=e.fe+3+7>>3,(l<=f||4==e.ge)&&(f=l)):f=l=n+5,n+4<=f&&t?Pe(e,t,n,r,i):l==f?(C(e,(N_<<1)+r,3),ht(e,Fe,R_)):(C(e,(lt<<1)+r,3),Nn(e,e.je.C+1,e.Ae.C+1,_+1),ht(e,e.H,e.J)),St(e),r&&pt(e);}function vt(){let e=je();return e._=v_(e),e}var Ye=[{Je:Ot,Ue:0,Ee:0,Ye:0,Pe:0},{Je:U_,Ue:4,Ee:4,Ye:8,Pe:4},{Je:U_,Ue:4,Ee:5,Ye:16,Pe:8},{Je:U_,Ue:4,Ee:6,Ye:32,Pe:32},{Je:Ne,Ue:4,Ee:4,Ye:16,Pe:16},{Je:Ne,Ue:8,Ee:16,Ye:32,Pe:32},{Je:Ne,Ue:8,Ee:16,Ye:128,Pe:128},{Je:Ne,Ue:8,Ee:32,Ye:128,Pe:256},{Je:Ne,Ue:32,Ee:128,Ye:258,Pe:1024},{Je:Ne,Ue:32,Ee:258,Ye:258,Pe:4096}];function At(e){return 2*e-(e>4?9:0)}function l_(e,t,n){return ((t<<e.X^n)&e.L)>>>0}function u_(e,t){e.be=l_(e,e.be,e.u[t+(I-1)]);let n=e.$[t&e.F]=e.K[e.be];return e.K[e.be]=t,n}function It(e){e.K[e.V-1]=0,Ve(e.K,0,(e.V-1)*e.K.BYTES_PER_ELEMENT);}function Bn(e){let t,n,r=e.h;for(t=e.V;t>0;)t--,n=e.K[t],e.K[t]=n>=r?n-r:0;for(t=r;t>0;)t--,n=e.$[t],e.$[t]=n>=r?n-r:0;}function H_(e,t,n,r){let i=e.avail_in;return i>r&&(i=r),0==i?0:(e.avail_in-=i,M(t,n,e.next_in,e.next_in_index,i),1==e._.P?e.i=se(e.i,new p(t.buffer,t.byteOffset+n,i),i):2==e._.P&&(e.i=W(e.i,new p(t.buffer,t.byteOffset+n,i),i)),e.next_in_index+=i,e.total_in+=i,i)}function c_(e){let t,n,r=e.h;do{if(n=e.We-e.ce-e.ue,0==n&&0==e.ue&&0==e.ce?n=r:-1==n&&n--,e.ue>=r+ye(e)&&(M(e.u,0,e.u,r,r-n),e.qe-=r,e.ue-=r,e.ae-=r,e._e>e.ue&&(e._e=e.ue),Bn(e),n+=r),0==e.o.avail_in)break;if(t=H_(e.o,e.u,e.ue+e.ce,n),e.ce+=t,e.ce+e._e>=I){let t=e.ue-e._e;for(e.be=e.u[t],e.be=l_(e,e.be,e.u[t+1]);e._e&&(e.be=l_(e,e.be,e.u[t+I-1]),e.$[t&e.F]=e.K[e.be],e.K[e.be]=t,t++,e._e--,!(e.ce+e._e<I)););}}while(e.ce<ae&&0!=e.o.avail_in);if(e.m<e.We){let t,n=e.ue+e.ce;e.m<n?(t=e.We-n,t>He&&(t=He),Ve(e.u,n,t),e.m=n+t):e.m<n+He&&(t=n+He-e.m,t>e.We-e.m&&(t=e.We-e.m),Ve(e.u,e.m,t),e.m+=t);}}function kt(e,t,n=8,r=15,i=Ce,f=0){let l=1;if(!e)return -2;if(e.msg="",-1==t&&(t=6),r<0){if(l=0,r<-15)return -2;r=-r;}else r>15&&(l=2,r-=16);if(i<1||i>rt||8!=n||r<8||r>15||t<0||t>9||f<0||f>4||8==r&&1!=l)return -2;8==r&&(r=9);let _=v_(e);return _?(e._=_,_.o=e,_.Y=42,_.P=l,_.B=void 0,_.k=r,_.h=1<<_.k,_.F=_.h-1,_.G=i+7,_.V=1<<_.G,_.L=_.V-1,_.X=(_.G+I-1)/I,_.u=new p(2*_.h),_.$=new g(_.h),_.K=new g(_.V),_.m=0,_.ee=1<<i+6,_.D=new p(_.ee*ot),_.ne=4*_.ee,_.u&&_.$&&_.K&&_.D?(_.Me=_.D.subarray(_.ee),_.A=_.te+_.ee,_.U=3*(_.ee-1),_.ke=t,_.ge=f,_.Ze=n,Pn(e)):(_.Y=666,e.msg=D_(-4),P_(e),-4)):-4}function Z_(e){if(null==e)return true;let t=e._;return !t||t.o!=e||42!=t.Y&&57!=t.Y&&69!=t.Y&&73!=t.Y&&91!=t.Y&&103!=t.Y&&113!=t.Y&&666!=t.Y}function Fn(e){let t;return Z_(e)?-2:(e.total_in=e.total_out=0,e.msg="",e.t=2,t=e._,t.j=0,t.re=t.te,t.P<0&&(t.P=-t.P),t.Y=2==t.P?57:42,e.i=2==t.P?W(0):se(0),t.oe=-2,Et(t),0)}function Zn(e){e.We=2*e.h,It(e),e.xe=Ye[e.ke].Ee,e.me=Ye[e.ke].Ue,e.ve=Ye[e.ke].Ye,e.pe=Ye[e.ke].Pe,e.ue=0,e.ae=0,e.ce=0,e._e=0,e.se=e.he=I-1,e.we=0,e.be=0;}function Pn(e){let t=Fn(e);return 0==t&&Zn(e._),t}function Me(e,t){T(e,t>>8),T(e,255&t);}function q(e){let t,n=e._;gt(n),t=n.j,t>e.avail_out&&(t=e.avail_out),0!=t&&(M(e.next_out,e.next_out_index,n.D,n.re,t),e.next_out_index+=t,n.re+=t,e.total_out+=t,e.avail_out-=t,n.j-=t,0==n.j&&(n.re=n.te));}function Ie(e,t){let n=e._;n.B&&n.B.Be&&(e.i=W(e.i,new p(n.D.buffer,n.te+t,n.j-t),n.j-t));}function Nt(e,t){let n,r=e._;if(Z_(e)||t>5||t<0)return we(e,-2);if(!e.next_out||0!=e.avail_in&&!e.next_in||666==r.Y&&4!=t)return we(e,-2);if(0==e.avail_out)return we(e,-5);if(n=r.oe,r.oe=t,0!=r.j){if(q(e),0==e.avail_out)return r.oe=Q,0}else if(0==e.avail_in&&At(t)<=At(n)&&4!=t)return we(e,-5);if(666==r.Y&&0!=e.avail_in)return we(e,-5);if(42==r.Y&&0==r.P&&(r.Y=113),42==r.Y){let t,n=8+(r.k-8<<4)<<8;if(t=r.ge>=2||r.ke<2?0:r.ke<6?1:6==r.ke?2:3,n|=t<<6,0!=r.ue&&(n|=it),n+=31-n%31,Me(r,n),0!=r.ue&&(Me(r,e.i>>16),Me(r,65535&e.i)),e.i=1,r.Y=113,q(e),0!=r.j)return r.oe=Q,0}if(57==r.Y)if(e.i=W(0),T(r,31),T(r,139),T(r,8),r.B)T(r,(r.B.Fe?1:0)+(r.B.Be?2:0)+(null==r.B.Ge?0:4)+(null==r.B.Ve?0:8)+(null==r.B.Le?0:16)),T(r,255&r.B.Xe),T(r,r.B.Xe>>>8&255),T(r,r.B.Xe>>>16&255),T(r,r.B.Xe>>>24&255),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,255&r.B.$e),null!=r.B.Ge&&(T(r,255&r.B.Ke),T(r,r.B.Ke>>>8&255)),r.B.Be&&(e.i=W(e.i,r.D,r.j)),r.Ce=0,r.Y=69;else if(T(r,0),T(r,0),T(r,0),T(r,0),T(r,0),T(r,9==r.ke?2:r.ge>=2||r.ke<2?4:0),T(r,at),r.Y=113,q(e),0!=r.j)return r.oe=Q,0;if(69==r.Y){if(r.B&&null!=r.B.Ge){let t=r.j,n=(65535&r.B.Ke)-r.Ce;for(;r.j+n>r.ne;){let i=r.ne-r.j;if(M(r.D,r.j,r.B.Ge,r.Ce,i),r.j=r.ne,Ie(e,t),r.Ce+=i,q(e),0!=r.j)return r.oe=Q,0;t=0,n-=i;}M(r.D,r.j,r.B.Ge,r.Ce,n),r.j+=n,Ie(e,t),r.Ce=0;}r.Y=73;}if(73==r.Y){if(r.B&&r.B.Ve&&r.B.Ve.length){let t,n=r.j;do{if(r.j==r.ne){if(Ie(e,n),q(e),0!=r.j)return r.oe=Q,0;n=0;}t=r.B.Ve[r.Ce++],T(r,t);}while(0!=t);Ie(e,n),r.Ce=0;}r.Y=91;}if(91==r.Y){if(r.B&&r.B.Le&&r.B.Le.length){let t,n=r.j;do{if(r.j==r.ne){if(Ie(e,n),q(e),0!=r.j)return r.oe=Q,0;n=0;}t=r.B.Le[r.Ce++],T(r,t);}while(0!=t);Ie(e,n);}r.Y=103;}if(103==r.Y){if(r.B&&r.B.Be){if(r.j+2>r.ne&&(q(e),0!=r.j))return r.oe=Q,0;T(r,255&e.i),T(r,e.i>>>8&255),e.i=W(0);}if(r.Y=113,q(e),0!=r.j)return r.oe=Q,0}if(0!=e.avail_in||0!=r.ce||0!=t&&666!=r.Y){let n=0==r.ke?Ot(r,t):2==r.ge?Yn(r,t):3==r.ge?Mn(r,t):Ye[r.ke].Je(r,t);if((2==n||3==n)&&(r.Y=666),0==n||2==n)return 0==e.avail_out&&(r.oe=Q),0;if(1==n&&(1==t?Tt(r):5!=t&&(Pe(r,null,0,0),3==t&&(It(r),0==r.ce&&(r.ue=0,r.ae=0,r._e=0))),q(e),0==e.avail_out))return r.oe=Q,0}return 4!=t?0:r.P<=0?1:(2==r.P?(T(r,255&e.i),T(r,e.i>>>8&255),T(r,e.i>>>16&255),T(r,e.i>>>24&255),T(r,255&e.total_in),T(r,e.total_in>>>8&255),T(r,e.total_in>>>16&255),T(r,e.total_in>>>24&255)):(Me(r,e.i>>>16&65535),Me(r,65535&e.i)),q(e),r.P>0&&(r.P=-r.P),0!=r.j?0:1)}function P_(e){if(Z_(e))return -2;let t=e._,n=t.Y;return t.u=Z,t.$=qe,t.K=qe,t.D=Z,t.Me=Z,t.Te=new R(0),t.ye=Z,t.Ie=qe,t.H.length=0,t.J.length=0,t.De.length=0,t.B=void 0,t.te=0,t.re=0,t.A=0,113==n?-3:0}function Rt(e,t){let n,r,i=e.pe,f=e.ue,l=e.he,_=e.ve,o=e.ue>ye(e)?e.ue-ye(e):0,a=e.$,u=e.F,c=e.u,s=e.ce,h=ee<s?ee:s,d=c[f],w=c[f+1],b=c[f+l-1],k=c[f+l];l>=e.me&&(i>>=2),_>s&&(_=s);do{if(n=t,c[n+l]!=k||c[n+l-1]!=b||c[n]!=d||c[n+1]!=w)continue;let i=2;for(;i<h&&c[f+i]==c[n+i];)i++;if(r=i,r>l){if(e.qe=t,l=r,r>=_)break;b=c[f+l-1],k=c[f+l];}}while((t=a[t&u])>o&&0!=--i);return l<=s?l:s}function zt(e,t){wt(e,e.u,e.ue-e.ae,t,e.ae),e.ae=e.ue,q(e.o);}function j(e,t){return zt(e,t?1:0),0==e.o.avail_out?t?2:0:null}var Dt=65535;function ke(e,t){return e<t?e:t}function Ot(e,t){let n,r,i,f=ke(e.ne-5,e.h),l=0,_=e.o.avail_in;do{if(n=Dt,i=e.T+42>>3,e.o.avail_out<i||(i=e.o.avail_out-i,r=e.ue-e.ae,n>r+e.o.avail_in&&(n=r+e.o.avail_in),n>i&&(n=i),n<f&&(0==n&&4!=t||0==t||n!=r+e.o.avail_in)))break;l=4==t&&n==r+e.o.avail_in?1:0,Pe(e,null,0,l),e.D[e.j-4]=n,e.D[e.j-3]=n>>8,e.D[e.j-2]=~n,e.D[e.j-1]=~n>>8,q(e.o),r&&(r>n&&(r=n),M(e.o.next_out,e.o.next_out_index,e.u,e.ae,r),e.o.next_out_index+=r,e.o.avail_out-=r,e.o.total_out+=r,e.ae+=r,n-=r),n&&(H_(e.o,e.o.next_out,e.o.next_out_index,n),e.o.next_out_index+=n,e.o.avail_out-=n,e.o.total_out+=n);}while(0==l);if(_-=e.o.avail_in,_){if(_>=e.h){e.le=2;let t=e.o.next_in_index-e.h;M(e.u,0,e.o.next_in,t,e.h),e.ue=e.h,e._e=e.ue;}else e.We-e.ue<=_&&(e.ue-=e.h,M(e.u,0,e.u,e.h,e.ue),e.le<2&&e.le++,e._e>e.ue&&(e._e=e.ue)),M(e.u,e.ue,e.o.next_in,e.o.next_in_index-_,_),e.ue+=_,e._e+=ke(_,e.h-e._e);e.ae=e.ue;}return e.m<e.ue&&(e.m=e.ue),l?(e.ze=8,3):0!=t&&4!=t&&0==e.o.avail_in&&e.ue==e.ae?1:(i=e.We-e.ue,e.o.avail_in>i&&e.ae>=e.h&&(e.ae-=e.h,e.ue-=e.h,M(e.u,0,e.u,e.h,e.ue),e.le<2&&e.le++,i+=e.h,e._e>e.ue&&(e._e=e.ue)),i>e.o.avail_in&&(i=e.o.avail_in),i&&(H_(e.o,e.u,e.ue,i),e.ue+=i,e._e+=ke(i,e.h-e._e)),e.m<e.ue&&(e.m=e.ue),i=e.T+42>>3,i=ke(e.ne-i,Dt),f=ke(i,e.h),r=e.ue-e.ae,(r>=f||(r||4==t)&&0!=t&&0==e.o.avail_in&&r<=i)&&(n=ke(r,i),l=4==t&&0==e.o.avail_in&&n==r?1:0,Pe(e,e.u,n,l,e.ae),e.ae+=n,q(e.o)),l&&(e.ze=8),l?2:0)}function U_(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ue)),0!=n&&e.ue-n<=ye(e)&&(e.se=Rt(e,n)),e.se>=I)if(e.ue,e.qe,e.se,r=e_(e,e.ue-e.qe,e.se-I),e.ce-=e.se,e.se<=e.xe&&e.ce>=I){e.se--;do{e.ue++,n=u_(e,e.ue);}while(0!=--e.se);e.ue++;}else e.ue+=e.se,e.se=0,e.be=e.u[e.ue],e.be=l_(e,e.be,e.u[e.ue+1]);else r=De(e,e.u[e.ue]),e.ce--,e.ue++;if(r){let t=j(e,false);if(null!=t)return t}}if(e._e=e.ue<I-1?e.ue:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Ne(e,t){let n,r=false;for(;;){if(e.ce<ae){if(c_(e),e.ce<ae&&0==t)return 0;if(0==e.ce)break}if(n=0,e.ce>=I&&(n=u_(e,e.ue)),e.he=e.se,e.de=e.qe,e.se=I-1,0!=n&&e.he<e.xe&&e.ue-n<=ye(e)&&(e.se=Rt(e,n),e.se<=5&&(1==e.ge||e.se==I&&e.ue-e.qe>nt)&&(e.se=I-1)),e.he>=I&&e.se<=e.he){let t=e.ue+e.ce-I;e.ue,e.de,e.he,r=e_(e,e.ue-1-e.de,e.he-I),e.ce-=e.he-1,e.he-=2;do{++e.ue<=t&&(n=u_(e,e.ue));}while(0!=--e.he);if(e.we=0,e.se=I-1,e.ue++,r){let t=j(e,false);if(null!=t)return t}}else if(e.we){if(r=De(e,e.u[e.ue-1]),r&&zt(e,0),e.ue++,e.ce--,0==e.o.avail_out)return 0}else e.we=1,e.ue++,e.ce--;}if(e.we&&(r=De(e,e.u[e.ue-1]),e.we=0),e._e=e.ue<I-1?e.ue:I-1,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Mn(e,t){let n,r,i,f;for(;;){if(e.ce<=ee){if(c_(e),e.ce<=ee&&0==t)return 0;if(0==e.ce)break}if(e.se=0,e.ce>=I&&e.ue>0&&(i=e.ue-1,r=e.u[i],r==++i&&r==++i&&r==++i)){f=e.ue+ee;do{}while(r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&r==++i&&i<f);e.se=ee-(f-i),e.se>e.ce&&(e.se=e.ce);}if(e.se>=I?(e.ue,e.ue,e.se,n=e_(e,1,e.se-I),e.ce-=e.se,e.ue+=e.se,e.se=0):(n=De(e,e.u[e.ue]),e.ce--,e.ue++),n){let t=j(e,false);if(null!=t)return t}}if(e._e=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}function Yn(e,t){let n=false;for(;;){if(0==e.ce&&(c_(e),0==e.ce)){if(0==t)return 0;break}if(e.se=0,n=De(e,e.u[e.ue]),e.ce--,e.ue++,n){let t=j(e,false);if(null!=t)return t}}if(e._e=0,4==t){let t=j(e,true);return null!=t?t:3}if(e.N){let t=j(e,false);if(null!=t)return t}return 1}var ue=852,d_=592,m_=594,Lt=Ee.map(e=>e+1),Ct=ge.subarray(0,-1).map(e=>e+3),Xn=[16,1,73,1,200,1],Wn=[144,1,72,1,78,1],Ut=Se.map(qt),Ht=Se.map(Vt);Ut.push(64,2),Ht.push(142,2);var Bt=de.slice(0,-2).map(qt),Ft=de.slice(0,-2).map(Vt);Bt.push(...Xn),Ft.push(...Wn);var Zt=new g([...Ct,258,0,0]),Pt=new g([...Ct,3,0,0]),Mt=te(Bt),Yt=te(Ft),Xt=new g([...Lt,0,0]),Wt=new g([...Lt,32769,49153]),Gt=te(Ut),Kt=te(Ht);function qt(e,t){return t%2?e:e+16}function Vt(e,t){return t%2?e:e+128}function $t(e,t){let n,r=e._,i=e.next_in_index,f=e.next_out_index,l=e.next_in,_=e.next_out,o=r.u,a=r.p>>>0,u=r.T>>>0,c=r.et,s=r.tt,h=(1<<r.nt)-1,d=(1<<r.rt)-1,w=r.h>>>0,b=r.m>>>0,k=r.v>>>0,g=r.it,m=f-(t-e.avail_out),v=f+(e.avail_out-257),p=i+(e.avail_in-5),x=0,T=0,y=0,I=0;e:do{for(;u<15;){if(!(i<l.length))break e;a+=l[i++]<<u,u+=8;}n=c[a&h];t:for(;;){if(y=n>>>16&255,a>>>=y,u-=y,y=n>>>24,0==y){_[f++]=65535&n;break}if(16&y){if(x=65535&n,y&=15,y){for(;u<y;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}x+=a&(1<<y)-1,a>>>=y,u-=y;}for(;u<15;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}n=s[a&d];n:for(;;){if(y=n>>>16&255,a>>>=y,u-=y,y=n>>>24,16&y){if(T=65535&n,y&=15,y){for(;u<y;){if(!(i<l.length)){r.ft=16200;break e}a+=l[i++]<<u,u+=8;}T+=a&(1<<y)-1,a>>>=y,u-=y;}let t=x,c=f-m;if(T>c){let n=T-c;if(n>b&&g){e.msg="invalid distance too far back",r.ft=16209;break e}if(0==k){if(I=w-n,!(n<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<n;++e)_[f++]=o[I++];t-=n,I=f-T;}else if(k<n){I=w+k-n;let e=n-k;if(!(e<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let t=0;t<e;++t)_[f++]=o[I++];if(t-=e,I=0,!(k<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<k;++e)_[f++]=o[I++];t-=k,I=f-T;}else {if(I=k-n,!(n<t)){for(let e=0;e<t;++e)_[f++]=o[I++];continue e}for(let e=0;e<n;++e)_[f++]=o[I++];t-=n,I=f-T;}for(;t>2;)_[f++]=_[I++],_[f++]=_[I++],_[f++]=_[I++],t-=3;t&&(_[f++]=_[I++],t>1&&(_[f++]=_[I++]));}else {for(I=f-T;t>2;)_[f++]=_[I++],_[f++]=_[I++],_[f++]=_[I++],t-=3;t&&(_[f++]=_[I++],t>1&&(_[f++]=_[I++]));}break}if(64&y){e.msg="invalid distance code",r.ft=16209;break e}n=s[(65535&n)+(a&(1<<y)-1)];continue n}break}if(64&y){if(32&y){r.ft=16191;break e}e.msg="invalid literal/length code",r.ft=16209;break e}n=c[(65535&n)+(a&(1<<y)-1)];continue t}}while(i<p&&f<v);let M=u>>3;i-=M,u-=M<<3,a&=(1<<u)-1,e.next_in_index=i,e.next_out_index=f,e.avail_in=i<p?p-i+5:5-(i-p),e.avail_out=f<v?v-f+257:257-(f-v),r.p=a>>>0,r.T=u>>>0;}var Gn=new R(0);function M_(e,t){let n=Gn,r=t?ue+m_:ue+d_;return {...$e(e,0),o:e,ft:16180,lt:false,P:0,_t:false,ot:0,ut:0,ct:0,st:0,u:Z,ht:0,dt:0,Ge:0,et:n,tt:n,nt:0,rt:0,wt:0,bt:0,kt:0,gt:0,vt:n,xt:new g(320),Tt:new g(288),yt:new R(r),It:0,it:true,Mt:0,zt:0,Ct:t}}function We(e,t,n){return e<<24|t<<16|n}function b_(e=0,t=0,n=0){return We(e,t,n)}function s_(e=1){return We(64,e,0)}function Jt(e=0){return We(96,e,0)}function Y_(e){return ((255&e)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>24&255)>>>0}var Oe=15,qn={Ct:false,Zt:Zt,Wt:Mt,qt:Xt,Ot:Gt,St:20,Dt:257,jt:0,At:d_,Qt:false,Nt:true},Vn={Ct:true,Zt:Pt,Wt:Yt,qt:Wt,Ot:Kt,St:19,Dt:256,jt:-1,At:m_,Qt:true,Nt:false};function Le(e,t,n,r,i,f,l,_){let o,a,u,c,s,h,d,w,b,k,m,v,p,x,T,y,I,M,z,C=new g(Oe+1),Z=new g(Oe+1),W=_?Vn:qn;for(o=0;o<=Oe;o++)C[o]=0;for(a=0;a<n;a++)C[t[a]]++;for(s=i.Rt,c=Oe;c>=1&&0==C[c];c--);if(s>c&&(s=c),0==c)return W.Nt?(T=s_(1),r.Rt[0]=T,r.Rt[1]=T,i.Rt=1,0):-1;for(u=1;u<c&&0==C[u];u++);for(s<u&&(s=u),w=1,o=1;o<=Oe;o++)if(w<<=1,w-=C[o],w<0)return -1;if(w>0&&(0==e||1!=c))return -1;for(Z[1]=0,o=1;o<Oe;o++)Z[o+1]=Z[o]+C[o];for(a=0;a<n;a++)0!=t[a]&&(f[Z[t[a]]++]=a);switch(e){case 0:I=M=f,z=W.St;break;case 1:I=W.Zt,M=W.Wt,z=W.Dt;break;default:I=W.qt,M=W.Ot,z=W.jt;}if(k=0,a=0,o=u,y=l.Rt,h=s,d=0,p=-1,b=1<<s,x=b-1,1==e&&(W.Qt?b>=ue:b>ue)||2==e&&(W.Qt?b>=W.At:b>W.At))return 1;for(;;){T=jn(f,a,o,d,e,I,M,z,W.Ct),m=1<<o-d,v=1<<h,u=v;do{v-=m;let e=(k>>d)+v;r.Rt[y+e]=T;}while(0!=v);for(m=1<<o-1;k&m;)m>>=1;if(0!=m?(k&=m-1,k+=m):k=0,a++,0==--C[o]){if(o==c)break;o=t[f[a]];}if(o>s&&(k&x)!=p){for(0==d&&(d=s),y+=1<<h,h=o-d,w=1<<h;h+d<c&&(w-=C[h+d],!(w<=0));)h++,w<<=1;if(b+=1<<h,1==e&&(W.Qt?b>=ue:b>ue)||2==e&&(W.Qt?b>=W.At:b>W.At))return 1;p=k&x,r.Rt[l.Rt+p]=We(h,s,y-l.Rt);}}if(0!=k)for(T=s_(o-d);0!=k;){for(0!=d&&(k&x)!=p&&(d=0,o=s,y=l.Rt,h=s,T=s_(o)),r.Rt[y+(k>>d)]=T,m=1<<o-1;k&m;)m>>=1;0!=m?(k&=m-1,k+=m):k=0;}return l.Rt+=b,i.Rt=s,0}function jn(e,t,n,r,i,f,l,_,o){let a;if(o?e[t]<_:e[t]+1<_)a=b_(0,n-r,e[t]);else if(o?e[t]>_:e[t]>=_)if(o&&1==i){let i=e[t]-257;a=b_(l[i],n-r,f[i]);}else {let i=o?e[t]:e[t]-_;a=b_(l[i],n-r,f[i]);}else a=Jt(n-r);return a}var p_=new R(0),er={Ht:true,Jt:new R(544),Ut:p_,Et:p_},_r={Ht:true,Jt:new R(544),Ut:p_,Et:p_};function Qt(){let e=je();return e._=M_(e,false),e}function Ge(e){let t;return !(e&&(t=e._,!(!t||t.o!=e||t.Ct&&(t.ft<16191||t.ft>16209)||!t.Ct&&(t.ft<16180||t.ft>16211))))}function tr(e){let t;return Ge(e)?-2:(t=e._,e.total_in=e.total_out=t.st=0,e.msg="",t.P&&(e.i=1&t.P),t.ft=t.Ct?16191:16180,t.lt=false,t._t=false,t.ot=-1,t.ut=t.Ct?65536:32768,delete t.B,t.p=0,t.T=0,t.et=t.yt,t.tt=t.yt,t.vt=t.yt,t.it=true,t.Mt=-1,0)}function nr(e){let t;return Ge(e)?-2:(t=e._,t.h=0,t.m=0,t.v=0,tr(e))}function rr(e,t){let n,r;if(Ge(e))return -2;if(r=e._,t<0){if(t<-16)return -2;n=0,r.Ct=-16==t,t=-t;}else n=5+(t>>4),r.Ct=false,t<48&&(t&=15);let i=r.Ct?16:15;return t&&(t<8||t>i)?-2:(r.u.length>0&&r.k!=t&&(r.u=Z),r.P=n,r.k=t,nr(e))}function en(e,t){let n,r;if(!e)return -2;e.msg="";let i=-16==t;return r=M_(e,i),e._=r,r.o=e,r.ft=i?16191:16180,n=rr(e,t),n}function ar(e){let t=e.Ct?_r:er,n={Rt:0};if(t.Ht){let r,i,f;for(r=0;r<144;)e.xt[r++]=8;for(;r<256;)e.xt[r++]=9;for(;r<280;)e.xt[r++]=7;for(;r<288;)e.xt[r++]=8;t.Jt.fill(0),f=t.Jt,t.Ut=f,i=9;let l={Rt:f},_={Rt:i},o={Rt:0};for(Le(1,e.xt,288,l,_,e.Tt,o,e.Ct),f=l.Rt,i=_.Rt,e.It=o.Rt,r=0;r<32;)e.xt[r++]=5;i=5;let a=o.Rt,u={Rt:f},c={Rt:i};n.Rt=a,Le(2,e.xt,32,u,c,e.Tt,n,e.Ct),t.Et=f.slice(a),t.Ht=false;}e.et=t.Ut,e.nt=9,e.tt=t.Et,e.rt=5,e.It=n.Rt;}function ir(e,t,n){let r=e._;if(!(r.u&&0!=r.u.length||(r.u=new p(1<<r.k),r.u)))return 1;if(0==r.h&&(r.h=1<<r.k,r.v=0,r.m=0),n>=r.h)M(r.u,0,t,t.length-r.h,r.h),r.v=0,r.m=r.h;else {let e=r.h-r.v;e>n&&(e=n),M(r.u,r.v,t,t.length-n,e),(n-=e)?(M(r.u,0,t,t.length-n,n),r.v=n,r.m=r.h):(r.v+=e,r.v==r.h&&(r.v=0),r.m<r.h&&(r.m+=e));}return 0}var S_=class extends z{constructor(){super("Need more input");}};function _n(e,t){let n,r,i,f,l,_,o,a,u,c,s,h,d,w,b,k,g,m=new p(4);if(Ge(e)||!e.next_out||!e.next_in&&0!=e.avail_in)return -2;_=0,a=0,o=0,u=0,r=Z,i=0,f=Z,l=0,n=e._,16191==n.ft&&(n.ft=16192),I(),c=_,s=o,g=0;try{for(;;)switch(n.ft){case 16180:if(0==n.P){n.ft=16192;break}if(O(16),2&n.P&&35615==a){0==n.k&&(n.k=15),n.ct=W(0),n.ct=T(n.ct,a),C(),n.ft=16181;break}if(n.B&&(n.B.Yt=-1),!(1&n.P)||((S(8)<<8)+(a>>8))%31){e.msg="incorrect header check",n.ft=16209;break}if(8!=S(4)){e.msg="unknown compression method",n.ft=16209;break}if(D(4),k=S(4)+8,0==n.k&&(n.k=k),k>15||k>n.k){e.msg="invalid window size",n.ft=16209;break}n.ut=1<<k,n.ot=0,e.i=n.ct=se(0),n.ft=512&a?16189:16191,C();break;case 16181:if(O(16),n.ot=a,8!=(255&n.ot)){e.msg="unknown compression method",n.ft=16209;break}if(57344&n.ot){e.msg="unknown header flags set",n.ft=16209;break}n.B&&(n.B.Fe=a>>8&1),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C(),n.ft=16182;case 16182:O(32),n.B&&(n.B.Xe=a),512&n.ot&&4&n.P&&(n.ct=y(n.ct,a)),C(),n.ft=16183;case 16183:O(16),n.B&&(n.B.Pt=255&a,n.B.$e=a>>8),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C(),n.ft=16184;case 16184:1024&n.ot?(O(16),n.ht=a,n.B&&(n.B.Ke=a),512&n.ot&&4&n.P&&(n.ct=T(n.ct,a)),C()):n.B&&(n.B.Ge=Z),n.ft=16185;case 16185:if(1024&n.ot&&(h=n.ht,h>_&&(h=_),h&&(n.B&&n.B.Ge&&n.B.Bt&&(k=n.B.Ke-n.ht)<n.B.Bt&&M(n.B.Ge,k,r,i,h),512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,n.ht-=h),n.ht))return v();n.ht=0,n.ft=16186;case 16186:if(2048&n.ot){if(0==_)return v();h=0;do{k=r[i+h++],n.B&&n.B.Ft&&n.ht<n.B.Ft&&(n.B.Ve[n.ht++]=k);}while(k&&h<_);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,k)return v()}else n.B&&(n.B.Ve=Z);n.ht=0,n.ft=16187;case 16187:if(4096&n.ot){if(0==_)return v();h=0;do{k=r[i+h++],n.B&&n.B.Gt&&n.ht<n.B.Gt&&(n.B.Le[n.ht++]=k);}while(k&&h<_);if(512&n.ot&&4&n.P&&(n.ct=W(n.ct,r.subarray(i,i+h),h)),_-=h,i+=h,k)return v()}else n.B&&(n.B.Le=Z);n.ft=16188;case 16188:if(512&n.ot){if(O(16),4&n.P&&a!=(65535&n.ct)){e.msg="header crc mismatch",n.ft=16209;break}C();}n.B&&(n.B.Be=n.ot>>9&1,n.B.Yt=1),e.i=n.ct=W(0),n.ft=16191;break;case 16189:O(32),e.i=n.ct=Y_(a),C(),n.ft=16190;case 16190:if(!n._t)return z(),2;e.i=n.ct=se(0),n.ft=16191;case 16191:if(5==t||6==t)return v();case 16192:if(n.lt){j(),n.ft=16206;break}switch(O(3),n.lt=!!S(1),D(1),S(2)){case 0:n.ft=16193;break;case 1:if(ar(n),n.ft=16199,6==t)return D(2),v();break;case 2:n.ft=16196;break;case 3:e.msg="invalid block type",n.ft=16209;}D(2);break;case 16193:if(j(),O(32),(65535&a)!=(a>>>16^65535)){e.msg="invalid stored block lengths",n.ft=16209;break}if(n.ht=65535&a,C(),n.ft=16194,6==t)return v();case 16194:n.ft=16195;case 16195:if(h=n.ht,h){if(h>_&&(h=_),h>o&&(h=o),0==h)return v();M(f,l,r,i,h),_-=h,i+=h,o-=h,l+=h,n.ht-=h;break}n.ft=16191;break;case 16196:if(O(14),n.bt=S(5)+257,D(5),n.kt=S(5)+1,D(5),n.wt=S(4)+4,D(4),n.bt>286||!n.Ct&&n.kt>30){e.msg=n.Ct?"too many length":"too many length or distance symbols",n.ft=16209;break}n.gt=0,n.ft=16197;case 16197:for(;n.gt<n.wt;)O(3),n.xt[pe[n.gt++]]=S(3),D(3);for(;n.gt<19;)n.xt[pe[n.gt++]]=0;n.vt=n.yt,n.et=n.tt=n.vt,n.nt=7;let c={Rt:n.vt},m={Rt:n.nt},p={Rt:0};if(g=Le(0,n.xt,19,c,m,n.Tt,p,n.Ct),n.vt=c.Rt,n.nt=m.Rt,g){e.msg="invalid code lengths set",n.ft=16209;break}n.gt=0,n.ft=16198;case 16198:for(;n.gt<n.bt+n.kt;){for(;w=n.et[S(n.nt)],!((w>>>16&255)<=u);)q();if((65535&w)<16)D(w>>>16&255),n.xt[n.gt++]=65535&w;else {if(16==(65535&w)){if(O(2+(w>>>16&255)),D(w>>>16&255),0==n.gt){e.msg="invalid bit length repeat",n.ft=16209;break}k=n.xt[n.gt-1],h=3+S(2),D(2);}else 17==(65535&w)?(O(3+(w>>>16&255)),D(w>>>16&255),k=0,h=3+S(3),D(3)):(O(7+(w>>>16&255)),D(w>>>16&255),k=0,h=11+S(7),D(7));if(n.gt+h>n.bt+n.kt){e.msg="invalid bit length repeat",n.ft=16209;break}for(;h--;)n.xt[n.gt++]=k;}}if(16209==n.ft)break;if(0==n.xt[256]){e.msg="invalid code -- missing end-of-block",n.ft=16209;break}n.vt=n.yt,n.nt=9;let A={Rt:n.vt},Q={Rt:n.nt},N={Rt:0};g=Le(1,n.xt,n.bt,A,Q,n.Tt,N,n.Ct),n.vt=A.Rt,n.nt=Q.Rt;let R=N.Rt;if(n.et=n.vt.slice(0,R),g){e.msg="invalid literal/lengths set",n.ft=16209;break}n.rt=6;let H=n.xt.subarray(n.bt,n.bt+n.kt),J={Rt:n.vt},U={Rt:n.rt},E={Rt:R};if(g=Le(2,H,n.kt,J,U,n.Tt,E,n.Ct),n.vt=J.Rt,n.rt=U.Rt,n.tt=n.vt.slice(R),g){e.msg="invalid distances set",n.ft=16209;break}if(n.ft=16199,6==t)return v();case 16199:n.ft=16200;case 16200:if(!n.Ct&&_>=6&&o>=258){z(),$t(e,s),I(),16191==n.ft&&(n.Mt=-1);break}for(n.Mt=0;w=n.et[S(n.nt)],!((w>>>16&255)<=u);)q();if(w>>>24&&!(w>>>24&240)){for(b=w;w=n.et[(65535&b)+(S((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=u);)q();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,n.ht=65535&w,!(w>>>24)){n.ft=16205;break}if(w>>>24&32){n.Mt=-1,n.ft=16191;break}if(w>>>24&64){e.msg="invalid literal/length code",n.ft=16209;break}n.Ge=w>>>24&(n.Ct?31:15),n.ft=16201;case 16201:n.Ge&&(O(n.Ge),n.ht+=S(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.zt=n.ht,n.ft=16202;case 16202:for(;w=n.tt[S(n.rt)],!((w>>>16&255)<=u);)q();if(!(w>>>24&240)){for(b=w;w=n.tt[(65535&b)+(S((b>>>16&255)+(b>>>24))>>(b>>>16&255))],!((b>>>16&255)+(w>>>16&255)<=u);)q();D(b>>>16&255),n.Mt+=b>>>16&255;}if(D(w>>>16&255),n.Mt+=w>>>16&255,w>>>24&64){e.msg="invalid distance code",n.ft=16209;break}n.dt=65535&w,n.Ge=w>>>24&15,n.ft=16203;case 16203:n.Ge&&(O(n.Ge),n.dt+=S(n.Ge),D(n.Ge),n.Mt+=n.Ge),n.ft=16204;case 16204:if(0==o)return v();if(h=s-o,n.dt>h){if(h=n.dt-h,h>n.m&&n.it){e.msg="invalid distance too far back",n.ft=16209;break}h>n.v?(h-=n.v,d=n.h-h):d=n.v-h,h>n.ht&&(h=n.ht),h>o&&(h=o);for(let e=0;e<h;++e)f[l]=255&n.u[d],++l,++d;}else {d=l-n.dt,h=n.ht,h>o&&(h=o);for(let e=0;e<h;++e)f[l]=f[d],++l,++d;}h>o&&(h=o),o-=h,n.ht-=h,0==n.ht&&(n.ft=16200);break;case 16205:if(0==o)return v();f[l++]=n.ht,o--,n.ft=16200;break;case 16206:if(n.P){if(O(32),s-=o,e.total_out+=s,n.st+=s,4&n.P&&s){let t=f.subarray(l-s,l);e.i=n.ct=x(n.ct,t,s);}if(s=o,4&n.P&&(n.ot?a:Y_(a)>>>0)!=n.ct){e.msg="incorrect data check",n.ft=16209;break}C();}n.ft=16207;case 16207:if(n.P&&n.ot){if(O(32),4&n.P&&a!=(4294967295&n.st)){e.msg="incorrect length check",n.ft=16209;break}C();}n.ft=16208;case 16208:return g=1,v();case 16209:return g=-3,v();case 16210:return -4;default:return -2}}catch(e){if(e instanceof S_)return v();throw e}function v(){if(z(),n.h||s!=e.avail_out&&n.ft<16209&&((n.Ct?n.ft<16208:n.ft<16206)||4!=t)){let t=s-e.avail_out;if(ir(e,e.next_out.subarray(e.next_out_index-t,e.next_out_index),t))return n.ft=16210,-4}return c-=e.avail_in,s-=e.avail_out,e.total_in+=c,e.total_out+=s,n.st+=s,4&n.P&&s&&(e.i=n.ct=x(n.ct,e.next_out.subarray(e.next_out_index-s,e.next_out_index),s)),e.t=n.T+(n.lt?64:0)+(16191==n.ft?128:0)+(16199==n.ft||16194==n.ft?256:0),(0==c&&0==s&&0==g||4==t&&0==g)&&(g=-5),g}function x(e,t,r){return n.ot?W(e,t,r):se(e,t,r)}function T(e,t){return m[0]=255&t,m[1]=t>>>8&255,W(e,m,2)>>>0}function y(e,t){return m[0]=255&t,m[1]=t>>>8&255,m[2]=t>>>16&255,m[3]=t>>>24&255,W(e,m,4)>>>0}function I(){f=e.next_out,l=e.next_out_index,o=e.avail_out,r=e.next_in,i=e.next_in_index,_=e.avail_in,a=n.p,u=n.T;}function z(){e.next_out=f,e.next_out_index=l,e.avail_out=o,e.next_in=r,e.next_in_index=i,e.avail_in=_,n.p=a,n.T=u;}function C(){a=0,u=0;}function q(){if(0==_)throw new S_;_--,a+=(255&r[i])<<u,i++,a>>>=0,u+=8;}function O(e){for(;u<e;)q();}function S(e){return a&(1<<e)-1}function D(e){a>>>=e,u-=e;}function j(){a>>>=7&u,u-=7&u;}}function tn(e){return Ge(e)?-2:0}var X_=65536,or=32768,nn="trailing data after the end of the stream",W_=class{constructor(e=16,t=X_){this.Vt=[],this.Lt=e;for(let n=0;n<O.min(e,4);n++)this.Vt.push(new p(t));}acquire(e=X_){for(let t=this.Vt.length-1;t>=0;t--){let n=this.Vt[t];if(n.length>=e)return this.Vt.splice(t,1),n}return new p(e)}release(e){this.Vt.length<this.Lt&&this.Vt.push(e);}};function rn(e){let t=new W_(32,X_),n=null;function r(){let t=e.Xt(),n=e.$t(t);if(0!=n&&0!=n)throw new z("init failed: "+n);return {o:t}}function i(e){try{t.release(e);}catch{}}return new H({start(){},transform(f,l){n||(n=r());let _=n.o;if(n.Kt){if(f.length)throw new z(nn);return}let o=0;for(;o<f.length;){let r=O.min(f.length-o,or),a=f.subarray(o,o+r);for(_.next_in=a,_.next_in_index=0,_.avail_in=a.length;_.avail_in>0;){let r=t.acquire(),f=false;try{_.next_out=r,_.next_out_index=0,_.avail_out=r.length;let i=e.en(_,0),o=r.length-_.avail_out;if(o>0){let e=!1,n={tn:r.subarray(0,o),release:()=>{e||(e=!0,t.release(r));}};f=!0,l.enqueue(n);}if(1==i){n.Kt=!0;break}if(0!=i)throw new z("process error: "+i)}finally{f||i(r);}}if(n.Kt){if(_.avail_in>0||o+r<f.length)throw new z(nn);break}o+=r;}},flush(f){if(n&&n.Kt)return;n||(n=r());let l=n.o;for(;;){let n=t.acquire(),r=false;try{l.next_out=n,l.next_out_index=0,l.avail_out=n.length;let i=e.en(l,4),_=n.length-l.avail_out;if(_>0){let e=!1,i={tn:n.subarray(0,_),release:()=>{e||(e=!0,t.release(n));}};r=!0,f.enqueue(i);}if(1==i)break;if(0!=i)throw new z("finalization error: "+i)}finally{r||i(n);}}let _=e.nn(l);if(0!=_&&0!=_)throw new z("end failed: "+_)}})}function an(){return new H({start(){},transform(e,t){try{t.enqueue(e.tn.slice(0));}finally{e.release();}},flush(){}})}var fr=new Map([["deflate",15],["gzip",31],["deflate-raw",-15]]),lr=new Map([["deflate",15],["gzip",31],["deflate-raw",-15],["deflate64-raw",-16]]);function on(e,t){let n=e.get(t);if(void 0===n)throw new TypeError(`Unsupported format: ${t}`);return n}function ur(e="deflate",t){let n=on(fr,e),r=t&&"number"==typeof t.level?t.level:-1;return rn({Xt:()=>vt(),$t:e=>kt(e,r,8,n,8,0),en:Nt,nn:P_})}function cr(e="deflate"){let t=on(lr,e);return rn({Xt:()=>Qt(),$t:e=>en(e,t),en:_n,nn:tn})}var E_=class{constructor(e="deflate",t){let n=ur(e,t);this.writable=n.writable,this.readable=n.readable.pipeThrough(an());}},g_=class{constructor(e="deflate"){let t=cr(e);this.writable=t.writable,this.readable=t.readable.pipeThrough(an());}};
|
|
9385
9463
|
|
|
9386
9464
|
/*
|
|
9387
9465
|
Copyright (c) 2025 Gildas Lormeau. All rights reserved.
|
|
@@ -9463,7 +9541,12 @@ const DUPLICATES_VALUES = new Set([DUPLICATES_THROW, DUPLICATES_KEEP_FIRST, DUPL
|
|
|
9463
9541
|
const ERR_INVALID_PASS_THROUGH = "Invalid passThrough option (use readerOptions.passThrough or set uncompressedSize for each entry)";
|
|
9464
9542
|
const ERR_INVALID_READER_OPTIONS = "Invalid readerOptions (must be an object)";
|
|
9465
9543
|
const ERR_UNSUPPORTED_PASS_THROUGH_VALUE = "The 'compressed' passThrough option is only supported by Entry#getData() and ZipWriter#add()";
|
|
9544
|
+
const ERR_INVALID_PASSWORDS = "Invalid passwords option (must be an array of strings)";
|
|
9545
|
+
const ERR_INVALID_REQUEST_PASSWORD = "Invalid requestPassword option (must be a function returning a string or undefined)";
|
|
9466
9546
|
const ERR_ABORT_EXPORT = "zipjs-abort-export";
|
|
9547
|
+
const ABORT_ERROR_NAME = "AbortError";
|
|
9548
|
+
const EMPTY_RAW_PASSWORD = new Uint8Array(0);
|
|
9549
|
+
const FALSE_ACCEPT_ERRORS = new Set([ERR_INVALID_CRC32, ERR_INVALID_UNCOMPRESSED_SIZE, ERR_INVALID_COMPRESSED_DATA]);
|
|
9467
9550
|
|
|
9468
9551
|
class ZipEntry {
|
|
9469
9552
|
|
|
@@ -9836,8 +9919,10 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
9836
9919
|
zipReader = new ZipReader(reader, options);
|
|
9837
9920
|
}
|
|
9838
9921
|
checkPassThroughValue(options.passThrough);
|
|
9922
|
+
checkPasswordCandidatesOptions(options);
|
|
9839
9923
|
const duplicates = checkDuplicatesOption(options.duplicates);
|
|
9840
9924
|
const importedEntries = [];
|
|
9925
|
+
const passwordState = { known: [] };
|
|
9841
9926
|
const entries = await zipReader.getEntries(options);
|
|
9842
9927
|
for (const entry of entries) {
|
|
9843
9928
|
let parent = this;
|
|
@@ -9882,7 +9967,7 @@ class ZipDirectoryEntry extends ZipEntry {
|
|
|
9882
9967
|
}
|
|
9883
9968
|
importedEntries.push(addChild(parent, name, {
|
|
9884
9969
|
data: entry,
|
|
9885
|
-
Reader: getZipBlobReader(Object.assign({}, options)),
|
|
9970
|
+
Reader: getZipBlobReader(Object.assign({}, options), passwordState),
|
|
9886
9971
|
uncompressedSize: options.passThrough ? entry.compressedSize : entry.uncompressedSize,
|
|
9887
9972
|
passThrough: options.passThrough
|
|
9888
9973
|
}));
|
|
@@ -10211,7 +10296,7 @@ function getReadableReader(readable) {
|
|
|
10211
10296
|
};
|
|
10212
10297
|
}
|
|
10213
10298
|
|
|
10214
|
-
function getZipBlobReader(options) {
|
|
10299
|
+
function getZipBlobReader(options, passwordState) {
|
|
10215
10300
|
return class extends Reader {
|
|
10216
10301
|
|
|
10217
10302
|
constructor(entry, options = {}) {
|
|
@@ -10224,12 +10309,12 @@ function getZipBlobReader(options) {
|
|
|
10224
10309
|
const zipBlobReader = this;
|
|
10225
10310
|
const readerOptions = Object.assign({}, options, zipBlobReader.options);
|
|
10226
10311
|
const { checkOverlappingEntry, checkOverlappingEntryOnly } = readerOptions;
|
|
10227
|
-
const data = await zipBlobReader.entry
|
|
10312
|
+
const data = await readEntryData(zipBlobReader.entry, Object.assign(readerOptions, {
|
|
10228
10313
|
checkPasswordOnly: false,
|
|
10229
10314
|
checkOverlappingEntry: checkOverlappingEntryOnly || checkOverlappingEntry,
|
|
10230
10315
|
checkOverlappingEntryOnly: false,
|
|
10231
10316
|
preventClose: false
|
|
10232
|
-
}));
|
|
10317
|
+
}), passwordState);
|
|
10233
10318
|
zipBlobReader.data = data;
|
|
10234
10319
|
zipBlobReader.blobReader = new BlobReader(data);
|
|
10235
10320
|
zipBlobReader.size = data.size;
|
|
@@ -10291,10 +10376,9 @@ async function initReaders(entry, options) {
|
|
|
10291
10376
|
await initStream(reader);
|
|
10292
10377
|
} catch (error) {
|
|
10293
10378
|
try {
|
|
10379
|
+
error.entry = child;
|
|
10294
10380
|
error.entryId = child.id;
|
|
10295
|
-
error.
|
|
10296
|
-
entry: child
|
|
10297
|
-
};
|
|
10381
|
+
error.entryName = child.getRelativeName(entry);
|
|
10298
10382
|
} catch {
|
|
10299
10383
|
// ignored
|
|
10300
10384
|
}
|
|
@@ -10386,10 +10470,145 @@ function checkReaderOptions(readerOptions) {
|
|
|
10386
10470
|
}
|
|
10387
10471
|
if (readerOptions) {
|
|
10388
10472
|
checkPassThroughValue(readerOptions.passThrough);
|
|
10473
|
+
checkPasswordCandidatesOptions(readerOptions);
|
|
10389
10474
|
}
|
|
10390
10475
|
return readerOptions;
|
|
10391
10476
|
}
|
|
10392
10477
|
|
|
10478
|
+
function checkPasswordCandidatesOptions(options) {
|
|
10479
|
+
const { passwords, requestPassword } = options;
|
|
10480
|
+
if (passwords && (!Array.isArray(passwords) || passwords.some(password => typeof password != STRING_TYPE))) {
|
|
10481
|
+
throw new Error(ERR_INVALID_PASSWORDS);
|
|
10482
|
+
}
|
|
10483
|
+
if (requestPassword && typeof requestPassword != FUNCTION_TYPE) {
|
|
10484
|
+
throw new Error(ERR_INVALID_REQUEST_PASSWORD);
|
|
10485
|
+
}
|
|
10486
|
+
}
|
|
10487
|
+
|
|
10488
|
+
async function readEntryData(entry, options, passwordState) {
|
|
10489
|
+
checkPasswordCandidatesOptions(options);
|
|
10490
|
+
const { passwords, requestPassword, signal } = options;
|
|
10491
|
+
options = Object.assign({}, options);
|
|
10492
|
+
delete options.passwords;
|
|
10493
|
+
delete options.requestPassword;
|
|
10494
|
+
if (!entry.encrypted || options.passThrough || (!passwords && !requestPassword)) {
|
|
10495
|
+
return entry.getData(new BlobWriter(), options);
|
|
10496
|
+
}
|
|
10497
|
+
const tried = new Set();
|
|
10498
|
+
let error;
|
|
10499
|
+
while (true) {
|
|
10500
|
+
for (const candidate of getPasswordCandidates(options, passwordState, passwords)) {
|
|
10501
|
+
if (!tried.has(candidate.key)) {
|
|
10502
|
+
const result = await tryPasswordCandidate(candidate);
|
|
10503
|
+
if (result.done) {
|
|
10504
|
+
return result.data;
|
|
10505
|
+
}
|
|
10506
|
+
error = result.error;
|
|
10507
|
+
}
|
|
10508
|
+
}
|
|
10509
|
+
if (!requestPassword) {
|
|
10510
|
+
break;
|
|
10511
|
+
}
|
|
10512
|
+
if (passwordState.pendingPrompt) {
|
|
10513
|
+
await passwordState.pendingPrompt;
|
|
10514
|
+
continue;
|
|
10515
|
+
}
|
|
10516
|
+
let release;
|
|
10517
|
+
passwordState.pendingPrompt = new Promise(resolve => release = resolve);
|
|
10518
|
+
try {
|
|
10519
|
+
const answer = await requestPassword(entry, error);
|
|
10520
|
+
if (answer === UNDEFINED_VALUE || answer === null) {
|
|
10521
|
+
break;
|
|
10522
|
+
}
|
|
10523
|
+
// deno-lint-ignore valid-typeof
|
|
10524
|
+
if (typeof answer != STRING_TYPE) {
|
|
10525
|
+
throw new Error(ERR_INVALID_REQUEST_PASSWORD);
|
|
10526
|
+
}
|
|
10527
|
+
const result = await tryPasswordCandidate(getPasswordCandidate(answer));
|
|
10528
|
+
if (result.done) {
|
|
10529
|
+
return result.data;
|
|
10530
|
+
}
|
|
10531
|
+
error = result.error;
|
|
10532
|
+
} finally {
|
|
10533
|
+
passwordState.pendingPrompt = UNDEFINED_VALUE;
|
|
10534
|
+
release();
|
|
10535
|
+
}
|
|
10536
|
+
}
|
|
10537
|
+
if (!tried.size) {
|
|
10538
|
+
throw new Error(ERR_ENCRYPTED);
|
|
10539
|
+
}
|
|
10540
|
+
const passwordError = new Error(ERR_INVALID_PASSWORD);
|
|
10541
|
+
passwordError.cause = error;
|
|
10542
|
+
throw passwordError;
|
|
10543
|
+
|
|
10544
|
+
async function tryPasswordCandidate(candidate) {
|
|
10545
|
+
tried.add(candidate.key);
|
|
10546
|
+
const candidateOptions = Object.assign({}, options, candidate.options);
|
|
10547
|
+
if (entry.zipCrypto) {
|
|
10548
|
+
candidateOptions.checkCrc32 = true;
|
|
10549
|
+
try {
|
|
10550
|
+
await entry.getData(null, Object.assign({}, candidateOptions, { checkPasswordOnly: true }));
|
|
10551
|
+
} catch (probeError) {
|
|
10552
|
+
if (isInvalidPasswordError(probeError)) {
|
|
10553
|
+
return { done: false, error: probeError };
|
|
10554
|
+
}
|
|
10555
|
+
throw probeError;
|
|
10556
|
+
}
|
|
10557
|
+
}
|
|
10558
|
+
try {
|
|
10559
|
+
const data = await entry.getData(new BlobWriter(), candidateOptions);
|
|
10560
|
+
rememberPassword(passwordState, candidate);
|
|
10561
|
+
return { done: true, data };
|
|
10562
|
+
} catch (readError) {
|
|
10563
|
+
if (isAbortError(readError, signal) || !isWrongPasswordError(readError, entry)) {
|
|
10564
|
+
throw readError;
|
|
10565
|
+
}
|
|
10566
|
+
return { done: false, error: readError };
|
|
10567
|
+
}
|
|
10568
|
+
}
|
|
10569
|
+
}
|
|
10570
|
+
|
|
10571
|
+
function isInvalidPasswordError(error) {
|
|
10572
|
+
return isErrorObject(error) && error.message == ERR_INVALID_PASSWORD;
|
|
10573
|
+
}
|
|
10574
|
+
|
|
10575
|
+
function isWrongPasswordError(error, entry) {
|
|
10576
|
+
return isInvalidPasswordError(error) || (entry.zipCrypto && isErrorObject(error) && FALSE_ACCEPT_ERRORS.has(error.message));
|
|
10577
|
+
}
|
|
10578
|
+
|
|
10579
|
+
function isAbortError(error, signal) {
|
|
10580
|
+
return Boolean(signal && signal.aborted) || (isErrorObject(error) && error.name == ABORT_ERROR_NAME);
|
|
10581
|
+
}
|
|
10582
|
+
|
|
10583
|
+
function getPasswordCandidates(options, passwordState, passwords) {
|
|
10584
|
+
const candidates = [];
|
|
10585
|
+
const { password, rawPassword } = options;
|
|
10586
|
+
if (rawPassword && rawPassword.length) {
|
|
10587
|
+
candidates.push({ key: rawPassword, options: { password: "", rawPassword } });
|
|
10588
|
+
}
|
|
10589
|
+
if (password) {
|
|
10590
|
+
candidates.push(getPasswordCandidate(password));
|
|
10591
|
+
}
|
|
10592
|
+
candidates.push(...passwordState.known);
|
|
10593
|
+
if (passwords) {
|
|
10594
|
+
candidates.push(...passwords.filter(password => password).map(getPasswordCandidate));
|
|
10595
|
+
}
|
|
10596
|
+
return candidates;
|
|
10597
|
+
}
|
|
10598
|
+
|
|
10599
|
+
function getPasswordCandidate(password) {
|
|
10600
|
+
return { key: password, options: { password, rawPassword: EMPTY_RAW_PASSWORD } };
|
|
10601
|
+
}
|
|
10602
|
+
|
|
10603
|
+
function rememberPassword(passwordState, candidate) {
|
|
10604
|
+
const { known } = passwordState;
|
|
10605
|
+
const index = known.findIndex(knownCandidate => knownCandidate.key === candidate.key);
|
|
10606
|
+
if (index != -1) {
|
|
10607
|
+
known.splice(index, 1);
|
|
10608
|
+
}
|
|
10609
|
+
known.unshift(candidate);
|
|
10610
|
+
}
|
|
10611
|
+
|
|
10393
10612
|
function checkPassThroughValue(passThrough) {
|
|
10394
10613
|
if (checkPassThroughOption(passThrough) === PASS_THROUGH_COMPRESSED) {
|
|
10395
10614
|
throw new Error(ERR_UNSUPPORTED_PASS_THROUGH_VALUE);
|
|
@@ -10527,6 +10746,7 @@ function addFileSystemHandle(zipEntry, handle, options) {
|
|
|
10527
10746
|
async function exportFileSystemHandle(zipEntry, directoryHandle, options) {
|
|
10528
10747
|
const { onstart, onprogress, onend } = options;
|
|
10529
10748
|
checkPassThroughValue(options.passThrough);
|
|
10749
|
+
checkPasswordCandidatesOptions(options);
|
|
10530
10750
|
const readerOptions = checkReaderOptions(options.readerOptions);
|
|
10531
10751
|
const abortController = new AbortController();
|
|
10532
10752
|
const { signal } = abortController;
|
|
@@ -10869,7 +11089,7 @@ function decodeMimeTypes(data) {
|
|
|
10869
11089
|
*/
|
|
10870
11090
|
|
|
10871
11091
|
|
|
10872
|
-
|
|
11092
|
+
F(setDefaultConfiguration);
|
|
10873
11093
|
|
|
10874
11094
|
exports.BlobReader = BlobReader;
|
|
10875
11095
|
exports.BlobWriter = BlobWriter;
|
|
@@ -10880,6 +11100,7 @@ exports.ERR_AMBIGUOUS_ARCHIVE = ERR_AMBIGUOUS_ARCHIVE;
|
|
|
10880
11100
|
exports.ERR_ANCESTOR_ENTRY = ERR_ANCESTOR_ENTRY;
|
|
10881
11101
|
exports.ERR_BAD_FORMAT = ERR_BAD_FORMAT;
|
|
10882
11102
|
exports.ERR_CENTRAL_DIRECTORY_NOT_FOUND = ERR_CENTRAL_DIRECTORY_NOT_FOUND;
|
|
11103
|
+
exports.ERR_CODEC_OUT_OF_MEMORY = ERR_CODEC_OUT_OF_MEMORY;
|
|
10883
11104
|
exports.ERR_DUPLICATED_NAME = ERR_DUPLICATED_NAME;
|
|
10884
11105
|
exports.ERR_DUPLICATE_IMPORTED_ENTRY = ERR_DUPLICATE_IMPORTED_ENTRY;
|
|
10885
11106
|
exports.ERR_ENCRYPTED = ERR_ENCRYPTED;
|
|
@@ -10920,11 +11141,13 @@ exports.ERR_INVALID_MAX_WORKERS = ERR_INVALID_MAX_WORKERS;
|
|
|
10920
11141
|
exports.ERR_INVALID_MSDOS_ATTRIBUTES = ERR_INVALID_MSDOS_ATTRIBUTES;
|
|
10921
11142
|
exports.ERR_INVALID_MSDOS_DATA = ERR_INVALID_MSDOS_DATA;
|
|
10922
11143
|
exports.ERR_INVALID_PASSWORD = ERR_INVALID_PASSWORD;
|
|
11144
|
+
exports.ERR_INVALID_PASSWORDS = ERR_INVALID_PASSWORDS;
|
|
10923
11145
|
exports.ERR_INVALID_PASSWORD_TYPE = ERR_INVALID_PASSWORD_TYPE;
|
|
10924
11146
|
exports.ERR_INVALID_PASS_THROUGH = ERR_INVALID_PASS_THROUGH;
|
|
10925
11147
|
exports.ERR_INVALID_PASS_THROUGH_VALUE = ERR_INVALID_PASS_THROUGH_VALUE;
|
|
10926
11148
|
exports.ERR_INVALID_READER = ERR_INVALID_READER;
|
|
10927
11149
|
exports.ERR_INVALID_READER_OPTIONS = ERR_INVALID_READER_OPTIONS;
|
|
11150
|
+
exports.ERR_INVALID_REQUEST_PASSWORD = ERR_INVALID_REQUEST_PASSWORD;
|
|
10928
11151
|
exports.ERR_INVALID_SIGNAL = ERR_INVALID_SIGNAL;
|
|
10929
11152
|
exports.ERR_INVALID_SIGNATURE_DATA = ERR_INVALID_SIGNATURE_DATA;
|
|
10930
11153
|
exports.ERR_INVALID_STRICTNESS = ERR_INVALID_STRICTNESS;
|