@chicowall/grf-loader 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,74 +1,85 @@
1
- # GRF Loader
2
-
3
- **GRF** is an archive file format that support lossless data compression used on **Ragnarok Online** to store game assets. A GRF file may contain one or more files or directories that may have been compressed (deflate) and encrypted (variant of DES).
4
-
5
- [![roBrowser project](https://img.shields.io/badge/project-roBrowser-informational.svg)](https://github.com/vthibault/roBrowser) [![license: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
6
- ![node](https://github.com/vthibault/grf-loader/workflows/node/badge.svg?branch=master) ![browser](https://github.com/vthibault/grf-loader/workflows/browser/badge.svg?branch=master) ![lint](https://github.com/vthibault/grf-loader/workflows/lint/badge.svg?branch=master)
7
-
8
- ## About
9
-
10
- - Only supports GRF version 0x200.
11
- - It's working both on node and browser environments
12
- - Supports DES description.
13
- - Avoid bloating client/server memory _(by not loading the whole file into the RAM)_
14
- - Does not supports custom encryption
15
-
16
- ## Installation
17
-
18
- ```
19
- npm install @chicowall/grf-loader
20
- ```
21
-
22
- ## Basic usage
23
-
24
- - Load a grf file on node.js
25
- - Load a grf from the browser
26
- - List all files content
27
- - Extract a file from the GRF
28
-
29
- ### Load a grf file on node.js
30
-
31
- ```ts
32
- import {GrfNode} from 'grf-loader';
33
- import {openSync} from 'path';
34
-
35
- const fd = openSync('path/to/data.grf', 'r');
36
- const grf = new GrfNode(fd);
37
-
38
- // Start parsing the grf.
39
- await grf.load();
40
- ```
41
-
42
- ### Load a grf from the browser
43
-
44
- ```ts
45
- import {GrfBrowser} from 'grf-loader';
46
-
47
- const blob = document.querySelector('input[type="file"]').files[0];
48
- const grf = new GrfBrowser(blob);
49
-
50
- // Start parsing the grf
51
- await grf.load();
52
- ```
53
-
54
- ### List all files content
55
-
56
- Once the GRF is loaded, it's possible to list all files included inside it
57
-
58
- ```ts
59
- grf.files.forEach((entry, path) => {
60
- console.log(path);
61
- });
62
- ```
63
-
64
- ### Extract a file from the GRF
65
-
66
- Once the GRF is loaded, it's possible to extract all files you need
67
-
68
- ```ts
69
- const {data, error} = await grf.getFile('data\\clientinfo.xml');
70
-
71
- // data is a Uint8Array data, so we transform it into text
72
- const content = String.fromCharCode.apply(null, data);
73
- console.log(content);
74
- ```
1
+ # GRF Loader
2
+
3
+ **GRF** is an archive file format that support lossless data compression used on **Ragnarok Online** to store game assets. A GRF file may contain one or more files or directories that may have been compressed (deflate) and encrypted (variant of DES).
4
+
5
+ [![roBrowser project](https://img.shields.io/badge/project-roBrowser-informational.svg)](https://github.com/vthibault/roBrowser) [![license: MIT](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)
6
+ ![node](https://github.com/vthibault/grf-loader/workflows/node/badge.svg?branch=master) ![browser](https://github.com/vthibault/grf-loader/workflows/browser/badge.svg?branch=master) ![lint](https://github.com/vthibault/grf-loader/workflows/lint/badge.svg?branch=master)
7
+
8
+ ## About
9
+
10
+ - Only supports GRF version 0x200.
11
+ - It's working both on node and browser environments
12
+ - Supports DES description.
13
+ - Avoid bloating client/server memory _(by not loading the whole file into the RAM)_
14
+ - Does not supports custom encryption
15
+
16
+ ## Installation
17
+
18
+ ```
19
+ npm install @chicowall/grf-loader
20
+ ```
21
+
22
+ ## Basic usage
23
+
24
+ - Load a grf file on node.js
25
+ - Load a grf from the browser
26
+ - List all files content
27
+ - Extract a file from the GRF
28
+
29
+ ### Load a grf file on node.js
30
+
31
+ ```ts
32
+ import {GrfNode} from 'grf-loader';
33
+ import {openSync} from 'fs';
34
+
35
+ const fd = openSync('path/to/data.grf', 'r');
36
+ const grf = new GrfNode(fd);
37
+
38
+ // Start parsing the grf.
39
+ await grf.load();
40
+ ```
41
+
42
+ ### Load a grf from the browser
43
+
44
+ ```ts
45
+ import {GrfBrowser} from 'grf-loader';
46
+
47
+ const blob = document.querySelector('input[type="file"]').files[0];
48
+ const grf = new GrfBrowser(blob);
49
+
50
+ // Start parsing the grf
51
+ await grf.load();
52
+ ```
53
+
54
+ ### List all files content
55
+
56
+ Once the GRF is loaded, it's possible to list all files included inside it
57
+
58
+ ```ts
59
+ grf.files.forEach((entry, path) => {
60
+ console.log(path);
61
+ });
62
+ ```
63
+
64
+ ### Extract a file from the GRF
65
+
66
+ Once the GRF is loaded, it's possible to extract all files you need
67
+
68
+ ```ts
69
+ const {data, error} = await grf.getFile('data\\clientinfo.xml');
70
+
71
+ // data is a Uint8Array data, so we transform it into text
72
+ const content = String.fromCharCode.apply(null, data);
73
+ console.log(content);
74
+ ```
75
+
76
+ ### Extract all files
77
+
78
+ A sample script is provided in `examples/extract-all.ts` to dump every file from a GRF.
79
+ Run it with [ts-node](https://typestrong.org/ts-node/) passing the GRF path and an optional output directory:
80
+
81
+ ```bash
82
+ npx ts-node examples/extract-all.ts path/to/data.grf output-directory
83
+ ```
84
+
85
+ All files will be written under `output-directory` (defaults to `output`).
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";var P=Object.create;var b=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var _=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var L=(t,e)=>{for(var r in e)b(t,r,{get:e[r],enumerable:!0})},w=(t,e,r,x)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of B(e))!I.call(t,f)&&f!==r&&b(t,f,{get:()=>e[f],enumerable:!(x=R(e,f))||x.enumerable});return t};var z=(t,e,r)=>(r=t!=null?P(_(t)):{},w(e||!t||!t.__esModule?b(r,"default",{value:t,enumerable:!0}):r,t)),D=t=>w(b({},"__esModule",{value:!0}),t);var Q={};L(Q,{GrfBrowser:()=>d,GrfNode:()=>m});module.exports=D(Q);var h=require("pako"),F=z(require("jdataview"),1);var l=new Uint8Array([128,64,32,16,8,4,2,1]),i=new Uint8Array(8),s=new Uint8Array(8),c=new Uint8Array(8),N=new Uint8Array([58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7]),j=new Uint8Array([40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25]),C=new Uint8Array([16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25]),E=[new Uint8Array([239,3,65,253,216,116,30,71,38,239,251,34,179,216,132,30,57,172,167,96,98,193,205,186,92,150,144,89,5,59,122,133,64,253,30,200,231,138,139,33,218,67,100,159,45,20,177,114,245,91,200,182,156,55,118,236,57,160,163,5,82,110,15,217]),new Uint8Array([167,221,13,120,158,11,227,149,96,54,54,79,249,96,90,163,17,36,210,135,200,82,117,236,187,193,76,186,36,254,143,25,218,19,102,175,73,208,144,6,140,106,251,145,55,141,13,120,191,73,17,244,35,229,206,59,85,188,162,87,232,34,116,206]),new Uint8Array([44,234,193,191,74,36,31,194,121,71,162,124,182,217,104,21,128,86,93,1,51,253,244,174,222,48,7,155,229,131,155,104,73,180,46,131,31,194,181,124,162,25,216,229,124,47,131,218,247,107,144,254,196,1,90,151,97,166,61,64,11,88,230,61]),new Uint8Array([77,209,178,15,40,189,228,120,246,74,15,147,139,23,209,164,58,236,201,53,147,86,126,203,85,32,160,254,108,137,23,98,23,98,75,177,180,222,209,135,201,20,60,74,126,168,226,125,160,159,246,92,106,9,141,240,15,227,83,37,149,54,40,203])];function G(t,e){for(let r=0;r<64;++r){let x=N[r]-1;t[e+(x>>3&7)]&l[x&7]&&(i[r>>3&7]|=l[r&7])}t.set(i,e),i.set(c)}function H(t,e){for(let r=0;r<64;++r){let x=j[r]-1;t[e+(x>>3&7)]&l[x&7]&&(i[r>>3&7]|=l[r&7])}t.set(i,e),i.set(c)}function Y(t,e){for(let r=0;r<32;++r){let x=C[r]-1;t[e+(x>>3)]&l[x&7]&&(i[(r>>3)+4]|=l[r&7])}t.set(i,e),i.set(c)}function M(t,e){i[0]=(t[e+7]<<5|t[e+4]>>3)&63,i[1]=(t[e+4]<<1|t[e+5]>>7)&63,i[2]=(t[e+4]<<5|t[e+5]>>3)&63,i[3]=(t[e+5]<<1|t[e+6]>>7)&63,i[4]=(t[e+5]<<5|t[e+6]>>3)&63,i[5]=(t[e+6]<<1|t[e+7]>>7)&63,i[6]=(t[e+6]<<5|t[e+7]>>3)&63,i[7]=(t[e+7]<<1|t[e+4]>>7)&63,t.set(i,e),i.set(c)}function k(t,e){for(let r=0;r<4;++r)i[r]=E[r][t[r*2+0+e]]&240|E[r][t[r*2+1+e]]&15;t.set(i,e),i.set(c)}function O(t,e){for(let r=0;r<8;r++)s[r]=t[e+r];M(s,0),k(s,0),Y(s,0),t[e+0]^=s[4],t[e+1]^=s[5],t[e+2]^=s[6],t[e+3]^=s[7]}function y(t,e){G(t,e),O(t,e),H(t,e)}function v(t,e,r){let x=r.toString().length,f=x<3?1:x<5?x+1:x<7?x+9:x+15,n=e>>3;for(let a=0;a<20&&a<n;++a)y(t,a*8);for(let a=20,o=-1;a<n;++a){if(a%f===0){y(t,a*8);continue}++o&&o%7===0&&$(t,a*8)}}function S(t,e){let r=e>>3;for(let x=0;x<20&&x<r;++x)y(t,x*8)}function $(t,e){i[0]=t[e+3],i[1]=t[e+4],i[2]=t[e+6],i[3]=t[e+0],i[4]=t[e+1],i[5]=t[e+2],i[6]=t[e+5],i[7]=Z[t[e+7]],t.set(i,e),i.set(c)}var Z=(()=>{let t=new Uint8Array([0,43,108,128,1,104,72,119,96,255,185,192,254,235]),e=new Uint8Array(Array.from({length:256},(x,f)=>f)),r=t.length;for(let x=0;x<r;x+=2)e[t[x+0]]=t[x+1],e[t[x+1]]=t[x+0];return e})();var X=1,q=2,J=4,K="Master of Magic",g=46,T=Uint32Array.BYTES_PER_ELEMENT*2,u=class{constructor(e){this.fd=e;this.version=512;this.fileCount=0;this.loaded=!1;this.files=new Map;this.fileTableOffset=0}async getStreamReader(e,r){let x=await this.getStreamBuffer(this.fd,e,r);return new F.default(x,void 0,void 0,!0)}async load(){this.loaded||(await this.parseHeader(),await this.parseFileList(),this.loaded=!0)}async parseHeader(){let e=await this.getStreamReader(0,g);if(e.getString(15)!==K)throw new Error("Not a GRF file (invalid signature)");e.skip(15),this.fileTableOffset=e.getUint32()+g;let x=e.getUint32();if(this.fileCount=e.getUint32()-x-7,this.version=e.getUint32(),this.version!==512)throw new Error(`Unsupported version "0x${this.version.toString(16)}"`)}async parseFileList(){let e=await this.getStreamReader(this.fileTableOffset,T),r=e.getUint32(),x=e.getUint32(),f=await this.getStreamBuffer(this.fd,this.fileTableOffset+T,r),n=(0,h.inflate)(f,{});for(let a=0,o=0;a<this.fileCount;++a){let A="";for(;n[o];)A+=String.fromCharCode(n[o++]);o++;let U={compressedSize:n[o++]|n[o++]<<8|n[o++]<<16|n[o++]<<24,lengthAligned:n[o++]|n[o++]<<8|n[o++]<<16|n[o++]<<24,realSize:n[o++]|n[o++]<<8|n[o++]<<16|n[o++]<<24,type:n[o++],offset:(n[o++]|n[o++]<<8|n[o++]<<16|n[o++]<<24)>>>0};U.type&X&&this.files.set(A,U)}}decodeEntry(e,r){return r.type&q?v(e,r.lengthAligned,r.compressedSize):r.type&J&&S(e,r.lengthAligned),r.realSize===r.compressedSize?e:(0,h.inflate)(e,{})}async getFile(e){if(!this.loaded)return Promise.resolve({data:null,error:"GRF not loaded yet"});let r=e;if(!this.files.has(r))return Promise.resolve({data:null,error:`File "${r}" not found`});let x=this.files.get(r);if(!x)return{data:null,error:`File "${r}" not found`};let f=await this.getStreamBuffer(this.fd,x.offset+g,x.lengthAligned);try{let n=this.decodeEntry(f,x);return Promise.resolve({data:n,error:null})}catch(n){return{data:null,error:n instanceof Error?n.message:String(n)}}}};var d=class extends u{async getStreamBuffer(e,r,x){return new Promise((f,n)=>{let a=new FileReader;a.onerror=n,a.onload=()=>f(new Uint8Array(a.result)),a.readAsArrayBuffer(e.slice(r,r+x))})}};var p=require("fs");var m=class extends u{constructor(e){super(e);try{if(!(0,p.fstatSync)(e).isFile())throw new Error("GRFNode: file descriptor must point to a regular file")}catch{throw new Error("GRFNode: invalid file descriptor")}}async getStreamBuffer(e,r,x){let f=Buffer.allocUnsafe(x);if((0,p.readSync)(e,f,0,x,r)!==x)throw new Error("Not a GRF file (invalid signature)");return f}};0&&(module.exports={GrfBrowser,GrfNode});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/grf-base.ts","../src/des.ts","../src/grf-browser.ts","../src/grf-node.ts"],"sourcesContent":["export {GrfBrowser} from './grf-browser';\nexport {GrfNode} from './grf-node';\nexport type {TFileEntry} from './grf-base';\n","import {inflate} from 'pako';\nimport jDataview from 'jdataview';\nimport {decodeFull, decodeHeader} from './des';\n\nexport interface TFileEntry {\n type: number;\n offset: number;\n realSize: number;\n compressedSize: number;\n lengthAligned: number;\n}\n\nconst FILELIST_TYPE_FILE = 0x01;\nconst FILELIST_TYPE_ENCRYPT_MIXED = 0x02; // encryption mode 0 (header DES + periodic DES/shuffle)\nconst FILELIST_TYPE_ENCRYPT_HEADER = 0x04; // encryption mode 1 (header DES only)\n\nconst HEADER_SIGNATURE = 'Master of Magic';\nconst HEADER_SIZE = 46;\nconst FILE_TABLE_SIZE = Uint32Array.BYTES_PER_ELEMENT * 2;\n\nexport abstract class GrfBase<T> {\n public version = 0x200;\n public fileCount = 0;\n public loaded = false;\n public files = new Map<string, TFileEntry>();\n private fileTableOffset = 0;\n\n constructor(private fd: T) {}\n\n abstract getStreamBuffer(\n fd: T,\n offset: number,\n length: number\n ): Promise<Uint8Array>;\n\n public async getStreamReader(\n offset: number,\n length: number\n ): Promise<jDataview> {\n const buffer = await this.getStreamBuffer(this.fd, offset, length);\n\n return new jDataview(buffer, void 0, void 0, true);\n }\n\n public async load(): Promise<void> {\n if (!this.loaded) {\n await this.parseHeader();\n await this.parseFileList();\n this.loaded = true;\n }\n }\n\n private async parseHeader(): Promise<void> {\n const reader = await this.getStreamReader(0, HEADER_SIZE);\n\n const signature = reader.getString(15);\n if (signature !== HEADER_SIGNATURE) {\n throw new Error('Not a GRF file (invalid signature)');\n }\n\n reader.skip(15);\n this.fileTableOffset = reader.getUint32() + HEADER_SIZE;\n const reservedFiles = reader.getUint32();\n this.fileCount = reader.getUint32() - reservedFiles - 7;\n this.version = reader.getUint32();\n\n if (this.version !== 0x200) {\n throw new Error(`Unsupported version \"0x${this.version.toString(16)}\"`);\n }\n }\n\n private async parseFileList(): Promise<void> {\n // Read table list, stored information\n const reader = await this.getStreamReader(\n this.fileTableOffset,\n FILE_TABLE_SIZE\n );\n const compressedSize = reader.getUint32();\n const realSize = reader.getUint32();\n\n // Load the chunk and uncompress it\n const compressed = await this.getStreamBuffer(\n this.fd,\n this.fileTableOffset + FILE_TABLE_SIZE,\n compressedSize\n );\n\n const data = inflate(compressed, {\n //chunkSize: realSize\n });\n\n // Optimized version without using jDataView (faster)\n for (let i = 0, p = 0; i < this.fileCount; ++i) {\n let filename = '';\n while (data[p]) {\n filename += String.fromCharCode(data[p++]);\n }\n\n p++;\n\n // prettier-ignore\n const entry: TFileEntry = {\n compressedSize: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),\n lengthAligned: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),\n realSize: data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24),\n type: data[p++],\n offset: (data[p++] | (data[p++] << 8) | (data[p++] << 16) | (data[p++] << 24)) >>> 0\n };\n\n // Not a file (folder ?)\n if (entry.type & FILELIST_TYPE_FILE) {\n this.files.set(filename, entry);\n }\n }\n }\n\n private decodeEntry(data: Uint8Array, entry: TFileEntry): Uint8Array {\n // Decode the file\n if (entry.type & FILELIST_TYPE_ENCRYPT_MIXED) {\n decodeFull(data, entry.lengthAligned, entry.compressedSize);\n } else if (entry.type & FILELIST_TYPE_ENCRYPT_HEADER) {\n decodeHeader(data, entry.lengthAligned);\n }\n\n // No compression\n if (entry.realSize === entry.compressedSize) {\n return data;\n }\n\n // Uncompress\n return inflate(data, {\n //chunkSize: entry.realSize\n });\n }\n\n public async getFile(\n filename: string\n ): Promise<{data: null | Uint8Array; error: null | string}> {\n if (!this.loaded) {\n return Promise.resolve({data: null, error: 'GRF not loaded yet'});\n }\n\n const path = filename;\n\n // Not exists\n if (!this.files.has(path)) {\n return Promise.resolve({data: null, error: `File \"${path}\" not found`});\n }\n\n const entry = this.files.get(path);\n\n if (!entry) {\n return { data: null, error: `File \"${path}\" not found` };\n }\n\n const data = await this.getStreamBuffer(\n this.fd,\n entry.offset + HEADER_SIZE,\n entry.lengthAligned\n );\n\n try {\n const result = this.decodeEntry(data, entry);\n return Promise.resolve({data: result, error: null});\n } catch (error) {\n const message =\n error instanceof Error ? error.message : String(error);\n return { data: null, error: message };\n }\n }\n}\n","/**\n * Ragnarok Online DES decoder implementation\n * It's a custom one with some alterations\n */\nexport {decodeFull, decodeHeader};\n\nconst mask = new Uint8Array([0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]);\nconst tmp = new Uint8Array(8);\nconst tmp2 = new Uint8Array(8);\nconst clean = new Uint8Array(8);\n\n// prettier-ignore\nconst initialPermutationTable = new Uint8Array([\n 58, 50, 42, 34, 26, 18, 10, 2,\n 60, 52, 44, 36, 28, 20, 12, 4,\n 62, 54, 46, 38, 30, 22, 14, 6,\n 64, 56, 48, 40, 32, 24, 16, 8,\n 57, 49, 41, 33, 25, 17, 9, 1,\n 59, 51, 43, 35, 27, 19, 11, 3,\n 61, 53, 45, 37, 29, 21, 13, 5,\n 63, 55, 47, 39, 31, 23, 15, 7\n]);\n\n// prettier-ignore\nconst finalPermutationTable = new Uint8Array([\n 40, 8, 48, 16, 56, 24, 64, 32,\n 39, 7, 47, 15, 55, 23, 63, 31,\n 38, 6, 46, 14, 54, 22, 62, 30,\n 37, 5, 45, 13, 53, 21, 61, 29,\n 36, 4, 44, 12, 52, 20, 60, 28,\n 35, 3, 43, 11, 51, 19, 59, 27,\n 34, 2, 42, 10, 50, 18, 58, 26,\n 33, 1, 41, 9, 49, 17, 57, 25\n]);\n\n// prettier-ignore\nconst transpositionTable = new Uint8Array([\n 16, 7, 20, 21,\n 29, 12, 28, 17,\n 1, 15, 23, 26,\n 5, 18, 31, 10,\n 2, 8, 24, 14,\n 32, 27, 3, 9,\n 19, 13, 30, 6,\n 22, 11, 4, 25\n]);\n\n// prettier-ignore\nconst substitutionBoxTable = [\n new Uint8Array([\n 0xef, 0x03, 0x41, 0xfd, 0xd8, 0x74, 0x1e, 0x47, 0x26, 0xef, 0xfb, 0x22, 0xb3, 0xd8, 0x84, 0x1e,\n 0x39, 0xac, 0xa7, 0x60, 0x62, 0xc1, 0xcd, 0xba, 0x5c, 0x96, 0x90, 0x59, 0x05, 0x3b, 0x7a, 0x85,\n 0x40, 0xfd, 0x1e, 0xc8, 0xe7, 0x8a, 0x8b, 0x21, 0xda, 0x43, 0x64, 0x9f, 0x2d, 0x14, 0xb1, 0x72,\n 0xf5, 0x5b, 0xc8, 0xb6, 0x9c, 0x37, 0x76, 0xec, 0x39, 0xa0, 0xa3, 0x05, 0x52, 0x6e, 0x0f, 0xd9 \n ]),\n new Uint8Array([\n 0xa7, 0xdd, 0x0d, 0x78, 0x9e, 0x0b, 0xe3, 0x95, 0x60, 0x36, 0x36, 0x4f, 0xf9, 0x60, 0x5a, 0xa3,\n 0x11, 0x24, 0xd2, 0x87, 0xc8, 0x52, 0x75, 0xec, 0xbb, 0xc1, 0x4c, 0xba, 0x24, 0xfe, 0x8f, 0x19,\n 0xda, 0x13, 0x66, 0xaf, 0x49, 0xd0, 0x90, 0x06, 0x8c, 0x6a, 0xfb, 0x91, 0x37, 0x8d, 0x0d, 0x78,\n 0xbf, 0x49, 0x11, 0xf4, 0x23, 0xe5, 0xce, 0x3b, 0x55, 0xbc, 0xa2, 0x57, 0xe8, 0x22, 0x74, 0xce\n ]),\n new Uint8Array([\n 0x2c, 0xea, 0xc1, 0xbf, 0x4a, 0x24, 0x1f, 0xc2, 0x79, 0x47, 0xa2, 0x7c, 0xb6, 0xd9, 0x68, 0x15,\n 0x80, 0x56, 0x5d, 0x01, 0x33, 0xfd, 0xf4, 0xae, 0xde, 0x30, 0x07, 0x9b, 0xe5, 0x83, 0x9b, 0x68,\n 0x49, 0xb4, 0x2e, 0x83, 0x1f, 0xc2, 0xb5, 0x7c, 0xa2, 0x19, 0xd8, 0xe5, 0x7c, 0x2f, 0x83, 0xda,\n 0xf7, 0x6b, 0x90, 0xfe, 0xc4, 0x01, 0x5a, 0x97, 0x61, 0xa6, 0x3d, 0x40, 0x0b, 0x58, 0xe6, 0x3d\n ]),\n new Uint8Array([\n 0x4d, 0xd1, 0xb2, 0x0f, 0x28, 0xbd, 0xe4, 0x78, 0xf6, 0x4a, 0x0f, 0x93, 0x8b, 0x17, 0xd1, 0xa4,\n 0x3a, 0xec, 0xc9, 0x35, 0x93, 0x56, 0x7e, 0xcb, 0x55, 0x20, 0xa0, 0xfe, 0x6c, 0x89, 0x17, 0x62,\n 0x17, 0x62, 0x4b, 0xb1, 0xb4, 0xde, 0xd1, 0x87, 0xc9, 0x14, 0x3c, 0x4a, 0x7e, 0xa8, 0xe2, 0x7d,\n 0xa0, 0x9f, 0xf6, 0x5c, 0x6a, 0x09, 0x8d, 0xf0, 0x0f, 0xe3, 0x53, 0x25, 0x95, 0x36, 0x28, 0xcb\n ])\n];\n\n/**\n * Initial permutation (IP).\n */\nfunction initialPermutation(src: Uint8Array, index: number): void {\n for (let i = 0; i < 64; ++i) {\n const j = initialPermutationTable[i] - 1;\n if (src[index + ((j >> 3) & 7)] & mask[j & 7]) {\n tmp[(i >> 3) & 7] |= mask[i & 7];\n }\n }\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * Final permutation (IP^-1).\n */\nfunction finalPermutation(src: Uint8Array, index: number): void {\n for (let i = 0; i < 64; ++i) {\n const j = finalPermutationTable[i] - 1;\n if (src[index + ((j >> 3) & 7)] & mask[j & 7]) {\n tmp[(i >> 3) & 7] |= mask[i & 7];\n }\n }\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * Transposition (P-BOX).\n */\nfunction transposition(src: Uint8Array, index: number): void {\n for (let i = 0; i < 32; ++i) {\n const j = transpositionTable[i] - 1;\n if (src[index + (j >> 3)] & mask[j & 7]) {\n tmp[(i >> 3) + 4] |= mask[i & 7];\n }\n }\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * Expansion (E).\n * Expands upper four 8-bits (32b) into eight 6-bits (48b).\n */\nfunction expansion(src: Uint8Array, index: number): void {\n tmp[0] = ((src[index + 7] << 5) | (src[index + 4] >> 3)) & 0x3f; // ..0 vutsr\n tmp[1] = ((src[index + 4] << 1) | (src[index + 5] >> 7)) & 0x3f; // ..srqpo n\n tmp[2] = ((src[index + 4] << 5) | (src[index + 5] >> 3)) & 0x3f; // ..o nmlkj\n tmp[3] = ((src[index + 5] << 1) | (src[index + 6] >> 7)) & 0x3f; // ..kjihg f\n tmp[4] = ((src[index + 5] << 5) | (src[index + 6] >> 3)) & 0x3f; // ..g fedcb\n tmp[5] = ((src[index + 6] << 1) | (src[index + 7] >> 7)) & 0x3f; // ..cba98 7\n tmp[6] = ((src[index + 6] << 5) | (src[index + 7] >> 3)) & 0x3f; // ..8 76543\n tmp[7] = ((src[index + 7] << 1) | (src[index + 4] >> 7)) & 0x3f; // ..43210 v\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * Substitution boxes (S-boxes).\n * NOTE: This implementation was optimized to process two nibbles in one step (twice as fast).\n */\nfunction substitutionBox(src: Uint8Array, index: number): void {\n for (let i = 0; i < 4; ++i) {\n tmp[i] =\n (substitutionBoxTable[i][src[i * 2 + 0 + index]] & 0xf0) |\n (substitutionBoxTable[i][src[i * 2 + 1 + index]] & 0x0f);\n }\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * DES round function.\n * XORs src[0..3] with TP(SBOX(E(src[4..7]))).\n */\nfunction roundFunction(src: Uint8Array, index: number): void {\n for (let i = 0; i < 8; i++) {\n tmp2[i] = src[index + i];\n }\n\n expansion(tmp2, 0);\n substitutionBox(tmp2, 0);\n transposition(tmp2, 0);\n\n src[index + 0] ^= tmp2[4];\n src[index + 1] ^= tmp2[5];\n src[index + 2] ^= tmp2[6];\n src[index + 3] ^= tmp2[7];\n}\n\n/**\n * DEcrypt a block\n */\nfunction decryptBlock(src: Uint8Array, index: number): void {\n initialPermutation(src, index);\n roundFunction(src, index);\n finalPermutation(src, index);\n}\n\n/**\n * Decode the whole file\n */\nfunction decodeFull(\n src: Uint8Array,\n length: number,\n entryLength: number\n): void {\n // compute number of digits of the entry length\n const digits = entryLength.toString().length;\n\n // choose size of gap between two encrypted blocks\n // digits: 0 1 2 3 4 5 6 7 8 9 ...\n // cycle: 1 1 1 4 5 14 15 22 23 24 ...\n const cycle =\n digits < 3\n ? 1\n : digits < 5\n ? digits + 1\n : digits < 7\n ? digits + 9\n : digits + 15;\n\n const nblocks = length >> 3;\n\n // first 20 blocks are all des-encrypted\n for (let i = 0; i < 20 && i < nblocks; ++i) {\n decryptBlock(src, i * 8);\n }\n\n for (let i = 20, j = -1; i < nblocks; ++i) {\n // decrypt block\n if (i % cycle === 0) {\n decryptBlock(src, i * 8);\n continue;\n }\n\n // de-shuffle block\n if (++j && j % 7 === 0) {\n shuffleDec(src, i * 8);\n }\n }\n}\n\n/**\n * Decode only the header\n */\nfunction decodeHeader(src: Uint8Array, length: number): void {\n const count = length >> 3;\n\n // first 20 blocks are all des-encrypted\n for (let i = 0; i < 20 && i < count; ++i) {\n decryptBlock(src, i * 8);\n }\n\n // the rest is plaintext, done.\n}\n\n/**\n * Shuffle decode\n */\nfunction shuffleDec(src: Uint8Array, index: number) {\n tmp[0] = src[index + 3];\n tmp[1] = src[index + 4];\n tmp[2] = src[index + 6];\n tmp[3] = src[index + 0];\n tmp[4] = src[index + 1];\n tmp[5] = src[index + 2];\n tmp[6] = src[index + 5];\n tmp[7] = shuffleDecTable[src[index + 7]];\n\n src.set(tmp, index);\n tmp.set(clean);\n}\n\n/**\n * GRF substitution table\n */\nconst shuffleDecTable = (() => {\n // prettier-ignore\n const list = new Uint8Array([\n 0x00, 0x2b, 0x6c, 0x80, 0x01, 0x68, 0x48,\n 0x77, 0x60, 0xff, 0xb9, 0xc0, 0xfe, 0xeb\n ]);\n\n const out = new Uint8Array(Array.from({length: 256}, (_, k) => k));\n const count = list.length;\n\n for (let i = 0; i < count; i += 2) {\n out[list[i + 0]] = list[i + 1];\n out[list[i + 1]] = list[i + 0];\n }\n\n return out;\n})();\n","import jDataview from 'jdataview';\nimport {GrfBase} from './grf-base';\n\n/**\n * Using this Browser, we work from a File or Blob object.\n * We are use the FileReader API to read only some part of the file to avoid\n * loading 2 gigas into memory\n */\nexport class GrfBrowser extends GrfBase<File | Blob> {\n public async getStreamBuffer(\n buffer: File | Blob,\n offset: number,\n length: number\n ): Promise<Uint8Array> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onload = () =>\n resolve(new Uint8Array(reader.result as ArrayBuffer));\n reader.readAsArrayBuffer(buffer.slice(offset, offset + length));\n });\n }\n}\n","// src/grf-node.ts\nimport { readSync, fstatSync } from 'fs';\nimport { GrfBase } from './grf-base';\n\nexport class GrfNode extends GrfBase<number> {\n constructor(fd: number) {\n super(fd);\n\n // Na nossa API, apenas FDs para arquivos regulares são válidos.\n // fstatSync lança erro se o descritor não existir ou não for arquivo.\n try {\n const stat = fstatSync(fd);\n if (!stat.isFile()) {\n throw new Error('GRFNode: file descriptor must point to a regular file');\n }\n } catch {\n // Converte em mensagem clara para o usuário\n throw new Error('GRFNode: invalid file descriptor');\n }\n }\n\n public async getStreamBuffer(\n fd: number,\n offset: number,\n length: number\n ): Promise<Uint8Array> {\n const buffer = Buffer.allocUnsafe(length);\n const bytesRead = readSync(fd, buffer, 0, length, offset);\n\n if (bytesRead !== length) {\n // ERRO TYPE: GRFNode: unexpected EOF\n throw new Error('Not a GRF file (invalid signature)');\n }\n return buffer;\n }\n}\n"],"mappings":"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","names":["index_exports","__export","GrfBrowser","GrfNode","__toCommonJS","import_pako","import_jdataview","mask","tmp","tmp2","clean","initialPermutationTable","finalPermutationTable","transpositionTable","substitutionBoxTable","initialPermutation","src","index","i","j","finalPermutation","transposition","expansion","substitutionBox","roundFunction","decryptBlock","decodeFull","length","entryLength","digits","cycle","nblocks","shuffleDec","decodeHeader","count","shuffleDecTable","list","out","_","k","FILELIST_TYPE_FILE","FILELIST_TYPE_ENCRYPT_MIXED","FILELIST_TYPE_ENCRYPT_HEADER","HEADER_SIGNATURE","HEADER_SIZE","FILE_TABLE_SIZE","GrfBase","fd","offset","length","buffer","jDataview","reader","reservedFiles","compressedSize","realSize","compressed","data","i","p","filename","entry","decodeFull","decodeHeader","path","result","error","GrfBrowser","GrfBase","buffer","offset","length","resolve","reject","reader","import_fs","GrfNode","GrfBase","fd","offset","length","buffer"]}
@@ -0,0 +1,44 @@
1
+ import jDataview from 'jdataview';
2
+
3
+ interface TFileEntry {
4
+ type: number;
5
+ offset: number;
6
+ realSize: number;
7
+ compressedSize: number;
8
+ lengthAligned: number;
9
+ }
10
+ declare abstract class GrfBase<T> {
11
+ private fd;
12
+ version: number;
13
+ fileCount: number;
14
+ loaded: boolean;
15
+ files: Map<string, TFileEntry>;
16
+ private fileTableOffset;
17
+ constructor(fd: T);
18
+ abstract getStreamBuffer(fd: T, offset: number, length: number): Promise<Uint8Array>;
19
+ getStreamReader(offset: number, length: number): Promise<jDataview>;
20
+ load(): Promise<void>;
21
+ private parseHeader;
22
+ private parseFileList;
23
+ private decodeEntry;
24
+ getFile(filename: string): Promise<{
25
+ data: null | Uint8Array;
26
+ error: null | string;
27
+ }>;
28
+ }
29
+
30
+ /**
31
+ * Using this Browser, we work from a File or Blob object.
32
+ * We are use the FileReader API to read only some part of the file to avoid
33
+ * loading 2 gigas into memory
34
+ */
35
+ declare class GrfBrowser extends GrfBase<File | Blob> {
36
+ getStreamBuffer(buffer: File | Blob, offset: number, length: number): Promise<Uint8Array>;
37
+ }
38
+
39
+ declare class GrfNode extends GrfBase<number> {
40
+ constructor(fd: number);
41
+ getStreamBuffer(fd: number, offset: number, length: number): Promise<Uint8Array>;
42
+ }
43
+
44
+ export { GrfBrowser, GrfNode, type TFileEntry };
@@ -0,0 +1,44 @@
1
+ import jDataview from 'jdataview';
2
+
3
+ interface TFileEntry {
4
+ type: number;
5
+ offset: number;
6
+ realSize: number;
7
+ compressedSize: number;
8
+ lengthAligned: number;
9
+ }
10
+ declare abstract class GrfBase<T> {
11
+ private fd;
12
+ version: number;
13
+ fileCount: number;
14
+ loaded: boolean;
15
+ files: Map<string, TFileEntry>;
16
+ private fileTableOffset;
17
+ constructor(fd: T);
18
+ abstract getStreamBuffer(fd: T, offset: number, length: number): Promise<Uint8Array>;
19
+ getStreamReader(offset: number, length: number): Promise<jDataview>;
20
+ load(): Promise<void>;
21
+ private parseHeader;
22
+ private parseFileList;
23
+ private decodeEntry;
24
+ getFile(filename: string): Promise<{
25
+ data: null | Uint8Array;
26
+ error: null | string;
27
+ }>;
28
+ }
29
+
30
+ /**
31
+ * Using this Browser, we work from a File or Blob object.
32
+ * We are use the FileReader API to read only some part of the file to avoid
33
+ * loading 2 gigas into memory
34
+ */
35
+ declare class GrfBrowser extends GrfBase<File | Blob> {
36
+ getStreamBuffer(buffer: File | Blob, offset: number, length: number): Promise<Uint8Array>;
37
+ }
38
+
39
+ declare class GrfNode extends GrfBase<number> {
40
+ constructor(fd: number);
41
+ getStreamBuffer(fd: number, offset: number, length: number): Promise<Uint8Array>;
42
+ }
43
+
44
+ export { GrfBrowser, GrfNode, type TFileEntry };
@@ -0,0 +1,2 @@
1
+ "use strict";var GrfLoader=(()=>{var Wa=Object.create;var qe=Object.defineProperty;var $a=Object.getOwnPropertyDescriptor;var Ja=Object.getOwnPropertyNames;var Qa=Object.getPrototypeOf,er=Object.prototype.hasOwnProperty;var tr=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(a,t)=>(typeof require<"u"?require:a)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var R=(e,a)=>()=>(a||e((a={exports:{}}).exports,a),a.exports),ir=(e,a)=>{for(var t in a)qe(e,t,{get:a[t],enumerable:!0})},ei=(e,a,t,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of Ja(a))!er.call(e,r)&&r!==t&&qe(e,r,{get:()=>a[r],enumerable:!(i=$a(a,r))||i.enumerable});return e};var ti=(e,a,t)=>(t=e!=null?Wa(Qa(e)):{},ei(a||!e||!e.__esModule?qe(t,"default",{value:e,enumerable:!0}):t,e)),ar=e=>ei(qe({},"__esModule",{value:!0}),e);var $=R(F=>{"use strict";var rr=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function nr(e,a){return Object.prototype.hasOwnProperty.call(e,a)}F.assign=function(e){for(var a=Array.prototype.slice.call(arguments,1);a.length;){var t=a.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(var i in t)nr(t,i)&&(e[i]=t[i])}}return e};F.shrinkBuf=function(e,a){return e.length===a?e:e.subarray?e.subarray(0,a):(e.length=a,e)};var fr={arraySet:function(e,a,t,i,r){if(a.subarray&&e.subarray){e.set(a.subarray(t,t+i),r);return}for(var n=0;n<i;n++)e[r+n]=a[t+n]},flattenChunks:function(e){var a,t,i,r,n,o;for(i=0,a=0,t=e.length;a<t;a++)i+=e[a].length;for(o=new Uint8Array(i),r=0,a=0,t=e.length;a<t;a++)n=e[a],o.set(n,r),r+=n.length;return o}},or={arraySet:function(e,a,t,i,r){for(var n=0;n<i;n++)e[r+n]=a[t+n]},flattenChunks:function(e){return[].concat.apply([],e)}};F.setTyped=function(e){e?(F.Buf8=Uint8Array,F.Buf16=Uint16Array,F.Buf32=Int32Array,F.assign(F,fr)):(F.Buf8=Array,F.Buf16=Array,F.Buf32=Array,F.assign(F,or))};F.setTyped(rr)});var mi=R(ge=>{"use strict";var lr=$(),hr=4,ii=0,ai=1,_r=2;function we(e){for(var a=e.length;--a>=0;)e[a]=0}var ur=0,hi=1,sr=2,dr=3,cr=258,kt=29,Re=256,De=Re+1+kt,xe=30,yt=19,_i=2*De+1,le=15,vt=16,vr=7,Et=256,ui=16,si=17,di=18,bt=[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],We=[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],xr=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ci=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],wr=512,J=new Array((De+2)*2);we(J);var ze=new Array(xe*2);we(ze);var Ue=new Array(wr);we(Ue);var Ie=new Array(cr-dr+1);we(Ie);var mt=new Array(kt);we(mt);var $e=new Array(xe);we($e);function xt(e,a,t,i,r){this.static_tree=e,this.extra_bits=a,this.extra_base=t,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var vi,xi,wi;function wt(e,a){this.dyn_tree=e,this.max_code=0,this.stat_desc=a}function gi(e){return e<256?Ue[e]:Ue[256+(e>>>7)]}function Ne(e,a){e.pending_buf[e.pending++]=a&255,e.pending_buf[e.pending++]=a>>>8&255}function L(e,a,t){e.bi_valid>vt-t?(e.bi_buf|=a<<e.bi_valid&65535,Ne(e,e.bi_buf),e.bi_buf=a>>vt-e.bi_valid,e.bi_valid+=t-vt):(e.bi_buf|=a<<e.bi_valid&65535,e.bi_valid+=t)}function G(e,a,t){L(e,t[a*2],t[a*2+1])}function bi(e,a){var t=0;do t|=e&1,e>>>=1,t<<=1;while(--a>0);return t>>>1}function gr(e){e.bi_valid===16?(Ne(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)}function br(e,a){var t=a.dyn_tree,i=a.max_code,r=a.stat_desc.static_tree,n=a.stat_desc.has_stree,o=a.stat_desc.extra_bits,l=a.stat_desc.extra_base,w=a.stat_desc.max_length,h,s,A,g,v,y,k=0;for(g=0;g<=le;g++)e.bl_count[g]=0;for(t[e.heap[e.heap_max]*2+1]=0,h=e.heap_max+1;h<_i;h++)s=e.heap[h],g=t[t[s*2+1]*2+1]+1,g>w&&(g=w,k++),t[s*2+1]=g,!(s>i)&&(e.bl_count[g]++,v=0,s>=l&&(v=o[s-l]),y=t[s*2],e.opt_len+=y*(g+v),n&&(e.static_len+=y*(r[s*2+1]+v)));if(k!==0){do{for(g=w-1;e.bl_count[g]===0;)g--;e.bl_count[g]--,e.bl_count[g+1]+=2,e.bl_count[w]--,k-=2}while(k>0);for(g=w;g!==0;g--)for(s=e.bl_count[g];s!==0;)A=e.heap[--h],!(A>i)&&(t[A*2+1]!==g&&(e.opt_len+=(g-t[A*2+1])*t[A*2],t[A*2+1]=g),s--)}}function pi(e,a,t){var i=new Array(le+1),r=0,n,o;for(n=1;n<=le;n++)i[n]=r=r+t[n-1]<<1;for(o=0;o<=a;o++){var l=e[o*2+1];l!==0&&(e[o*2]=bi(i[l]++,l))}}function pr(){var e,a,t,i,r,n=new Array(le+1);for(t=0,i=0;i<kt-1;i++)for(mt[i]=t,e=0;e<1<<bt[i];e++)Ie[t++]=i;for(Ie[t-1]=i,r=0,i=0;i<16;i++)for($e[i]=r,e=0;e<1<<We[i];e++)Ue[r++]=i;for(r>>=7;i<xe;i++)for($e[i]=r<<7,e=0;e<1<<We[i]-7;e++)Ue[256+r++]=i;for(a=0;a<=le;a++)n[a]=0;for(e=0;e<=143;)J[e*2+1]=8,e++,n[8]++;for(;e<=255;)J[e*2+1]=9,e++,n[9]++;for(;e<=279;)J[e*2+1]=7,e++,n[7]++;for(;e<=287;)J[e*2+1]=8,e++,n[8]++;for(pi(J,De+1,n),e=0;e<xe;e++)ze[e*2+1]=5,ze[e*2]=bi(e,5);vi=new xt(J,bt,Re+1,De,le),xi=new xt(ze,We,0,xe,le),wi=new xt(new Array(0),xr,0,yt,vr)}function ki(e){var a;for(a=0;a<De;a++)e.dyn_ltree[a*2]=0;for(a=0;a<xe;a++)e.dyn_dtree[a*2]=0;for(a=0;a<yt;a++)e.bl_tree[a*2]=0;e.dyn_ltree[Et*2]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function yi(e){e.bi_valid>8?Ne(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function kr(e,a,t,i){yi(e),i&&(Ne(e,t),Ne(e,~t)),lr.arraySet(e.pending_buf,e.window,a,t,e.pending),e.pending+=t}function ri(e,a,t,i){var r=a*2,n=t*2;return e[r]<e[n]||e[r]===e[n]&&i[a]<=i[t]}function gt(e,a,t){for(var i=e.heap[t],r=t<<1;r<=e.heap_len&&(r<e.heap_len&&ri(a,e.heap[r+1],e.heap[r],e.depth)&&r++,!ri(a,i,e.heap[r],e.depth));)e.heap[t]=e.heap[r],t=r,r<<=1;e.heap[t]=i}function ni(e,a,t){var i,r,n=0,o,l;if(e.last_lit!==0)do i=e.pending_buf[e.d_buf+n*2]<<8|e.pending_buf[e.d_buf+n*2+1],r=e.pending_buf[e.l_buf+n],n++,i===0?G(e,r,a):(o=Ie[r],G(e,o+Re+1,a),l=bt[o],l!==0&&(r-=mt[o],L(e,r,l)),i--,o=gi(i),G(e,o,t),l=We[o],l!==0&&(i-=$e[o],L(e,i,l)));while(n<e.last_lit);G(e,Et,a)}function pt(e,a){var t=a.dyn_tree,i=a.stat_desc.static_tree,r=a.stat_desc.has_stree,n=a.stat_desc.elems,o,l,w=-1,h;for(e.heap_len=0,e.heap_max=_i,o=0;o<n;o++)t[o*2]!==0?(e.heap[++e.heap_len]=w=o,e.depth[o]=0):t[o*2+1]=0;for(;e.heap_len<2;)h=e.heap[++e.heap_len]=w<2?++w:0,t[h*2]=1,e.depth[h]=0,e.opt_len--,r&&(e.static_len-=i[h*2+1]);for(a.max_code=w,o=e.heap_len>>1;o>=1;o--)gt(e,t,o);h=n;do o=e.heap[1],e.heap[1]=e.heap[e.heap_len--],gt(e,t,1),l=e.heap[1],e.heap[--e.heap_max]=o,e.heap[--e.heap_max]=l,t[h*2]=t[o*2]+t[l*2],e.depth[h]=(e.depth[o]>=e.depth[l]?e.depth[o]:e.depth[l])+1,t[o*2+1]=t[l*2+1]=h,e.heap[1]=h++,gt(e,t,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],br(e,a),pi(t,w,e.bl_count)}function fi(e,a,t){var i,r=-1,n,o=a[0*2+1],l=0,w=7,h=4;for(o===0&&(w=138,h=3),a[(t+1)*2+1]=65535,i=0;i<=t;i++)n=o,o=a[(i+1)*2+1],!(++l<w&&n===o)&&(l<h?e.bl_tree[n*2]+=l:n!==0?(n!==r&&e.bl_tree[n*2]++,e.bl_tree[ui*2]++):l<=10?e.bl_tree[si*2]++:e.bl_tree[di*2]++,l=0,r=n,o===0?(w=138,h=3):n===o?(w=6,h=3):(w=7,h=4))}function oi(e,a,t){var i,r=-1,n,o=a[0*2+1],l=0,w=7,h=4;for(o===0&&(w=138,h=3),i=0;i<=t;i++)if(n=o,o=a[(i+1)*2+1],!(++l<w&&n===o)){if(l<h)do G(e,n,e.bl_tree);while(--l!==0);else n!==0?(n!==r&&(G(e,n,e.bl_tree),l--),G(e,ui,e.bl_tree),L(e,l-3,2)):l<=10?(G(e,si,e.bl_tree),L(e,l-3,3)):(G(e,di,e.bl_tree),L(e,l-11,7));l=0,r=n,o===0?(w=138,h=3):n===o?(w=6,h=3):(w=7,h=4)}}function yr(e){var a;for(fi(e,e.dyn_ltree,e.l_desc.max_code),fi(e,e.dyn_dtree,e.d_desc.max_code),pt(e,e.bl_desc),a=yt-1;a>=3&&e.bl_tree[ci[a]*2+1]===0;a--);return e.opt_len+=3*(a+1)+5+5+4,a}function Er(e,a,t,i){var r;for(L(e,a-257,5),L(e,t-1,5),L(e,i-4,4),r=0;r<i;r++)L(e,e.bl_tree[ci[r]*2+1],3);oi(e,e.dyn_ltree,a-1),oi(e,e.dyn_dtree,t-1)}function mr(e){var a=4093624447,t;for(t=0;t<=31;t++,a>>>=1)if(a&1&&e.dyn_ltree[t*2]!==0)return ii;if(e.dyn_ltree[9*2]!==0||e.dyn_ltree[10*2]!==0||e.dyn_ltree[13*2]!==0)return ai;for(t=32;t<Re;t++)if(e.dyn_ltree[t*2]!==0)return ai;return ii}var li=!1;function Ar(e){li||(pr(),li=!0),e.l_desc=new wt(e.dyn_ltree,vi),e.d_desc=new wt(e.dyn_dtree,xi),e.bl_desc=new wt(e.bl_tree,wi),e.bi_buf=0,e.bi_valid=0,ki(e)}function Ei(e,a,t,i){L(e,(ur<<1)+(i?1:0),3),kr(e,a,t,!0)}function Sr(e){L(e,hi<<1,3),G(e,Et,J),gr(e)}function Br(e,a,t,i){var r,n,o=0;e.level>0?(e.strm.data_type===_r&&(e.strm.data_type=mr(e)),pt(e,e.l_desc),pt(e,e.d_desc),o=yr(e),r=e.opt_len+3+7>>>3,n=e.static_len+3+7>>>3,n<=r&&(r=n)):r=n=t+5,t+4<=r&&a!==-1?Ei(e,a,t,i):e.strategy===hr||n===r?(L(e,(hi<<1)+(i?1:0),3),ni(e,J,ze)):(L(e,(sr<<1)+(i?1:0),3),Er(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),ni(e,e.dyn_ltree,e.dyn_dtree)),ki(e),i&&yi(e)}function Tr(e,a,t){return e.pending_buf[e.d_buf+e.last_lit*2]=a>>>8&255,e.pending_buf[e.d_buf+e.last_lit*2+1]=a&255,e.pending_buf[e.l_buf+e.last_lit]=t&255,e.last_lit++,a===0?e.dyn_ltree[t*2]++:(e.matches++,a--,e.dyn_ltree[(Ie[t]+Re+1)*2]++,e.dyn_dtree[gi(a)*2]++),e.last_lit===e.lit_bufsize-1}ge._tr_init=Ar;ge._tr_stored_block=Ei;ge._tr_flush_block=Br;ge._tr_tally=Tr;ge._tr_align=Sr});var At=R((wf,Ai)=>{"use strict";function zr(e,a,t,i){for(var r=e&65535|0,n=e>>>16&65535|0,o=0;t!==0;){o=t>2e3?2e3:t,t-=o;do r=r+a[i++]|0,n=n+r|0;while(--o);r%=65521,n%=65521}return r|n<<16|0}Ai.exports=zr});var St=R((gf,Si)=>{"use strict";function Dr(){for(var e,a=[],t=0;t<256;t++){e=t;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;a[t]=e}return a}var Ur=Dr();function Ir(e,a,t,i){var r=Ur,n=i+t;e^=-1;for(var o=i;o<n;o++)e=e>>>8^r[(e^a[o])&255];return e^-1}Si.exports=Ir});var Je=R((bf,Bi)=>{"use strict";Bi.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var Fi=R(q=>{"use strict";var C=$(),M=mi(),Ui=At(),te=St(),Nr=Je(),se=0,Rr=1,Zr=3,fe=4,Ti=5,X=0,zi=1,H=-2,Fr=-3,Bt=-5,Cr=-1,Lr=1,Qe=2,Or=3,Mr=4,Hr=0,Pr=2,at=8,Kr=9,Yr=15,jr=8,Gr=29,Vr=256,zt=Vr+1+Gr,Xr=30,qr=19,Wr=2*zt+1,$r=15,B=3,re=258,Y=re+B+1,Jr=32,rt=42,Dt=69,et=73,tt=91,it=103,he=113,Fe=666,N=1,Ce=2,_e=3,ke=4,Qr=3;function ne(e,a){return e.msg=Nr[a],a}function Di(e){return(e<<1)-(e>4?9:0)}function ae(e){for(var a=e.length;--a>=0;)e[a]=0}function ie(e){var a=e.state,t=a.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(C.arraySet(e.output,a.pending_buf,a.pending_out,t,e.next_out),e.next_out+=t,a.pending_out+=t,e.total_out+=t,e.avail_out-=t,a.pending-=t,a.pending===0&&(a.pending_out=0))}function Z(e,a){M._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,a),e.block_start=e.strstart,ie(e.strm)}function T(e,a){e.pending_buf[e.pending++]=a}function Ze(e,a){e.pending_buf[e.pending++]=a>>>8&255,e.pending_buf[e.pending++]=a&255}function en(e,a,t,i){var r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,C.arraySet(a,e.input,e.next_in,r,t),e.state.wrap===1?e.adler=Ui(e.adler,a,r,t):e.state.wrap===2&&(e.adler=te(e.adler,a,r,t)),e.next_in+=r,e.total_in+=r,r)}function Ii(e,a){var t=e.max_chain_length,i=e.strstart,r,n,o=e.prev_length,l=e.nice_match,w=e.strstart>e.w_size-Y?e.strstart-(e.w_size-Y):0,h=e.window,s=e.w_mask,A=e.prev,g=e.strstart+re,v=h[i+o-1],y=h[i+o];e.prev_length>=e.good_match&&(t>>=2),l>e.lookahead&&(l=e.lookahead);do if(r=a,!(h[r+o]!==y||h[r+o-1]!==v||h[r]!==h[i]||h[++r]!==h[i+1])){i+=2,r++;do;while(h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&h[++i]===h[++r]&&i<g);if(n=re-(g-i),i=g-re,n>o){if(e.match_start=a,o=n,n>=l)break;v=h[i+o-1],y=h[i+o]}}while((a=A[a&s])>w&&--t!==0);return o<=e.lookahead?o:e.lookahead}function ue(e){var a=e.w_size,t,i,r,n,o;do{if(n=e.window_size-e.lookahead-e.strstart,e.strstart>=a+(a-Y)){C.arraySet(e.window,e.window,a,a,0),e.match_start-=a,e.strstart-=a,e.block_start-=a,i=e.hash_size,t=i;do r=e.head[--t],e.head[t]=r>=a?r-a:0;while(--i);i=a,t=i;do r=e.prev[--t],e.prev[t]=r>=a?r-a:0;while(--i);n+=a}if(e.strm.avail_in===0)break;if(i=en(e.strm,e.window,e.strstart+e.lookahead,n),e.lookahead+=i,e.lookahead+e.insert>=B)for(o=e.strstart-e.insert,e.ins_h=e.window[o],e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[o+B-1])&e.hash_mask,e.prev[o&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=o,o++,e.insert--,!(e.lookahead+e.insert<B)););}while(e.lookahead<Y&&e.strm.avail_in!==0)}function tn(e,a){var t=65535;for(t>e.pending_buf_size-5&&(t=e.pending_buf_size-5);;){if(e.lookahead<=1){if(ue(e),e.lookahead===0&&a===se)return N;if(e.lookahead===0)break}e.strstart+=e.lookahead,e.lookahead=0;var i=e.block_start+t;if((e.strstart===0||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,Z(e,!1),e.strm.avail_out===0)||e.strstart-e.block_start>=e.w_size-Y&&(Z(e,!1),e.strm.avail_out===0))return N}return e.insert=0,a===fe?(Z(e,!0),e.strm.avail_out===0?_e:ke):(e.strstart>e.block_start&&(Z(e,!1),e.strm.avail_out===0),N)}function Tt(e,a){for(var t,i;;){if(e.lookahead<Y){if(ue(e),e.lookahead<Y&&a===se)return N;if(e.lookahead===0)break}if(t=0,e.lookahead>=B&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+B-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),t!==0&&e.strstart-t<=e.w_size-Y&&(e.match_length=Ii(e,t)),e.match_length>=B)if(i=M._tr_tally(e,e.strstart-e.match_start,e.match_length-B),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=B){e.match_length--;do e.strstart++,e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+B-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else i=M._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Z(e,!1),e.strm.avail_out===0))return N}return e.insert=e.strstart<B-1?e.strstart:B-1,a===fe?(Z(e,!0),e.strm.avail_out===0?_e:ke):e.last_lit&&(Z(e,!1),e.strm.avail_out===0)?N:Ce}function be(e,a){for(var t,i,r;;){if(e.lookahead<Y){if(ue(e),e.lookahead<Y&&a===se)return N;if(e.lookahead===0)break}if(t=0,e.lookahead>=B&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+B-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=B-1,t!==0&&e.prev_length<e.max_lazy_match&&e.strstart-t<=e.w_size-Y&&(e.match_length=Ii(e,t),e.match_length<=5&&(e.strategy===Lr||e.match_length===B&&e.strstart-e.match_start>4096)&&(e.match_length=B-1)),e.prev_length>=B&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-B,i=M._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-B),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+B-1])&e.hash_mask,t=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=B-1,e.strstart++,i&&(Z(e,!1),e.strm.avail_out===0))return N}else if(e.match_available){if(i=M._tr_tally(e,0,e.window[e.strstart-1]),i&&Z(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return N}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=M._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<B-1?e.strstart:B-1,a===fe?(Z(e,!0),e.strm.avail_out===0?_e:ke):e.last_lit&&(Z(e,!1),e.strm.avail_out===0)?N:Ce}function an(e,a){for(var t,i,r,n,o=e.window;;){if(e.lookahead<=re){if(ue(e),e.lookahead<=re&&a===se)return N;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=B&&e.strstart>0&&(r=e.strstart-1,i=o[r],i===o[++r]&&i===o[++r]&&i===o[++r])){n=e.strstart+re;do;while(i===o[++r]&&i===o[++r]&&i===o[++r]&&i===o[++r]&&i===o[++r]&&i===o[++r]&&i===o[++r]&&i===o[++r]&&r<n);e.match_length=re-(n-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=B?(t=M._tr_tally(e,1,e.match_length-B),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(t=M._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),t&&(Z(e,!1),e.strm.avail_out===0))return N}return e.insert=0,a===fe?(Z(e,!0),e.strm.avail_out===0?_e:ke):e.last_lit&&(Z(e,!1),e.strm.avail_out===0)?N:Ce}function rn(e,a){for(var t;;){if(e.lookahead===0&&(ue(e),e.lookahead===0)){if(a===se)return N;break}if(e.match_length=0,t=M._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,t&&(Z(e,!1),e.strm.avail_out===0))return N}return e.insert=0,a===fe?(Z(e,!0),e.strm.avail_out===0?_e:ke):e.last_lit&&(Z(e,!1),e.strm.avail_out===0)?N:Ce}function V(e,a,t,i,r){this.good_length=e,this.max_lazy=a,this.nice_length=t,this.max_chain=i,this.func=r}var pe;pe=[new V(0,0,0,0,tn),new V(4,4,8,4,Tt),new V(4,5,16,8,Tt),new V(4,6,32,32,Tt),new V(4,4,16,16,be),new V(8,16,32,32,be),new V(8,16,128,128,be),new V(8,32,128,256,be),new V(32,128,258,1024,be),new V(32,258,258,4096,be)];function nn(e){e.window_size=2*e.w_size,ae(e.head),e.max_lazy_match=pe[e.level].max_lazy,e.good_match=pe[e.level].good_length,e.nice_match=pe[e.level].nice_length,e.max_chain_length=pe[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=B-1,e.match_available=0,e.ins_h=0}function fn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=at,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new C.Buf16(Wr*2),this.dyn_dtree=new C.Buf16((2*Xr+1)*2),this.bl_tree=new C.Buf16((2*qr+1)*2),ae(this.dyn_ltree),ae(this.dyn_dtree),ae(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new C.Buf16($r+1),this.heap=new C.Buf16(2*zt+1),ae(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new C.Buf16(2*zt+1),ae(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ni(e){var a;return!e||!e.state?ne(e,H):(e.total_in=e.total_out=0,e.data_type=Pr,a=e.state,a.pending=0,a.pending_out=0,a.wrap<0&&(a.wrap=-a.wrap),a.status=a.wrap?rt:he,e.adler=a.wrap===2?0:1,a.last_flush=se,M._tr_init(a),X)}function Ri(e){var a=Ni(e);return a===X&&nn(e.state),a}function on(e,a){return!e||!e.state||e.state.wrap!==2?H:(e.state.gzhead=a,X)}function Zi(e,a,t,i,r,n){if(!e)return H;var o=1;if(a===Cr&&(a=6),i<0?(o=0,i=-i):i>15&&(o=2,i-=16),r<1||r>Kr||t!==at||i<8||i>15||a<0||a>9||n<0||n>Mr)return ne(e,H);i===8&&(i=9);var l=new fn;return e.state=l,l.strm=e,l.wrap=o,l.gzhead=null,l.w_bits=i,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=r+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+B-1)/B),l.window=new C.Buf8(l.w_size*2),l.head=new C.Buf16(l.hash_size),l.prev=new C.Buf16(l.w_size),l.lit_bufsize=1<<r+6,l.pending_buf_size=l.lit_bufsize*4,l.pending_buf=new C.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=a,l.strategy=n,l.method=t,Ri(e)}function ln(e,a){return Zi(e,a,at,Yr,jr,Hr)}function hn(e,a){var t,i,r,n;if(!e||!e.state||a>Ti||a<0)return e?ne(e,H):H;if(i=e.state,!e.output||!e.input&&e.avail_in!==0||i.status===Fe&&a!==fe)return ne(e,e.avail_out===0?Bt:H);if(i.strm=e,t=i.last_flush,i.last_flush=a,i.status===rt)if(i.wrap===2)e.adler=0,T(i,31),T(i,139),T(i,8),i.gzhead?(T(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),T(i,i.gzhead.time&255),T(i,i.gzhead.time>>8&255),T(i,i.gzhead.time>>16&255),T(i,i.gzhead.time>>24&255),T(i,i.level===9?2:i.strategy>=Qe||i.level<2?4:0),T(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(T(i,i.gzhead.extra.length&255),T(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=te(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Dt):(T(i,0),T(i,0),T(i,0),T(i,0),T(i,0),T(i,i.level===9?2:i.strategy>=Qe||i.level<2?4:0),T(i,Qr),i.status=he);else{var o=at+(i.w_bits-8<<4)<<8,l=-1;i.strategy>=Qe||i.level<2?l=0:i.level<6?l=1:i.level===6?l=2:l=3,o|=l<<6,i.strstart!==0&&(o|=Jr),o+=31-o%31,i.status=he,Ze(i,o),i.strstart!==0&&(Ze(i,e.adler>>>16),Ze(i,e.adler&65535)),e.adler=1}if(i.status===Dt)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(i.gzhead.extra.length&65535)&&!(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),ie(e),r=i.pending,i.pending===i.pending_buf_size));)T(i,i.gzhead.extra[i.gzindex]&255),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=et)}else i.status=et;if(i.status===et)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),ie(e),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}i.gzindex<i.gzhead.name.length?n=i.gzhead.name.charCodeAt(i.gzindex++)&255:n=0,T(i,n)}while(n!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),n===0&&(i.gzindex=0,i.status=tt)}else i.status=tt;if(i.status===tt)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),ie(e),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}i.gzindex<i.gzhead.comment.length?n=i.gzhead.comment.charCodeAt(i.gzindex++)&255:n=0,T(i,n)}while(n!==0);i.gzhead.hcrc&&i.pending>r&&(e.adler=te(e.adler,i.pending_buf,i.pending-r,r)),n===0&&(i.status=it)}else i.status=it;if(i.status===it&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ie(e),i.pending+2<=i.pending_buf_size&&(T(i,e.adler&255),T(i,e.adler>>8&255),e.adler=0,i.status=he)):i.status=he),i.pending!==0){if(ie(e),e.avail_out===0)return i.last_flush=-1,X}else if(e.avail_in===0&&Di(a)<=Di(t)&&a!==fe)return ne(e,Bt);if(i.status===Fe&&e.avail_in!==0)return ne(e,Bt);if(e.avail_in!==0||i.lookahead!==0||a!==se&&i.status!==Fe){var w=i.strategy===Qe?rn(i,a):i.strategy===Or?an(i,a):pe[i.level].func(i,a);if((w===_e||w===ke)&&(i.status=Fe),w===N||w===_e)return e.avail_out===0&&(i.last_flush=-1),X;if(w===Ce&&(a===Rr?M._tr_align(i):a!==Ti&&(M._tr_stored_block(i,0,0,!1),a===Zr&&(ae(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),ie(e),e.avail_out===0))return i.last_flush=-1,X}return a!==fe?X:i.wrap<=0?zi:(i.wrap===2?(T(i,e.adler&255),T(i,e.adler>>8&255),T(i,e.adler>>16&255),T(i,e.adler>>24&255),T(i,e.total_in&255),T(i,e.total_in>>8&255),T(i,e.total_in>>16&255),T(i,e.total_in>>24&255)):(Ze(i,e.adler>>>16),Ze(i,e.adler&65535)),ie(e),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?X:zi)}function _n(e){var a;return!e||!e.state?H:(a=e.state.status,a!==rt&&a!==Dt&&a!==et&&a!==tt&&a!==it&&a!==he&&a!==Fe?ne(e,H):(e.state=null,a===he?ne(e,Fr):X))}function un(e,a){var t=a.length,i,r,n,o,l,w,h,s;if(!e||!e.state||(i=e.state,o=i.wrap,o===2||o===1&&i.status!==rt||i.lookahead))return H;for(o===1&&(e.adler=Ui(e.adler,a,t,0)),i.wrap=0,t>=i.w_size&&(o===0&&(ae(i.head),i.strstart=0,i.block_start=0,i.insert=0),s=new C.Buf8(i.w_size),C.arraySet(s,a,t-i.w_size,i.w_size,0),a=s,t=i.w_size),l=e.avail_in,w=e.next_in,h=e.input,e.avail_in=t,e.next_in=0,e.input=a,ue(i);i.lookahead>=B;){r=i.strstart,n=i.lookahead-(B-1);do i.ins_h=(i.ins_h<<i.hash_shift^i.window[r+B-1])&i.hash_mask,i.prev[r&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=r,r++;while(--n);i.strstart=r,i.lookahead=B-1,ue(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=B-1,i.match_available=0,e.next_in=w,e.input=h,e.avail_in=l,i.wrap=o,X}q.deflateInit=ln;q.deflateInit2=Zi;q.deflateReset=Ri;q.deflateResetKeep=Ni;q.deflateSetHeader=on;q.deflate=hn;q.deflateEnd=_n;q.deflateSetDictionary=un;q.deflateInfo="pako deflate (from Nodeca project)"});var Ut=R(ye=>{"use strict";var nt=$(),Ci=!0,Li=!0;try{String.fromCharCode.apply(null,[0])}catch{Ci=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Li=!1}var Le=new nt.Buf8(256);for(Q=0;Q<256;Q++)Le[Q]=Q>=252?6:Q>=248?5:Q>=240?4:Q>=224?3:Q>=192?2:1;var Q;Le[254]=Le[254]=1;ye.string2buf=function(e){var a,t,i,r,n,o=e.length,l=0;for(r=0;r<o;r++)t=e.charCodeAt(r),(t&64512)===55296&&r+1<o&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(t=65536+(t-55296<<10)+(i-56320),r++)),l+=t<128?1:t<2048?2:t<65536?3:4;for(a=new nt.Buf8(l),n=0,r=0;n<l;r++)t=e.charCodeAt(r),(t&64512)===55296&&r+1<o&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(t=65536+(t-55296<<10)+(i-56320),r++)),t<128?a[n++]=t:t<2048?(a[n++]=192|t>>>6,a[n++]=128|t&63):t<65536?(a[n++]=224|t>>>12,a[n++]=128|t>>>6&63,a[n++]=128|t&63):(a[n++]=240|t>>>18,a[n++]=128|t>>>12&63,a[n++]=128|t>>>6&63,a[n++]=128|t&63);return a};function Oi(e,a){if(a<65534&&(e.subarray&&Li||!e.subarray&&Ci))return String.fromCharCode.apply(null,nt.shrinkBuf(e,a));for(var t="",i=0;i<a;i++)t+=String.fromCharCode(e[i]);return t}ye.buf2binstring=function(e){return Oi(e,e.length)};ye.binstring2buf=function(e){for(var a=new nt.Buf8(e.length),t=0,i=a.length;t<i;t++)a[t]=e.charCodeAt(t);return a};ye.buf2string=function(e,a){var t,i,r,n,o=a||e.length,l=new Array(o*2);for(i=0,t=0;t<o;){if(r=e[t++],r<128){l[i++]=r;continue}if(n=Le[r],n>4){l[i++]=65533,t+=n-1;continue}for(r&=n===2?31:n===3?15:7;n>1&&t<o;)r=r<<6|e[t++]&63,n--;if(n>1){l[i++]=65533;continue}r<65536?l[i++]=r:(r-=65536,l[i++]=55296|r>>10&1023,l[i++]=56320|r&1023)}return Oi(l,i)};ye.utf8border=function(e,a){var t;for(a=a||e.length,a>e.length&&(a=e.length),t=a-1;t>=0&&(e[t]&192)===128;)t--;return t<0||t===0?a:t+Le[e[t]]>a?t:a}});var It=R((yf,Mi)=>{"use strict";function sn(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}Mi.exports=sn});var Yi=R(He=>{"use strict";var Oe=Fi(),Me=$(),Rt=Ut(),Zt=Je(),dn=It(),Ki=Object.prototype.toString,cn=0,Nt=4,Ee=0,Hi=1,Pi=2,vn=-1,xn=0,wn=8;function de(e){if(!(this instanceof de))return new de(e);this.options=Me.assign({level:vn,method:wn,chunkSize:16384,windowBits:15,memLevel:8,strategy:xn,to:""},e||{});var a=this.options;a.raw&&a.windowBits>0?a.windowBits=-a.windowBits:a.gzip&&a.windowBits>0&&a.windowBits<16&&(a.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new dn,this.strm.avail_out=0;var t=Oe.deflateInit2(this.strm,a.level,a.method,a.windowBits,a.memLevel,a.strategy);if(t!==Ee)throw new Error(Zt[t]);if(a.header&&Oe.deflateSetHeader(this.strm,a.header),a.dictionary){var i;if(typeof a.dictionary=="string"?i=Rt.string2buf(a.dictionary):Ki.call(a.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(a.dictionary):i=a.dictionary,t=Oe.deflateSetDictionary(this.strm,i),t!==Ee)throw new Error(Zt[t]);this._dict_set=!0}}de.prototype.push=function(e,a){var t=this.strm,i=this.options.chunkSize,r,n;if(this.ended)return!1;n=a===~~a?a:a===!0?Nt:cn,typeof e=="string"?t.input=Rt.string2buf(e):Ki.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;do{if(t.avail_out===0&&(t.output=new Me.Buf8(i),t.next_out=0,t.avail_out=i),r=Oe.deflate(t,n),r!==Hi&&r!==Ee)return this.onEnd(r),this.ended=!0,!1;(t.avail_out===0||t.avail_in===0&&(n===Nt||n===Pi))&&(this.options.to==="string"?this.onData(Rt.buf2binstring(Me.shrinkBuf(t.output,t.next_out))):this.onData(Me.shrinkBuf(t.output,t.next_out)))}while((t.avail_in>0||t.avail_out===0)&&r!==Hi);return n===Nt?(r=Oe.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ee):(n===Pi&&(this.onEnd(Ee),t.avail_out=0),!0)};de.prototype.onData=function(e){this.chunks.push(e)};de.prototype.onEnd=function(e){e===Ee&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Me.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ft(e,a){var t=new de(a);if(t.push(e,!0),t.err)throw t.msg||Zt[t.err];return t.result}function gn(e,a){return a=a||{},a.raw=!0,Ft(e,a)}function bn(e,a){return a=a||{},a.gzip=!0,Ft(e,a)}He.Deflate=de;He.deflate=Ft;He.deflateRaw=gn;He.gzip=bn});var Gi=R((mf,ji)=>{"use strict";var ft=30,pn=12;ji.exports=function(a,t){var i,r,n,o,l,w,h,s,A,g,v,y,k,S,f,_,u,d,c,x,b,p,m,D,E;i=a.state,r=a.next_in,D=a.input,n=r+(a.avail_in-5),o=a.next_out,E=a.output,l=o-(t-a.avail_out),w=o+(a.avail_out-257),h=i.dmax,s=i.wsize,A=i.whave,g=i.wnext,v=i.window,y=i.hold,k=i.bits,S=i.lencode,f=i.distcode,_=(1<<i.lenbits)-1,u=(1<<i.distbits)-1;e:do{k<15&&(y+=D[r++]<<k,k+=8,y+=D[r++]<<k,k+=8),d=S[y&_];t:for(;;){if(c=d>>>24,y>>>=c,k-=c,c=d>>>16&255,c===0)E[o++]=d&65535;else if(c&16){x=d&65535,c&=15,c&&(k<c&&(y+=D[r++]<<k,k+=8),x+=y&(1<<c)-1,y>>>=c,k-=c),k<15&&(y+=D[r++]<<k,k+=8,y+=D[r++]<<k,k+=8),d=f[y&u];i:for(;;){if(c=d>>>24,y>>>=c,k-=c,c=d>>>16&255,c&16){if(b=d&65535,c&=15,k<c&&(y+=D[r++]<<k,k+=8,k<c&&(y+=D[r++]<<k,k+=8)),b+=y&(1<<c)-1,b>h){a.msg="invalid distance too far back",i.mode=ft;break e}if(y>>>=c,k-=c,c=o-l,b>c){if(c=b-c,c>A&&i.sane){a.msg="invalid distance too far back",i.mode=ft;break e}if(p=0,m=v,g===0){if(p+=s-c,c<x){x-=c;do E[o++]=v[p++];while(--c);p=o-b,m=E}}else if(g<c){if(p+=s+g-c,c-=g,c<x){x-=c;do E[o++]=v[p++];while(--c);if(p=0,g<x){c=g,x-=c;do E[o++]=v[p++];while(--c);p=o-b,m=E}}}else if(p+=g-c,c<x){x-=c;do E[o++]=v[p++];while(--c);p=o-b,m=E}for(;x>2;)E[o++]=m[p++],E[o++]=m[p++],E[o++]=m[p++],x-=3;x&&(E[o++]=m[p++],x>1&&(E[o++]=m[p++]))}else{p=o-b;do E[o++]=E[p++],E[o++]=E[p++],E[o++]=E[p++],x-=3;while(x>2);x&&(E[o++]=E[p++],x>1&&(E[o++]=E[p++]))}}else if((c&64)===0){d=f[(d&65535)+(y&(1<<c)-1)];continue i}else{a.msg="invalid distance code",i.mode=ft;break e}break}}else if((c&64)===0){d=S[(d&65535)+(y&(1<<c)-1)];continue t}else if(c&32){i.mode=pn;break e}else{a.msg="invalid literal/length code",i.mode=ft;break e}break}}while(r<n&&o<w);x=k>>3,r-=x,k-=x<<3,y&=(1<<k)-1,a.next_in=r,a.next_out=o,a.avail_in=r<n?5+(n-r):5-(r-n),a.avail_out=o<w?257+(w-o):257-(o-w),i.hold=y,i.bits=k}});var Qi=R((Af,Ji)=>{"use strict";var Vi=$(),me=15,Xi=852,qi=592,Wi=0,Ct=1,$i=2,kn=[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,0,0],yn=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],En=[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,0,0],mn=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];Ji.exports=function(a,t,i,r,n,o,l,w){var h=w.bits,s=0,A=0,g=0,v=0,y=0,k=0,S=0,f=0,_=0,u=0,d,c,x,b,p,m=null,D=0,E,K=new Vi.Buf16(me+1),je=new Vi.Buf16(me+1),Ge=null,Jt=0,Qt,Ve,Xe;for(s=0;s<=me;s++)K[s]=0;for(A=0;A<r;A++)K[t[i+A]]++;for(y=h,v=me;v>=1&&K[v]===0;v--);if(y>v&&(y=v),v===0)return n[o++]=1<<24|64<<16|0,n[o++]=1<<24|64<<16|0,w.bits=1,0;for(g=1;g<v&&K[g]===0;g++);for(y<g&&(y=g),f=1,s=1;s<=me;s++)if(f<<=1,f-=K[s],f<0)return-1;if(f>0&&(a===Wi||v!==1))return-1;for(je[1]=0,s=1;s<me;s++)je[s+1]=je[s]+K[s];for(A=0;A<r;A++)t[i+A]!==0&&(l[je[t[i+A]]++]=A);if(a===Wi?(m=Ge=l,E=19):a===Ct?(m=kn,D-=257,Ge=yn,Jt-=257,E=256):(m=En,Ge=mn,E=-1),u=0,A=0,s=g,p=o,k=y,S=0,x=-1,_=1<<y,b=_-1,a===Ct&&_>Xi||a===$i&&_>qi)return 1;for(;;){Qt=s-S,l[A]<E?(Ve=0,Xe=l[A]):l[A]>E?(Ve=Ge[Jt+l[A]],Xe=m[D+l[A]]):(Ve=96,Xe=0),d=1<<s-S,c=1<<k,g=c;do c-=d,n[p+(u>>S)+c]=Qt<<24|Ve<<16|Xe|0;while(c!==0);for(d=1<<s-1;u&d;)d>>=1;if(d!==0?(u&=d-1,u+=d):u=0,A++,--K[s]===0){if(s===v)break;s=t[i+l[A]]}if(s>y&&(u&b)!==x){for(S===0&&(S=y),p+=g,k=s-S,f=1<<k;k+S<v&&(f-=K[k+S],!(f<=0));)k++,f<<=1;if(_+=1<<k,a===Ct&&_>Xi||a===$i&&_>qi)return 1;x=u&b,n[x]=y<<24|k<<16|p-o|0}}return u!==0&&(n[p+u]=s-S<<24|64<<16|0),w.bits=y,0}});var Ra=R(j=>{"use strict";var O=$(),Kt=At(),W=St(),An=Gi(),Pe=Qi(),Sn=0,Aa=1,Sa=2,ea=4,Bn=5,ot=6,ce=0,Tn=1,zn=2,P=-2,Ba=-3,Yt=-4,Dn=-5,ta=8,Ta=1,ia=2,aa=3,ra=4,na=5,fa=6,oa=7,la=8,ha=9,_a=10,_t=11,ee=12,Lt=13,ua=14,Ot=15,sa=16,da=17,ca=18,va=19,lt=20,ht=21,xa=22,wa=23,ga=24,ba=25,pa=26,Mt=27,ka=28,ya=29,U=30,jt=31,Un=32,In=852,Nn=592,Rn=15,Zn=Rn;function Ea(e){return(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24)}function Fn(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new O.Buf16(320),this.work=new O.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function za(e){var a;return!e||!e.state?P:(a=e.state,e.total_in=e.total_out=a.total=0,e.msg="",a.wrap&&(e.adler=a.wrap&1),a.mode=Ta,a.last=0,a.havedict=0,a.dmax=32768,a.head=null,a.hold=0,a.bits=0,a.lencode=a.lendyn=new O.Buf32(In),a.distcode=a.distdyn=new O.Buf32(Nn),a.sane=1,a.back=-1,ce)}function Da(e){var a;return!e||!e.state?P:(a=e.state,a.wsize=0,a.whave=0,a.wnext=0,za(e))}function Ua(e,a){var t,i;return!e||!e.state||(i=e.state,a<0?(t=0,a=-a):(t=(a>>4)+1,a<48&&(a&=15)),a&&(a<8||a>15))?P:(i.window!==null&&i.wbits!==a&&(i.window=null),i.wrap=t,i.wbits=a,Da(e))}function Ia(e,a){var t,i;return e?(i=new Fn,e.state=i,i.window=null,t=Ua(e,a),t!==ce&&(e.state=null),t):P}function Cn(e){return Ia(e,Zn)}var ma=!0,Ht,Pt;function Ln(e){if(ma){var a;for(Ht=new O.Buf32(512),Pt=new O.Buf32(32),a=0;a<144;)e.lens[a++]=8;for(;a<256;)e.lens[a++]=9;for(;a<280;)e.lens[a++]=7;for(;a<288;)e.lens[a++]=8;for(Pe(Aa,e.lens,0,288,Ht,0,e.work,{bits:9}),a=0;a<32;)e.lens[a++]=5;Pe(Sa,e.lens,0,32,Pt,0,e.work,{bits:5}),ma=!1}e.lencode=Ht,e.lenbits=9,e.distcode=Pt,e.distbits=5}function Na(e,a,t,i){var r,n=e.state;return n.window===null&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new O.Buf8(n.wsize)),i>=n.wsize?(O.arraySet(n.window,a,t-n.wsize,n.wsize,0),n.wnext=0,n.whave=n.wsize):(r=n.wsize-n.wnext,r>i&&(r=i),O.arraySet(n.window,a,t-i,r,n.wnext),i-=r,i?(O.arraySet(n.window,a,t-i,i,0),n.wnext=i,n.whave=n.wsize):(n.wnext+=r,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=r))),0}function On(e,a){var t,i,r,n,o,l,w,h,s,A,g,v,y,k,S=0,f,_,u,d,c,x,b,p,m=new O.Buf8(4),D,E,K=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&e.avail_in!==0)return P;t=e.state,t.mode===ee&&(t.mode=Lt),o=e.next_out,r=e.output,w=e.avail_out,n=e.next_in,i=e.input,l=e.avail_in,h=t.hold,s=t.bits,A=l,g=w,p=ce;e:for(;;)switch(t.mode){case Ta:if(t.wrap===0){t.mode=Lt;break}for(;s<16;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(t.wrap&2&&h===35615){t.check=0,m[0]=h&255,m[1]=h>>>8&255,t.check=W(t.check,m,2,0),h=0,s=0,t.mode=ia;break}if(t.flags=0,t.head&&(t.head.done=!1),!(t.wrap&1)||(((h&255)<<8)+(h>>8))%31){e.msg="incorrect header check",t.mode=U;break}if((h&15)!==ta){e.msg="unknown compression method",t.mode=U;break}if(h>>>=4,s-=4,b=(h&15)+8,t.wbits===0)t.wbits=b;else if(b>t.wbits){e.msg="invalid window size",t.mode=U;break}t.dmax=1<<b,e.adler=t.check=1,t.mode=h&512?_a:ee,h=0,s=0;break;case ia:for(;s<16;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(t.flags=h,(t.flags&255)!==ta){e.msg="unknown compression method",t.mode=U;break}if(t.flags&57344){e.msg="unknown header flags set",t.mode=U;break}t.head&&(t.head.text=h>>8&1),t.flags&512&&(m[0]=h&255,m[1]=h>>>8&255,t.check=W(t.check,m,2,0)),h=0,s=0,t.mode=aa;case aa:for(;s<32;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.head&&(t.head.time=h),t.flags&512&&(m[0]=h&255,m[1]=h>>>8&255,m[2]=h>>>16&255,m[3]=h>>>24&255,t.check=W(t.check,m,4,0)),h=0,s=0,t.mode=ra;case ra:for(;s<16;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.head&&(t.head.xflags=h&255,t.head.os=h>>8),t.flags&512&&(m[0]=h&255,m[1]=h>>>8&255,t.check=W(t.check,m,2,0)),h=0,s=0,t.mode=na;case na:if(t.flags&1024){for(;s<16;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.length=h,t.head&&(t.head.extra_len=h),t.flags&512&&(m[0]=h&255,m[1]=h>>>8&255,t.check=W(t.check,m,2,0)),h=0,s=0}else t.head&&(t.head.extra=null);t.mode=fa;case fa:if(t.flags&1024&&(v=t.length,v>l&&(v=l),v&&(t.head&&(b=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Array(t.head.extra_len)),O.arraySet(t.head.extra,i,n,v,b)),t.flags&512&&(t.check=W(t.check,i,v,n)),l-=v,n+=v,t.length-=v),t.length))break e;t.length=0,t.mode=oa;case oa:if(t.flags&2048){if(l===0)break e;v=0;do b=i[n+v++],t.head&&b&&t.length<65536&&(t.head.name+=String.fromCharCode(b));while(b&&v<l);if(t.flags&512&&(t.check=W(t.check,i,v,n)),l-=v,n+=v,b)break e}else t.head&&(t.head.name=null);t.length=0,t.mode=la;case la:if(t.flags&4096){if(l===0)break e;v=0;do b=i[n+v++],t.head&&b&&t.length<65536&&(t.head.comment+=String.fromCharCode(b));while(b&&v<l);if(t.flags&512&&(t.check=W(t.check,i,v,n)),l-=v,n+=v,b)break e}else t.head&&(t.head.comment=null);t.mode=ha;case ha:if(t.flags&512){for(;s<16;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(h!==(t.check&65535)){e.msg="header crc mismatch",t.mode=U;break}h=0,s=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=ee;break;case _a:for(;s<32;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}e.adler=t.check=Ea(h),h=0,s=0,t.mode=_t;case _t:if(t.havedict===0)return e.next_out=o,e.avail_out=w,e.next_in=n,e.avail_in=l,t.hold=h,t.bits=s,zn;e.adler=t.check=1,t.mode=ee;case ee:if(a===Bn||a===ot)break e;case Lt:if(t.last){h>>>=s&7,s-=s&7,t.mode=Mt;break}for(;s<3;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}switch(t.last=h&1,h>>>=1,s-=1,h&3){case 0:t.mode=ua;break;case 1:if(Ln(t),t.mode=lt,a===ot){h>>>=2,s-=2;break e}break;case 2:t.mode=da;break;case 3:e.msg="invalid block type",t.mode=U}h>>>=2,s-=2;break;case ua:for(h>>>=s&7,s-=s&7;s<32;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if((h&65535)!==(h>>>16^65535)){e.msg="invalid stored block lengths",t.mode=U;break}if(t.length=h&65535,h=0,s=0,t.mode=Ot,a===ot)break e;case Ot:t.mode=sa;case sa:if(v=t.length,v){if(v>l&&(v=l),v>w&&(v=w),v===0)break e;O.arraySet(r,i,n,v,o),l-=v,n+=v,w-=v,o+=v,t.length-=v;break}t.mode=ee;break;case da:for(;s<14;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(t.nlen=(h&31)+257,h>>>=5,s-=5,t.ndist=(h&31)+1,h>>>=5,s-=5,t.ncode=(h&15)+4,h>>>=4,s-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=U;break}t.have=0,t.mode=ca;case ca:for(;t.have<t.ncode;){for(;s<3;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.lens[K[t.have++]]=h&7,h>>>=3,s-=3}for(;t.have<19;)t.lens[K[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,D={bits:t.lenbits},p=Pe(Sn,t.lens,0,19,t.lencode,0,t.work,D),t.lenbits=D.bits,p){e.msg="invalid code lengths set",t.mode=U;break}t.have=0,t.mode=va;case va:for(;t.have<t.nlen+t.ndist;){for(;S=t.lencode[h&(1<<t.lenbits)-1],f=S>>>24,_=S>>>16&255,u=S&65535,!(f<=s);){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(u<16)h>>>=f,s-=f,t.lens[t.have++]=u;else{if(u===16){for(E=f+2;s<E;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(h>>>=f,s-=f,t.have===0){e.msg="invalid bit length repeat",t.mode=U;break}b=t.lens[t.have-1],v=3+(h&3),h>>>=2,s-=2}else if(u===17){for(E=f+3;s<E;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}h>>>=f,s-=f,b=0,v=3+(h&7),h>>>=3,s-=3}else{for(E=f+7;s<E;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}h>>>=f,s-=f,b=0,v=11+(h&127),h>>>=7,s-=7}if(t.have+v>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=U;break}for(;v--;)t.lens[t.have++]=b}}if(t.mode===U)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=U;break}if(t.lenbits=9,D={bits:t.lenbits},p=Pe(Aa,t.lens,0,t.nlen,t.lencode,0,t.work,D),t.lenbits=D.bits,p){e.msg="invalid literal/lengths set",t.mode=U;break}if(t.distbits=6,t.distcode=t.distdyn,D={bits:t.distbits},p=Pe(Sa,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,D),t.distbits=D.bits,p){e.msg="invalid distances set",t.mode=U;break}if(t.mode=lt,a===ot)break e;case lt:t.mode=ht;case ht:if(l>=6&&w>=258){e.next_out=o,e.avail_out=w,e.next_in=n,e.avail_in=l,t.hold=h,t.bits=s,An(e,g),o=e.next_out,r=e.output,w=e.avail_out,n=e.next_in,i=e.input,l=e.avail_in,h=t.hold,s=t.bits,t.mode===ee&&(t.back=-1);break}for(t.back=0;S=t.lencode[h&(1<<t.lenbits)-1],f=S>>>24,_=S>>>16&255,u=S&65535,!(f<=s);){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(_&&(_&240)===0){for(d=f,c=_,x=u;S=t.lencode[x+((h&(1<<d+c)-1)>>d)],f=S>>>24,_=S>>>16&255,u=S&65535,!(d+f<=s);){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}h>>>=d,s-=d,t.back+=d}if(h>>>=f,s-=f,t.back+=f,t.length=u,_===0){t.mode=pa;break}if(_&32){t.back=-1,t.mode=ee;break}if(_&64){e.msg="invalid literal/length code",t.mode=U;break}t.extra=_&15,t.mode=xa;case xa:if(t.extra){for(E=t.extra;s<E;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.length+=h&(1<<t.extra)-1,h>>>=t.extra,s-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=wa;case wa:for(;S=t.distcode[h&(1<<t.distbits)-1],f=S>>>24,_=S>>>16&255,u=S&65535,!(f<=s);){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if((_&240)===0){for(d=f,c=_,x=u;S=t.distcode[x+((h&(1<<d+c)-1)>>d)],f=S>>>24,_=S>>>16&255,u=S&65535,!(d+f<=s);){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}h>>>=d,s-=d,t.back+=d}if(h>>>=f,s-=f,t.back+=f,_&64){e.msg="invalid distance code",t.mode=U;break}t.offset=u,t.extra=_&15,t.mode=ga;case ga:if(t.extra){for(E=t.extra;s<E;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}t.offset+=h&(1<<t.extra)-1,h>>>=t.extra,s-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=U;break}t.mode=ba;case ba:if(w===0)break e;if(v=g-w,t.offset>v){if(v=t.offset-v,v>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=U;break}v>t.wnext?(v-=t.wnext,y=t.wsize-v):y=t.wnext-v,v>t.length&&(v=t.length),k=t.window}else k=r,y=o-t.offset,v=t.length;v>w&&(v=w),w-=v,t.length-=v;do r[o++]=k[y++];while(--v);t.length===0&&(t.mode=ht);break;case pa:if(w===0)break e;r[o++]=t.length,w--,t.mode=ht;break;case Mt:if(t.wrap){for(;s<32;){if(l===0)break e;l--,h|=i[n++]<<s,s+=8}if(g-=w,e.total_out+=g,t.total+=g,g&&(e.adler=t.check=t.flags?W(t.check,r,g,o-g):Kt(t.check,r,g,o-g)),g=w,(t.flags?h:Ea(h))!==t.check){e.msg="incorrect data check",t.mode=U;break}h=0,s=0}t.mode=ka;case ka:if(t.wrap&&t.flags){for(;s<32;){if(l===0)break e;l--,h+=i[n++]<<s,s+=8}if(h!==(t.total&4294967295)){e.msg="incorrect length check",t.mode=U;break}h=0,s=0}t.mode=ya;case ya:p=Tn;break e;case U:p=Ba;break e;case jt:return Yt;case Un:default:return P}return e.next_out=o,e.avail_out=w,e.next_in=n,e.avail_in=l,t.hold=h,t.bits=s,(t.wsize||g!==e.avail_out&&t.mode<U&&(t.mode<Mt||a!==ea))&&Na(e,e.output,e.next_out,g-e.avail_out)?(t.mode=jt,Yt):(A-=e.avail_in,g-=e.avail_out,e.total_in+=A,e.total_out+=g,t.total+=g,t.wrap&&g&&(e.adler=t.check=t.flags?W(t.check,r,g,e.next_out-g):Kt(t.check,r,g,e.next_out-g)),e.data_type=t.bits+(t.last?64:0)+(t.mode===ee?128:0)+(t.mode===lt||t.mode===Ot?256:0),(A===0&&g===0||a===ea)&&p===ce&&(p=Dn),p)}function Mn(e){if(!e||!e.state)return P;var a=e.state;return a.window&&(a.window=null),e.state=null,ce}function Hn(e,a){var t;return!e||!e.state||(t=e.state,(t.wrap&2)===0)?P:(t.head=a,a.done=!1,ce)}function Pn(e,a){var t=a.length,i,r,n;return!e||!e.state||(i=e.state,i.wrap!==0&&i.mode!==_t)?P:i.mode===_t&&(r=1,r=Kt(r,a,t,0),r!==i.check)?Ba:(n=Na(e,a,t,t),n?(i.mode=jt,Yt):(i.havedict=1,ce))}j.inflateReset=Da;j.inflateReset2=Ua;j.inflateResetKeep=za;j.inflateInit=Cn;j.inflateInit2=Ia;j.inflate=On;j.inflateEnd=Mn;j.inflateGetHeader=Hn;j.inflateSetDictionary=Pn;j.inflateInfo="pako inflate (from Nodeca project)"});var Gt=R((Bf,Za)=>{"use strict";Za.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var Ca=R((Tf,Fa)=>{"use strict";function Kn(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}Fa.exports=Kn});var Oa=R(Ye=>{"use strict";var Ae=Ra(),Ke=$(),ut=Ut(),I=Gt(),Vt=Je(),Yn=It(),jn=Ca(),La=Object.prototype.toString;function ve(e){if(!(this instanceof ve))return new ve(e);this.options=Ke.assign({chunkSize:16384,windowBits:0,to:""},e||{});var a=this.options;a.raw&&a.windowBits>=0&&a.windowBits<16&&(a.windowBits=-a.windowBits,a.windowBits===0&&(a.windowBits=-15)),a.windowBits>=0&&a.windowBits<16&&!(e&&e.windowBits)&&(a.windowBits+=32),a.windowBits>15&&a.windowBits<48&&(a.windowBits&15)===0&&(a.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yn,this.strm.avail_out=0;var t=Ae.inflateInit2(this.strm,a.windowBits);if(t!==I.Z_OK)throw new Error(Vt[t]);if(this.header=new jn,Ae.inflateGetHeader(this.strm,this.header),a.dictionary&&(typeof a.dictionary=="string"?a.dictionary=ut.string2buf(a.dictionary):La.call(a.dictionary)==="[object ArrayBuffer]"&&(a.dictionary=new Uint8Array(a.dictionary)),a.raw&&(t=Ae.inflateSetDictionary(this.strm,a.dictionary),t!==I.Z_OK)))throw new Error(Vt[t])}ve.prototype.push=function(e,a){var t=this.strm,i=this.options.chunkSize,r=this.options.dictionary,n,o,l,w,h,s=!1;if(this.ended)return!1;o=a===~~a?a:a===!0?I.Z_FINISH:I.Z_NO_FLUSH,typeof e=="string"?t.input=ut.binstring2buf(e):La.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;do{if(t.avail_out===0&&(t.output=new Ke.Buf8(i),t.next_out=0,t.avail_out=i),n=Ae.inflate(t,I.Z_NO_FLUSH),n===I.Z_NEED_DICT&&r&&(n=Ae.inflateSetDictionary(this.strm,r)),n===I.Z_BUF_ERROR&&s===!0&&(n=I.Z_OK,s=!1),n!==I.Z_STREAM_END&&n!==I.Z_OK)return this.onEnd(n),this.ended=!0,!1;t.next_out&&(t.avail_out===0||n===I.Z_STREAM_END||t.avail_in===0&&(o===I.Z_FINISH||o===I.Z_SYNC_FLUSH))&&(this.options.to==="string"?(l=ut.utf8border(t.output,t.next_out),w=t.next_out-l,h=ut.buf2string(t.output,l),t.next_out=w,t.avail_out=i-w,w&&Ke.arraySet(t.output,t.output,l,w,0),this.onData(h)):this.onData(Ke.shrinkBuf(t.output,t.next_out))),t.avail_in===0&&t.avail_out===0&&(s=!0)}while((t.avail_in>0||t.avail_out===0)&&n!==I.Z_STREAM_END);return n===I.Z_STREAM_END&&(o=I.Z_FINISH),o===I.Z_FINISH?(n=Ae.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===I.Z_OK):(o===I.Z_SYNC_FLUSH&&(this.onEnd(I.Z_OK),t.avail_out=0),!0)};ve.prototype.onData=function(e){this.chunks.push(e)};ve.prototype.onEnd=function(e){e===I.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ke.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Xt(e,a){var t=new ve(a);if(t.push(e,!0),t.err)throw t.msg||Vt[t.err];return t.result}function Gn(e,a){return a=a||{},a.raw=!0,Xt(e,a)}Ye.Inflate=ve;Ye.inflate=Xt;Ye.inflateRaw=Gn;Ye.ungzip=Xt});var Pa=R((Df,Ha)=>{"use strict";var Vn=$().assign,Xn=Yi(),qn=Oa(),Wn=Gt(),Ma={};Vn(Ma,Xn,qn,Wn);Ha.exports=Ma});var Ya=R((Uf,Ka)=>{"use strict";(function(e){var a=this;Ka.exports=e(a)})(function(e){"use strict";function a(f,_){return typeof f!="object"||f===null?!1:f.constructor===_||Object.prototype.toString.call(f)==="[object "+_.name+"]"}function t(f,_){return!_&&a(f,Array)?f:Array.prototype.slice.call(f)}function i(f,_){return f!==void 0?f:_}function r(f,_,u,d){if(r.is(f)){var c=f.slice(_,_+u);return c._littleEndian=i(d,c._littleEndian),c}if(!r.is(this))return new r(f,_,u,d);if(this.buffer=f=r.wrapBuffer(f),this._isArrayBuffer=h.ArrayBuffer&&a(f,ArrayBuffer),this._isPixelData=!1,this._isDataView=h.DataView&&this._isArrayBuffer,this._isNodeBuffer=h.NodeBuffer&&a(f,Buffer),!this._isNodeBuffer&&!this._isArrayBuffer&&!a(f,Array))throw new TypeError("jDataView buffer has an incompatible type");this._littleEndian=!!d;var x="byteLength"in f?f.byteLength:f.length;this.byteOffset=_=i(_,0),this.byteLength=u=i(u,x-_),this._offset=this._bitOffset=0,this._isDataView?this._view=new DataView(f,_,u):this._checkBounds(_,u,x),this._engineAction=this._isDataView?this._dataViewAction:this._isNodeBuffer?this._nodeBufferAction:this._isArrayBuffer?this._arrayBufferAction:this._arrayAction}function n(f){if(h.NodeBuffer)return new Buffer(f,"binary");for(var _=h.ArrayBuffer?Uint8Array:Array,u=new _(f.length),d=0,c=f.length;c>d;d++)u[d]=255&f.charCodeAt(d);return u}function o(f){return f>=0&&31>f?1<<f:o[f]||(o[f]=Math.pow(2,f))}function l(f,_){this.lo=f,this.hi=_}function w(){l.apply(this,arguments)}var h={NodeBuffer:"Buffer"in e,DataView:"DataView"in e,ArrayBuffer:"ArrayBuffer"in e,PixelData:!1},s=e.TextEncoder,A=e.TextDecoder;h.NodeBuffer&&function(f){try{f.writeFloatLE(1/0,0)}catch{h.NodeBuffer=!1}}(new Buffer(4));var g={Int8:1,Int16:2,Int32:4,Uint8:1,Uint16:2,Uint32:4,Float32:4,Float64:8};r.wrapBuffer=function(f){switch(typeof f){case"number":if(h.NodeBuffer)f=new Buffer(f),f.fill(0);else if(h.ArrayBuffer)f=new Uint8Array(f).buffer;else{f=new Array(f);for(var _=0;_<f.length;_++)f[_]=0}return f;case"string":f=n(f);default:return"length"in f&&!(h.NodeBuffer&&a(f,Buffer)||h.ArrayBuffer&&a(f,ArrayBuffer))&&(h.NodeBuffer?f=new Buffer(f):h.ArrayBuffer?a(f,ArrayBuffer)||(f=new Uint8Array(f).buffer,a(f,ArrayBuffer)||(f=new Uint8Array(t(f,!0)).buffer)):f=t(f)),f}},r.is=function(f){return f&&f.jDataView},r.from=function(){return new r(arguments)},r.Uint64=l,l.prototype={valueOf:function(){return this.lo+o(32)*this.hi},toString:function(){return Number.prototype.toString.apply(this.valueOf(),arguments)}},l.fromNumber=function(f){var _=Math.floor(f/o(32)),u=f-_*o(32);return new l(u,_)},r.Int64=w,w.prototype="create"in Object?Object.create(l.prototype):new l,w.prototype.valueOf=function(){return this.hi<o(31)?l.prototype.valueOf.apply(this,arguments):-(o(32)-this.lo+o(32)*(o(32)-1-this.hi))},w.fromNumber=function(f){var _,u;if(f>=0){var d=l.fromNumber(f);_=d.lo,u=d.hi}else u=Math.floor(f/o(32)),_=f-u*o(32),u+=o(32);return new w(_,u)};var v=r.prototype={compatibility:h,jDataView:!0,_checkBounds:function(f,_,u){if(typeof f!="number")throw new TypeError("Offset is not a number.");if(typeof _!="number")throw new TypeError("Size is not a number.");if(0>_)throw new RangeError("Length is negative.");if(0>f||f+_>i(u,this.byteLength))throw new RangeError("Offsets are out of bounds.")},_action:function(f,_,u,d,c){return this._engineAction(f,_,i(u,this._offset),i(d,this._littleEndian),c)},_dataViewAction:function(f,_,u,d,c){return this._offset=u+g[f],_?this._view["get"+f](u,d):this._view["set"+f](u,c,d)},_arrayBufferAction:function(f,_,u,d,c){var x,b=g[f],p=e[f+"Array"];if(d=i(d,this._littleEndian),b===1||(this.byteOffset+u)%b===0&&d)return x=new p(this.buffer,this.byteOffset+u,1),this._offset=u+b,_?x[0]:x[0]=c;var m=new Uint8Array(_?this.getBytes(b,u,d,!0):b);return x=new p(m.buffer,0,1),_?x[0]:(x[0]=c,void this._setBytes(u,m,d))},_arrayAction:function(f,_,u,d,c){return _?this["_get"+f](u,d):this["_set"+f](u,c,d)},_getBytes:function(f,_,u){u=i(u,this._littleEndian),_=i(_,this._offset),f=i(f,this.byteLength-_),this._checkBounds(_,f),_+=this.byteOffset,this._offset=_-this.byteOffset+f;var d=this._isArrayBuffer?new Uint8Array(this.buffer,_,f):(this.buffer.slice||Array.prototype.slice).call(this.buffer,_,_+f);return u||1>=f?d:t(d).reverse()},getBytes:function(f,_,u,d){var c=this._getBytes(f,_,i(u,!0));return d?t(c):c},_setBytes:function(f,_,u){var d=_.length;if(d!==0){if(u=i(u,this._littleEndian),f=i(f,this._offset),this._checkBounds(f,d),!u&&d>1&&(_=t(_,!0).reverse()),f+=this.byteOffset,this._isArrayBuffer)new Uint8Array(this.buffer,f,d).set(_);else if(this._isNodeBuffer)new Buffer(_).copy(this.buffer,f);else for(var c=0;d>c;c++)this.buffer[f+c]=_[c];this._offset=f-this.byteOffset+d}},setBytes:function(f,_,u){this._setBytes(f,_,i(u,!0))},getString:function(f,_,u){if(this._isNodeBuffer)return _=i(_,this._offset),f=i(f,this.byteLength-_),this._checkBounds(_,f),this._offset=_+f,this.buffer.toString(u||"binary",this.byteOffset+_,this.byteOffset+this._offset);var d=this._getBytes(f,_,!0);if(u=u==="utf8"?"utf-8":u||"binary",A&&u!=="binary")return new A(u).decode(this._isArrayBuffer?d:new Uint8Array(d));var c="";f=d.length;for(var x=0;f>x;x++)c+=String.fromCharCode(d[x]);return u==="utf-8"&&(c=decodeURIComponent(escape(c))),c},setString:function(f,_,u){if(this._isNodeBuffer)return f=i(f,this._offset),this._checkBounds(f,_.length),void(this._offset=f+this.buffer.write(_,this.byteOffset+f,u||"binary"));u=u==="utf8"?"utf-8":u||"binary";var d;s&&u!=="binary"?d=new s(u).encode(_):(u==="utf-8"&&(_=unescape(encodeURIComponent(_))),d=n(_)),this._setBytes(f,d,!0)},getChar:function(f){return this.getString(1,f)},setChar:function(f,_){this.setString(f,_)},tell:function(){return this._offset},seek:function(f){return this._checkBounds(f,0),this._offset=f},skip:function(f){return this.seek(this._offset+f)},slice:function(f,_,u){function d(c,x){return 0>c?c+x:c}return f=d(f,this.byteLength),_=d(i(_,this.byteLength),this.byteLength),u?new r(this.getBytes(_-f,f,!0,!0),void 0,void 0,this._littleEndian):new r(this.buffer,this.byteOffset+f,_-f,this._littleEndian)},alignBy:function(f){return this._bitOffset=0,i(f,1)!==1?this.skip(f-(this._offset%f||f)):this._offset},_getFloat64:function(f,_){var u=this._getBytes(8,f,_),d=1-2*(u[7]>>7),c=((u[7]<<1&255)<<3|u[6]>>4)-1023,x=(15&u[6])*o(48)+u[5]*o(40)+u[4]*o(32)+u[3]*o(24)+u[2]*o(16)+u[1]*o(8)+u[0];return c===1024?x!==0?NaN:1/0*d:c===-1023?d*x*o(-1074):d*(1+x*o(-52))*o(c)},_getFloat32:function(f,_){var u=this._getBytes(4,f,_),d=1-2*(u[3]>>7),c=(u[3]<<1&255|u[2]>>7)-127,x=(127&u[2])<<16|u[1]<<8|u[0];return c===128?x!==0?NaN:1/0*d:c===-127?d*x*o(-149):d*(1+x*o(-23))*o(c)},_get64:function(f,_,u){u=i(u,this._littleEndian),_=i(_,this._offset);for(var d=u?[0,4]:[4,0],c=0;2>c;c++)d[c]=this.getUint32(_+d[c],u);return this._offset=_+8,new f(d[0],d[1])},getInt64:function(f,_){return this._get64(w,f,_)},getUint64:function(f,_){return this._get64(l,f,_)},_getInt32:function(f,_){var u=this._getBytes(4,f,_);return u[3]<<24|u[2]<<16|u[1]<<8|u[0]},_getUint32:function(f,_){return this._getInt32(f,_)>>>0},_getInt16:function(f,_){return this._getUint16(f,_)<<16>>16},_getUint16:function(f,_){var u=this._getBytes(2,f,_);return u[1]<<8|u[0]},_getInt8:function(f){return this._getUint8(f)<<24>>24},_getUint8:function(f){return this._getBytes(1,f)[0]},_getBitRangeData:function(f,_){var u=(i(_,this._offset)<<3)+this._bitOffset,d=u+f,c=u>>>3,x=d+7>>>3,b=this._getBytes(x-c,c,!0),p=0;(this._bitOffset=7&d)&&(this._bitOffset-=8);for(var m=0,D=b.length;D>m;m++)p=p<<8|b[m];return{start:c,bytes:b,wideValue:p}},getSigned:function(f,_){var u=32-f;return this.getUnsigned(f,_)<<u>>u},getUnsigned:function(f,_){var u=this._getBitRangeData(f,_).wideValue>>>-this._bitOffset;return 32>f?u&~(-1<<f):u},_setBinaryFloat:function(f,_,u,d,c){var x,b,p=0>_?1:0,m=~(-1<<d-1),D=1-m;0>_&&(_=-_),_===0?(x=0,b=0):isNaN(_)?(x=2*m+1,b=1):_===1/0?(x=2*m+1,b=0):(x=Math.floor(Math.log(_)/Math.LN2),x>=D&&m>=x?(b=Math.floor((_*o(-x)-1)*o(u)),x+=m):(b=Math.floor(_/o(D-u)),x=0));for(var E=[];u>=8;)E.push(b%256),b=Math.floor(b/256),u-=8;for(x=x<<u|b,d+=u;d>=8;)E.push(255&x),x>>>=8,d-=8;E.push(p<<d|x),this._setBytes(f,E,c)},_setFloat32:function(f,_,u){this._setBinaryFloat(f,_,23,8,u)},_setFloat64:function(f,_,u){this._setBinaryFloat(f,_,52,11,u)},_set64:function(f,_,u,d){typeof u!="object"&&(u=f.fromNumber(u)),d=i(d,this._littleEndian),_=i(_,this._offset);var c=d?{lo:0,hi:4}:{lo:4,hi:0};for(var x in c)this.setUint32(_+c[x],u[x],d);this._offset=_+8},setInt64:function(f,_,u){this._set64(w,f,_,u)},setUint64:function(f,_,u){this._set64(l,f,_,u)},_setUint32:function(f,_,u){this._setBytes(f,[255&_,_>>>8&255,_>>>16&255,_>>>24],u)},_setUint16:function(f,_,u){this._setBytes(f,[255&_,_>>>8&255],u)},_setUint8:function(f,_){this._setBytes(f,[255&_])},setUnsigned:function(f,_,u){var d=this._getBitRangeData(u,f),c=d.wideValue,x=d.bytes;c&=~(~(-1<<u)<<-this._bitOffset),c|=(32>u?_&~(-1<<u):_)<<-this._bitOffset;for(var b=x.length-1;b>=0;b--)x[b]=255&c,c>>>=8;this._setBytes(d.start,x,!0)}},y={Int8:"Int8",Int16:"Int16",Int32:"Int32",Uint8:"UInt8",Uint16:"UInt16",Uint32:"UInt32",Float32:"Float",Float64:"Double"};v._nodeBufferAction=function(f,_,u,d,c){this._offset=u+g[f];var x=y[f]+(f==="Int8"||f==="Uint8"?"":d?"LE":"BE");return u+=this.byteOffset,_?this.buffer["read"+x](u):this.buffer["write"+x](c,u)};for(var k in g)(function(f){v["get"+f]=function(_,u){return this._action(f,!0,_,u)},v["set"+f]=function(_,u,d){this._action(f,!1,_,d,u)}})(k);v._setInt32=v._setUint32,v._setInt16=v._setUint16,v._setInt8=v._setUint8,v.setSigned=v.setUnsigned;for(var S in v)S.slice(0,3)==="set"&&function(f){v["write"+f]=function(){Array.prototype.unshift.call(arguments,void 0),this["set"+f].apply(this,arguments)}}(S.slice(3));return r})});var df={};ir(df,{GrfBrowser:()=>st,GrfNode:()=>dt});var $t=ti(Pa(),1),qa=ti(Ya(),1);var Se=new Uint8Array([128,64,32,16,8,4,2,1]),z=new Uint8Array(8),oe=new Uint8Array(8),Be=new Uint8Array(8),$n=new Uint8Array([58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7]),Jn=new Uint8Array([40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25]),Qn=new Uint8Array([16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25]),ja=[new Uint8Array([239,3,65,253,216,116,30,71,38,239,251,34,179,216,132,30,57,172,167,96,98,193,205,186,92,150,144,89,5,59,122,133,64,253,30,200,231,138,139,33,218,67,100,159,45,20,177,114,245,91,200,182,156,55,118,236,57,160,163,5,82,110,15,217]),new Uint8Array([167,221,13,120,158,11,227,149,96,54,54,79,249,96,90,163,17,36,210,135,200,82,117,236,187,193,76,186,36,254,143,25,218,19,102,175,73,208,144,6,140,106,251,145,55,141,13,120,191,73,17,244,35,229,206,59,85,188,162,87,232,34,116,206]),new Uint8Array([44,234,193,191,74,36,31,194,121,71,162,124,182,217,104,21,128,86,93,1,51,253,244,174,222,48,7,155,229,131,155,104,73,180,46,131,31,194,181,124,162,25,216,229,124,47,131,218,247,107,144,254,196,1,90,151,97,166,61,64,11,88,230,61]),new Uint8Array([77,209,178,15,40,189,228,120,246,74,15,147,139,23,209,164,58,236,201,53,147,86,126,203,85,32,160,254,108,137,23,98,23,98,75,177,180,222,209,135,201,20,60,74,126,168,226,125,160,159,246,92,106,9,141,240,15,227,83,37,149,54,40,203])];function ef(e,a){for(let t=0;t<64;++t){let i=$n[t]-1;e[a+(i>>3&7)]&Se[i&7]&&(z[t>>3&7]|=Se[t&7])}e.set(z,a),z.set(Be)}function tf(e,a){for(let t=0;t<64;++t){let i=Jn[t]-1;e[a+(i>>3&7)]&Se[i&7]&&(z[t>>3&7]|=Se[t&7])}e.set(z,a),z.set(Be)}function af(e,a){for(let t=0;t<32;++t){let i=Qn[t]-1;e[a+(i>>3)]&Se[i&7]&&(z[(t>>3)+4]|=Se[t&7])}e.set(z,a),z.set(Be)}function rf(e,a){z[0]=(e[a+7]<<5|e[a+4]>>3)&63,z[1]=(e[a+4]<<1|e[a+5]>>7)&63,z[2]=(e[a+4]<<5|e[a+5]>>3)&63,z[3]=(e[a+5]<<1|e[a+6]>>7)&63,z[4]=(e[a+5]<<5|e[a+6]>>3)&63,z[5]=(e[a+6]<<1|e[a+7]>>7)&63,z[6]=(e[a+6]<<5|e[a+7]>>3)&63,z[7]=(e[a+7]<<1|e[a+4]>>7)&63,e.set(z,a),z.set(Be)}function nf(e,a){for(let t=0;t<4;++t)z[t]=ja[t][e[t*2+0+a]]&240|ja[t][e[t*2+1+a]]&15;e.set(z,a),z.set(Be)}function ff(e,a){for(let t=0;t<8;t++)oe[t]=e[a+t];rf(oe,0),nf(oe,0),af(oe,0),e[a+0]^=oe[4],e[a+1]^=oe[5],e[a+2]^=oe[6],e[a+3]^=oe[7]}function qt(e,a){ef(e,a),ff(e,a),tf(e,a)}function Ga(e,a,t){let i=t.toString().length,r=i<3?1:i<5?i+1:i<7?i+9:i+15,n=a>>3;for(let o=0;o<20&&o<n;++o)qt(e,o*8);for(let o=20,l=-1;o<n;++o){if(o%r===0){qt(e,o*8);continue}++l&&l%7===0&&of(e,o*8)}}function Va(e,a){let t=a>>3;for(let i=0;i<20&&i<t;++i)qt(e,i*8)}function of(e,a){z[0]=e[a+3],z[1]=e[a+4],z[2]=e[a+6],z[3]=e[a+0],z[4]=e[a+1],z[5]=e[a+2],z[6]=e[a+5],z[7]=lf[e[a+7]],e.set(z,a),z.set(Be)}var lf=(()=>{let e=new Uint8Array([0,43,108,128,1,104,72,119,96,255,185,192,254,235]),a=new Uint8Array(Array.from({length:256},(i,r)=>r)),t=e.length;for(let i=0;i<t;i+=2)a[e[i+0]]=e[i+1],a[e[i+1]]=e[i+0];return a})();var hf=1,_f=2,uf=4,sf="Master of Magic",Wt=46,Xa=Uint32Array.BYTES_PER_ELEMENT*2,Te=class{constructor(a){this.fd=a;this.version=512;this.fileCount=0;this.loaded=!1;this.files=new Map;this.fileTableOffset=0}async getStreamReader(a,t){let i=await this.getStreamBuffer(this.fd,a,t);return new qa.default(i,void 0,void 0,!0)}async load(){this.loaded||(await this.parseHeader(),await this.parseFileList(),this.loaded=!0)}async parseHeader(){let a=await this.getStreamReader(0,Wt);if(a.getString(15)!==sf)throw new Error("Not a GRF file (invalid signature)");a.skip(15),this.fileTableOffset=a.getUint32()+Wt;let i=a.getUint32();if(this.fileCount=a.getUint32()-i-7,this.version=a.getUint32(),this.version!==512)throw new Error(`Unsupported version "0x${this.version.toString(16)}"`)}async parseFileList(){let a=await this.getStreamReader(this.fileTableOffset,Xa),t=a.getUint32(),i=a.getUint32(),r=await this.getStreamBuffer(this.fd,this.fileTableOffset+Xa,t),n=(0,$t.inflate)(r,{});for(let o=0,l=0;o<this.fileCount;++o){let w="";for(;n[l];)w+=String.fromCharCode(n[l++]);l++;let h={compressedSize:n[l++]|n[l++]<<8|n[l++]<<16|n[l++]<<24,lengthAligned:n[l++]|n[l++]<<8|n[l++]<<16|n[l++]<<24,realSize:n[l++]|n[l++]<<8|n[l++]<<16|n[l++]<<24,type:n[l++],offset:(n[l++]|n[l++]<<8|n[l++]<<16|n[l++]<<24)>>>0};h.type&hf&&this.files.set(w,h)}}decodeEntry(a,t){return t.type&_f?Ga(a,t.lengthAligned,t.compressedSize):t.type&uf&&Va(a,t.lengthAligned),t.realSize===t.compressedSize?a:(0,$t.inflate)(a,{})}async getFile(a){if(!this.loaded)return Promise.resolve({data:null,error:"GRF not loaded yet"});let t=a;if(!this.files.has(t))return Promise.resolve({data:null,error:`File "${t}" not found`});let i=this.files.get(t);if(!i)return{data:null,error:`File "${t}" not found`};let r=await this.getStreamBuffer(this.fd,i.offset+Wt,i.lengthAligned);try{let n=this.decodeEntry(r,i);return Promise.resolve({data:n,error:null})}catch(n){return{data:null,error:n instanceof Error?n.message:String(n)}}}};var st=class extends Te{async getStreamBuffer(a,t,i){return new Promise((r,n)=>{let o=new FileReader;o.onerror=n,o.onload=()=>r(new Uint8Array(o.result)),o.readAsArrayBuffer(a.slice(t,t+i))})}};var ct=tr("fs");var dt=class extends Te{constructor(a){super(a);try{if(!(0,ct.fstatSync)(a).isFile())throw new Error("GRFNode: file descriptor must point to a regular file")}catch{throw new Error("GRFNode: invalid file descriptor")}}async getStreamBuffer(a,t,i){let r=Buffer.allocUnsafe(i);if((0,ct.readSync)(a,r,0,i,t)!==i)throw new Error("Not a GRF file (invalid signature)");return r}};return ar(df);})();
2
+ //# sourceMappingURL=index.global.js.map