leviathan-crypto 1.3.1 → 2.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 (124) hide show
  1. package/CLAUDE.md +129 -76
  2. package/README.md +166 -221
  3. package/SECURITY.md +89 -37
  4. package/dist/chacha20/cipher-suite.d.ts +4 -0
  5. package/dist/chacha20/cipher-suite.js +78 -0
  6. package/dist/chacha20/embedded.d.ts +1 -0
  7. package/dist/chacha20/embedded.js +27 -0
  8. package/dist/chacha20/index.d.ts +20 -7
  9. package/dist/chacha20/index.js +41 -14
  10. package/dist/chacha20/ops.d.ts +1 -1
  11. package/dist/chacha20/ops.js +19 -18
  12. package/dist/chacha20/pool-worker.js +77 -0
  13. package/dist/ct-wasm.d.ts +1 -0
  14. package/dist/ct-wasm.js +3 -0
  15. package/dist/ct.wasm +0 -0
  16. package/dist/docs/aead.md +320 -0
  17. package/dist/docs/architecture.md +419 -285
  18. package/dist/docs/argon2id.md +42 -30
  19. package/dist/docs/chacha20.md +218 -150
  20. package/dist/docs/exports.md +241 -0
  21. package/dist/docs/fortuna.md +65 -74
  22. package/dist/docs/init.md +172 -178
  23. package/dist/docs/loader.md +87 -132
  24. package/dist/docs/serpent.md +134 -565
  25. package/dist/docs/sha2.md +91 -103
  26. package/dist/docs/sha3.md +70 -36
  27. package/dist/docs/types.md +93 -16
  28. package/dist/docs/utils.md +114 -41
  29. package/dist/embedded/chacha20.d.ts +1 -1
  30. package/dist/embedded/chacha20.js +2 -1
  31. package/dist/embedded/kyber.d.ts +1 -0
  32. package/dist/embedded/kyber.js +3 -0
  33. package/dist/embedded/serpent.d.ts +1 -1
  34. package/dist/embedded/serpent.js +2 -1
  35. package/dist/embedded/sha2.d.ts +1 -1
  36. package/dist/embedded/sha2.js +2 -1
  37. package/dist/embedded/sha3.d.ts +1 -1
  38. package/dist/embedded/sha3.js +2 -1
  39. package/dist/errors.d.ts +10 -0
  40. package/dist/{serpent/seal.js → errors.js} +14 -46
  41. package/dist/fortuna.d.ts +2 -8
  42. package/dist/fortuna.js +11 -9
  43. package/dist/index.d.ts +25 -9
  44. package/dist/index.js +36 -7
  45. package/dist/init.d.ts +3 -7
  46. package/dist/init.js +18 -35
  47. package/dist/keccak/embedded.d.ts +1 -0
  48. package/dist/keccak/embedded.js +27 -0
  49. package/dist/keccak/index.d.ts +4 -0
  50. package/dist/keccak/index.js +31 -0
  51. package/dist/kyber/embedded.d.ts +1 -0
  52. package/dist/kyber/embedded.js +27 -0
  53. package/dist/kyber/indcpa.d.ts +49 -0
  54. package/dist/kyber/indcpa.js +352 -0
  55. package/dist/kyber/index.d.ts +38 -0
  56. package/dist/kyber/index.js +150 -0
  57. package/dist/kyber/kem.d.ts +21 -0
  58. package/dist/kyber/kem.js +160 -0
  59. package/dist/kyber/params.d.ts +14 -0
  60. package/dist/kyber/params.js +37 -0
  61. package/dist/kyber/suite.d.ts +13 -0
  62. package/dist/kyber/suite.js +93 -0
  63. package/dist/kyber/types.d.ts +98 -0
  64. package/dist/kyber/types.js +25 -0
  65. package/dist/kyber/validate.d.ts +19 -0
  66. package/dist/kyber/validate.js +68 -0
  67. package/dist/kyber.wasm +0 -0
  68. package/dist/loader.d.ts +19 -4
  69. package/dist/loader.js +91 -25
  70. package/dist/serpent/cipher-suite.d.ts +4 -0
  71. package/dist/serpent/cipher-suite.js +121 -0
  72. package/dist/serpent/embedded.d.ts +1 -0
  73. package/dist/serpent/embedded.js +27 -0
  74. package/dist/serpent/index.d.ts +6 -37
  75. package/dist/serpent/index.js +9 -118
  76. package/dist/serpent/pool-worker.d.ts +1 -0
  77. package/dist/serpent/pool-worker.js +202 -0
  78. package/dist/serpent/serpent-cbc.d.ts +30 -0
  79. package/dist/serpent/serpent-cbc.js +136 -0
  80. package/dist/sha2/embedded.d.ts +1 -0
  81. package/dist/sha2/embedded.js +27 -0
  82. package/dist/sha2/hkdf.js +6 -2
  83. package/dist/sha2/index.d.ts +3 -2
  84. package/dist/sha2/index.js +3 -4
  85. package/dist/sha3/embedded.d.ts +1 -0
  86. package/dist/sha3/embedded.js +27 -0
  87. package/dist/sha3/index.d.ts +3 -2
  88. package/dist/sha3/index.js +3 -4
  89. package/dist/stream/constants.d.ts +6 -0
  90. package/dist/stream/constants.js +30 -0
  91. package/dist/stream/header.d.ts +9 -0
  92. package/dist/stream/header.js +77 -0
  93. package/dist/stream/index.d.ts +7 -0
  94. package/dist/stream/index.js +27 -0
  95. package/dist/stream/open-stream.d.ts +21 -0
  96. package/dist/stream/open-stream.js +146 -0
  97. package/dist/stream/seal-stream-pool.d.ts +38 -0
  98. package/dist/stream/seal-stream-pool.js +391 -0
  99. package/dist/stream/seal-stream.d.ts +20 -0
  100. package/dist/stream/seal-stream.js +142 -0
  101. package/dist/stream/seal.d.ts +9 -0
  102. package/dist/stream/seal.js +75 -0
  103. package/dist/stream/types.d.ts +24 -0
  104. package/dist/stream/types.js +26 -0
  105. package/dist/utils.d.ts +12 -7
  106. package/dist/utils.js +75 -19
  107. package/dist/wasm-source.d.ts +12 -0
  108. package/dist/wasm-source.js +26 -0
  109. package/package.json +13 -5
  110. package/dist/chacha20/pool.d.ts +0 -52
  111. package/dist/chacha20/pool.js +0 -188
  112. package/dist/chacha20/pool.worker.js +0 -37
  113. package/dist/docs/chacha20_pool.md +0 -309
  114. package/dist/docs/wasm.md +0 -194
  115. package/dist/serpent/seal.d.ts +0 -8
  116. package/dist/serpent/stream-pool.d.ts +0 -48
  117. package/dist/serpent/stream-pool.js +0 -285
  118. package/dist/serpent/stream-sealer.d.ts +0 -50
  119. package/dist/serpent/stream-sealer.js +0 -341
  120. package/dist/serpent/stream.d.ts +0 -28
  121. package/dist/serpent/stream.js +0 -205
  122. package/dist/serpent/stream.worker.d.ts +0 -32
  123. package/dist/serpent/stream.worker.js +0 -117
  124. /package/dist/chacha20/{pool.worker.d.ts → pool-worker.d.ts} +0 -0
@@ -1,23 +1,23 @@
1
- # Encoding utilities, comparison functions, and random byte generation
1
+ # Utilities
2
2
 
3
- ## Overview
4
-
5
- Pure TypeScript utilities that ship alongside the WASM-backed primitives. These functions have **no `init()` dependency** -- they work immediately on import, without loading any WASM module.
6
-
7
- The module covers four areas:
3
+ > [!NOTE]
4
+ > Pure TypeScript utilities that ship alongside the WASM-backed primitives. No `init()` call required; all functions work immediately on import.
8
5
 
9
- - **Encoding** -- hex, UTF-8, and base64 conversions between strings and `Uint8Array`
10
- - **Security** -- constant-time comparison and secure memory wiping
11
- - **Byte manipulation** -- XOR and concatenation of byte arrays
12
- - **Random** -- cryptographically secure random byte generation
6
+ > ### Table of Contents
7
+ > - [Security Notes](#security-notes)
8
+ > - [API Reference](#api-reference)
9
+ > - [Usage Examples](#usage-examples)
10
+ > - [Error Conditions](#error-conditions)
13
11
 
14
12
  ---
15
13
 
14
+ The module covers encoding (hex, UTF-8, and base64 conversions between strings and `Uint8Array`), security (constant-time comparison and secure memory wiping), byte manipulation (XOR and concatenation), and random byte generation.
15
+
16
16
  ## Security Notes
17
17
 
18
- **`constantTimeEqual`** uses an XOR-accumulate pattern with no early return on byte mismatch. Use this function whenever you compare MACs, hashes, authentication tags, or any secret-derived values. **Never** use `===`, `Buffer.equals`, or manual loop-with-break for security comparisons -- those leak timing information that can be exploited to recover secrets.
18
+ **`constantTimeEqual`** uses a WASM SIMD module when available to remove the JS JIT compiler from the timing picture, falling back to an XOR-accumulate loop on older runtimes. Use this function whenever you compare MACs, hashes, authentication tags, or any secret-derived values. Never use `===`, `Buffer.equals`, or a manual loop-with-break for security comparisons. Those leak timing information that attackers can exploit to recover secrets. Inputs are limited to [`CT_MAX_BYTES`](#ct_max_bytes) (32768 bytes) per side.
19
19
 
20
- The length check in `constantTimeEqual` is _not_ constant-time, because array length is non-secret in all standard protocols. If your use case treats length as secret, you must pad to equal length before comparing.
20
+ The length check in `constantTimeEqual` is not constant-time, because array length is non-secret in all standard protocols. If your use case treats length as secret, pad to equal length before comparing.
21
21
 
22
22
  **`wipe`** zeroes a typed array in-place. Call it on keys, plaintext buffers, and any other sensitive data as soon as you are done with them. JavaScript's garbage collector does not guarantee timely or complete erasure of memory.
23
23
 
@@ -35,7 +35,7 @@ The encoding functions (`hexToBytes`, `bytesToHex`, `utf8ToBytes`, `bytesToUtf8`
35
35
  hexToBytes(hex: string): Uint8Array
36
36
  ```
37
37
 
38
- Converts a hex string to a `Uint8Array`. Accepts lowercase or uppercase characters. An optional `0x` or `0X` prefix is stripped automatically. If the hex string has an odd number of characters, a trailing `0` is appended before decoding.
38
+ Converts a hex string to a `Uint8Array`. Accepts lowercase or uppercase characters. An optional `0x` or `0X` prefix is stripped automatically. Throws `RangeError` on odd-length input.
39
39
 
40
40
  ---
41
41
 
@@ -75,11 +75,7 @@ Decodes UTF-8 bytes to a JavaScript string using the platform `TextDecoder`.
75
75
  base64ToBytes(b64: string): Uint8Array | undefined
76
76
  ```
77
77
 
78
- Decodes a base64 or base64url string to a `Uint8Array`. Base64url characters (`-`, `_`, `%3d`) are normalized to standard base64 before decoding. Returns `undefined` if the input is not valid base64 (e.g., incorrect length or illegal characters).
79
-
80
- > [!NOTE]
81
- > Valid base64 characters are `A-Z`, `a-z`, `0-9`, `+`, `/`, and `=`.
82
- > Any other character causes the function to return `undefined`.
78
+ Decodes a base64 or base64url string to a `Uint8Array`. Handles padded, unpadded, and legacy `%3d` padding. Unpadded base64url input is accepted (RFC 4648 §5). Returns `undefined` if the input is not valid base64 (illegal characters or `rem=1` length).
83
79
 
84
80
  ---
85
81
 
@@ -89,7 +85,7 @@ Decodes a base64 or base64url string to a `Uint8Array`. Base64url characters (`-
89
85
  bytesToBase64(bytes: Uint8Array, url?: boolean): string
90
86
  ```
91
87
 
92
- Encodes a `Uint8Array` to a base64 string. Pass `url = true` to get base64url encoding (uses `-` and `_` instead of `+` and `/`, and `%3d` instead of `=`). Defaults to standard base64.
88
+ Encodes a `Uint8Array` to a base64 string. Pass `url = true` for base64url (RFC 4648 §5), which uses `-` and `_` instead of `+` and `/` with no padding characters. Defaults to standard base64.
93
89
 
94
90
  ---
95
91
 
@@ -99,7 +95,40 @@ Encodes a `Uint8Array` to a base64 string. Pass `url = true` to get base64url en
99
95
  constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean
100
96
  ```
101
97
 
102
- Returns `true` if `a` and `b` contain identical bytes. Uses XOR-accumulate with no early return on mismatch. Returns `false` immediately if the arrays differ in length (length is non-secret).
98
+ Returns `true` if `a` and `b` contain identical bytes. Returns `false` immediately if the arrays differ in length (length is non-secret in all standard protocols).
99
+
100
+ When WebAssembly SIMD is available the comparison runs inside a WASM module, removing the JS JIT compiler from the timing picture. Speculative optimisation and branch prediction inside the engine cannot short-circuit the loop. On runtimes without SIMD support the function falls back to an XOR-accumulate loop in JavaScript, which is best-effort but not a hardware-level guarantee. The overall posture is best-available constant-time, not a cryptographic proof of timing safety.
101
+
102
+ Maximum input size is [`CT_MAX_BYTES`](#ct_max_bytes) (32768 bytes) per side. Throws `RangeError` if either array exceeds this limit.
103
+
104
+ Use this function when working with lower-level unauthenticated primitives or building custom authenticated protocols on top of the hashing and KDF APIs. Three common cases:
105
+
106
+ **Encrypt-then-MAC with `SerpentCbc` or `SerpentCtr`.** If you use the `dangerUnauthenticated` primitive directly and compute your own HMAC-SHA256 tag, compare that tag with `constantTimeEqual`. See the [example below](#encrypt-then-mac-with-serpentcbc).
107
+
108
+ **Argon2id key verification.** When re-deriving an Argon2id hash to verify a passphrase, the final comparison must be constant-time. See [argon2id.md](./argon2id.md#password-hashing-and-verification) for the full example.
109
+
110
+ **Custom HMAC protocols.** Any protocol where you derive a MAC with `HMAC_SHA256` or `HMAC_SHA512` and compare it against a received value. See [examples.md](./examples.md#hmac-sha256-message-authentication) for a complete example.
111
+
112
+ ---
113
+
114
+ ### CT_MAX_BYTES
115
+
116
+ ```typescript
117
+ const CT_MAX_BYTES: 32768
118
+ ```
119
+
120
+ Maximum input size accepted by [`constantTimeEqual`](#constanttimeequal) per side, in bytes. Reflects the physical layout of the WASM comparison module: one 64 KiB page of linear memory split equally between the two input buffers (32 KiB each).
121
+
122
+ In practice the largest comparison performed anywhere in this library is a 32-byte HMAC-SHA-256 tag. This limit only matters for custom protocols that compare unusually large values. Use this constant to guard your own inputs rather than hardcoding the magic number:
123
+
124
+ ```typescript
125
+ import { constantTimeEqual, CT_MAX_BYTES } from 'leviathan-crypto'
126
+
127
+ if (a.length > CT_MAX_BYTES || b.length > CT_MAX_BYTES) {
128
+ throw new RangeError(`comparison input exceeds CT_MAX_BYTES (${CT_MAX_BYTES})`)
129
+ }
130
+ const match = constantTimeEqual(a, b)
131
+ ```
103
132
 
104
133
  ---
105
134
 
@@ -119,17 +148,17 @@ Zeroes a typed array in-place by calling `fill(0)`. Use this to clear keys, plai
119
148
  xor(a: Uint8Array, b: Uint8Array): Uint8Array
120
149
  ```
121
150
 
122
- Returns a new `Uint8Array` where each byte is `a[i] ^ b[i]`. Both arrays must have the same length; throws `RangeError` if they differ.
151
+ Returns a new `Uint8Array` where each byte is `a[i] ^ b[i]`. Both arrays must have the same length. Throws `RangeError` if they differ.
123
152
 
124
153
  ---
125
154
 
126
155
  ### concat
127
156
 
128
157
  ```typescript
129
- concat(a: Uint8Array, b: Uint8Array): Uint8Array
158
+ concat(...arrays: Uint8Array[]): Uint8Array
130
159
  ```
131
160
 
132
- Returns a new `Uint8Array` containing `a` followed by `b`.
161
+ Concatenates one or more `Uint8Array`s into a new array.
133
162
 
134
163
  ---
135
164
 
@@ -153,10 +182,10 @@ Returns `true` if the current runtime supports WebAssembly SIMD (the `v128`
153
182
  type and associated operations). The result is computed once on first call by
154
183
  validating a minimal v128 WASM module, then cached for subsequent calls.
155
184
 
156
- This function is called internally by `SerpentCtr.encryptChunk`,
157
- `SerpentCbc.decrypt`, and `ChaCha20.encryptChunk` to select the fast SIMD path
158
- at runtime. It is exported for informational purposes you do not need to call
159
- it yourself. SIMD dispatch is fully automatic.
185
+ `SerpentCtr.encryptChunk`, `SerpentCbc.decrypt`, and `ChaCha20.encryptChunk`
186
+ call this internally to select the fast SIMD path at runtime. It is exported
187
+ for informational purposes. You do not need to call it yourself. SIMD dispatch
188
+ is fully automatic.
160
189
 
161
190
  Supported in all modern browsers and Node.js 16+. Returns `false` in older
162
191
  environments, which fall back silently to the scalar path.
@@ -194,9 +223,9 @@ const data = utf8ToBytes('leviathan-crypto')
194
223
  const b64 = bytesToBase64(data)
195
224
  console.log(b64) // "bGV2aWF0aGFuLWNyeXB0bw=="
196
225
 
197
- // base64url variant (safe for URLs and filenames)
226
+ // base64url variant (safe for URLs and filenames, no padding)
198
227
  const b64url = bytesToBase64(data, true)
199
- console.log(b64url) // "bGV2aWF0aGFuLWNyeXB0bw%3d%3d"
228
+ console.log(b64url) // "bGV2aWF0aGFuLWNyeXB0bw"
200
229
 
201
230
  // Decoding (accepts both standard and url variants)
202
231
  const decoded = base64ToBytes(b64)
@@ -205,21 +234,62 @@ if (decoded) console.log(bytesToUtf8(decoded)) // "leviathan-crypto"
205
234
 
206
235
  ---
207
236
 
208
- ### Secure MAC comparison
237
+ ### Encrypt-then-MAC with SerpentCbc
238
+
239
+ If you use `SerpentCbc` or `SerpentCtr` directly with `{ dangerUnauthenticated: true }`, you are responsible for authentication. The correct pattern is Encrypt-then-MAC: encrypt first, then compute HMAC-SHA256 over the ciphertext, and use `constantTimeEqual` to verify on decrypt.
209
240
 
210
241
  ```typescript
211
- import { constantTimeEqual } from 'leviathan-crypto'
242
+ import {
243
+ init, SerpentCbc, HMAC_SHA256,
244
+ constantTimeEqual, randomBytes, wipe, concat,
245
+ } from 'leviathan-crypto'
246
+ import { serpentWasm } from 'leviathan-crypto/serpent/embedded'
247
+ import { sha2Wasm } from 'leviathan-crypto/sha2/embedded'
248
+
249
+ await init({ serpent: serpentWasm, sha2: sha2Wasm })
250
+
251
+ const encKey = randomBytes(32)
252
+ const macKey = randomBytes(32)
253
+ const iv = randomBytes(16)
212
254
 
213
- // After computing a MAC over received data, compare it to the expected tag.
214
- // NEVER use === or .every() for this -- timing leaks enable forgery attacks.
215
- const computedMac: Uint8Array = hmac.hash(key, message)
216
- const receivedMac: Uint8Array = getTagFromNetwork()
255
+ // ── Encrypt ──────────────────────────────────────────────────────────────────
217
256
 
218
- if (!constantTimeEqual(computedMac, receivedMac)) {
219
- throw new Error('Authentication failed: MAC mismatch')
257
+ const cbc = new SerpentCbc({ dangerUnauthenticated: true })
258
+ const ct = cbc.encrypt(encKey, iv, plaintext)
259
+ cbc.dispose()
260
+
261
+ // MAC covers iv || ct so the IV is authenticated too
262
+ const hmac = new HMAC_SHA256()
263
+ const tag = hmac.hash(macKey, concat(iv, ct))
264
+ hmac.dispose()
265
+
266
+ const envelope = concat(iv, ct, tag) // store or transmit this
267
+
268
+ // ── Decrypt ──────────────────────────────────────────────────────────────────
269
+
270
+ const receivedIv = envelope.subarray(0, 16)
271
+ const receivedCt = envelope.subarray(16, envelope.length - 32)
272
+ const receivedTag = envelope.subarray(envelope.length - 32)
273
+
274
+ const hmac2 = new HMAC_SHA256()
275
+ const expectedTag = hmac2.hash(macKey, concat(receivedIv, receivedCt))
276
+ hmac2.dispose()
277
+
278
+ // Always verify before decrypting — never decrypt unauthenticated ciphertext
279
+ if (!constantTimeEqual(expectedTag, receivedTag)) {
280
+ wipe(expectedTag)
281
+ throw new Error('Authentication failed')
220
282
  }
283
+
284
+ const cbc2 = new SerpentCbc({ dangerUnauthenticated: true })
285
+ const pt = cbc2.decrypt(encKey, receivedIv, receivedCt)
286
+ cbc2.dispose()
287
+ wipe(expectedTag)
221
288
  ```
222
289
 
290
+ > [!NOTE]
291
+ > `Seal` with `SerpentCipher` does all of this for you — key derivation, IV handling, Encrypt-then-MAC, and constant-time verification — with no manual steps. The pattern above is only relevant if you need direct access to the raw `SerpentCbc` primitive.
292
+
223
293
  ---
224
294
 
225
295
  ### Generating random keys and nonces
@@ -227,9 +297,9 @@ if (!constantTimeEqual(computedMac, receivedMac)) {
227
297
  ```typescript
228
298
  import { randomBytes } from 'leviathan-crypto'
229
299
 
230
- const key = randomBytes(32) // 256-bit symmetric key
231
- const nonce = randomBytes(24) // 192-bit nonce for XChaCha20
232
- const iv = randomBytes(16) // 128-bit IV for Serpent-CBC
300
+ const key = randomBytes(32) // 256-bit symmetric key
301
+ const nonce = randomBytes(24) // 192-bit nonce for XChaCha20
302
+ const iv = randomBytes(16) // 128-bit IV for Serpent-CBC
233
303
  ```
234
304
 
235
305
  ---
@@ -272,10 +342,11 @@ console.log(combined.length) // 32
272
342
 
273
343
  | Function | Condition | Behavior |
274
344
  |---|---|---|
275
- | `hexToBytes` | Odd-length string | Trailing `0` appended (no error) |
345
+ | `hexToBytes` | Odd-length string | Throws `RangeError` |
276
346
  | `hexToBytes` | Invalid hex characters | Bytes decode as `NaN` -> `0` |
277
347
  | `base64ToBytes` | Invalid length or characters | Returns `undefined` |
278
348
  | `constantTimeEqual` | Arrays differ in length | Returns `false` immediately |
349
+ | `constantTimeEqual` | Either array exceeds `CT_MAX_BYTES` | Throws `RangeError` |
279
350
  | `xor` | Arrays differ in length | Throws `RangeError` |
280
351
  | `randomBytes` | `crypto` not available | Throws (runtime-dependent) |
281
352
  | `hasSIMD` | `WebAssembly` not available | Returns `false` |
@@ -290,5 +361,7 @@ console.log(combined.length) // 32
290
361
  > - [chacha20](./chacha20.md) — ChaCha20/Poly1305 classes use `randomBytes` for nonce generation
291
362
  > - [sha2](./sha2.md) — SHA-2 and HMAC classes; output often converted with `bytesToHex`
292
363
  > - [sha3](./sha3.md) — SHA-3 and SHAKE classes; output often converted with `bytesToHex`
364
+ > - [argon2id](./argon2id.md) — passphrase-based encryption; uses `constantTimeEqual` for hash verification
365
+ > - [examples](./examples.md) — full HMAC-SHA256 custom protocol example using `constantTimeEqual`
293
366
  > - [types](./types.md) — public interfaces whose implementations rely on these utilities
294
367
  > - [test-suite](./test-suite.md) — test suite structure and vector corpus
@@ -1 +1 @@
1
- export declare const WASM_BASE64 = "AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAA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B0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACUQc291cmNlTWFwcGluZ1VSTBMuL2NoYWNoYTIwLndhc20ubWFw";
1
+ export declare const WASM_GZ_BASE64 = "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";
@@ -1,2 +1,3 @@
1
1
  // Generated by scripts/embed-wasm.ts — do not edit
2
- export const WASM_BASE64 = 'AGFzbQEAAAABEQRgAAF/YAAAYAF/AX9gAX8AAyYlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAQECAgEBAwICAQMBAQUEAQEDAwegBSQLZ2V0TW9kdWxlSWQAAAxnZXRLZXlPZmZzZXQAARRnZXRDaGFjaGFOb25jZU9mZnNldAACEmdldENoYWNoYUN0ck9mZnNldAADFGdldENoYWNoYUJsb2NrT2Zmc2V0AAQUZ2V0Q2hhY2hhU3RhdGVPZmZzZXQABRBnZXRDaHVua1B0T2Zmc2V0AAYQZ2V0Q2h1bmtDdE9mZnNldAAHDGdldENodW5rU2l6ZQAIEGdldFBvbHlLZXlPZmZzZXQACRBnZXRQb2x5TXNnT2Zmc2V0AAoQZ2V0UG9seUJ1Zk9mZnNldAALE2dldFBvbHlCdWZMZW5PZmZzZXQADBBnZXRQb2x5VGFnT2Zmc2V0AA0OZ2V0UG9seUhPZmZzZXQADg5nZXRQb2x5Uk9mZnNldAAPD2dldFBvbHlSc09mZnNldAAQDmdldFBvbHlTT2Zmc2V0ABEVZ2V0WENoYUNoYU5vbmNlT2Zmc2V0ABIWZ2V0WENoYUNoYVN1YmtleU9mZnNldAATF2dldENoYWNoYVNpbWRXb3JrT2Zmc2V0ABQOZ2V0TWVtb3J5UGFnZXMAFQ1jaGFjaGFMb2FkS2V5ABYQY2hhY2hhU2V0Q291bnRlcgAXEmNoYWNoYVJlc2V0Q291bnRlcgAYEmNoYWNoYUVuY3J5cHRDaHVuawAaEmNoYWNoYURlY3J5cHRDaHVuawAbEGNoYWNoYUdlblBvbHlLZXkAHAloY2hhY2hhMjAAHRdjaGFjaGFFbmNyeXB0Q2h1bmtfc2ltZAAfF2NoYWNoYURlY3J5cHRDaHVua19zaW1kACAIcG9seUluaXQAIQpwb2x5VXBkYXRlACIJcG9seUZpbmFsACMLd2lwZUJ1ZmZlcnMAJAZtZW1vcnkCAArmRiUEAEEBCwQAQQALBABBIAsEAEEsCwQAQTALBQBB8AALBQBBsAELBgBBsIEECwYAQYCABAsGAEGwgQgLBgBB0IEICwYAQZCCCAsGAEGggggLBgBBpIIICwYAQbSCCAsGAEHcgggLBgBBhIMICwYAQaSDCAsGAEG0gwgLBgBBzIMICwYAQfCDCAsEAD8AC4sBAQJ/QfAAQeXwwYsGNgIAQfQAQe7IgZkDNgIAQfgAQbLaiMsHNgIAQfwAQfTKgdkGNgIAA0AgAEEISARAIABBAnQiASABKAIANgKAASAAQQFqIQAMAQsLQaABQSwoAgA2AgBBACEAA0AgAEEDSARAIABBAnQiASABKAIgNgKkASAAQQFqIQAMAQsLCxEAQSwgADYCAEGgASAANgIACwYAQQEQFwvxCAEFf0EwQfAAQcAA/AoAAANAIABBCkgEQEHAACgCACIBQTAoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB4AAgAzYCAEHEACgCACIBQTQoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB5AAgAzYCAEHIACgCACIBQTgoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB6AAgAzYCAEHMACgCACIBQTwoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB7AAgAzYCAEHEACgCACIBQTAoAgBqIgJB7AAoAgBzIgNBEHQgA0EQdnIiA0HYACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEEwIAI2AgBBxAAgASAEcyIBQQd0IAFBGXZyNgIAQdgAIAQ2AgBB7AAgAzYCAEHIACgCACIBQTQoAgBqIgJB4AAoAgBzIgNBEHQgA0EQdnIiA0HcACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE0IAI2AgBByAAgASAEcyIBQQd0IAFBGXZyNgIAQdwAIAQ2AgBB4AAgAzYCAEHMACgCACIBQTgoAgBqIgJB5AAoAgBzIgNBEHQgA0EQdnIiA0HQACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE4IAI2AgBBzAAgASAEcyIBQQd0IAFBGXZyNgIAQdAAIAQ2AgBB5AAgAzYCAEHAACgCACIBQTwoAgBqIgJB6AAoAgBzIgNBEHQgA0EQdnIiA0HUACgCAGoiBCABIARzIgFBDHQgAUEUdnIiASACaiICIANzIgNBCHQgA0EYdnIiA2ohBEE8IAI2AgBBwAAgASAEcyIBQQd0IAFBGXZyNgIAQdQAIAQ2AgBB6AAgAzYCACAAQQFqIQAMAQsLQQAhAANAIABBEEgEQCAAQQJ0IgEgASgCMCABKAJwajYCMCAAQQFqIQAMAQsLC5EBAQN/IABBAEwgAEGAgARKcgRAQX8PCwNAIAAgAkoEQBAZQcAAIAAgAmsiASABQcAAThshA0EAIQEDQCABIANIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAFBoAEoAgBBAWoiATYCAEEsIAE2AgAgAiADaiECDAELCyAACwYAIAAQGgsYAEGgAUEANgIAEBlBsIEIQTBBIPwKAAALogoBBX9B8ABB5fDBiwY2AgBB9ABB7siBmQM2AgBB+ABBstqIywc2AgBB/ABB9MqB2QY2AgADQCAAQQhIBEAgAEECdCICIAIoAgA2AoABIABBAWohAAwBCwtBACEAA0AgAEEESARAIABBAnQiAiACQbSDCGooAgA2AqABIABBAWohAAwBCwsDQCABQQpIBEBBgAEoAgAiAEHwACgCAGoiAkGgASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfAAIAI2AgBBgAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBoAEgAzYCAEGEASgCACIAQfQAKAIAaiICQaQBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB9AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGkASADNgIAQYgBKAIAIgBB+AAoAgBqIgJBqAEoAgBzIgNBEHQgA0EQdnIiA0GYASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH4ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGYASAENgIAQagBIAM2AgBBjAEoAgAiAEH8ACgCAGoiAkGsASgCAHMiA0EQdCADQRB2ciIDQZwBKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfwAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZwBIAQ2AgBBrAEgAzYCAEGEASgCACIAQfAAKAIAaiICQawBKAIAcyIDQRB0IANBEHZyIgNBmAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB8AAgAjYCAEGEASAAIARzIgBBB3QgAEEZdnI2AgBBmAEgBDYCAEGsASADNgIAQYgBKAIAIgBB9AAoAgBqIgJBoAEoAgBzIgNBEHQgA0EQdnIiA0GcASgCAGoiBCAAIARzIgBBDHQgAEEUdnIiACACaiICIANzIgNBCHQgA0EYdnIiA2ohBEH0ACACNgIAQYgBIAAgBHMiAEEHdCAAQRl2cjYCAEGcASAENgIAQaABIAM2AgBBjAEoAgAiAEH4ACgCAGoiAkGkASgCAHMiA0EQdCADQRB2ciIDQZABKAIAaiIEIAAgBHMiAEEMdCAAQRR2ciIAIAJqIgIgA3MiA0EIdCADQRh2ciIDaiEEQfgAIAI2AgBBjAEgACAEcyIAQQd0IABBGXZyNgIAQZABIAQ2AgBBpAEgAzYCAEGAASgCACIAQfwAKAIAaiICQagBKAIAcyIDQRB0IANBEHZyIgNBlAEoAgBqIgQgACAEcyIAQQx0IABBFHZyIgAgAmoiAiADcyIDQQh0IANBGHZyIgNqIQRB/AAgAjYCAEGAASAAIARzIgBBB3QgAEEZdnI2AgBBlAEgBDYCAEGoASADNgIAIAFBAWohAQwBCwtBACEAA0AgAEEESARAIABBAnQiAUHMgwhqIAEoAnA2AgAgAEEBaiEADAELC0EAIQADQCAAQQRIBEAgAEECdCIBQdyDCGogASgCoAE2AgAgAEEBaiEADAELCwv+EAISewF/QfAAKAIA/REhEEH0ACgCAP0RIQpB+AAoAgD9ESELQfwAKAIA/REhDEGAASgCAP0RIQFBhAEoAgD9ESEEQYgBKAIA/REhAkGMASgCAP0RIQNBkAEoAgD9ESENQZQBKAIA/REhDkGYASgCAP0RIQlBnAEoAgD9ESEPIAD9ESAAQQFq/RwBIABBAmr9HAIgAEEDav0cAyEIQaQBKAIA/REhBUGoASgCAP0RIQZBrAEoAgD9ESEHA0AgE0EKSARAIAEgDSAIIBAgAf2uASIB/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiDf1RIhBBDP2rASAQQRT9rQH9UCIQIA0gCCABIBD9rgEiCP1RIgFBCP2rASABQRj9rQH9UCIN/a4BIhH9USIBQQf9qwEgAUEZ/a0B/VAhASACIAkgBiALIAL9rgEiAv1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgn9USILQQz9qwEgC0EU/a0B/VAiCyAJIAYgAiAL/a4BIgv9USICQQj9qwEgAkEY/a0B/VAiBv2uASIC/VEiCUEH/asBIAlBGf2tAf1QIRIgAyAPIAcgDCAD/a4BIgP9USIHQRD9qwEgB0EQ/a0B/VAiB/2uASIJ/VEiDEEM/asBIAxBFP2tAf1QIgwgCSAHIAMgDP2uASIM/VEiA0EI/asBIANBGP2tAf1QIgf9rgEiD/1RIgNBB/2rASADQRn9rQH9UCEDIAIgByAIIAQgDiAFIAogBP2uASIC/VEiBEEQ/asBIARBEP2tAf1QIgT9rgEiBf1RIgdBDP2rASAHQRT9rQH9UCIHIAUgBCACIAf9rgEiAv1RIgRBCP2rASAEQRj9rQH9UCIF/a4BIg79USIEQQf9qwEgBEEZ/a0B/VAiBP2uASIH/VEiCEEQ/asBIAhBEP2tAf1QIgj9rgEiCSAIIAcgBCAJ/VEiBEEM/asBIARBFP2tAf1QIgT9rgEiEP1RIgdBCP2rASAHQRj9rQH9UCIH/a4BIQkgBCAJ/VEiBEEH/asBIARBGf2tAf1QIQQgEiAPIA0gAiAS/a4BIgL9USIIQRD9qwEgCEEQ/a0B/VAiCP2uASIK/VEiDUEM/asBIA1BFP2tAf1QIg0gCiAIIAIgDf2uASIK/VEiAkEI/asBIAJBGP2tAf1QIgj9rgEiD/1RIgJBB/2rASACQRn9rQH9UCECIAMgESAFIAsgA/2uASID/VEiBUEQ/asBIAVBEP2tAf1QIgX9rgEiC/1RIg1BDP2rASANQRT9rQH9UCINIAsgBSADIA39rgEiC/1RIgNBCP2rASADQRj9rQH9UCIF/a4BIg39USIDQQf9qwEgA0EZ/a0B/VAhAyABIA4gBiAMIAH9rgEiAf1RIgZBEP2rASAGQRD9rQH9UCIG/a4BIgz9USIOQQz9qwEgDkEU/a0B/VAiDiAMIAYgASAO/a4BIgz9USIBQQj9qwEgAUEY/a0B/VAiBv2uASIO/VEiAUEH/asBIAFBGf2tAf1QIQEgE0EBaiETDAELCyAKQfQAKAIA/RH9rgEhCiALQfgAKAIA/RH9rgEhCyAMQfwAKAIA/RH9rgEhDCABQYABKAIA/RH9rgEhASAEQYQBKAIA/RH9rgEhBCACQYgBKAIA/RH9rgEhAiADQYwBKAIA/RH9rgEhAyANQZABKAIA/RH9rgEhDSAOQZQBKAIA/RH9rgEhDiAJQZgBKAIA/RH9rgEhCSAPQZwBKAIA/RH9rgEhDyAFQaQBKAIA/RH9rgEhBSAGQagBKAIA/RH9rgEhBiAHQawBKAIA/RH9rgEhB0HwgwggEEHwACgCAP0R/a4BIhD9GwA2AgBB9IMIIAr9GwA2AgBB+IMIIAv9GwA2AgBB/IMIIAz9GwA2AgBBgIQIIAH9GwA2AgBBhIQIIAT9GwA2AgBBiIQIIAL9GwA2AgBBjIQIIAP9GwA2AgBBkIQIIA39GwA2AgBBlIQIIA79GwA2AgBBmIQIIAn9GwA2AgBBnIQIIA/9GwA2AgBBoIQIIAggAP0RIABBAWr9HAEgAEECav0cAiAAQQNq/RwD/a4BIgj9GwA2AgBBpIQIIAX9GwA2AgBBqIQIIAb9GwA2AgBBrIQIIAf9GwA2AgBBsIQIIBD9GwE2AgBBtIQIIAr9GwE2AgBBuIQIIAv9GwE2AgBBvIQIIAz9GwE2AgBBwIQIIAH9GwE2AgBBxIQIIAT9GwE2AgBByIQIIAL9GwE2AgBBzIQIIAP9GwE2AgBB0IQIIA39GwE2AgBB1IQIIA79GwE2AgBB2IQIIAn9GwE2AgBB3IQIIA/9GwE2AgBB4IQIIAj9GwE2AgBB5IQIIAX9GwE2AgBB6IQIIAb9GwE2AgBB7IQIIAf9GwE2AgBB8IQIIBD9GwI2AgBB9IQIIAr9GwI2AgBB+IQIIAv9GwI2AgBB/IQIIAz9GwI2AgBBgIUIIAH9GwI2AgBBhIUIIAT9GwI2AgBBiIUIIAL9GwI2AgBBjIUIIAP9GwI2AgBBkIUIIA39GwI2AgBBlIUIIA79GwI2AgBBmIUIIAn9GwI2AgBBnIUIIA/9GwI2AgBBoIUIIAj9GwI2AgBBpIUIIAX9GwI2AgBBqIUIIAb9GwI2AgBBrIUIIAf9GwI2AgBBsIUIIBD9GwM2AgBBtIUIIAr9GwM2AgBBuIUIIAv9GwM2AgBBvIUIIAz9GwM2AgBBwIUIIAH9GwM2AgBBxIUIIAT9GwM2AgBByIUIIAL9GwM2AgBBzIUIIAP9GwM2AgBB0IUIIA39GwM2AgBB1IUIIA79GwM2AgBB2IUIIAn9GwM2AgBB3IUIIA/9GwM2AgBB4IUIIAj9GwM2AgBB5IUIIAX9GwM2AgBB6IUIIAb9GwM2AgBB7IUIIAf9GwM2AgAL+goBB38gAEEATCAAQYCABEpyBEBBfw8LQaABKAIAIQMDQCACQYACaiAATARAIAMQHkEAIQEDQCABQRBIBEAgAUEEdCIEIAJBsIEEamogBEHwgwhq/QAEACAEIAJBsAFqav0ABAD9Uf0LBAAgAUEBaiEBDAELC0GgASADQQRqIgM2AgBBLCADNgIAIAJBgAJqIQIMAQsLA0AgACACSgRAQTBB8ABBwAD8CgAAQQAhAQNAIAFBCkgEQEHAACgCACIEQTAoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB4AAgBjYCAEHEACgCACIEQTQoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB5AAgBjYCAEHIACgCACIEQTgoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB6AAgBjYCAEHMACgCACIEQTwoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB7AAgBjYCAEHEACgCACIEQTAoAgBqIgVB7AAoAgBzIgZBEHQgBkEQdnIiBkHYACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0EwIAU2AgBBxAAgBCAHcyIEQQd0IARBGXZyNgIAQdgAIAc2AgBB7AAgBjYCAEHIACgCACIEQTQoAgBqIgVB4AAoAgBzIgZBEHQgBkEQdnIiBkHcACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E0IAU2AgBByAAgBCAHcyIEQQd0IARBGXZyNgIAQdwAIAc2AgBB4AAgBjYCAEHMACgCACIEQTgoAgBqIgVB5AAoAgBzIgZBEHQgBkEQdnIiBkHQACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E4IAU2AgBBzAAgBCAHcyIEQQd0IARBGXZyNgIAQdAAIAc2AgBB5AAgBjYCAEHAACgCACIEQTwoAgBqIgVB6AAoAgBzIgZBEHQgBkEQdnIiBkHUACgCAGoiByAEIAdzIgRBDHQgBEEUdnIiBCAFaiIFIAZzIgZBCHQgBkEYdnIiBmohB0E8IAU2AgBBwAAgBCAHcyIEQQd0IARBGXZyNgIAQdQAIAc2AgBB6AAgBjYCACABQQFqIQEMAQsLQQAhAQNAIAFBEEgEQCABQQJ0IgQgBCgCMCAEKAJwajYCMCABQQFqIQEMAQsLQcAAIAAgAmsiASABQcAAThshBEEAIQEDQCABIARIBEAgAkGwgQRqIAFqIAEtADAgAkGwAWogAWotAABzOgAAIAFBAWohAQwBCwtBoAEgA0EBaiIDNgIAQSwgAzYCACACIARqIQIMAQsLIAALBgAgABAfC6EDAQR+QbOBCEGzgQgtAABBD3E6AABBt4EIQbeBCC0AAEEPcToAAEG7gQhBu4EILQAAQQ9xOgAAQb+BCEG/gQgtAABBD3E6AABBtIEIQbSBCC0AAEH8AXE6AABBuIEIQbiBCC0AAEH8AXE6AABBvIEIQbyBCC0AAEH8AXE6AABBs4EINQIAQgKIQv///x+DIQBBtoEINQIAQgSIQv///x+DIQFBuYEINQIAQgaIQv///x+DIQJBvIEINQIAQgiIIQNB3IIIQbCBCDUCAEL///8fgzcDAEHkggggADcDAEHsggggATcDAEH0ggggAjcDAEH8ggggAzcDAEGEgwggAEIFfjcDAEGMgwggAUIFfjcDAEGUgwggAkIFfjcDAEGcgwggA0IFfjcDAEGkgwhBwIEIKAIANgIAQaiDCEHEgQgoAgA2AgBBrIMIQciBCCgCADYCAEGwgwhBzIEIKAIANgIAQbSCCEIANwMAQbyCCEIANwMAQcSCCEIANwMAQcyCCEIANwMAQdSCCEIANwMAQZCCCEEAQRD8CwBBoIIIQQA2AgALrQgCDX4DfyAAQQBMBEAPC0HQgQghDkGggggoAgAiD0EASgRAQRAgD2siECAASgRAIA9BkIIIakHQgQggAPwKAABBoIIIIAAgD2o2AgAPCyAPQZCCCGpB0IEIIBD8CgAAQdyCCCkDACIBQbSCCCkDAEGQggg1AgBC////H4N8IgJ+QdSCCCkDAEGcggg1AgBCCIhCgICACIR8IgNBhIMIKQMAfnxBzIIIKQMAQZmCCDUCAEIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDAEGWggg1AgBCBIhC////H4N8IgZBlIMIKQMAIgd+fEG8gggpAwBBk4IINQIAQgKIQv///x+DfCIIQZyDCCkDACIJfnwhCiABIAh+QeSCCCkDACILIAJ+fCADIAV+fCAEIAd+fCAGIAl+fCAKQhqIfCEFIAEgBn4gCCALfnxB7IIIKQMAIgwgAn58IAMgB358IAQgCX58IAVCGoh8IQcgASAEfiAGIAt+fCAIIAx+fEH0gggpAwAiDSACfnwgAyAJfnwgB0IaiHwhCUG0ggggASADfiAEIAt+fCAGIAx+fCAIIA1+fCACQfyCCCkDAH58IAlCGoh8IgFCGohCBX4gCkL///8fg3wiAkL///8fgzcDAEG8ggggBUL///8fgyACQhqIfDcDAEHEggggB0L///8fgzcDAEHMggggCUL///8fgzcDAEHUggggAUL///8fgzcDAEGggghBADYCACAQQdCBCGohDiAAIBBrIQALA0AgAEEQTgRAQdyCCCkDACIBQbSCCCkDACAONQIAQv///x+DfCICfkHUgggpAwAgDjUCDEIIiEKAgIAIhHwiA0GEgwgpAwB+fEHMgggpAwAgDjUCCUIGiEL///8fg3wiBEGMgwgpAwAiBX58QcSCCCkDACAONQIGQgSIQv///x+DfCIGQZSDCCkDACIHfnxBvIIIKQMAIA41AgNCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAEgCH5B5IIIKQMAIgsgAn58IAMgBX58IAQgB358IAYgCX58IApCGoh8IQUgASAGfiAIIAt+fEHsgggpAwAiDCACfnwgAyAHfnwgBCAJfnwgBUIaiHwhByABIAR+IAYgC358IAggDH58QfSCCCkDACINIAJ+fCADIAl+fCAHQhqIfCEJQbSCCCABIAN+IAQgC358IAYgDH58IAggDX58IAJB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAFQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAIA5BEGohDiAAQRBrIQAMAQsLIABBAEoEQEGQggggDiAA/AoAAEGgggggADYCAAsLwwYCDX4Cf0GggggoAgAiDUEASgRAIA1BkIIIaiIOQQBBECANa/wLACAOQQE6AABB3IIIKQMAIgJBtIIIKQMAQZCCCDUCAEL///8fg3wiA35B1IIIKQMAQZyCCDUCAEIIiHwiBEGEgwgpAwB+fEHMgggpAwBBmYIINQIAQgaIQv///x+DfCIFQYyDCCkDACIAfnxBxIIIKQMAQZaCCDUCAEIEiEL///8fg3wiBkGUgwgpAwAiB358QbyCCCkDAEGTggg1AgBCAohC////H4N8IghBnIMIKQMAIgl+fCEKIAIgCH5B5IIIKQMAIgsgA358IAAgBH58IAUgB358IAYgCX58IApCGoh8IQAgAiAGfiAIIAt+fEHsgggpAwAiASADfnwgBCAHfnwgBSAJfnwgAEIaiHwhByACIAV+IAYgC358IAEgCH58QfSCCCkDACIMIAN+fCAEIAl+fCAHQhqIfCEJQbSCCCACIAR+IAUgC358IAEgBn58IAggDH58IANB/IIIKQMAfnwgCUIaiHwiAUIaiEIFfiAKQv///x+DfCICQv///x+DNwMAQbyCCCAAQv///x+DIAJCGoh8NwMAQcSCCCAHQv///x+DNwMAQcyCCCAJQv///x+DNwMAQdSCCCABQv///x+DNwMAC0G0gggpAwBB1IIIKQMAIgBCGohCBX58IgFC////H4MhAkG8gggpAwAgAUIaiHwiAUL///8fgyEDQcSCCCkDACABQhqIfCIBQv///x+DIgRCAEHMgggpAwAgAUIaiHwiAUL///8fgyIFIAJCBXwiBkIaiCADfCIHQhqIIAR8IgRCGoh8IghCGoggAEL///8fgyABQhqIfCIAfCIBQhqIfSIJQn+FIgqDIARC////H4MgCYOEIQQgAiAKgyAGQv///x+DIAmDhCADIAqDIAdC////H4MgCYOEQhqGhCAEQv8fg0I0hoQiAkGkgwg1AgBBqIMINQIAQiCGhHwiAyACVK0gBSAKgyAIQv///x+DIAmDhEIOhiAEQgyIhCAAIAqDIAEgCYNC////H4OEQiiGhEGsgwg1AgBBsIMINQIAQiCGhHx8IQBBpIIIIAM3AwBBrIIIIAA3AwALzQEAQQBBAEEg/AsAQSBBAEEM/AsAQSxBADYAAEEwQQBBwAD8CwBB8ABBAEHAAPwLAEGwAUEAQYCABPwLAEGwgQRBAEGAgAT8CwBBsIEIQQBBIPwLAEHQgQhBAEHAAPwLAEGQgghBAEEQ/AsAQaCCCEEANgAAQaSCCEEAQRD8CwBBtIIIQQBBKPwLAEHcgghBAEEo/AsAQYSDCEEAQSD8CwBBpIMIQQBBEPwLAEG0gwhBAEEY/AsAQcyDCEEAQSD8CwBB8IMIQQBBgAL8CwALACUQc291cmNlTWFwcGluZ1VSTBMuL2NoYWNoYTIwLndhc20ubWFw';
2
+ // gzip-compressed WASM binary, base64-encoded. Decoded and decompressed by loadEmbedded().
3
+ export const WASM_GZ_BASE64 = 'H4sIAAAAAAAAA+1aW2xcRxmemXOb3bPXJG2ukP8cWpRKabFQGqIqEj4bKL0kJW5awRsxyeaySWxjb1IFlrW9l8hS82BEhFIpDy7yQyRSFFELioiEEXmwwEh+8INBfshDQHmIkJH8ECEfSv+57M2nC3Z5JNHu+eaff+b/Zv5//jkza9I/cokSQmjWPEno6ElCTtJROnqSjhLji8+SyH/UoJQxSg3GEFompYbhTFnPuGfzxWODpy9fzL96mpDE2Xzx9fzVb545M5IvErrtbL545Fz/qXP9bwwOnMorMdvSEB8pDiuh0dTNXRw8dUGJzab4RLG/qLuwMkJ8eeDC8aIS2Q3RES1yElp04vz384SjxvHBi1ebDGNadGzkrBLFtSh3+YwSuVuboqP5ASVNaMW3+nXbZEqJXlGClBa8qQTptBaMKElGq5xQguxTZ/PFbx8513+kfdq2PN2Un7j83QuNQWzd3pyj85dOf2twWM/eNuz7WP7S4PDV4/1n8yPkqeQpoXd0sP/06/mr5OmMLJ/IF48MXh4o5ofJ9i1S9GZ+pCncoYRfHzg1fHVIzinZpYRfy7cId6sev5EfUFNN9sTOSdmXe8jntq/v6Dsj5y+dJnu3r+9N1gAfGrx49dWB80XixRG+PXS6v5gnfgwLL58f6L9IvuC+c34on7t85kx+eIQ8Y18Sg2Yk/reXnzVJQF2TBAS/AL/241ePa5FgheD3Xeran3yPm/gYGzNlieNjQT4mK+IxJR/T8jEjH8vyUavKOvmYkY95+VipctckXyXuu5Sy0WCFBH9d+d279kFGglUS/H1u/D0D8RMS/OIvE390EK+RYPUP439GHaMXSMBfMfHBij4Fuo+Rg2yMAglowSMJ6rrBFA32CzEJiCebGO1N4CCbbm3iZkmwH0SLKSqeSJVmtrv/4NQaDXqQ5yxZixPZXfwVszeYJfsY8WnQs4+Rgs+CB1ge8Y0gUwQjyFwZ9o1ggYhKEyiYIz4NEkWgwbYrwz4FVvAZGKjPUX8H6hc8M+gBhjxmiW7jYJudV4ZRukDAxOcDAmKa7isOBxSHhxEcFjfO4YDkcD+Sw6Li8FBxmFMcDikOjyI4LG2cwyHJYS6Sw5Li8EhxmFccDisOjyM4LG+cw2HJYT6Sw7Li8LjDFz1dOGxiHnq6+WKpg8NcRzxExeQm5uFAN18sd8TkfEc8RMXkJtbFoW6+WOiIydmOeIiKyU2si8Pd1uZie0y2ZiSdhjLtaagHv4YKB1lPay76EaXGKJCAHAWRgl8bNnuD0bSLPQB7zezN7EQGBNgF7CaYJW/s9oyAeNToBQoi1TFM4QWgBaDPkx4sIiw8T8jIS4QARWtUJ8spTKIBLfgU6e8HfAADo+AxVAFMhkAyu9wdmB4DTI+ZnbgrBD0BYE50fxrHLPnZcjkDFpHL9cyZrXq4pRSE8lSrMg5fpuYxHJGPe5ryvxhih/8nqfI/QV8S9D8R/ief6v8VIgMAOcpGDjZSATBJZQBMURmENcViVbOYjmBxY+MsVhWLWiSLG4rFtGIxoVg80SxuR7C4uXEWTxSLiUgWNxWL24rFdcViTbO4E8Hi1sZZrCkW1yNZ3FIs7nR4ZKUbi03MxUpXj9zsYDHRGRdR0bmJuVjt6pFbHdF5vTMuoqJzE2vkSVePTHZE51hnXERF5ybWyFrXlXqjPTpb8+H6hEPx1bUgUvWnpPVW3WWlO0Xbld1/ZdiWH9BRGXth1stI/4dZLy59EGY9V85DmPUScmbCrEdl1IZZz5SRE2Y9Jr0XZj3lojDrJeU0hVkvJUM4zHoxGUZh1ksDCbOCTrgHcyYrhHsYvhgXwj2Gx6Xzw6xnSQeEWc+WiyPMeo7RC1tFYgUKSeCQARr+nPo07PN5kAl/RgEfH9DwuM+xIhn2+ZkggRWZYJusyIiWFDKowMM+nwYcFWiwQyoksSIrKhxZsVNUeBQYxMAGFxiqsLDPt6VVW1u1sSIW9vmutOpqq65oycBFBTfs85m0yrRVW3cZk1Zj2uoWMCANDiTAQBUj7PMdadXRVh1tNSGtJrTVBMTAAQMSqJAI+zA6UcHQVkXLtKhwZIWyagADBziYkAIL4mBqeqa0bWrbosISpBKSlLLtgAUm9tJsyWVLZdvCipSocGTFzpYunU/zaQw4OGBCTLRMyJbbWlpmBBkuybSM04s1WrXZ80zYAmlIAoMtmmuk5XjY5yelxaS2mIQ4cGCQ1AqdfuV6hpm0yrRVBgZkwQK36VdLWrW0VUsHy3qrLlhgSKtuhF8tHf3r/UohBTYkmisnMoYxWFLSakpbTUECbGyvFTpXjq09un7lbMX8s1W8xcV1vkGfxMHVSQeLLiR05sFiAqhOP1hEn9WaRROYTkRYZGDobIRFA5I6JWEx+ck4bjSLKYjp5CRDI60zFBbTYOlEhEULbJ2NsGiDo1MSFh28SoCMzqcyBHeLM/xqlUNc4SdVDq7Ca1UOCYXHahyowrUaB1PhiRoHpvD1GgdD4ckah6TCN2ocUgrfrHGIKXyrxiGt8FSNA++WdGUelMrTNQ6WwrdrHGyF79Q4OArfrXHIhLvFO/pMTQxQ4I9qYoAC36uJAQo8Kwco8H05QIHn5AAFnpcDFHhBDlDgRTlAgZfkAAVelgMU+AEOUOGHkr/AjyR/gR9L/gKvSP5iV16V/AV+IvkLvCb5y527LvjL96q64C/fbuqCv3zHqAv+Ak/WBX+Bb9QFf4Fv1gV/gW/VBX+Bp+qCv8DTdcFf4Nt1wV/gO3XBX+C7dcFfvLXM1AV/gT+qC/4C36sL/vIIKvnLqwHJXx7RJX95VJb8BV6Q/AVelPwFXpL8BV6W/AV+IPkL/FDyF/iR5C/wY8kfsfvPOHWijpXy7dMzDDw1jrECkKNmLxiZz+sTpTy10sAs+qY6WBbAxNVXCIlJwJTHS1EI+0LX7DhfghGYBd+QZ0vxuiXsyMNl41DbesfWsNxyz2aqexVL32nY+IZoizdEW98n4AbljOD+VMTd6cqwb4JV8C2wUZ+jPr4h2gXPCXrAUmd51cbBNs37BEfdadjNux1T3atY+k6jjcPixjkckBzuR3JYVBweKg5zisMhxeFRBIeljXM4JDnMRXJYUhweKQ7zisNhxeFxBIfljXM4LDnMR3JYVhwed/iipwuHTcxDTzdfLHVwmOuIh6iY3MQ8HOjmi+WOmJzviIeomNzEujjUzRcLHTE52xEPUTG5iXVxuNvaXGyPyfbDW1vGYpixTLxnM/U9W4vyujs0s3GHZm70Dg0MvD9ry3Fgdtyf7XXfN6hZDj4c5/h5npAg/b2XCAl+Nc7x0xT8Zpzjpyn47TjHT1MwM87xg4I1KiQfjXP8tEjujXP8tEg+HOcvMpJjE7mPP/54b9UjwS+lxNQSGvxaSmwtYdgHSviEZ+APPHjxh2VR/RWDBA8rHAiCxxUOFMFqhQNDsFbhYCCoVTmQnFVGfL3KgSp8o8qBKXyrysFQeLrKg9lxrn7FuV3lwf1G6U6VB3ON0t0qD+YbpZkKzwku9zS4r8G8BosaTFZ4QILMmit+zRL3mu4HnCXL6vrV7E27+KuXl8J6DPR0QHCrykD6gp8BxJDGbgqoBnLvmsLpgHThICNpt7U6I6qXK/w5A6+mZwTA6sZslnxWRnoov1VRs54bGxvjtZJv4CQ+Z5ByCYeCKu9V2lxV+mRtXRcqvlUu4cBR6SeVNg+XfBsnHZWccgmnCZV+XGkLjJLP0RuoFCuXvDhQ4GX0M0pcYOUSGGCVS7g6yyWwIVYuQTy3a6LkWUDBLgMHt1zCgMAWCdXCES1Q1xK6Dq60Mp7syyXgkCiXMHKwRVK1QF1H6MZwvvB2uwym0LdRHzgkyyVgGGhiaiCG2j7N7ZrIWWWIN+a1Ga73KhwsWQSG2ipKwGnqzFc4xJrFRTTdLOpggQz6teClgEDmgkdcecf/htnb6WVIRfkYpYluHkaFWHf/oord3buoYvzft/+VbyEVZIRDA3SozN5yzU9WOKRalzhmC/f3NkuW2ajOD0mhiyfgCi/4KcwukLyw5mK/9KXm6mfRq99Yv/rR6f9x3Vs6Lsj/eN2zttgwyiW8TEUfr4sN3PA6Y4OKFjKOLKFLVGwwsHRsYPg1YiOhWnTGBsNYspS+rSMKjI3GBvksseFqp0kf+UQaQ6uNrVIuOKrISLGhl2qb2DdzRC/z9goLd8SSb+d2TYBR8nEewCz5plDiWNLDkO2IHPcP/VhutO7Hq2Cq6li1hpc1EK+C3RSBgQKnKcjtulbDNnuruQPXavhDQBWjAnddDA64hqkJ2Fsf4I1kFXhLy9Q1MHOJiRoQrKEQq8rKWm7ftRpu1C/KHVr3U/LEX4zId4I76r3B/RMlAf4H3IkhIEECwf6AHCQk6AnEqdDFH20a8C4NxBlW4HGztcB1RwsCSv11Oz0RPLRsRsB9CJebsFZt9DVdbeoKuAPhfFNhRcAxtuYSlzybGRm8PHwqf6x/aOj8wNm33zy69YUv6b/7eeGd/pFLL1zqH/o3sZW7sXwmAAA=';
@@ -0,0 +1 @@
1
+ export declare const WASM_GZ_BASE64 = "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";
@@ -0,0 +1,3 @@
1
+ // Generated by scripts/embed-wasm.ts — do not edit
2
+ // gzip-compressed WASM binary, base64-encoded. Decoded and decompressed by loadEmbedded().
3
+ export const WASM_GZ_BASE64 = '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';