@knuth/js-wasm 2.11.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/LICENSE.md +23 -0
  2. package/README.md +119 -27
  3. package/SHA256SUMS +4 -0
  4. package/package.json +21 -8
  5. package/src/browser_headers_persistent_v1.js +2 -0
  6. package/src/browser_headers_persistent_v1.wasm +0 -0
  7. package/src/kth.js +6 -3
  8. package/src/kth.wasm +0 -0
  9. package/types/AsyncResults.d.ts +11 -0
  10. package/types/Bitcoin.d.ts +4 -0
  11. package/types/DerivationPath.d.ts +8 -0
  12. package/types/DoubleList.d.ts +5 -4
  13. package/types/EcCompressed.d.ts +8 -3
  14. package/types/EcPublic.d.ts +10 -4
  15. package/types/ElectrumClient.d.ts +79 -0
  16. package/types/EllipticCurve.d.ts +8 -2
  17. package/types/Hash.d.ts +5 -0
  18. package/types/HdPublic.d.ts +9 -3
  19. package/types/Input.d.ts +10 -7
  20. package/types/InputList.d.ts +6 -5
  21. package/types/Interpreter.d.ts +9 -1
  22. package/types/Kth.d.ts +4 -0
  23. package/types/LazySequence.d.ts +4 -0
  24. package/types/ListHelper.d.ts +13 -1
  25. package/types/ListNative.d.ts +4 -0
  26. package/types/NativeLifetime.d.ts +11 -0
  27. package/types/Opcode.d.ts +10 -3
  28. package/types/OpcodeAliases.d.ts +16 -0
  29. package/types/Operation.d.ts +31 -26
  30. package/types/OperationList.d.ts +6 -5
  31. package/types/Output.d.ts +11 -7
  32. package/types/OutputList.d.ts +6 -5
  33. package/types/OutputPoint.d.ts +8 -4
  34. package/types/PaymentAddress.d.ts +15 -10
  35. package/types/PaymentAddressList.d.ts +6 -5
  36. package/types/Program.d.ts +15 -2
  37. package/types/RuleFork.d.ts +4 -0
  38. package/types/Script.d.ts +34 -19
  39. package/types/ScriptFlags.d.ts +67 -0
  40. package/types/Secret.d.ts +4 -0
  41. package/types/SecretFunctions.d.ts +4 -0
  42. package/types/SighashAlgorithm.d.ts +4 -0
  43. package/types/SighashGuard.d.ts +10 -0
  44. package/types/StringList.d.ts +5 -4
  45. package/types/TokenData.d.ts +8 -3
  46. package/types/TokenDataBothKinds.d.ts +6 -3
  47. package/types/TokenDataFungible.d.ts +4 -0
  48. package/types/TokenDataNonFungible.d.ts +9 -2
  49. package/types/Transaction.d.ts +12 -10
  50. package/types/TransactionHelpers.d.ts +14 -0
  51. package/types/U32List.d.ts +5 -4
  52. package/types/U64List.d.ts +5 -4
  53. package/types/Utxo.d.ts +10 -6
  54. package/types/UtxoList.d.ts +6 -5
  55. package/types/Wallet.d.ts +28 -52
  56. package/types/WalletData.d.ts +5 -1
  57. package/types/WalletManager.d.ts +6 -3
  58. package/types/WalletUtils.d.ts +53 -0
  59. package/types/encoding.d.ts +4 -0
  60. package/types/env.d.ts +4 -0
  61. package/types/logger.d.ts +6 -0
  62. package/types/main.d.ts +75 -2
  63. package/types/nativeScope.d.ts +11 -0
  64. package/types/types.d.ts +4 -0
  65. package/types/utils.d.ts +4 -0
  66. package/types/wasm/EmscriptenModule.d.ts +4 -0
  67. package/types/wasm/bootloader.d.ts +4 -0
  68. package/types/wasm/callbacks.d.ts +30 -0
  69. package/types/wasm/exceptions.d.ts +4 -0
  70. package/types/wasm/glue.d.ts +960 -170
  71. package/types/wasm/glue_manual.d.ts +4 -0
  72. package/types/wasm/loadLib.d.ts +4 -0
  73. package/types/wasm/manualGeneratedTypes.d.ts +4 -0
  74. package/types/wasm/mem.d.ts +33 -1
  75. package/types/wasm/promises.d.ts +4 -0
  76. package/types/wasm/stack.d.ts +6 -0
  77. package/types/wasm/string.d.ts +13 -0
  78. package/types/LazySequence copy.d.ts +0 -0
  79. package/types/wasm/glue copy.d.ts +0 -230
package/LICENSE.md ADDED
@@ -0,0 +1,23 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016-present Knuth Project developers.
4
+ Copyright (c) 2009-2021 The Bitcoin developers
5
+ Copyright (c) 2009-2017 The Bitcoin Core developers
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in
15
+ all copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ THE SOFTWARE.
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=for-the-badge)](LICENSE.md)
7
7
  <a target="_blank" href="https://t.me/knuth_cash">![Telegram](https://img.shields.io/badge/telegram-chat-blue.svg?logo=telegram&style=for-the-badge)</a>
8
8
 
9
- **Knuth JS-WASM** brings the power of a full Bitcoin Cash node to JavaScript through WebAssembly. Build wallets, validate addresses, create transactions, and more — all running natively in the browser or Node.js.
9
+ **Knuth JS-WASM** provides Bitcoin Cash primitives through WebAssembly. Build wallets, validate addresses and work with transactions in browsers and Node.js. Version 4.0.0 uses KTH 1.6.1 and Emscripten 6.0.13.
10
10
 
11
11
  ## Installation
12
12
 
@@ -16,22 +16,48 @@ npm install @knuth/js-wasm
16
16
 
17
17
  ## Quick Start
18
18
 
19
- ```typescript
20
- import { PaymentAddress, Wallet, Kth } from '@knuth/js-wasm';
19
+ Load the WebAssembly module before calling native-backed APIs:
21
20
 
22
- // Check library info
23
- const config = Kth.getLibconfig();
24
- console.log(`Knuth WASM v${config.wasmLibraryVersion}`);
21
+ ```javascript
22
+ const { loadLib, PaymentAddress, Kth } = require('@knuth/js-wasm');
25
23
 
26
- // Validate and convert addresses
27
- const addr = PaymentAddress.fromString('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
28
- if (addr) {
29
- console.log(`Cash Address: ${addr.encodedCashAddr()}`);
30
- console.log(`Legacy: ${addr.encodedLegacy()}`);
31
- console.log(`CashTokens: ${addr.encodedCashTokens()}`);
24
+ async function main() {
25
+ await loadLib(
26
+ require.resolve('@knuth/js-wasm/src/kth.wasm'),
27
+ require.resolve('@knuth/js-wasm')
28
+ );
29
+ console.log(Kth.getLibconfig().cppapiVersion); // 1.6.1
30
+
31
+ const address = PaymentAddress.fromString('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
32
+ if (address) {
33
+ console.log(address.encodedLegacy());
34
+ }
32
35
  }
36
+
37
+ main().catch(console.error);
33
38
  ```
34
39
 
40
+ The following examples assume `loadLib()` has completed.
41
+
42
+ ## Migrating to 4.0.0
43
+
44
+ - Address factories `fromHash`, `fromShortHash`, `fromScript` and
45
+ `fromPayPublicKeyHashScript` return `undefined` on native status failures.
46
+ Check the result before using it. JavaScript programming errors still throw.
47
+ - Native address creation uses checked factories instead of direct constructors.
48
+ - The callback chain interface calls block submission `asyncSubmitBlock`.
49
+ - The `tempnet` network and tick-based consensus helpers match KTH 1.6.1.
50
+ - The optional Worker module described below is separate from the synchronous SDK.
51
+
52
+ ## Migrating from 2.x
53
+
54
+
55
+ - Use `ScriptFlags` / `ScriptUpgrades` and `bigint` for current script flags; for example, `script.toString(ScriptFlags.noRules)`.
56
+ - Construct wallets with `new Wallet(mnemonic, path, network)` or a seed. Release their native state with `wallet.dispose()`.
57
+ - Token amounts and satoshi values use `bigint`. Invalid token factories can return no native handle.
58
+ - APIs returning native handles transfer ownership as described by their declarations. Release owned handles with `free()` when finished.
59
+ - Recompile TypeScript consumers against the declarations shipped with this version.
60
+
35
61
  ## Features
36
62
 
37
63
  ### Address Handling
@@ -67,17 +93,18 @@ const mnemonic = ['word1', 'word2', 'word3', '...', 'word12'];
67
93
  const derivationPath = "m/44'/145'/0'/0";
68
94
  const network = 'MAINNET';
69
95
 
70
- const wallet = Wallet.fromMnemonic(mnemonic, derivationPath, network);
96
+ const wallet = new Wallet(mnemonic, derivationPath, network);
71
97
 
72
98
  // Get a single address
73
- const address = await wallet.getAddress(0);
99
+ const address = wallet.getAddress(0);
74
100
  console.log(address.encoded()); // bitcoincash:qr9sawzzmstkluq9nqefsu7eqya4zk2w7udune2pmf
75
101
 
76
102
  // Get multiple addresses
77
- const addresses = await wallet.getAddresses(5);
103
+ const addresses = wallet.getAddresses(5);
78
104
  addresses.forEach((addr, i) => {
79
105
  console.log(`[${i}]: ${addr.encoded()}`);
80
106
  });
107
+ wallet.dispose();
81
108
  ```
82
109
 
83
110
  ### Transactions
@@ -103,16 +130,16 @@ if (tx) {
103
130
  Work with Bitcoin scripts:
104
131
 
105
132
  ```typescript
106
- import { Script, hexStrToBytes } from '@knuth/js-wasm';
133
+ import { Script, ScriptFlags, hexStrToBytes } from '@knuth/js-wasm';
107
134
 
108
135
  // Parse a P2PKH script
109
136
  const scriptBytes = hexStrToBytes('76a91406ccef231c2db72526df9338894ccf9355e8f12188ac');
110
137
  const script = Script.fromData(scriptBytes, false);
111
138
 
112
139
  if (script) {
113
- console.log(`Type: ${script.type}`); // pay_public_key_hash
140
+ console.log(`Type: ${script.pattern()}`); // pay_public_key_hash
114
141
  console.log(`Size: ${script.serializedSize}`); // 25
115
- console.log(script.toString(0)); // dup hash160 [...] equalverify checksig
142
+ console.log(script.toString(ScriptFlags.noRules)); // dup hash160 [...] equalverify checksig
116
143
  }
117
144
 
118
145
  // Create scripts from string
@@ -139,7 +166,7 @@ const hash160 = HashFunctions.hash160(message); // SHA256 + RIPEMD160
139
166
  Parse transactions with fungible and non-fungible tokens:
140
167
 
141
168
  ```typescript
142
- import { Transaction, hexStrToBytes, encodeHash } from '@knuth/js-wasm';
169
+ import { Transaction, TokenDataFungible, hexStrToBytes, encodeHash } from '@knuth/js-wasm';
143
170
 
144
171
  const tx = Transaction.fromData(hexStrToBytes(tokenTxHex));
145
172
  if (tx && tx.outputs) {
@@ -149,7 +176,7 @@ if (tx && tx.outputs) {
149
176
  console.log(`Category: ${encodeHash(output.tokenData.category)}`);
150
177
  console.log(`Kind: ${output.tokenData.kind}`); // 'fungible' or 'non_fungible'
151
178
 
152
- if (output.tokenData.kind === 'fungible') {
179
+ if (output.tokenData.data instanceof TokenDataFungible) {
153
180
  console.log(`Amount: ${output.tokenData.data.amount}`);
154
181
  }
155
182
  }
@@ -187,21 +214,41 @@ Try it in your browser at [kth.cash](https://kth.cash/#wasm-demo) — no install
187
214
  ## Browser Usage
188
215
 
189
216
  ```html
190
- <script src="https://unpkg.com/@knuth/js-wasm/src/kth.js"></script>
217
+ <script src="https://unpkg.com/@knuth/js-wasm@4.0.0/src/kth.js"></script>
191
218
  <script>
192
- // Wait for WASM to load
193
- Module.onRuntimeInitialized = () => {
194
- const addr = PaymentAddress.fromString('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
195
- console.log(addr.encodedLegacy());
196
- };
219
+ const { loadLib, PaymentAddress } = __KTH_MODULE__;
220
+ loadLib(
221
+ 'https://unpkg.com/@knuth/js-wasm@4.0.0/src/kth.wasm',
222
+ 'https://unpkg.com/@knuth/js-wasm@4.0.0/src/kth.js'
223
+ ).then(() => {
224
+ const address = PaymentAddress.fromString('bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a');
225
+ if (address) console.log(address.encodedLegacy());
226
+ }).catch(console.error);
197
227
  </script>
198
228
  ```
199
229
 
200
230
  ## Requirements
201
231
 
202
- - Node.js 16+ or modern browser with WebAssembly support
232
+ - Node.js 22+ or a modern browser with WebAssembly support
203
233
  - ES2020+ (uses BigInt for satoshi values)
204
234
 
235
+ ## Development and releases
236
+
237
+ ```sh
238
+ yarn install --frozen-lockfile
239
+ npm run tscheck
240
+ npm test
241
+ npm run check:package
242
+ ```
243
+
244
+ CI validates Node.js 22, 24 and 26. Package checks load the packed runtime and compile a TypeScript consumer against its
245
+ declarations. Pull requests and pushes to master run validation only.
246
+
247
+ To publish a version, update `package.json`, merge the reviewed change with passing CI, then publish a GitHub release
248
+ whose tag is `v<package version>`. The release workflow validates the tagged package before publishing to npm with OIDC
249
+ trusted publishing and provenance. Draft and prerelease releases do not publish to npm. The trusted publisher uses
250
+ the existing `.github/workflows/kth.yml` workflow.
251
+
205
252
  ## Issues
206
253
 
207
254
  Please report issues in our [main repository](https://github.com/k-nuth/kth/issues).
@@ -218,3 +265,48 @@ MIT License - see [LICENSE.md](LICENSE.md)
218
265
  <a href="https://t.me/knuth_cash">Telegram</a> •
219
266
  <a href="https://twitter.com/KnuthNode">Twitter</a>
220
267
  </p>
268
+
269
+ ## Browser node Worker
270
+
271
+ The package also includes a Worker-owned header-validation engine built from
272
+ KTH 1.6.1. It connects directly to BCH peers over WS/WSS, supports peer discovery,
273
+ validates headers locally and can persist its chain with IndexedDB. No RPC or
274
+ indexer is needed. Content sampling and transaction observation are optional;
275
+ they do not constitute full UTXO-based validation.
276
+
277
+ Copy these two files together to a directory served by your application:
278
+
279
+ - `src/browser_headers_persistent_v1.js`
280
+ - `src/browser_headers_persistent_v1.wasm`
281
+
282
+ In a classic Web Worker:
283
+
284
+ ```javascript
285
+ async function startNode() {
286
+ const assets = new URL('./vendor/', self.location.href);
287
+ importScripts(new URL('browser_headers_persistent_v1.js', assets).href);
288
+ const core = await createHeaders({ locateFile: name => new URL(name, assets).href });
289
+
290
+ const directory = '/kth-header-cache/Tempnet';
291
+ core.FS.mkdirTree(directory);
292
+ core.FS.mount(core.IDBFS, {}, directory);
293
+ const sync = populate => new Promise((resolve, reject) =>
294
+ core.FS.syncfs(populate, error => error ? reject(error) : resolve()));
295
+ await sync(true);
296
+ const node = new core.HeaderSync('wss://tempnet.kth.cash/p2p', 'tempnet', 500000);
297
+ try {
298
+ console.log('Validated height:', await node.asyncRun());
299
+ await sync(false);
300
+ } finally {
301
+ node.dispose();
302
+ }
303
+ }
304
+ startNode().catch(console.error);
305
+ ```
306
+
307
+ For a continuous session use `asyncFollow()`. Before disposal, request stop and
308
+ await the run/follow and stop promises. A rejected disposal leaves the handle
309
+ alive so cleanup can be retried. `reset()` clears native state; delete the
310
+ network's IndexedDB data explicitly when you intend to remove its saved chain.
311
+ Network display names in cache paths are case-sensitive. HTTPS pages require
312
+ WSS endpoints; peers must allow the page's Origin.
package/SHA256SUMS ADDED
@@ -0,0 +1,4 @@
1
+ 4e4dc6e211d7f4bba16fd2a3df2b8f235fefb179f46146ee7b749b1f573523bb src/kth.js
2
+ c174f954f36ae110aabbe5864f287ffd86ed3e823548c39d31d7c864274a5b82 src/kth.wasm
3
+ ea21df74f54955d439328c7aadfa384053316841b3bb5432c8c7f3db8437972e src/browser_headers_persistent_v1.js
4
+ 5fbfda25cf3f39178239e9d2197d1c4f7e49c825f80129d5b4f0ea02fed2613e src/browser_headers_persistent_v1.wasm
package/package.json CHANGED
@@ -1,20 +1,23 @@
1
1
  {
2
2
  "name": "@knuth/js-wasm",
3
- "version": "2.11.0",
3
+ "version": "4.0.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "description": "",
7
+ "description": "Bitcoin Cash WebAssembly library for browsers and Node.js",
8
8
  "main": "src/kth.js",
9
9
  "files": [
10
10
  "src/kth.js",
11
11
  "src/kth.wasm",
12
12
  "LICENSE.md",
13
- "types/**/*"
13
+ "types/**/*",
14
+ "src/browser_headers_persistent_v1.js",
15
+ "src/browser_headers_persistent_v1.wasm",
16
+ "SHA256SUMS"
14
17
  ],
15
18
  "types": "types/wasm/bootloader.d.ts",
16
19
  "devDependencies": {
17
- "@stylistic/eslint-plugin" : "2.10.1",
20
+ "@stylistic/eslint-plugin": "2.10.1",
18
21
  "@types/file-saver": "^2.0.7",
19
22
  "@types/jest": "^29.5.14",
20
23
  "@typescript-eslint/eslint-plugin": "^8.14.0",
@@ -29,20 +32,30 @@
29
32
  "ts-transformer-keys": "^0.4.4",
30
33
  "typescript": "^5.6.3",
31
34
  "webpack": "^5.96.1",
32
- "webpack-cli": "^5.1.4"
35
+ "webpack-cli": "^5.1.4",
36
+ "@types/node": "^22.10.0"
33
37
  },
34
38
  "scripts": {
35
- "test": "jest --runInBand --verbose"
39
+ "test": "jest --runInBand --verbose",
40
+ "tscheck": "tsc --project tsconfig.test.json --noEmit",
41
+ "check:package": "node .github/scripts/check-package.cjs"
36
42
  },
37
43
  "repository": {
38
44
  "type": "git",
39
45
  "url": "git+https://github.com/k-nuth/js-wasm.git"
40
46
  },
41
-
42
47
  "author": "Knuth Developers",
43
48
  "license": "MIT",
44
49
  "bugs": {
45
50
  "url": "https://github.com/k-nuth/kth/issues"
46
51
  },
47
- "homepage": "https://github.com/k-nuth"
52
+ "homepage": "https://github.com/k-nuth",
53
+ "engines": {
54
+ "node": ">=22"
55
+ },
56
+ "knuth": {
57
+ "coreVersion": "1.6.1",
58
+ "coreCommit": "c7ec3c96adc9c24695e14d0a76f6f0326a8760b1",
59
+ "emscriptenVersion": "6.0.13"
60
+ }
48
61
  }
@@ -0,0 +1,2 @@
1
+ async function createHeaders(moduleArg={}){var Module=moduleArg;(()=>{"use strict";var e={402:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.convertAsyncResults=function(e,t){if(e.length!==t.length)throw new Error("Invalid callback result arity");const r=t.map((t,r)=>t.owned&&null!=e[r]),i=[],s=[];let a=!1;try{for(let n=0;n<e.length;++n){const a=t[n],o=a.read(e[n]);a.adopt&&null!=o&&(i.push(o),r[n]=!1),s.push(o)}return a=!0,s}finally{let t,s=!1;for(let i=e.length-1;i>=0;--i)if(r[i])try{(0,n.free)(e[i])}catch(e){s=!0,t=e}if(!a||s)for(const e of i.reverse())try{e.dispose()}catch(e){s=!0,t=e}if(a&&s)throw t}};const n=r(906)},571:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HeaderSync=void 0;const n=r(402),i=r(407),s=r(638),a=r(906);class o{constructor(e,t,r){this.disposed=!1,this.native=(0,i.withNatives)(()=>new s.HeaderSyncNative(e,t,r))}live(){if(this.disposed)throw new Error("Object disposed");return this.native}dispose(){this.disposed||((0,a.free)(this.native),this.disposed=!0)}async asyncRequestStop(){return(0,i.withNativesAsync)(async()=>{const t=await this.live().asyncRequestStop();return(0,n.convertAsyncResults)([t],[{owned:!1,adopt:!1,read:e=>e}])[0]})}async asyncRequestRefresh(){return(0,i.withNativesAsync)(async()=>{const t=await this.live().asyncRequestRefresh();return(0,n.convertAsyncResults)([t],[{owned:!1,adopt:!1,read:e=>e}])[0]})}lastHeight(){return this.live().lastHeight()}running(){return this.live().running()}idle(){return this.live().idle()}status(){return this.live().status()}indexMemoryBytes(){return this.live().indexMemoryBytes()}async asyncRun(){return(0,i.withNativesAsync)(async()=>{const t=await this.live().asyncRun();return(0,n.convertAsyncResults)([t],[{owned:!1,adopt:!1,read:e=>e}])[0]})}async asyncFollow(){return(0,i.withNativesAsync)(async()=>{const t=await this.live().asyncFollow();return(0,n.convertAsyncResults)([t],[{owned:!1,adopt:!1,read:e=>e}])[0]})}reset(){return this.live().reset()}headerHex(e){return this.live().headerHex(e)}headerHash(e){return this.live().headerHash(e)}chainStateSnapshot(){return this.live().chainStateSnapshot()}runtimeSettings(){return this.live().runtimeSettings()}configureContent(e,t){return this.live().configureContent(e,t)}blockMetadata(e,t){return this.live().blockMetadata(e,t)}contentState(){return this.live().contentState()}observedTransactions(){return this.live().observedTransactions()}addPeer(e){return this.live().addPeer(e)}configureDiscovery(e,t,r){return this.live().configureDiscovery(e,t,r)}configureLegacyDiscovery(e){return this.live().configureLegacyDiscovery(e)}peerCount(){return this.live().peerCount()}peerEndpoint(e){return this.live().peerEndpoint(e)}peerSource(e){return this.live().peerSource(e)}peerState(e){return this.live().peerState(e)}peerAgent(e){return this.live().peerAgent(e)}peerError(e){return this.live().peerError(e)}peerHeight(e){return this.live().peerHeight(e)}peerAnnouncements(e){return this.live().peerAnnouncements(e)}peerConnected(e){return this.live().peerConnected(e)}}t.HeaderSync=o,t.default=o},407:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NativeScope=void 0,t.withNatives=function(e){const t=new i;let r;try{r=e(t)}catch(e){try{t.release()}catch(e){}throw e}return t.release(),r},t.withNativesAsync=async function(e){const t=new i;let r;try{r=await e(t)}catch(e){try{t.release()}catch(e){}throw e}return t.release(),r};const n=r(906);class i{constructor(){this.owned=[]}own(e){return this.owned.push(e),e}release(){let e,t=!1;for(;this.owned.length>0;)try{(0,n.free)(this.owned.pop())}catch(r){t||(t=!0,e=r)}if(t)throw e}}t.NativeScope=i},671:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CallbackRegistry=t.CallbackStatusError=void 0;class r extends Error{constructor(e){super(`Native async operation failed with status ${e}`),this.code=e,this.name="CallbackStatusError"}}t.CallbackStatusError=r,t.CallbackRegistry=class{constructor(e=128){if(this.capacity=e,this.pending=new Map,this.owners=new Map,this.sequence=0,!Number.isSafeInteger(e)||e<1)throw new RangeError("Invalid callback capacity")}get size(){return this.pending.size}assertIdle(e){if(this.owners.has(e))throw new Error("Native object has pending async operations")}invoke(e,t){return this.invokeWithOwners([e],t)}invokeWithOwners(e,t,n){const i=[...new Set(e)];if(0===i.length)return Promise.reject(new Error("Async operation has no owner"));if(this.pending.size>=this.capacity)return Promise.reject(new Error("Async admission is full"));if(4294967295===this.sequence)return Promise.reject(new Error("Async request identifiers exhausted"));const s=++this.sequence;let a,o=!1;for(const e of i)this.owners.set(e,(this.owners.get(e)??0)+1);return new Promise((e,c)=>{const _=()=>{this.pending.delete(s);for(const e of i){const t=this.owners.get(e)-1;0===t?this.owners.delete(e):this.owners.set(e,t)}};this.pending.set(s,{settle:(t,i)=>{this.pending.delete(s);try{if(a)n?.release(i),c(a.error);else if(0!==t)n?.release(i),c(new r(t));else{let t;try{t=n?n.take(i):i}catch(e){throw n?.release(i),e}e(t)}}catch(e){c(e)}finally{_()}}});try{t(s,()=>{o=!0})}catch(e){this.pending.has(s)&&(o?a={error:e}:(_(),c(e)))}})}complete(e,t,r){const n=this.pending.get(e);return void 0!==n&&(n.settle(t,r),!0)}}},638:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.HeaderSyncNative=t.LibConfig=t.LibConfigTypeSizes=t.NativeStatusError=void 0,t.isBorrowedView=function(e){return null!=e&&!0===e[h]},t.CurrencyToInt=function(e){if("string"!=typeof e||!Object.prototype.hasOwnProperty.call(b,e))throw new RangeError("Invalid Currency: "+String(e));return b[e]},t.CurrencyFromInt=k,t.NetworkToInt=T,t.NetworkFromInt=function(e){const t=C[e];if(void 0===t||!Object.prototype.hasOwnProperty.call(C,e))throw new RangeError("Native value "+String(e)+" is not a Network");return t},t.RuleForkEnumNativeToInt=function(e){if("string"!=typeof e||!Object.prototype.hasOwnProperty.call(U,e))throw new RangeError("Invalid RuleForkEnumNative: "+String(e));return U[e]},t.RuleForkEnumNativeFromInt=function(e){const t=H[e];if(void 0===t||!Object.prototype.hasOwnProperty.call(H,e))throw new RangeError("Native value "+String(e)+" is not a RuleForkEnumNative");return t};const n=r(447),i=r(130),s=r(671),a=r(906),o=new s.CallbackRegistry;Object.assign(Module,{kthCompleteCallback:(e,t,r)=>o.complete(e,t,r)});const c=Symbol("ptr"),_=(Symbol("derivedClass"),Symbol("dead")),h=Symbol("borrowed"),u=Symbol("parent"),l=Symbol("epoch"),d=Symbol("parentEpoch"),g=Symbol("retained");class w extends Error{constructor(e,t){super(`${e} failed with native status ${t}`),this.operation=e,this.status=t,this.name="NativeStatusError"}}function y(e){for(let t=e;null!=t;t=t[u]){if(!0===t[_])throw new Error(t===e?"Native object has been disposed or consumed":"Borrowed view outlived the object it was borrowed from");const r=t[u];if(null!=r&&(0|r[l])!==t[d])throw new Error("Borrowed view was invalidated by a mutation of the object it was borrowed from");const n=t[g];null!=n&&f(n)}return e[c]}function f(e){for(const[t,r]of e){try{y(t)}catch(e){throw new Error("Native object depends on an object that was disposed or is no longer valid: "+e.message)}if((0|t[l])!==r)throw new Error("Native object depends on an object that was mutated after it was retained")}}function p(e,t){if(y(e),t&&null==e[u])throw new Error("External async handle has no owning parent");const r=[];for(let t=e;null!=t;t=t[u]){if(r.includes(t))throw new Error("Cyclic native ownership");r.push(t)}return r}function m(e){if(o.assertIdle(e),y(e),!0===e[h])throw new Error("Cannot mutate a borrowed const view: only the owner may modify it");e[l]=1+(0|e[l])}t.NativeStatusError=w;const b={bitcoin:0,bitcoin_cash:1,litecoin:2},v=["bitcoin","bitcoin_cash","litecoin"];function k(e){const t=v[e];if(void 0===t||!Object.prototype.hasOwnProperty.call(v,e))throw new RangeError("Native value "+String(e)+" is not a Currency");return t}class S{constructor(){throw new Error("LibConfigTypeSizes has no constructor: create it through its factories")}static _create(e){const t=Object.create(this.prototype);return t[c]=e,t}get size_int(){return _kth_wasm_LibConfigTypeSizes_get_size_int(y(this))}get size_long(){return _kth_wasm_LibConfigTypeSizes_get_size_long(y(this))}get size_pointer(){return _kth_wasm_LibConfigTypeSizes_get_size_pointer(y(this))}_destructor(){if(!0!==this[_]){if(!0===this[h])throw new Error("Cannot destroy a borrowed view: its parent object owns the native handle");o.assertIdle(this),(0,n.clearStack)(),_kth_wasm_LibConfigTypeSizes_destructor(this[c]),this[_]=!0}}}t.LibConfigTypeSizes=S;class E{constructor(){throw new Error("LibConfig has no constructor: create it through its factories")}static _create(e){const t=Object.create(this.prototype);return t[c]=e,t}get version(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_version(y(this))>>>0)}get microarchitecture_id(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_microarchitecture_id(y(this))>>>0)}get currency(){return k(_kth_wasm_LibConfig_get_currency(y(this)))}get mempool(){return!!_kth_wasm_LibConfig_get_mempool(y(this))}get db_readonly(){return!!_kth_wasm_LibConfig_get_db_readonly(y(this))}get debug_mode(){return!!_kth_wasm_LibConfig_get_debug_mode(y(this))}get architecture(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_architecture(y(this))>>>0)}get os_name(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_os_name(y(this))>>>0)}get compiler_name(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_compiler_name(y(this))>>>0)}get compiler_version(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_compiler_version(y(this))>>>0)}get optimization_level(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_optimization_level(y(this))>>>0)}get build_timestamp(){return _kth_wasm_LibConfig_get_build_timestamp(y(this))>>>0}get build_git_hash(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_build_git_hash(y(this))>>>0)}get endianness(){return(0,i.UTF8ToString)(_kth_wasm_LibConfig_get_endianness(y(this))>>>0)}get type_sizes(){return S._create(_kth_wasm_LibConfig_get_type_sizes(y(this))>>>0)}_destructor(){if(!0!==this[_]){if(!0===this[h])throw new Error("Cannot destroy a borrowed view: its parent object owns the native handle");o.assertIdle(this),(0,n.clearStack)(),_kth_wasm_LibConfig_destructor(this[c]),this[_]=!0}}static getLibconfig(){return(0,n.clearStack)(),E._create(_kth_wasm_LibConfig_getLibconfig()>>>0)}static getEmscriptenVersionMajor(){return(0,n.clearStack)(),_kth_wasm_LibConfig_getEmscriptenVersionMajor()>>>0}static getEmscriptenVersionMinor(){return(0,n.clearStack)(),_kth_wasm_LibConfig_getEmscriptenVersionMinor()>>>0}static getEmscriptenVersionTiny(){return(0,n.clearStack)(),_kth_wasm_LibConfig_getEmscriptenVersionTiny()>>>0}static getBuildTimestamp(){return(0,n.clearStack)(),_kth_wasm_LibConfig_getBuildTimestamp()>>>0}}t.LibConfig=E;const N={mainnet:0,testnet:1,regtest:2,testnet4:3,scalenet:4,chipnet:5,tempnet:6},C=["mainnet","testnet","regtest","testnet4","scalenet","chipnet","tempnet"];function T(e){if("string"!=typeof e||!Object.prototype.hasOwnProperty.call(N,e))throw new RangeError("Invalid Network: "+String(e));return N[e]}t.HeaderSyncNative=class{static _create(e){const t=Object.create(this.prototype);return t[c]=e,t}_destructor(){if(!0===this[_])return;if(!0===this[h])throw new Error("Cannot destroy a borrowed view: its parent object owns the native handle");o.assertIdle(this),(0,n.clearStack)();const e=_kth_wasm_HeaderSyncNative_destructor(this[c]);if(0!==e)throw new w("HeaderSyncNative.destructor",e);this[_]=!0}constructor(e,t,r){(0,n.clearStack)(),(0,n.checkCString)(e,"bridge_url"),T(t),(0,a.checkInt)(r,"capacity",0,4294967295);let i=0,s=0,o=0;try{i=(0,a.allocZeroedSlot)(),s=_kth_wasm_HeaderSyncNative_constructor((0,n.allocateUTF8String)(e),T(t),r,i)>>>0,o=(0,a.readUint32)(i)}finally{0!==i&&Module._free(i)}if(0!==o)throw new w("HeaderSyncNative.constructor",o);if(0===s)throw new Error("HeaderSyncNative.constructor: native call reported success without a result");this[c]=s}async asyncRequestStop(){const e=y(this),t=p(this,!1);return o.invokeWithOwners(t,(t,r)=>{const n=_kth_wasm_HeaderSyncNative_asyncRequestStop;if("function"!=typeof n)throw new Error("Missing native async export");r(),n(e,t)})}async asyncRequestRefresh(){const e=y(this),t=p(this,!1);return o.invokeWithOwners(t,(t,r)=>{const n=_kth_wasm_HeaderSyncNative_asyncRequestRefresh;if("function"!=typeof n)throw new Error("Missing native async export");r(),n(e,t)})}lastHeight(){return(0,n.clearStack)(),BigInt.asUintN(64,_kth_wasm_HeaderSyncNative_lastHeight(y(this)))}running(){return(0,n.clearStack)(),!!_kth_wasm_HeaderSyncNative_running(y(this))}idle(){return(0,n.clearStack)(),!!_kth_wasm_HeaderSyncNative_idle(y(this))}status(){return(0,n.clearStack)(),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_status(y(this))>>>0,_kth_wasm_release_string_kth_core_destruct_string)}indexMemoryBytes(){return(0,n.clearStack)(),_kth_wasm_HeaderSyncNative_indexMemoryBytes(y(this))>>>0}async asyncRun(){const e=y(this),t=p(this,!1);return m(this),o.invokeWithOwners(t,(t,r)=>{const n=_kth_wasm_HeaderSyncNative_asyncRun;if("function"!=typeof n)throw new Error("Missing native async export");r(),n(e,t)})}async asyncFollow(){const e=y(this),t=p(this,!1);return m(this),o.invokeWithOwners(t,(t,r)=>{const n=_kth_wasm_HeaderSyncNative_asyncFollow;if("function"!=typeof n)throw new Error("Missing native async export");r(),n(e,t)})}reset(){return m(this),(0,n.clearStack)(),_kth_wasm_HeaderSyncNative_reset(y(this))>>>0}headerHex(e){return(0,n.clearStack)(),(0,a.checkU64)(e,"height"),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_headerHex(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}headerHash(e){return(0,n.clearStack)(),(0,a.checkU64)(e,"height"),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_headerHash(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}chainStateSnapshot(){return(0,n.clearStack)(),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_chainStateSnapshot(y(this))>>>0,_kth_wasm_release_string_kth_core_destruct_string)}runtimeSettings(){return(0,n.clearStack)(),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_runtimeSettings(y(this))>>>0,_kth_wasm_release_string_kth_core_destruct_string)}configureContent(e,t){return m(this),(0,n.clearStack)(),!!_kth_wasm_HeaderSyncNative_configureContent(y(this),e,t)}blockMetadata(e,t){return(0,n.clearStack)(),(0,a.checkU64)(e,"height"),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_blockMetadata(y(this),e,t)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}contentState(){return(0,n.clearStack)(),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_contentState(y(this))>>>0,_kth_wasm_release_string_kth_core_destruct_string)}observedTransactions(){return(0,n.clearStack)(),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_observedTransactions(y(this))>>>0,_kth_wasm_release_string_kth_core_destruct_string)}addPeer(e){return m(this),(0,n.clearStack)(),(0,n.checkCString)(e,"url"),!!_kth_wasm_HeaderSyncNative_addPeer(y(this),(0,n.allocateUTF8String)(e))}configureDiscovery(e,t,r){return m(this),(0,n.clearStack)(),!!_kth_wasm_HeaderSyncNative_configureDiscovery(y(this),e,t,r)}configureLegacyDiscovery(e){return m(this),(0,n.clearStack)(),!!_kth_wasm_HeaderSyncNative_configureLegacyDiscovery(y(this),e)}peerCount(){return(0,n.clearStack)(),_kth_wasm_HeaderSyncNative_peerCount(y(this))>>>0}peerEndpoint(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_peerEndpoint(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}peerSource(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_peerSource(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}peerState(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_peerState(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}peerAgent(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_peerAgent(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}peerError(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),(0,i.takeUTF8String)(_kth_wasm_HeaderSyncNative_peerError(y(this),e)>>>0,_kth_wasm_release_string_kth_core_destruct_string)}peerHeight(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),BigInt.asUintN(64,_kth_wasm_HeaderSyncNative_peerHeight(y(this),e))}peerAnnouncements(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),BigInt.asUintN(64,_kth_wasm_HeaderSyncNative_peerAnnouncements(y(this),e))}peerConnected(e){return(0,n.clearStack)(),(0,a.checkInt)(e,"at",0,4294967295),!!_kth_wasm_HeaderSyncNative_peerConnected(y(this),e)}};const U={no_rules:0,easy_blocks:1,bip16_rule:2,bip30_rule:3,bip34_rule:4,bip66_rule:5,bip65_rule:6,bip90_rule:7,allow_collisions:8,bip68_rule:9,bip112_rule:10,bip113_rule:11,bch_uahf:12,bch_daa_cw144:13,bch_pythagoras:14,bch_euclid:15,bch_pisano:16,bch_mersenne:17,bch_fermat:18,bch_euler:19,bch_gauss:20,bch_descartes:21,bch_lobachevski:22,bch_galois:23,bch_leibniz:24,retarget:25,unverified:26,bip34_activations:27,bip9_bit0_group:28,bip9_bit1_group:29,all_rules:30},H=["no_rules","easy_blocks","bip16_rule","bip30_rule","bip34_rule","bip66_rule","bip65_rule","bip90_rule","allow_collisions","bip68_rule","bip112_rule","bip113_rule","bch_uahf","bch_daa_cw144","bch_pythagoras","bch_euclid","bch_pisano","bch_mersenne","bch_fermat","bch_euler","bch_gauss","bch_descartes","bch_lobachevski","bch_galois","bch_leibniz","retarget","unverified","bip34_activations","bip9_bit0_group","bip9_bit1_group","all_rules"]},906:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.checkInt=function(e,t,r,n){if("number"!=typeof e||!Number.isInteger(e)||e<r||e>n)throw new RangeError(t+" must be an integer between "+r+" and "+n)},t.checkBytes=a,t.checkFixedBytes=function(e,t,r){if(a(e,t),e.length!==r)throw new RangeError(`${t} must be exactly ${r} bytes (got ${e.length})`)},t.readBytes=function(e,t){return new Uint8Array(s(e,t))},t.allocBytesBuffer=function(e){const t=Module._malloc(Math.max(e,1))>>>0;if(0===t)throw new Error("Out of memory");return t},t.checkU64=function(e,t){if("bigint"!=typeof e||BigInt.asUintN(64,e)!==e)throw new RangeError(`${t} must be a bigint in the unsigned 64-bit range`)},t.checkI64=function(e,t){if("bigint"!=typeof e||BigInt.asIntN(64,e)!==e)throw new RangeError(`${t} must be a bigint in the signed 64-bit range`)},t.malloc=function(e,t){const i=t*e.BYTES_PER_ELEMENT,s=Module._malloc(i)>>>0,a=function(e,t,r){if(e===Int8Array)return new Int8Array(n(),t,r);if(e===Uint8Array)return new Uint8Array(n(),t,r);if(e===Uint8ClampedArray)return new Uint8ClampedArray(n(),t,r);if(e===Int16Array)return new Int16Array(n(),t,r);if(e===Uint16Array)return new Uint16Array(n(),t,r);if(e===Int32Array)return new Int32Array(n(),t,r);if(e===Uint32Array)return new Uint32Array(n(),t,r);if(e===Float32Array)return new Float32Array(n(),t,r);if(e===Float64Array)return new Float64Array(n(),t,r);throw new Error(`Unsupported array class: ${e.name}`)}(e,s,t);return a[r]=!0,a.ptr=s,a},t.free=function(e){if(null==e)throw new Error("free() called with null or undefined");"number"==typeof e?Module._free(e):!0===e[r]?Module._free(e.ptr):e._destructor()},t.buffer=n,t.copyAndFreeByteArray=function(e,t){if(0===e){if(0===t)return new Uint8Array;throw new Error("Failed to retrieve data")}try{return new Uint8Array(s(e,t))}finally{Module._free(e)}},t.readUint32=i,t.setUint8Array=function(e,t){HEAPU8.set(e,t>>>0)},t.subarray=s,t.allocZeroedSlot=function(){const e=Module._malloc(4)>>>0;if(0===e)throw new Error("Out of memory");return HEAPU8.fill(0,e,e+4),e},t.takeByteArray=function(e,t,r){try{const r=i(t);if(0===e){if(0===r)return new Uint8Array;throw new Error("Failed to retrieve data")}return new Uint8Array(s(e,r))}finally{Module._free(t),0!==e&&null!=r&&r(e)}};const r=Symbol("custom_malloc_sym");function n(){return HEAPU8.buffer}function i(e){return new DataView(HEAPU8.buffer).getUint32(e,!0)}function s(e,t){return HEAPU8.subarray(e>>>0,e+t>>>0)}function a(e,t){if(!e)throw new Error(`${t} is null`);if(!(e instanceof Uint8Array))throw new TypeError(`${t} must be a Uint8Array`)}},447:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.clearStack=function(){i.reset()},t.checkCString=s,t.allocateUTF8String=function(e){s(e);const t=3*e.length+10,r=i.alloc(t);return(0,n.StringToUTF8)(e,r,t),r};const n=r(130),i={reset(){this._usedBytes=0,this._toFree.forEach(e=>Module._free(e)),this._toFree.length=0},alloc(e){if(e>5120){const t=Module._malloc(e)>>>0;if(0===t)throw new Error("Out of memory");return this._toFree.push(t),t}if(this._usedBytes+e>this._size){const t=this._usedBytes+e+10240,r=Module._malloc(t)>>>0;if(0===r)throw new Error("Out of memory");0!==this._ptr&&this._toFree.push(this._ptr),this._ptr=r,this._usedBytes=0,this._size=t}const t=this._ptr+this._usedBytes;return this._usedBytes+=e,t},_ptr:0,_usedBytes:0,_size:0,_toFree:new Array};function s(e,t="string"){if("string"!=typeof e)throw new TypeError(`${t} must be a string`);if(e.includes("\0"))throw new RangeError(`${t} contains a NUL character`)}},130:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UTF8ToString=s,t.consumeUTF8String=function(e,t){try{return s(e,t)}finally{0!==e&&Module._free(e)}},t.takeUTF8String=function(e,t){try{return s(e)}finally{0!==e&&t(e)}},t.StringToUTF8=function(e,t,r){const i=HEAPU8;if(e.length<100)return stringToUTF8Array(e,i,t,r);{let{written:s}=n.encodeInto(e,i.subarray(t,t+r));return s??(s=0),i[t+Math.min(s,r-1)]=0,s}};const r=new TextDecoder("utf8"),n=new TextEncoder,i=new Array(128).fill("").map((e,t)=>String.fromCodePoint(t));function s(e,t){return 0===e?"":(null==t&&(t=Module._strlen(e)),0===t?"":t>30?r.decode(HEAPU8.subarray(e>>>0,e+t>>>0)):function(e,t){const r=HEAPU8,n=e+t;let s,a,o,c="";for(;e<n;)s=r[e++],s<=127?c+=i[s]:(a=r[e++],o=s<=223?(31&s)<<6|63&a:s<=239?(15&s)<<12|(63&a)<<6|63&r[e++]:(7&s)<<18|(63&a)<<12|(63&r[e++])<<6|63&r[e++],c+=String.fromCodePoint(o));return c}(e,t))}}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}(()=>{const e=r(571);Module.HeaderSync=e.HeaderSync;const t=r(638),n=r(906);Module.getLibconfig=()=>{const e=t.LibConfig.getLibconfig();try{const r=e.type_sizes;return{version:e.version,microarchitecture_id:e.microarchitecture_id,currency:e.currency,mempool:e.mempool,db_readonly:e.db_readonly,debug_mode:e.debug_mode,architecture:e.architecture,os_name:e.os_name,compiler_name:e.compiler_name,compiler_version:e.compiler_version,optimization_level:e.optimization_level,build_timestamp:e.build_timestamp,build_git_hash:e.build_git_hash,endianness:e.endianness,type_sizes:{size_int:r.size_int,size_long:r.size_long,size_pointer:r.size_pointer},emscripten_version:`${t.LibConfig.getEmscriptenVersionMajor()}.${t.LibConfig.getEmscriptenVersionMinor()}.${t.LibConfig.getEmscriptenVersionTiny()}`,wasm_build_timestamp:t.LibConfig.getBuildTimestamp()}}finally{(0,n.free)(e)}}})()})();var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName;if(true)_scriptName=self.location.href;var scriptDirectory="";function locateFile(path){if(Module["locateFile"])return Module["locateFile"](path,scriptDirectory);return scriptDirectory+path}var readAsync,readBinary;if(false,true){try{scriptDirectory=new URL(".",_scriptName).href}catch{}if(true)readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)};readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok)return response.arrayBuffer();throw new Error(response.status+" : "+response.url)}}var out=console.log.bind(console);var err=console.error.bind(console);var ABORT=false;var EXITSTATUS;var runtimeInitialized=false;function getMemoryBuffer(){return wasmMemory.buffer}function updateMemoryViews(){if(HEAP8?.buffer?.resizable)return;var b=getMemoryBuffer();HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b)}function preRun(){var preRun=Module["preRun"];if(preRun){if(typeof preRun==="function")preRun=[preRun];onPreRuns.push(...preRun)}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.initialized)FS.init();TTY.init();PIPEFS.root=FS.mount(PIPEFS,{},null);SOCKFS.root=FS.mount(SOCKFS,{},null);wasmExports["M"]();FS.ignorePermissions=false}function postRun(){var postRun=Module["postRun"];if(postRun){if(typeof postRun==="function")postRun=[postRun];onPostRuns.push(...postRun)}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";if(runtimeInitialized)___trap();throw new WebAssembly.RuntimeError(what)}var wasmBinaryFile;function findWasmBinary(){return locateFile("browser_headers_persistent_v1.wasm")}function getBinarySync(file){if(readBinary)return readBinary(file);throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(true)try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary)try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0)callbacks.shift()(Module)};var onPostRuns=[];var onPreRuns=[];var noExitRuntime=true;var HEAP32;var syscallGetVarargI=()=>{var ret=HEAP32[+SYSCALLS.varargs>>>2>>>0];SYSCALLS.varargs+=4;return ret};var syscallGetVarargP=syscallGetVarargI;var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(filename).slice(1),normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===".")parts.splice(i,1);else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot)for(;up;up--)parts.unshift("..");return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.slice(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute)path=".";if(path&&trailingSlash)path+="/";return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir)return".";if(dir)dir=dir.slice(0,-1);return root+dir},basename:path=>path&&path.match(/([^\/]+|\/)\/*$/)[1],join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>view=>(crypto.getRandomValues(view),0);var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=="string")throw new TypeError("Arguments to path.resolve must be strings");else if(!path)return"";resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).slice(1);to=PATH_FS.resolve(to).slice(1);function trim(arr){var start=0;for(;start<arr.length;start++)if(arr[start]!=="")break;var end=arr.length-1;for(;end>=0;end--)if(arr[end]!=="")break;if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++)if(fromParts[i]!==toParts[i]){samePartsLength=i;break}var outputParts=[];for(i=samePartsLength;i<fromParts.length;i++)outputParts.push("..");outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{idx>>>=0;var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder)return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr));var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224)u0=(u0&15)<<12|u1<<6|u2;else u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63;if(u0<65536)str+=String.fromCharCode(u0);else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127)len++;else if(c<=2047)len+=2;else if(c>=55296&&c<=57343){len+=4;++i}else len+=3}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{outIdx>>>=0;if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++>>>0]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++>>>0]=192|u>>6;heap[outIdx++>>>0]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++>>>0]=224|u>>12;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++>>>0]=240|u>>18;heap[outIdx++>>>0]=128|u>>12&63;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63;i++}}heap[outIdx>>>0]=0;return outIdx-startIdx};var intArrayFromString=(stringy,dontAddNull,length)=>{var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array};var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){if(true)return null;FS_stdin_getChar_buffer=intArrayFromString(null,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty)throw new FS.ErrnoError(43);stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char)throw new FS.ErrnoError(60);var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===void 0&&!bytesRead)throw new FS.ErrnoError(6);if(result===null||result===void 0)break;bytesRead++;buffer[offset+i]=result;if(result===10)break}if(bytesRead)stream.node.atime=Date.now();return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var i=0;i<length;i++)stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}if(length)stream.node.mtime=stream.node.ctime=Date.now();return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output));tty.output=[]}else if(val!=0)tty.output.push(val)},fsync(tty){if(tty.output?.length>0){out(UTF8ArrayToString(tty.output));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output));tty.output=[]}else if(val!=0)tty.output.push(val)},fsync(tty){if(tty.output?.length>0){err(UTF8ArrayToString(tty.output));tty.output=[]}}}};var mmapAlloc=()=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16895,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode))throw new FS.ErrnoError(63);MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=MEMFS.emptyFileContents??=new Uint8Array(0)}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.atime=node.mtime=node.ctime=Date.now();if(parent){parent.contents[name]=node;parent.atime=parent.mtime=parent.ctime=node.atime}return node},getFileDataAsTypedArray(node){return node.contents.subarray(0,node.usedBytes)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents.length;if(prevCapacity>=newCapacity)return;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<1048576?2:1.125)>>>0);if(prevCapacity)newCapacity=Math.max(newCapacity,256);var oldContents=MEMFS.getFileDataAsTypedArray(node);node.contents=new Uint8Array(newCapacity);node.contents.set(oldContents)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;var oldContents=node.contents;node.contents=new Uint8Array(newSize);node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)));node.usedBytes=newSize},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode))attr.size=4096;else if(FS.isFile(node.mode))attr.size=node.usedBytes;else if(FS.isLink(node.mode))attr.size=node.link.length;else attr.size=0;attr.atime=new Date(node.atime);attr.mtime=new Date(node.mtime);attr.ctime=new Date(node.ctime);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){for(const key of["mode","atime","mtime","ctime"])if(attr[key]!=null)node[key]=attr[key];if(attr.size!==void 0)MEMFS.resizeFileStorage(node,attr.size)},lookup(parent,name){if(!MEMFS.doesNotExistError){MEMFS.doesNotExistError=new FS.ErrnoError(44);MEMFS.doesNotExistError.stack="<generic error, no stack>"}throw MEMFS.doesNotExistError},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node&&FS.isDir(old_node.mode))for(var i in new_node.contents)throw new FS.ErrnoError(55);delete old_node.parent.contents[old_node.name];new_dir.contents[new_name]=old_node;old_node.name=new_name;new_dir.ctime=new_dir.mtime=old_node.parent.ctime=old_node.parent.mtime=Date.now()},unlink(parent,name){delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents)throw new FS.ErrnoError(55);delete parent.contents[name];parent.ctime=parent.mtime=Date.now()},readdir(node){return[".","..",...Object.keys(node.contents)]},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,41471,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode))throw new FS.ErrnoError(28);return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);buffer.set(contents.subarray(position,position+size),offset);return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer)canOwn=false;if(!length)return 0;var node=stream.node;node.mtime=node.ctime=Date.now();if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length}else if(!node.usedBytes&&!position){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length}else{MEMFS.expandFileStorage(node,position+length);node.contents.set(buffer.subarray(offset,offset+length),position);node.usedBytes=Math.max(node.usedBytes,position+length)}return length},llseek(stream,offset,whence){var position=offset;if(whence===1)position+=stream.position;else if(whence===2)if(FS.isFile(stream.node.mode))position+=stream.node.usedBytes;if(position<0)throw new FS.ErrnoError(28);return position},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{allocated=true;ptr=mmapAlloc();if(!ptr)throw new FS.ErrnoError(48);if(contents){if(position>0||position+length<contents.length)if(contents.subarray)contents=contents.subarray(position,position+length);else contents=Array.prototype.slice.call(contents,position,position+length);HEAP8.set(contents,ptr>>>0)}}return{ptr,allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS_modeStringToFlags=str=>{if(typeof str!=="string")return str;var flags={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[str];if(typeof flags==="undefined")throw new Error(`Unknown file open mode: ${str}`);return flags};var FS_fileDataToTypedArray=data=>{if(typeof data==="string")data=intArrayFromString(data,true);if(!data.subarray)data=new Uint8Array(data);return data};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=365;if(canWrite)mode|=146;return mode};var IDBFS={dbs:{},indexedDB:()=>indexedDB,DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",queuePersist:mount=>{function onPersistComplete(){if(mount.idbPersistState==="again")startPersist();else{mount.idbPersistState=0;IDBFS.onAutoPersistStateChanged?.(false)}}function startPersist(){mount.idbPersistState="idb";IDBFS.onAutoPersistStateChanged?.(true);IDBFS.syncfs(mount,false,onPersistComplete)}if(!mount.idbPersistState)mount.idbPersistState=setTimeout(startPersist,0);else if(mount.idbPersistState==="idb")mount.idbPersistState="again"},mount:mount=>{var mnt=MEMFS.mount(mount);if(mount?.opts?.autoPersist){mount.idbPersistState=0;var memfs_node_ops=mnt.node_ops;mnt.node_ops={...mnt.node_ops};mnt.node_ops.mknod=(parent,name,mode,dev)=>{var node=memfs_node_ops.mknod(parent,name,mode,dev);node.node_ops=mnt.node_ops;node.idbfs_mount=mnt.mount;node.memfs_stream_ops=node.stream_ops;node.stream_ops={...node.stream_ops};node.stream_ops.write=(stream,buffer,offset,length,position,canOwn)=>{stream.node.isModified=true;return node.memfs_stream_ops.write(stream,buffer,offset,length,position,canOwn)};node.stream_ops.close=stream=>{var n=stream.node;if(n.isModified){IDBFS.queuePersist(n.idbfs_mount);n.isModified=false}if(n.memfs_stream_ops.close)return n.memfs_stream_ops.close(stream)};IDBFS.queuePersist(mnt.mount);return node};mnt.node_ops.rmdir=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rmdir(...args));mnt.node_ops.symlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.symlink(...args));mnt.node_ops.unlink=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.unlink(...args));mnt.node_ops.rename=(...args)=>(IDBFS.queuePersist(mnt.mount),memfs_node_ops.rename(...args))}return mnt},syncfs:(mount,populate,callback)=>{IDBFS.getLocalSet(mount,(err,local)=>{if(err)return callback(err);IDBFS.getRemoteSet(mount,(err,remote)=>{if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)})})},quit:()=>{for(var value of Object.values(IDBFS.dbs))value.close();IDBFS.dbs={}},getDB:(name,callback)=>{var db=IDBFS.dbs[name];if(db)return callback(null,db);var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req)return callback("Unable to connect to IndexedDB");req.onupgradeneeded=e=>{var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME))fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME);else fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME);if(!fileStore.indexNames.contains("timestamp"))fileStore.createIndex("timestamp","timestamp",{unique:false})};req.onsuccess=()=>{db=req.result;IDBFS.dbs[name]=db;callback(null,db)};req.onerror=e=>{callback(e.target.error);e.preventDefault()}},getLocalSet:(mount,callback)=>{var entries={};function isRealDir(p){return p!=="."&&p!==".."}function toAbsolute(root){return p=>PATH.join2(root,p)}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.lstat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode))check.push(...FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));entries[path]={timestamp:stat.mtime}}return callback(null,{type:"local",entries})},getRemoteSet:(mount,callback)=>{var entries={};IDBFS.getDB(mount.mountpoint,(err,db)=>{if(err)return callback(err);try{var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readonly");transaction.onerror=e=>{callback(e.target.error);e.preventDefault()};var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index("timestamp");index.openKeyCursor().onsuccess=event=>{var cursor=event.target.result;if(!cursor)return callback(null,{type:"remote",db,entries});entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()}}catch(e){return callback(e)}})},loadLocalEntry:(path,callback)=>{var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.lstat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode))return callback(null,{timestamp:stat.mtime,mode:stat.mode});else if(FS.isLink(stat.mode))return callback(null,{timestamp:stat.mtime,mode:stat.mode,link:node.link});else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else return callback(new Error("node type not supported"))},storeLocalEntry:(path,entry,callback)=>{try{if(FS.isDir(entry["mode"]))FS.mkdirTree(path,entry["mode"]);else if(FS.isLink(entry["mode"]))FS.symlink(entry["link"],path);else if(FS.isFile(entry["mode"]))FS.writeFile(path,entry["contents"],{canOwn:true});else return callback(new Error("node type not supported"));FS.chmod(path,entry["mode"]);FS.utime(path,entry["timestamp"],entry["timestamp"])}catch(e){return callback(e)}callback(null)},removeLocalEntry:(path,callback)=>{try{var stat=FS.lstat(path);if(FS.isDir(stat.mode))FS.rmdir(path);else FS.unlink(path)}catch(e){return callback(e)}callback(null)},loadRemoteEntry:(store,path,callback)=>{var req=store.get(path);req.onsuccess=event=>callback(null,event.target.result);req.onerror=e=>{callback(e.target.error);e.preventDefault()}},storeRemoteEntry:(store,path,entry,callback)=>{try{var req=store.put(entry,path)}catch(e){callback(e);return}req.onsuccess=()=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},removeRemoteEntry:(store,path,callback)=>{var req=store.delete(path);req.onsuccess=()=>callback();req.onerror=e=>{callback(e.target.error);e.preventDefault()}},reconcile:(src,dst,callback)=>{var total=0;var create=[];for(var[key,e]of Object.entries(src.entries)){var e2=dst.entries[key];if(!e2||e["timestamp"].getTime()!=e2["timestamp"].getTime()){create.push(key);total++}}var remove=[];for(var key of Object.keys(dst.entries))if(!src.entries[key]){remove.push(key);total++}if(!total)return callback(null);var errored=false;var db=src.type==="remote"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],"readwrite");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err&&!errored){errored=true;return callback(err)}}transaction.onerror=transaction.onabort=e=>{done(e.target.error);e.preventDefault()};transaction.oncomplete=()=>{if(!errored)callback(null)};for(const path of create.sort())if(dst.type==="local")IDBFS.loadRemoteEntry(store,path,(err,entry)=>{if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)});else IDBFS.loadLocalEntry(path,(err,entry)=>{if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)});for(var path of remove.sort().reverse())if(dst.type==="local")IDBFS.removeLocalEntry(path,done);else IDBFS.removeRemoteEntry(store,path,done)}};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};var FS_createDataFile=(...args)=>FS.createDataFile(...args);var getUniqueRunDependency=id=>id;var dependenciesPromise=null;var resolveRunDependencies=async()=>dependenciesPromise;var runDependencies=0;var dependenciesPromiseResolve=null;var removeRunDependency=()=>{runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(!runDependencies)dependenciesPromiseResolve()};var addRunDependency=()=>{if(!runDependencies)dependenciesPromise=new Promise(resolve=>dependenciesPromiseResolve=resolve);runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)};var preloadPlugins=[];var FS_handledByPreloadPlugin=async(byteArray,fullname)=>{if(typeof Browser!=="undefined")Browser.init();for(var plugin of preloadPlugins)if(plugin["canHandle"](fullname))return plugin["handle"](byteArray,fullname);return byteArray};var FS_preloadFile=async(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;getUniqueRunDependency(`cp ${fullname}`);addRunDependency();try{var byteArray=url;if(typeof url==="string")byteArray=await asyncLoad(url);byteArray=await FS_handledByPreloadPlugin(byteArray,fullname);preFinish?.();if(!dontCreateFile)FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}finally{removeRunDependency()}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:[],currentPath:"/",initialized:false,ignorePermissions:true,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(errno){this.errno=errno}},FSStream:class{shared={};get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(parent,name,mode,rdev){if(!parent)parent=this;this.parent=parent;this.mount=parent.mount;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.rdev=rdev;this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}addListener(cb,exclusive=false){var entry={cb,exclusive};var listeners=this.listeners??=new Set;listeners.add(entry);return{listeners,entry}}notifyListeners(flags){if(!this.listeners)return;var excl;for(var entry of this.listeners)if(entry.exclusive)(excl||=[]).push(entry);else entry.cb(flags);if(excl){var i=(this.exclTurn||0)%excl.length;this.exclTurn=i+1;excl[i].cb(flags)}}},lookupPath(path,opts={}){if(!path)throw new FS.ErrnoError(44);opts.follow_mount??=true;if(!PATH.isAbs(path))path=FS.cwd()+"/"+path;linkloop:for(var nlinks=0;nlinks<40;nlinks++){var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent)break;if(parts[i]===".")continue;if(parts[i]===".."){current_path=PATH.dirname(current_path);if(FS.isRoot(current)){path=current_path+"/"+parts.slice(i+1).join("/");nlinks--;continue linkloop}else current=current.parent;continue}current_path=PATH.join2(current_path,parts[i]);try{current=FS.lookupNode(current,parts[i])}catch(e){if(e?.errno===44&&islast&&opts.noent_okay)return{path:current_path};throw e}if(FS.isMountpoint(current)&&(!islast||opts.follow_mount))current=current.mounted.root;if(FS.isLink(current.mode)&&(!islast||opts.follow)){if(!current.node_ops.readlink)throw new FS.ErrnoError(52);var link=current.node_ops.readlink(current);if(!PATH.isAbs(link))link=PATH.dirname(current_path)+"/"+link;path=link+"/"+parts.slice(i+1).join("/");continue linkloop}}return{path:current_path,node:current}}throw new FS.ErrnoError(32)},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++)hash=(hash<<5)-hash+name.charCodeAt(i)|0;return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node)FS.nameTable[hash]=node.name_next;else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode)throw new FS.ErrnoError(errCode);var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name)return node}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512)perms+="w";return perms},nodePermissions(node,perms){if(FS.ignorePermissions)return 0;if(perms.includes("r")&&!(node.mode&292))return 2;if(perms.includes("w")&&!(node.mode&146))return 2;if(perms.includes("x")&&!(node.mode&73))return 2;return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){if(!FS.isDir(dir.mode))return 54;try{FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode)return errCode;if(isdir){if(!FS.isDir(node.mode))return 54;if(FS.isRoot(node)||FS.getPath(node)===FS.cwd())return 10}else if(FS.isDir(node.mode))return 31;return 0},mayOpen(node,flags){if(!node)return 44;if(FS.isLink(node.mode))return 32;var mode=FS.flagsToPermissionString(flags);if(FS.isDir(node.mode))if(mode!=="r"||flags&576)return 31;return FS.nodePermissions(node,mode)},checkOpExists(op,err){if(!op)throw new FS.ErrnoError(err);return op},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++)if(!FS.streams[fd])return fd;throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1)fd=FS.nextfd();stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},doSetAttr(stream,node,attr){var setattr=stream?.stream_ops.setattr;var arg=setattr?stream:node;setattr??=node.node_ops.setattr;FS.checkOpExists(setattr,63);try{setattr(arg,attr)}catch(e){if(e instanceof RangeError)throw new FS.ErrnoError(22);throw e}},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1)err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length)doCallback(null)}for(var mount of mounts)if(mount.type.syncfs)mount.type.syncfs(mount,populate,done);else done(null)},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root)throw new FS.ErrnoError(10);else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node))throw new FS.ErrnoError(10);if(!FS.isDir(node.mode))throw new FS.ErrnoError(54)}var mount={type,opts,mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root)FS.root=mountRoot;else if(node){node.mounted=mount;if(node.mount)node.mount.mounts.push(mount)}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node))throw new FS.ErrnoError(28);var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);for(var[hash,current]of Object.entries(FS.nameTable))while(current){var next=current.name_next;if(mounts.includes(current.mount))FS.destroyNode(current);current=next}node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name)throw new FS.ErrnoError(28);if(name==="."||name==="..")throw new FS.ErrnoError(20);var errCode=FS.mayCreate(parent,name);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.mknod)throw new FS.ErrnoError(63);return parent.node_ops.mknod(parent,name,mode,dev)},statfs(path){return FS.statfsNode(FS.lookupPath(path,{follow:true}).node)},statfsStream(stream){return FS.statfsNode(stream.node)},statfsNode(node){var rtn={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255};if(node.node_ops.statfs)Object.assign(rtn,node.node_ops.statfs(node.mount.opts.root));return rtn},create(path,mode=438){mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode=511){mode&=1023;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode=511){var dirs=path.split("/");var d="";for(var dir of dirs){if(!dir)continue;if(d||PATH.isAbs(path))d+="/";d+=dir;try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath))throw new FS.ErrnoError(44);var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent)throw new FS.ErrnoError(44);var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.symlink)throw new FS.ErrnoError(63);return parent.node_ops.symlink(parent,newname,oldpath)},link(oldpath,newpath,flags){var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent)throw new FS.ErrnoError(44);var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.link)throw new FS.ErrnoError(34);return parent.node_ops.link(parent,newname,oldpath,flags)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount)throw new FS.ErrnoError(75);var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==".")throw new FS.ErrnoError(28);relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==".")throw new FS.ErrnoError(55);var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node)return;var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode)throw new FS.ErrnoError(errCode);errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode)throw new FS.ErrnoError(errCode);if(!old_dir.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node))throw new FS.ErrnoError(10);if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode)throw new FS.ErrnoError(errCode)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);if(new_node)FS.hashRemoveNode(new_node);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;var readdir=FS.checkOpExists(node.node_ops.readdir,54);return readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent)throw new FS.ErrnoError(44);var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode)throw new FS.ErrnoError(errCode);if(!parent.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(node))throw new FS.ErrnoError(10);parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link)throw new FS.ErrnoError(44);if(!link.node_ops.readlink)throw new FS.ErrnoError(28);return link.node_ops.readlink(link)},stat(path,dontFollow=false){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;var getattr=FS.checkOpExists(node.node_ops.getattr,63);return getattr(node)},fstat(fd){var stream=FS.getStreamChecked(fd);var node=stream.node;var getattr=stream.stream_ops.getattr;var arg=getattr?stream:node;getattr??=node.node_ops.getattr;FS.checkOpExists(getattr,63);return getattr(arg)},lstat(path){return FS.stat(path,true)},doChmod(stream,node,mode,dontFollow=false){FS.doSetAttr(stream,node,{mode:mode&4095|node.mode&-4096,ctime:Date.now(),dontFollow})},chmod(path,mode,dontFollow=false){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else node=path;FS.doChmod(null,node,mode,dontFollow)},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.doChmod(stream,stream.node,mode,false)},doChown(stream,node,dontFollow=false){FS.doSetAttr(stream,node,{timestamp:Date.now(),dontFollow})},chown(path,uid,gid,dontFollow=false){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else node=path;FS.doChown(null,node,dontFollow)},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.doChown(stream,stream.node,false)},doTruncate(stream,node,len){if(FS.isDir(node.mode))throw new FS.ErrnoError(31);if(!FS.isFile(node.mode))throw new FS.ErrnoError(28);var errCode=FS.nodePermissions(node,"w");if(errCode)throw new FS.ErrnoError(errCode);FS.doSetAttr(stream,node,{size:len,timestamp:Date.now()})},truncate(path,len){if(len<0)throw new FS.ErrnoError(28);var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else node=path;FS.doTruncate(null,node,len)},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if(len<0||(stream.flags&2097155)===0)throw new FS.ErrnoError(28);FS.doTruncate(stream,stream.node,len)},utime(path,atime,mtime,dontFollow=false){var lookup=FS.lookupPath(path,{follow:!dontFollow});FS.doSetAttr(null,lookup.node,{atime,mtime,dontFollow})},open(path,flags,mode=438){if(path==="")throw new FS.ErrnoError(44);flags=FS_modeStringToFlags(flags);if(flags&64)mode=mode&4095|32768;else mode=0;var node;var isDirPath;if(typeof path==="object")node=path;else{isDirPath=path.endsWith("/");var lookup=FS.lookupPath(path,{follow:!(flags&131072),noent_okay:true});node=lookup.node;path=lookup.path}var created=false;if(flags&64)if(node){if(flags&128)throw new FS.ErrnoError(20)}else if(isDirPath)throw new FS.ErrnoError(31);else{node=FS.mknod(path,mode|511,0);created=true}if(!node)throw new FS.ErrnoError(44);if(FS.isChrdev(node.mode))flags&=-513;if(flags&65536&&!FS.isDir(node.mode))throw new FS.ErrnoError(54);if(!created){var errCode=FS.mayOpen(node,flags);if(errCode)throw new FS.ErrnoError(errCode)}if(flags&512&&!created)FS.truncate(node,0);flags&=-131713;var stream=FS.createStream({node,path:FS.getPath(node),flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open)stream.stream_ops.open(stream);if(created)FS.chmod(node,mode&511);return stream},close(stream){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(stream.getdents)stream.getdents=null;stream.node?.notifyListeners(32);try{if(stream.stream_ops.close)stream.stream_ops.close(stream)}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream))throw new FS.ErrnoError(8);if(!stream.seekable||!stream.stream_ops.llseek)throw new FS.ErrnoError(70);if(whence!=0&&whence!=1&&whence!=2)throw new FS.ErrnoError(28);stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if((stream.flags&2097155)===1)throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.read)throw new FS.ErrnoError(28);var seeking=typeof position!=="undefined";if(!seeking)position=stream.position;else if(!stream.seekable)throw new FS.ErrnoError(70);var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0)throw new FS.ErrnoError(28);if(FS.isClosed(stream))throw new FS.ErrnoError(8);if((stream.flags&2097155)===0)throw new FS.ErrnoError(8);if(FS.isDir(stream.node.mode))throw new FS.ErrnoError(31);if(!stream.stream_ops.write)throw new FS.ErrnoError(28);if(stream.seekable&&stream.flags&1024)FS.llseek(stream,0,2);var seeking=typeof position!=="undefined";if(!seeking)position=stream.position;else if(!stream.seekable)throw new FS.ErrnoError(70);var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},mmap(stream,length,position,prot,flags){if(prot&2&&!(flags&2)&&(stream.flags&2097155)!==2)throw new FS.ErrnoError(2);if((stream.flags&2097155)===1)throw new FS.ErrnoError(2);if(!stream.stream_ops.mmap)throw new FS.ErrnoError(43);if(!length)throw new FS.ErrnoError(28);return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync)return 0;return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl)throw new FS.ErrnoError(59);return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags??=0;opts.encoding??="binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary")abort(`Invalid encoding type "${opts.encoding}"`);var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8")buf=UTF8ArrayToString(buf);FS.close(stream);return buf},writeFile(path,data,opts={}){opts.flags??=577;var stream=FS.open(path,opts.flags,opts.mode);data=FS_fileDataToTypedArray(data);FS.write(stream,data,0,data.byteLength,void 0,opts.canOwn);FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null)throw new FS.ErrnoError(44);if(!FS.isDir(lookup.node.mode))throw new FS.ErrnoError(54);var errCode=FS.nodePermissions(lookup.node,"x");if(errCode)throw new FS.ErrnoError(errCode);FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length)=>length,llseek:()=>0});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(!randomLeft){randomFill(randomBuffer);randomLeft=randomBuffer.byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16895,73);node.stream_ops={llseek:MEMFS.stream_ops.llseek};node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path},id:fd+1};ret.parent=ret;return ret},readdir(){return Array.from(FS.streams.entries()).filter(([k,v])=>v).map(([k,v])=>k.toString())}};return node}},{},"/proc/self/fd")},createStandardStreams(input,output,error){if(input)FS.createDevice("/dev","stdin",input);else FS.symlink("/dev/tty","/dev/stdin");if(output)FS.createDevice("/dev","stdout",null,output);else FS.symlink("/dev/tty","/dev/stdout");if(error)FS.createDevice("/dev","stderr",null,error);else FS.symlink("/dev/tty1","/dev/stderr");FS.open("/dev/stdin",0);FS.open("/dev/stdout",1);FS.open("/dev/stderr",1)},staticInit(){FS.nameTable.length=4096;FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories()},init(input,output,error){FS.initialized=true;input??=Module["stdin"];output??=Module["stdout"];error??=Module["stderr"];FS.createStandardStreams(input,output,error)},quit(){FS.initialized=false;for(var stream of FS.streams)if(stream)FS.close(stream)},analyzePath(path,dontResolveLastLink=false){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){if(e.errno!=20)throw e}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){data=FS_fileDataToTypedArray(data);FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);FS.createDevice.major??=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length)output(10)},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===void 0&&!bytesRead)throw new FS.ErrnoError(6);if(result===null||result===void 0)break;bytesRead++;buffer[offset+i]=result}if(bytesRead)stream.node.atime=Date.now();return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++)try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}if(length)stream.node.mtime=stream.node.ctime=Date.now();return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(globalThis.XMLHttpRequest)abort("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");else try{obj.contents=readBinary(obj.url)}catch(e){throw new FS.ErrnoError(29)}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{lengthKnown=false;chunks=[];get(idx){if(idx>this.length-1||idx<0)return;var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort(`Couldn't load ${url}. Status: ${xhr.status}`);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1048576;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)abort(`invalid range (${from}, ${to}) or no bytes requested!`);if(to>datalength-1)abort(`only ${datalength} bytes available! programmer error!`);var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range",`bytes=${from}-${to}`);xhr.responseType="arraybuffer";if(xhr.overrideMimeType)xhr.overrideMimeType("text/plain; charset=x-user-defined");xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))abort(`Couldn't load ${url}. Status: ${xhr.status}`);if(xhr.response!==void 0)return new Uint8Array(xhr.response||[]);return intArrayFromString(xhr.responseText??"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined")lazyArray.chunks[chunkNum]=doXHR(start,end);if(typeof lazyArray.chunks[chunkNum]==="undefined")abort("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown)this.cacheLength();return this._length}get chunkSize(){if(!this.lengthKnown)this.cacheLength();return this._chunkSize}}if(globalThis.XMLHttpRequest){if(false)abort("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else properties={isDevice:false,url};var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents)node.contents=properties.contents;else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};for(const[key,fn]of Object.entries(node.stream_ops))stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)};function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice)for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i];else for(i=0;i<size;i++)buffer[offset+i]=contents.get(position+i);return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position)=>{FS.forceLoadFile(node);var ptr=mmapAlloc();if(!ptr)throw new FS.ErrnoError(48);writeChunks(stream,HEAP8,ptr,length,position);return{ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var HEAPU8;var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{ptr>>>=0;return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):""};var HEAPU32;var HEAP64;var SYSCALLS={currentUmask:18,calculateAt(dirfd,path,allowEmpty=false){if(PATH.isAbs(path))return path;var dir;if(dirfd===-100)dir=FS.cwd();else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty)throw new FS.ErrnoError(44);return dir}return dir+"/"+path},writeStat(buf,stat){HEAPU32[buf>>>2>>>0]=stat.dev;HEAPU32[buf+4>>>2>>>0]=stat.mode;HEAPU32[buf+8>>>2>>>0]=stat.nlink;HEAPU32[buf+12>>>2>>>0]=stat.uid;HEAPU32[buf+16>>>2>>>0]=stat.gid;HEAPU32[buf+20>>>2>>>0]=stat.rdev;HEAP64[buf+24>>>3>>>0]=BigInt(stat.size);HEAP32[buf+32>>>2>>>0]=4096;HEAP32[buf+36>>>2>>>0]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+40>>>3>>>0]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+48>>>2>>>0]=atime%1e3*1e3*1e3;HEAP64[buf+56>>>3>>>0]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+64>>>2>>>0]=mtime%1e3*1e3*1e3;HEAP64[buf+72>>>3>>>0]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+80>>>2>>>0]=ctime%1e3*1e3*1e3;HEAP64[buf+88>>>3>>>0]=BigInt(stat.ino);return 0},writeStatFs(buf,stats){HEAPU32[buf+4>>>2>>>0]=stats.bsize;HEAPU32[buf+60>>>2>>>0]=stats.bsize;HEAP64[buf+8>>>3>>>0]=BigInt(stats.blocks);HEAP64[buf+16>>>3>>>0]=BigInt(stats.bfree);HEAP64[buf+24>>>3>>>0]=BigInt(stats.bavail);HEAP64[buf+32>>>3>>>0]=BigInt(stats.files);HEAP64[buf+40>>>3>>>0]=BigInt(stats.ffree);HEAPU32[buf+48>>>2>>>0]=stats.fsid;HEAPU32[buf+64>>>2>>>0]=stats.flags;HEAPU32[buf+56>>>2>>>0]=stats.namelen},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode))throw new FS.ErrnoError(43);if(flags&2)return 0;var buffer=HEAPU8.subarray(addr>>>0,addr+len>>>0);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:void 0,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};var bigintToI53Checked=num=>num<-9007199254740992||num>9007199254740992?NaN:Number(num);var HEAP16;var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(mount){return FS.createNode(null,"/",16895,0)},createPipe(){var pipe={buckets:[],writerCount:1,writeClosed:false,readerCount:1,readClosed:false,timestamp:new Date};pipe.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var rName=PIPEFS.nextname();var wName=PIPEFS.nextname();var rNode=FS.createNode(PIPEFS.root,rName,4096,0);var wNode=FS.createNode(PIPEFS.root,wName,4096,0);rNode.pipe=pipe;wNode.pipe=pipe;pipe.readNode=rNode;pipe.writeNode=wNode;var readableStream=FS.createStream({path:rName,node:rNode,flags:0,seekable:false,stream_ops:PIPEFS.stream_ops});rNode.stream=readableStream;var writableStream=FS.createStream({path:wName,node:wNode,flags:1,seekable:false,stream_ops:PIPEFS.stream_ops});wNode.stream=writableStream;return{readable_fd:readableStream.fd,writable_fd:writableStream.fd}},stream_ops:{getattr(stream){var node=stream.node;var timestamp=node.pipe.timestamp;return{dev:14,ino:node.id,mode:4480,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:timestamp,mtime:timestamp,ctime:timestamp,blksize:4096,blocks:0}},poll(stream){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){var mask=260;if(pipe.readClosed)mask|=8;return mask}mask=0;for(var bucket of pipe.buckets)if(bucket.offset-bucket.roffset>0){mask=65;break}if(pipe.writeClosed)mask|=17;return mask},dup(stream){var pipe=stream.node.pipe;if((stream.flags&2097155)===1)pipe.writerCount++;else pipe.readerCount++},ioctl(stream,request,argp){if(request==21531){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets)currentLength+=bucket.offset-bucket.roffset;HEAP32[argp>>>2>>>0]=currentLength;return 0}return 28},fsync(stream){return 28},read(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var currentLength=0;for(var bucket of pipe.buckets)currentLength+=bucket.offset-bucket.roffset;var data=buffer.subarray(offset,offset+length);if(length<=0)return 0;if(currentLength==0)throw new FS.ErrnoError(6);var toRead=Math.min(currentLength,length);var totalRead=toRead;var toRemove=0;for(var bucket of pipe.buckets){var bucketSize=bucket.offset-bucket.roffset;if(toRead<=bucketSize){var tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);if(toRead<bucketSize){tmpSlice=tmpSlice.subarray(0,toRead);bucket.roffset+=toRead}else toRemove++;data.set(tmpSlice);break}else{tmpSlice=bucket.buffer.subarray(bucket.roffset,bucket.offset);data.set(tmpSlice);data=data.subarray(tmpSlice.byteLength);toRead-=tmpSlice.byteLength;toRemove++}}if(toRemove&&toRemove==pipe.buckets.length){toRemove--;pipe.buckets[toRemove].offset=0;pipe.buckets[toRemove].roffset=0}pipe.buckets.splice(0,toRemove);return totalRead},write(stream,buffer,offset,length,position){var pipe=stream.node.pipe;var data=buffer.subarray(offset,offset+length);var dataLen=data.byteLength;if(dataLen<=0)return 0;var currBucket=null;if(pipe.buckets.length==0){currBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0};pipe.buckets.push(currBucket)}else currBucket=pipe.buckets[pipe.buckets.length-1];var freeBytesInCurrBuffer=PIPEFS.BUCKET_BUFFER_SIZE-currBucket.offset;if(freeBytesInCurrBuffer>=dataLen){currBucket.buffer.set(data,currBucket.offset);currBucket.offset+=dataLen;pipe.readNode.notifyListeners(65);return dataLen}else if(freeBytesInCurrBuffer>0){currBucket.buffer.set(data.subarray(0,freeBytesInCurrBuffer),currBucket.offset);currBucket.offset+=freeBytesInCurrBuffer;data=data.subarray(freeBytesInCurrBuffer,data.byteLength)}var numBuckets=data.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0;var remElements=data.byteLength%PIPEFS.BUCKET_BUFFER_SIZE;for(var i=0;i<numBuckets;i++){var newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:PIPEFS.BUCKET_BUFFER_SIZE,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data.subarray(0,PIPEFS.BUCKET_BUFFER_SIZE));data=data.subarray(PIPEFS.BUCKET_BUFFER_SIZE,data.byteLength)}if(remElements>0){newBucket={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:data.byteLength,roffset:0};pipe.buckets.push(newBucket);newBucket.buffer.set(data)}pipe.readNode.notifyListeners(65);return dataLen},close(stream){var pipe=stream.node.pipe;if((stream.flags&2097155)===1){if(! --pipe.writerCount){pipe.writeClosed=true;pipe.readNode.notifyListeners(81)}}else if(! --pipe.readerCount){pipe.readClosed=true;pipe.writeNode.notifyListeners(268)}if(!pipe.readerCount&&!pipe.writerCount)pipe.buckets=null}},nextname(){if(!PIPEFS.nextname.current)PIPEFS.nextname.current=0;return"pipe["+PIPEFS.nextname.current+++"]"}};var pollOne=(fd,events)=>{var stream=FS.getStream(fd);if(!stream)return 32;var flags=stream.stream_ops?.poll?.(stream)??5;return flags&(56|events)};var doPollSync=(fds,nfds)=>{var count=0;for(var i=0,pollfd=fds;i<nfds;i++,pollfd+=8){var revents=pollOne(HEAP32[pollfd>>>2>>>0],HEAP16[pollfd+4>>>1>>>0]);if(revents)count++;HEAP16[pollfd+6>>>1>>>0]=revents}return count};var SOCKFS={websocketArgs:{},callbacks:{},on(event,callback){SOCKFS.callbacks[event]=callback},emit(event,param){SOCKFS.callbacks[event]?.(param);var fd=event==="error"?param[0]:param;var flags={message:65,open:4,connection:65,close:17,error:8}[event];if(flags)FS.getStream(fd)?.node.notifyListeners(flags)},mount(mount){SOCKFS.websocketArgs=Module["websocket"]||{};(Module["websocket"]??={})["on"]=SOCKFS.on;return FS.createNode(null,"/",16895,0)},createSocket(family,type,protocol){if(family!=2)throw new FS.ErrnoError(5);type&=-526337;if(type!=1&&type!=2)throw new FS.ErrnoError(28);var streaming=type==1;if(streaming&&protocol&&protocol!=6)throw new FS.ErrnoError(66);var sock={family,type,protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode))return null;return stream.node.sock},stream_ops:{getattr(stream){var node=stream.node;return{dev:1,ino:node.id,mode:49663,nlink:1,uid:0,gid:0,rdev:0,size:0,atime:new Date(0),mtime:new Date(0),ctime:new Date(0),blksize:4096,blocks:0}},poll(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg)return 0;buffer.set(msg.buffer,offset);return msg.buffer.length},write(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname(){if(!SOCKFS.nextname.current)SOCKFS.nextname.current=0;return`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws)if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result)throw new Error("WebSocket URL must be in the format ws(s)://address:port");addr=result[1];port=parseInt(result[2],10)}else try{var url="ws://".replace("#","//");var subProtocols="binary";var opts=void 0;if(SOCKFS.websocketArgs["url"])url=SOCKFS.websocketArgs["url"];if(SOCKFS.websocketArgs["subprotocol"])subProtocols=SOCKFS.websocketArgs["subprotocol"];else if(SOCKFS.websocketArgs["subprotocol"]===null)subProtocols="null";if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}var WebSocketConstructor;WebSocketConstructor=WebSocket;ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}var peer={addr,port,socket:ws,msg_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined")peer.msg_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]));return peer},getPeer(sock,addr,port){return sock.peers[addr+":"+port]},addPeer(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents(sock,peer){var first=true;function handleMessage(data){if(typeof data==="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{if(data.byteLength==0)return;data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data});SOCKFS.emit("message",sock.stream.fd)}peer.socket.onopen=function(){sock.connecting=false;SOCKFS.emit("open",sock.stream.fd);try{var queued=peer.msg_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.msg_send_queue.shift()}}catch(e){peer.socket.close()}};peer.socket.onclose=()=>SOCKFS.emit("close",sock.stream.fd);peer.socket.onmessage=event=>handleMessage(event.data);peer.socket.onerror=()=>{sock.error=14;SOCKFS.emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}},poll(sock){if(sock.type===1&&(sock.server||sock.listening)){if(sock.error)return 8;if(!sock.server)return 16;return sock.pending.length?65:0}var mask=0;if(sock.error)mask|=8;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)mask|=65;if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN)mask|=4;if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED)if(sock.connecting)mask|=4;else mask|=8208;return mask},ioctl(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length)bytes=sock.recv_queue[0].data.length;HEAP32[arg>>>2>>>0]=bytes;return 0;case 21537:var on=HEAP32[arg>>>2>>>0];if(on)sock.stream.flags|=2048;else sock.stream.flags&=-2049;return 0;default:return 28}},close(sock){sock.listening=false;if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}for(var peer of Object.values(sock.peers)){try{peer.socket.close()}catch(e){}SOCKFS.websocket_sock_ops.removePeer(sock,peer)}return 0},bind(sock,addr,port){if(typeof sock.saddr!=="undefined"||typeof sock.sport!=="undefined")throw new FS.ErrnoError(28);sock.saddr=addr;sock.sport=port;if(sock.type===2){if(sock.server){sock.server.close();sock.server=null}try{sock.sock_ops.listen(sock,0)}catch(e){if(!(e.name==="ErrnoError"))throw e;if(e.errno!==138)throw e}}},connect(sock,addr,port){if(sock.server)throw new FS.ErrnoError(138);if(typeof sock.daddr!=="undefined"&&typeof sock.dport!=="undefined"){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(dest)if(dest.socket.readyState===dest.socket.CONNECTING)throw new FS.ErrnoError(7);else throw new FS.ErrnoError(30)}var peer=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);sock.daddr=peer.addr;sock.dport=peer.port;sock.connecting=true},listen(sock,backlog){if(true)throw new FS.ErrnoError(138)},accept(listensock){if(listensock.error){var err=listensock.error;listensock.error=null;throw new FS.ErrnoError(err)}if(!listensock.server||!listensock.pending.length)throw new FS.ErrnoError(28);var newsock=listensock.pending.shift();newsock.stream.flags=listensock.stream.flags;return newsock},getname(sock,peer){var addr,port;if(peer){if(sock.daddr===void 0||sock.dport===void 0)throw new FS.ErrnoError(53);addr=sock.daddr;port=sock.dport}else{addr=sock.saddr||0;port=sock.sport||0}return{addr,port}},sendmsg(sock,buffer,offset,length,addr,port){if(sock.type===2){if(addr===void 0||port===void 0){addr=sock.daddr;port=sock.dport}if(addr===void 0||port===void 0)throw new FS.ErrnoError(17)}else{addr=sock.daddr;port=sock.dport}var dest=SOCKFS.websocket_sock_ops.getPeer(sock,addr,port);if(sock.type===1)if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)throw new FS.ErrnoError(53);if(ArrayBuffer.isView(buffer)){offset+=buffer.byteOffset;buffer=buffer.buffer}var data=buffer.slice(offset,offset+length);if(!dest||dest.socket.readyState!==dest.socket.OPEN){if(sock.type===2)if(!dest||dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)dest=SOCKFS.websocket_sock_ops.createPeer(sock,addr,port);dest.msg_send_queue.push(data);return length}try{dest.socket.send(data);return length}catch(e){throw new FS.ErrnoError(28)}},recvmsg(sock,length,flags){if(sock.type===1&&sock.server)throw new FS.ErrnoError(53);var peek=flags&2;var queued=sock.recv_queue[0];if(!queued){if(sock.type===1){var dest=SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport);if(!dest)throw new FS.ErrnoError(53);if(dest.socket.readyState===dest.socket.CLOSING||dest.socket.readyState===dest.socket.CLOSED)return null;throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var queuedLength=queued.data.byteLength||queued.data.length;var queuedOffset=queued.data.byteOffset||0;var queuedBuffer=queued.data.buffer||queued.data;var bytesRead=Math.min(length,queuedLength);var res={buffer:new Uint8Array(queuedBuffer,queuedOffset,bytesRead),addr:queued.addr,port:queued.port};if(peek)return res;sock.recv_queue.shift();if(sock.type===1&&bytesRead<queuedLength){var bytesRemaining=queuedLength-bytesRead;queued.data=new Uint8Array(queuedBuffer,queuedOffset+bytesRead,bytesRemaining);sock.recv_queue.unshift(queued)}return res}}};var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var _emscripten_get_now=()=>performance.now();var _emscripten_date_now=()=>Date.now();var checkWasiClock=clock_id=>clock_id>=0&&clock_id<=3;var readEmAsmArgsArray=[];var HEAPF64;var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++>>>0]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>>2>>>0]:ch==106?HEAP64[buf>>>3>>>0]:ch==105?HEAP32[buf>>>2>>>0]:HEAPF64[buf>>>3>>>0]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind")return EXITSTATUS;quit_(0,e)};var keepRuntimeAlive=()=>noExitRuntime||0>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(0,new ExitStatus(code))};var _exit=status=>{EXITSTATUS=status;_proc_exit(status)};var maybeExit=()=>{if(!keepRuntimeAlive())try{_exit(EXITSTATUS)}catch(e){handleException(e)}};var callUserCallback=(func,...args)=>{if(ABORT)return;try{return func(...args)}catch(e){handleException(e)}finally{maybeExit()}};var safeSetTimeout=(func,timeout)=>{var id=safeSetTimeout.nextId++;safeSetTimeout.pending.set(id,setTimeout(()=>{safeSetTimeout.pending.delete(id);callUserCallback(func)},timeout));return id};var _emscripten_clear_timeout=id=>{var handle=safeSetTimeout.pending.get(id);if(!handle)return;safeSetTimeout.pending.delete(id);clearTimeout(handle)};var getHeapMax=()=>4294901760;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func)wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);return func};var webSockets=new class{allocated=[void 0];freelist=[];get(id){return this.allocated[id]}has(id){return this.allocated[id]!==void 0}allocate(handle){var id=this.freelist.pop()??this.allocated.length;this.allocated[id]=handle;return id}free(id){this.allocated[id]=void 0;this.freelist.push(id)}};var WS={socketEvent:null,getSocket(socketId){if(!webSockets.has(socketId))return 0;return webSockets.get(socketId)},getSocketEvent(socketId){WS.socketEvent||=_malloc(520);HEAPU32[WS.socketEvent>>>2>>>0]=socketId;return WS.socketEvent}};var stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV)if(ENV[x]===void 0)delete env[x];else env[x]=ENV[x];var strings=[];for(var x in env)strings.push(`${x}=${env[x]}`);getEnvStrings.strings=strings}return getEnvStrings.strings};var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;try{var curr=FS.read(stream,HEAP8,ptr,len,offset)}catch(e){if(ret>0&&e instanceof FS.ErrnoError&&(e.errno==6||e.errno==6))break;throw e}if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=="undefined")offset+=curr}return ret};var doWritev=(stream,iov,iovcnt,offset)=>{if(iovcnt==1)return FS.write(stream,HEAP8,HEAPU32[iov>>>2>>>0],HEAPU32[iov+4>>>2>>>0],offset);var total=0;for(var i=0,p=iov;i<iovcnt;i++,p+=8)total+=HEAPU32[p+4>>>2>>>0];var view=new Uint8Array(total);var voff=0;for(i=0;i<iovcnt;i++,iov+=8){var ptr=HEAPU32[iov>>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];view.set(HEAPU8.subarray(ptr>>>0,ptr+len>>>0),voff);voff+=len}return FS.write(stream,view,0,total,offset)};FS.createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{FS_preloadFile(parent,name,url,canRead,canWrite,dontCreateFile,canOwn,preFinish).then(onload).catch(onerror)};FS.preloadFile=FS_preloadFile;FS.staticInit();safeSetTimeout.pending=new Map;safeSetTimeout.nextId=1;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["arguments"])Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var preInit=Module["preInit"];if(preInit){if(typeof preInit==="function")Module["preInit"]=preInit=[preInit];while(preInit.length>0)preInit.shift()()}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_preloadFile"]=FS_preloadFile;Module["FS_unlink"]=(...args)=>FS.unlink(...args);Module["FS_createPath"]=(...args)=>FS.createPath(...args);Module["FS_createDevice"]=(...args)=>FS.createDevice(...args);Module["FS"]=FS;Module["FS_createDataFile"]=FS_createDataFile;Module["FS_createLazyFile"]=(...args)=>FS.createLazyFile(...args);Module["IDBFS"]=IDBFS;var ASM_CONSTS={228500:($0,$1,$2,$3)=>{Module.kthCompleteCallback($0>>>0,$1,BigInt($3>>>0)*4294967296n+BigInt($2>>>0))},228597:($0,$1,$2,$3)=>{Module.kthCompleteCallback($0>>>0,$1,BigInt($3>>>0)*4294967296n+BigInt($2>>>0))},228694:($0,$1,$2,$3)=>{Module.kthCompleteCallback($0>>>0,$1,BigInt($3>>>0)*4294967296n+BigInt($2>>>0))},228791:($0,$1,$2,$3)=>{Module.kthCompleteCallback($0>>>0,$1,BigInt($3>>>0)*4294967296n+BigInt($2>>>0))}};var _kth_wasm_LibConfigTypeSizes_get_size_int,_kth_wasm_LibConfigTypeSizes_get_size_long,_kth_wasm_LibConfigTypeSizes_get_size_pointer,_kth_wasm_LibConfigTypeSizes_destructor,_kth_wasm_LibConfig_get_version,_kth_wasm_LibConfig_get_microarchitecture_id,_kth_wasm_LibConfig_get_currency,_kth_wasm_LibConfig_get_mempool,_kth_wasm_LibConfig_get_db_readonly,_kth_wasm_LibConfig_get_debug_mode,_kth_wasm_LibConfig_get_architecture,_kth_wasm_LibConfig_get_os_name,_kth_wasm_LibConfig_get_compiler_name,_kth_wasm_LibConfig_get_compiler_version,_kth_wasm_LibConfig_get_optimization_level,_kth_wasm_LibConfig_get_build_timestamp,_kth_wasm_LibConfig_get_build_git_hash,_kth_wasm_LibConfig_get_endianness,_kth_wasm_LibConfig_get_type_sizes,_kth_wasm_LibConfig_destructor,_kth_wasm_LibConfig_getLibconfig,_kth_wasm_LibConfig_getEmscriptenVersionMajor,_kth_wasm_LibConfig_getEmscriptenVersionMinor,_kth_wasm_LibConfig_getEmscriptenVersionTiny,_kth_wasm_LibConfig_getBuildTimestamp,_kth_wasm_HeaderSyncNative_destructor,_kth_wasm_HeaderSyncNative_constructor,_kth_wasm_HeaderSyncNative_asyncRequestStop,_kth_wasm_HeaderSyncNative_asyncRequestRefresh,_kth_wasm_HeaderSyncNative_lastHeight,_kth_wasm_HeaderSyncNative_running,_kth_wasm_HeaderSyncNative_idle,_kth_wasm_HeaderSyncNative_status,_kth_wasm_HeaderSyncNative_indexMemoryBytes,_kth_wasm_HeaderSyncNative_asyncRun,_kth_wasm_HeaderSyncNative_asyncFollow,_kth_wasm_HeaderSyncNative_reset,_kth_wasm_HeaderSyncNative_headerHex,_kth_wasm_HeaderSyncNative_headerHash,_kth_wasm_HeaderSyncNative_chainStateSnapshot,_kth_wasm_HeaderSyncNative_runtimeSettings,_kth_wasm_HeaderSyncNative_configureContent,_kth_wasm_HeaderSyncNative_blockMetadata,_kth_wasm_HeaderSyncNative_contentState,_kth_wasm_HeaderSyncNative_observedTransactions,_kth_wasm_HeaderSyncNative_addPeer,_kth_wasm_HeaderSyncNative_configureDiscovery,_kth_wasm_HeaderSyncNative_configureLegacyDiscovery,_kth_wasm_HeaderSyncNative_peerCount,_kth_wasm_HeaderSyncNative_peerEndpoint,_kth_wasm_HeaderSyncNative_peerSource,_kth_wasm_HeaderSyncNative_peerState,_kth_wasm_HeaderSyncNative_peerAgent,_kth_wasm_HeaderSyncNative_peerError,_kth_wasm_HeaderSyncNative_peerHeight,_kth_wasm_HeaderSyncNative_peerAnnouncements,_kth_wasm_HeaderSyncNative_peerConnected,_kth_wasm_release_string_kth_core_destruct_string,_free,_malloc,___trap,wasmMemory,wasmTable;function assignWasmExports(wasmExports){_kth_wasm_LibConfigTypeSizes_get_size_int=Module["_kth_wasm_LibConfigTypeSizes_get_size_int"]=wasmExports["N"];_kth_wasm_LibConfigTypeSizes_get_size_long=Module["_kth_wasm_LibConfigTypeSizes_get_size_long"]=wasmExports["O"];_kth_wasm_LibConfigTypeSizes_get_size_pointer=Module["_kth_wasm_LibConfigTypeSizes_get_size_pointer"]=wasmExports["P"];_kth_wasm_LibConfigTypeSizes_destructor=Module["_kth_wasm_LibConfigTypeSizes_destructor"]=wasmExports["Q"];_kth_wasm_LibConfig_get_version=Module["_kth_wasm_LibConfig_get_version"]=wasmExports["R"];_kth_wasm_LibConfig_get_microarchitecture_id=Module["_kth_wasm_LibConfig_get_microarchitecture_id"]=wasmExports["S"];_kth_wasm_LibConfig_get_currency=Module["_kth_wasm_LibConfig_get_currency"]=wasmExports["T"];_kth_wasm_LibConfig_get_mempool=Module["_kth_wasm_LibConfig_get_mempool"]=wasmExports["U"];_kth_wasm_LibConfig_get_db_readonly=Module["_kth_wasm_LibConfig_get_db_readonly"]=wasmExports["V"];_kth_wasm_LibConfig_get_debug_mode=Module["_kth_wasm_LibConfig_get_debug_mode"]=wasmExports["W"];_kth_wasm_LibConfig_get_architecture=Module["_kth_wasm_LibConfig_get_architecture"]=wasmExports["X"];_kth_wasm_LibConfig_get_os_name=Module["_kth_wasm_LibConfig_get_os_name"]=wasmExports["Y"];_kth_wasm_LibConfig_get_compiler_name=Module["_kth_wasm_LibConfig_get_compiler_name"]=wasmExports["Z"];_kth_wasm_LibConfig_get_compiler_version=Module["_kth_wasm_LibConfig_get_compiler_version"]=wasmExports["_"];_kth_wasm_LibConfig_get_optimization_level=Module["_kth_wasm_LibConfig_get_optimization_level"]=wasmExports["$"];_kth_wasm_LibConfig_get_build_timestamp=Module["_kth_wasm_LibConfig_get_build_timestamp"]=wasmExports["aa"];_kth_wasm_LibConfig_get_build_git_hash=Module["_kth_wasm_LibConfig_get_build_git_hash"]=wasmExports["ba"];_kth_wasm_LibConfig_get_endianness=Module["_kth_wasm_LibConfig_get_endianness"]=wasmExports["ca"];_kth_wasm_LibConfig_get_type_sizes=Module["_kth_wasm_LibConfig_get_type_sizes"]=wasmExports["da"];_kth_wasm_LibConfig_destructor=Module["_kth_wasm_LibConfig_destructor"]=wasmExports["ea"];_kth_wasm_LibConfig_getLibconfig=Module["_kth_wasm_LibConfig_getLibconfig"]=wasmExports["fa"];_kth_wasm_LibConfig_getEmscriptenVersionMajor=Module["_kth_wasm_LibConfig_getEmscriptenVersionMajor"]=wasmExports["ga"];_kth_wasm_LibConfig_getEmscriptenVersionMinor=Module["_kth_wasm_LibConfig_getEmscriptenVersionMinor"]=wasmExports["ha"];_kth_wasm_LibConfig_getEmscriptenVersionTiny=Module["_kth_wasm_LibConfig_getEmscriptenVersionTiny"]=wasmExports["ia"];_kth_wasm_LibConfig_getBuildTimestamp=Module["_kth_wasm_LibConfig_getBuildTimestamp"]=wasmExports["ja"];_kth_wasm_HeaderSyncNative_destructor=Module["_kth_wasm_HeaderSyncNative_destructor"]=wasmExports["ka"];_kth_wasm_HeaderSyncNative_constructor=Module["_kth_wasm_HeaderSyncNative_constructor"]=wasmExports["la"];_kth_wasm_HeaderSyncNative_asyncRequestStop=Module["_kth_wasm_HeaderSyncNative_asyncRequestStop"]=wasmExports["ma"];_kth_wasm_HeaderSyncNative_asyncRequestRefresh=Module["_kth_wasm_HeaderSyncNative_asyncRequestRefresh"]=wasmExports["na"];_kth_wasm_HeaderSyncNative_lastHeight=Module["_kth_wasm_HeaderSyncNative_lastHeight"]=wasmExports["oa"];_kth_wasm_HeaderSyncNative_running=Module["_kth_wasm_HeaderSyncNative_running"]=wasmExports["pa"];_kth_wasm_HeaderSyncNative_idle=Module["_kth_wasm_HeaderSyncNative_idle"]=wasmExports["qa"];_kth_wasm_HeaderSyncNative_status=Module["_kth_wasm_HeaderSyncNative_status"]=wasmExports["ra"];_kth_wasm_HeaderSyncNative_indexMemoryBytes=Module["_kth_wasm_HeaderSyncNative_indexMemoryBytes"]=wasmExports["sa"];_kth_wasm_HeaderSyncNative_asyncRun=Module["_kth_wasm_HeaderSyncNative_asyncRun"]=wasmExports["ta"];_kth_wasm_HeaderSyncNative_asyncFollow=Module["_kth_wasm_HeaderSyncNative_asyncFollow"]=wasmExports["ua"];_kth_wasm_HeaderSyncNative_reset=Module["_kth_wasm_HeaderSyncNative_reset"]=wasmExports["va"];_kth_wasm_HeaderSyncNative_headerHex=Module["_kth_wasm_HeaderSyncNative_headerHex"]=wasmExports["wa"];_kth_wasm_HeaderSyncNative_headerHash=Module["_kth_wasm_HeaderSyncNative_headerHash"]=wasmExports["xa"];_kth_wasm_HeaderSyncNative_chainStateSnapshot=Module["_kth_wasm_HeaderSyncNative_chainStateSnapshot"]=wasmExports["ya"];_kth_wasm_HeaderSyncNative_runtimeSettings=Module["_kth_wasm_HeaderSyncNative_runtimeSettings"]=wasmExports["za"];_kth_wasm_HeaderSyncNative_configureContent=Module["_kth_wasm_HeaderSyncNative_configureContent"]=wasmExports["Aa"];_kth_wasm_HeaderSyncNative_blockMetadata=Module["_kth_wasm_HeaderSyncNative_blockMetadata"]=wasmExports["Ba"];_kth_wasm_HeaderSyncNative_contentState=Module["_kth_wasm_HeaderSyncNative_contentState"]=wasmExports["Ca"];_kth_wasm_HeaderSyncNative_observedTransactions=Module["_kth_wasm_HeaderSyncNative_observedTransactions"]=wasmExports["Da"];_kth_wasm_HeaderSyncNative_addPeer=Module["_kth_wasm_HeaderSyncNative_addPeer"]=wasmExports["Ea"];_kth_wasm_HeaderSyncNative_configureDiscovery=Module["_kth_wasm_HeaderSyncNative_configureDiscovery"]=wasmExports["Fa"];_kth_wasm_HeaderSyncNative_configureLegacyDiscovery=Module["_kth_wasm_HeaderSyncNative_configureLegacyDiscovery"]=wasmExports["Ga"];_kth_wasm_HeaderSyncNative_peerCount=Module["_kth_wasm_HeaderSyncNative_peerCount"]=wasmExports["Ha"];_kth_wasm_HeaderSyncNative_peerEndpoint=Module["_kth_wasm_HeaderSyncNative_peerEndpoint"]=wasmExports["Ia"];_kth_wasm_HeaderSyncNative_peerSource=Module["_kth_wasm_HeaderSyncNative_peerSource"]=wasmExports["Ja"];_kth_wasm_HeaderSyncNative_peerState=Module["_kth_wasm_HeaderSyncNative_peerState"]=wasmExports["Ka"];_kth_wasm_HeaderSyncNative_peerAgent=Module["_kth_wasm_HeaderSyncNative_peerAgent"]=wasmExports["La"];_kth_wasm_HeaderSyncNative_peerError=Module["_kth_wasm_HeaderSyncNative_peerError"]=wasmExports["Ma"];_kth_wasm_HeaderSyncNative_peerHeight=Module["_kth_wasm_HeaderSyncNative_peerHeight"]=wasmExports["Na"];_kth_wasm_HeaderSyncNative_peerAnnouncements=Module["_kth_wasm_HeaderSyncNative_peerAnnouncements"]=wasmExports["Oa"];_kth_wasm_HeaderSyncNative_peerConnected=Module["_kth_wasm_HeaderSyncNative_peerConnected"]=wasmExports["Pa"];_kth_wasm_release_string_kth_core_destruct_string=Module["_kth_wasm_release_string_kth_core_destruct_string"]=wasmExports["Qa"];Module["_strlen"]=wasmExports["Sa"];_free=Module["_free"]=wasmExports["Ta"];_malloc=Module["_malloc"]=wasmExports["Ua"];___trap=wasmExports["Va"];wasmMemory=wasmExports["L"];wasmTable=wasmExports["Ra"]}var wasmImports={c:function(fd,cmd,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:var arg=syscallGetVarargI();if(arg<0)return-28;while(FS.streams[arg])arg++;var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd;case 1:case 2:return 0;case 3:return stream.flags;case 4:arg=syscallGetVarargI();stream.flags=stream.flags&-289793|arg&289792;return 0;case 12:arg=syscallGetVarargP();HEAP16[arg+0>>>1>>>0]=2;return 0;case 13:case 14:return 0}return-28}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},h:function(fd,op,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:if(!stream.tty)return-59;return 0;case 21505:if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=syscallGetVarargP();HEAP32[argp>>>2>>>0]=termios.c_iflag||0;HEAP32[argp+4>>>2>>>0]=termios.c_oflag||0;HEAP32[argp+8>>>2>>>0]=termios.c_cflag||0;HEAP32[argp+12>>>2>>>0]=termios.c_lflag||0;for(var i=0;i<32;i++)HEAP8[argp+i+17>>>0]=termios.c_cc[i]||0;return 0}return 0;case 21510:case 21511:case 21512:if(!stream.tty)return-59;return 0;case 21506:case 21507:case 21508:if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){argp=syscallGetVarargP();var c_iflag=HEAP32[argp>>>2>>>0];var c_oflag=HEAP32[argp+4>>>2>>>0];var c_cflag=HEAP32[argp+8>>>2>>>0];var c_lflag=HEAP32[argp+12>>>2>>>0];var c_cc=[];for(i=0;i<32;i++)c_cc.push(HEAP8[argp+i+17>>>0]);return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag,c_oflag,c_cflag,c_lflag,c_cc})}return 0;case 21519:if(!stream.tty)return-59;argp=syscallGetVarargP();HEAP32[argp>>>2>>>0]=0;return 0;case 21520:if(!stream.tty)return-59;return-28;case 21537:case 21531:argp=syscallGetVarargP();return FS.ioctl(stream,op,argp);case 21523:if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);argp=syscallGetVarargP();HEAP16[argp>>>1>>>0]=winsize[0];HEAP16[argp+2>>>1>>>0]=winsize[1]}return 0;case 21524:if(!stream.tty)return-59;return 0;case 21515:if(!stream.tty)return-59;return 0;default:return-28}}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},t:function(dirfd,path,flags,varargs){path>>>=0;varargs>>>=0;SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;if(flags&64)mode&=~SYSCALLS.currentUmask;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},z:function(fdPtr,flags){fdPtr>>>=0;try{if(fdPtr==0)throw new FS.ErrnoError(21);if(flags&-526337)throw new FS.ErrnoError(138);var res=PIPEFS.createPipe();if(flags&2048){FS.getStream(res.readable_fd).flags|=2048;FS.getStream(res.writable_fd).flags|=2048}HEAP32[fdPtr>>>2>>>0]=res.readable_fd;HEAP32[fdPtr+4>>>2>>>0]=res.writable_fd;return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},y:function(fds,nfds){fds>>>=0;try{var count=doPollSync(fds,nfds);return count}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},q:function(path){path>>>=0;try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},i:function(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},s:function(path,buf){path>>>=0;buf>>>=0;try{path=SYSCALLS.getStr(path);return SYSCALLS.writeStat(buf,FS.stat(path))}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},r:function(dirfd,path,flags){path>>>=0;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(!flags)FS.unlink(path);else if(flags===512)FS.rmdir(path);else return-28;return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}},I:()=>abort(""),B:function(time,tmPtr){time=bigintToI53Checked(time);tmPtr>>>=0;var date=new Date(time*1e3);if(isNaN(date.getTime()))return 1;HEAP32[tmPtr>>>2>>>0]=date.getUTCSeconds();HEAP32[tmPtr+4>>>2>>>0]=date.getUTCMinutes();HEAP32[tmPtr+8>>>2>>>0]=date.getUTCHours();HEAP32[tmPtr+12>>>2>>>0]=date.getUTCDate();HEAP32[tmPtr+16>>>2>>>0]=date.getUTCMonth();HEAP32[tmPtr+20>>>2>>>0]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>>2>>>0]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/864e5|0;HEAP32[tmPtr+28>>>2>>>0]=yday;return 0},C:function(time,tmPtr){time=bigintToI53Checked(time);tmPtr>>>=0;var date=new Date(time*1e3);if(isNaN(date.getTime()))return 1;HEAP32[tmPtr>>>2>>>0]=date.getSeconds();HEAP32[tmPtr+4>>>2>>>0]=date.getMinutes();HEAP32[tmPtr+8>>>2>>>0]=date.getHours();HEAP32[tmPtr+12>>>2>>>0]=date.getDate();HEAP32[tmPtr+16>>>2>>>0]=date.getMonth();HEAP32[tmPtr+20>>>2>>>0]=date.getFullYear()-1900;HEAP32[tmPtr+24>>>2>>>0]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>>2>>>0]=yday;HEAP32[tmPtr+36>>>2>>>0]=-date.getTimezoneOffset()*60;var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>>2>>>0]=dst;return 0},D:function(timezone,daylight,std_name,dst_name){timezone>>>=0;daylight>>>=0;std_name>>>=0;dst_name>>>=0;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>>2>>>0]=stdTimezoneOffset*60;HEAP32[daylight>>>2>>>0]=Number(winterOffset!=summerOffset);var extractZone=timezoneOffset=>{var sign=timezoneOffset>=0?"-":"+";var absOffset=Math.abs(timezoneOffset);var hours=String(Math.floor(absOffset/60)).padStart(2,"0");var minutes=String(absOffset%60).padStart(2,"0");return`UTC${sign}${hours}${minutes}`};var winterName=extractZone(winterOffset);var summerName=extractZone(summerOffset);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}},A:function(clk_id,ignored_precision,ptime){ignored_precision=bigintToI53Checked(ignored_precision);ptime>>>=0;if(!checkWasiClock(clk_id))return 28;var now;if(clk_id===0)now=_emscripten_date_now();else if(1)now=_emscripten_get_now();else return 52;var nsec=Math.round(now*1e6);HEAP64[ptime>>>3>>>0]=BigInt(nsec);return 0},f:function(code,sigPtr,argbuf){code>>>=0;sigPtr>>>=0;argbuf>>>=0;return runEmAsmFunction(code,sigPtr,argbuf)},b:_emscripten_clear_timeout,v:function(){return getHeapMax()},a:_emscripten_get_now,u:function(requestedSize){requestedSize>>>=0;var oldSize=HEAPU8.length;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize)return false;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement)return true}return false},d:function(cb,msecs,userData){cb>>>=0;userData>>>=0;return safeSetTimeout(()=>getWasmTableEntry(cb)(userData),msecs)},p:function(socketId,code,reason){reason>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;reason&&UTF8ToString(reason);if(reason)socket.close(code||void 0,UTF8ToString(reason));else if(code)socket.close(code);else socket.close();return 0},w:socketId=>{var socket=WS.getSocket(socketId);if(!socket)return-3;socket.onopen=socket.onerror=socket.onclose=socket.onmessage=null;webSockets.free(socketId);return 0},K:function(socketId,bufferedAmount){bufferedAmount>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;HEAPU32[bufferedAmount>>>2>>>0]=socket.bufferedAmount;return 0},o:function(createAttributes){createAttributes>>>=0;if(!globalThis.WebSocket)return-1;if(!createAttributes)return-5;var url=UTF8ToString(HEAPU32[createAttributes>>>2>>>0]);var protocols=HEAPU32[createAttributes+4>>>2>>>0];var socket=protocols?new WebSocket(url,UTF8ToString(protocols).split(",")):new WebSocket(url);socket.binaryType="arraybuffer";var socketId=webSockets.allocate(socket);return socketId},J:function(socketId,binaryData,dataLength){binaryData>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;socket.send(HEAPU8.subarray(binaryData>>>0,binaryData+dataLength>>>0));return 0},k:function(socketId,userData,callbackFunc,thread){userData>>>=0;callbackFunc>>>=0;thread>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;socket.onclose=e=>{var eventPtr=WS.getSocketEvent(socketId);HEAP8[eventPtr+4>>>0]=e.wasClean,HEAP16[eventPtr+6>>>1>>>0]=e.code,stringToUTF8(e.reason,eventPtr+8,512);getWasmTableEntry(callbackFunc)(0,eventPtr,userData)};return 0},l:function(socketId,userData,callbackFunc,thread){userData>>>=0;callbackFunc>>>=0;thread>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;socket.onerror=()=>{var eventPtr=WS.getSocketEvent(socketId);getWasmTableEntry(callbackFunc)(0,eventPtr,userData)};return 0},m:function(socketId,userData,callbackFunc,thread){userData>>>=0;callbackFunc>>>=0;thread>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;socket.onmessage=e=>{var isText=typeof e.data==="string";if(isText){var buf=stringToNewUTF8(e.data);var len=lengthBytesUTF8(e.data)+1}else{len=e.data.byteLength;buf=_malloc(len);HEAP8.set(new Uint8Array(e.data),buf>>>0)}var eventPtr=WS.getSocketEvent(socketId);HEAPU32[eventPtr+4>>>2>>>0]=buf,HEAP32[eventPtr+8>>>2>>>0]=len,HEAP8[eventPtr+12>>>0]=isText,getWasmTableEntry(callbackFunc)(0,eventPtr,userData);_free(buf)};return 0},n:function(socketId,userData,callbackFunc,thread){userData>>>=0;callbackFunc>>>=0;thread>>>=0;var socket=WS.getSocket(socketId);if(!socket)return-3;socket.onopen=()=>{var eventPtr=WS.getSocketEvent(socketId);getWasmTableEntry(callbackFunc)(0,eventPtr,userData)};return 0},F:function(__environ,environ_buf){__environ>>>=0;environ_buf>>>=0;var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>>2>>>0]=ptr;bufSize+=stringToUTF8(string,ptr,1/0)+1;envp+=4}return 0},G:function(penviron_count,penviron_buf_size){penviron_count>>>=0;penviron_buf_size>>>=0;var strings=getEnvStrings();HEAPU32[penviron_count>>>2>>>0]=strings.length;var bufSize=0;for(var string of strings)bufSize+=lengthBytesUTF8(string)+1;HEAPU32[penviron_buf_size>>>2>>>0]=bufSize;return 0},e:function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}},E:function(fd,pbuf){pbuf>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>>0]=type;HEAP16[pbuf+2>>>1>>>0]=0;HEAP64[pbuf+8>>>3>>>0]=BigInt(0);HEAP64[pbuf+16>>>3>>>0]=BigInt(0);return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}},j:function(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}},x:function(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);newOffset>>>=0;try{if(isNaN(offset))return 22;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>>3>>>0]=BigInt(stream.position);if(stream.getdents&&!offset&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}},g:function(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}},H:function(buffer,size){buffer>>>=0;size>>>=0;return randomFill(HEAPU8.subarray(buffer>>>0,buffer+size>>>0))}};function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>f(a0)>>>0;wasmExports["Sa"]=makeWrapper_pp(wasmExports["Sa"]);wasmExports["Ua"]=makeWrapper_pp(wasmExports["Ua"]);wasmExports["_emscripten_stack_alloc"]=makeWrapper_pp(wasmExports["_emscripten_stack_alloc"]);return wasmExports}var wasmExports;wasmExports=await async function(){function receiveInstance(instance){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}var info=getWasmImports();var instantiateWasm=Module["instantiateWasm"];if(instantiateWasm)return new Promise(resolve=>{instantiateWasm(info,inst=>resolve(receiveInstance(inst)))});wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(void 0,wasmBinaryFile,info);var exports=function(result){return receiveInstance(result["instance"])}(result);return exports}();await async function(){preRun();if(runDependencies)await resolveRunDependencies();var setStatus=Module["setStatus"];if(setStatus){setStatus("Running...");await new Promise(resolve=>setTimeout(resolve,1));setTimeout(setStatus,1,"")}if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}();
2
+ ;return Module}if(typeof exports==="object"&&typeof module==="object"){module.exports=createHeaders;module.exports.default=createHeaders}else if(typeof define==="function"&&define["amd"])define([],()=>createHeaders);