@ghostlytools/cli 1.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 (57) hide show
  1. package/README.md +405 -0
  2. package/SKILL.md +282 -0
  3. package/dist/assets/argon2id-088uQfnH.js +645 -0
  4. package/dist/assets/argon2id-088uQfnH.js.map +1 -0
  5. package/dist/assets/bark_ffi_wasm_bg-Bxru_BVW.wasm +0 -0
  6. package/dist/assets/bark_ffi_wasm_bg-EY2uc0Bx.js +6 -0
  7. package/dist/assets/bark_ffi_wasm_bg-EY2uc0Bx.js.map +1 -0
  8. package/dist/assets/bitcoindevkit_bg-B-iLWrmX.js +6 -0
  9. package/dist/assets/bitcoindevkit_bg-B-iLWrmX.js.map +1 -0
  10. package/dist/assets/bitcoindevkit_bg-CRkZTSbO.wasm +0 -0
  11. package/dist/assets/breez_sdk_spark_wasm_bg.wasm +0 -0
  12. package/dist/assets/endpoint-h3cqRyRz.js +185 -0
  13. package/dist/assets/endpoint-h3cqRyRz.js.map +1 -0
  14. package/dist/assets/fedimintWorker.mjs +95 -0
  15. package/dist/assets/fedimint_client_wasm_bg-BtHHlFpp.js +6 -0
  16. package/dist/assets/fedimint_client_wasm_bg-BtHHlFpp.js.map +1 -0
  17. package/dist/assets/fedimint_client_wasm_bg-DeFtkIv6.wasm +0 -0
  18. package/dist/assets/fileBytes-ByS16quP.js +154 -0
  19. package/dist/assets/fileBytes-ByS16quP.js.map +1 -0
  20. package/dist/assets/fileBytesIdb-COzoilo9.js +230 -0
  21. package/dist/assets/fileBytesIdb-COzoilo9.js.map +1 -0
  22. package/dist/assets/fileBytesOpfs-B27wAMUh.js +145 -0
  23. package/dist/assets/fileBytesOpfs-B27wAMUh.js.map +1 -0
  24. package/dist/assets/ghostly_iroh_web-CPa_YEfb.js +1154 -0
  25. package/dist/assets/ghostly_iroh_web-CPa_YEfb.js.map +1 -0
  26. package/dist/assets/ghostly_iroh_web_bg.wasm +0 -0
  27. package/dist/assets/hyperdhtRelay-BKsFpPjr.js +342 -0
  28. package/dist/assets/hyperdhtRelay-BKsFpPjr.js.map +1 -0
  29. package/dist/assets/legacy_ciphers-JJOu0JXL.js +5185 -0
  30. package/dist/assets/legacy_ciphers-JJOu0JXL.js.map +1 -0
  31. package/dist/assets/mainline-DOncVbJN.js +176 -0
  32. package/dist/assets/mainline-DOncVbJN.js.map +1 -0
  33. package/dist/assets/nacl-fast-CDhNCYHs.js +1512 -0
  34. package/dist/assets/nacl-fast-CDhNCYHs.js.map +1 -0
  35. package/dist/assets/noble_curves-DDWn5AH0.js +2978 -0
  36. package/dist/assets/noble_curves-DDWn5AH0.js.map +1 -0
  37. package/dist/assets/noble_hashes-B7AZyFyS.js +427 -0
  38. package/dist/assets/noble_hashes-B7AZyFyS.js.map +1 -0
  39. package/dist/assets/openpgp-BBFr-zHQ.js +16573 -0
  40. package/dist/assets/openpgp-BBFr-zHQ.js.map +1 -0
  41. package/dist/assets/server-5T5l8hfy.js +28293 -0
  42. package/dist/assets/server-5T5l8hfy.js.map +1 -0
  43. package/dist/assets/sha512-BYId-G-T.js +1034 -0
  44. package/dist/assets/sha512-BYId-G-T.js.map +1 -0
  45. package/dist/assets/src-DptDr2et.js +20971 -0
  46. package/dist/assets/src-DptDr2et.js.map +1 -0
  47. package/dist/assets/storage-Bya5b2Xt.js +1648 -0
  48. package/dist/assets/storage-Bya5b2Xt.js.map +1 -0
  49. package/dist/assets/tree-store-N362nuzZ.js +1031 -0
  50. package/dist/assets/tree-store-N362nuzZ.js.map +1 -0
  51. package/dist/assets/unbzip2-stream-B1C-JX9L.js +681 -0
  52. package/dist/assets/unbzip2-stream-B1C-JX9L.js.map +1 -0
  53. package/dist/assets/web-OUQl4Q7L.js +3802 -0
  54. package/dist/assets/web-OUQl4Q7L.js.map +1 -0
  55. package/dist/ghostly.mjs +17087 -0
  56. package/dist/ghostly.mjs.map +1 -0
  57. package/package.json +76 -0
@@ -0,0 +1,427 @@
1
+ import { C as sha3_512, O as wrapConstructor, S as sha3_256, _ as sha224, b as sha384, f as createHasher, g as rotl, i as Maj, r as HashMD, t as Chi$1, u as clean, v as sha256, w as sha512 } from "./sha512-BYId-G-T.js";
2
+ //#region ../../node_modules/openpgp/dist/lightweight/noble_hashes.mjs
3
+ /*! OpenPGP.js v6.3.2 - 2026-09-24 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */
4
+ /**
5
+
6
+ SHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.
7
+ Don't use them in a new protocol. What "weak" means:
8
+
9
+ - Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.
10
+ - No practical pre-image attacks (only theoretical, 2^123.4)
11
+ - HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151
12
+ * @module
13
+ */
14
+ /** Initial SHA1 state */
15
+ var SHA1_IV = /* @__PURE__ */ Uint32Array.from([
16
+ 1732584193,
17
+ 4023233417,
18
+ 2562383102,
19
+ 271733878,
20
+ 3285377520
21
+ ]);
22
+ var SHA1_W = /* @__PURE__ */ new Uint32Array(80);
23
+ /** SHA1 legacy hash class. */
24
+ var SHA1 = class extends HashMD {
25
+ constructor() {
26
+ super(64, 20, 8, false);
27
+ this.A = SHA1_IV[0] | 0;
28
+ this.B = SHA1_IV[1] | 0;
29
+ this.C = SHA1_IV[2] | 0;
30
+ this.D = SHA1_IV[3] | 0;
31
+ this.E = SHA1_IV[4] | 0;
32
+ }
33
+ get() {
34
+ const { A, B, C, D, E } = this;
35
+ return [
36
+ A,
37
+ B,
38
+ C,
39
+ D,
40
+ E
41
+ ];
42
+ }
43
+ set(A, B, C, D, E) {
44
+ this.A = A | 0;
45
+ this.B = B | 0;
46
+ this.C = C | 0;
47
+ this.D = D | 0;
48
+ this.E = E | 0;
49
+ }
50
+ process(view, offset) {
51
+ for (let i = 0; i < 16; i++, offset += 4) SHA1_W[i] = view.getUint32(offset, false);
52
+ for (let i = 16; i < 80; i++) SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);
53
+ let { A, B, C, D, E } = this;
54
+ for (let i = 0; i < 80; i++) {
55
+ let F, K;
56
+ if (i < 20) {
57
+ F = Chi$1(B, C, D);
58
+ K = 1518500249;
59
+ } else if (i < 40) {
60
+ F = B ^ C ^ D;
61
+ K = 1859775393;
62
+ } else if (i < 60) {
63
+ F = Maj(B, C, D);
64
+ K = 2400959708;
65
+ } else {
66
+ F = B ^ C ^ D;
67
+ K = 3395469782;
68
+ }
69
+ const T = rotl(A, 5) + F + E + K + SHA1_W[i] | 0;
70
+ E = D;
71
+ D = C;
72
+ C = rotl(B, 30);
73
+ B = A;
74
+ A = T;
75
+ }
76
+ A = A + this.A | 0;
77
+ B = B + this.B | 0;
78
+ C = C + this.C | 0;
79
+ D = D + this.D | 0;
80
+ E = E + this.E | 0;
81
+ this.set(A, B, C, D, E);
82
+ }
83
+ roundClean() {
84
+ clean(SHA1_W);
85
+ }
86
+ destroy() {
87
+ this.set(0, 0, 0, 0, 0);
88
+ clean(this.buffer);
89
+ }
90
+ };
91
+ /** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */
92
+ var sha1$1 = /* @__PURE__ */ createHasher(() => new SHA1());
93
+ var Rho160 = /* @__PURE__ */ Uint8Array.from([
94
+ 7,
95
+ 4,
96
+ 13,
97
+ 1,
98
+ 10,
99
+ 6,
100
+ 15,
101
+ 3,
102
+ 12,
103
+ 0,
104
+ 9,
105
+ 5,
106
+ 2,
107
+ 14,
108
+ 11,
109
+ 8
110
+ ]);
111
+ var Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();
112
+ var Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();
113
+ var idxLR = /* @__PURE__ */ (() => {
114
+ const res = [[Id160], [Pi160]];
115
+ for (let i = 0; i < 4; i++) for (let j of res) j.push(j[i].map((k) => Rho160[k]));
116
+ return res;
117
+ })();
118
+ var idxL = /* @__PURE__ */ (() => idxLR[0])();
119
+ var idxR = /* @__PURE__ */ (() => idxLR[1])();
120
+ var shifts160 = /* @__PURE__ */ [
121
+ [
122
+ 11,
123
+ 14,
124
+ 15,
125
+ 12,
126
+ 5,
127
+ 8,
128
+ 7,
129
+ 9,
130
+ 11,
131
+ 13,
132
+ 14,
133
+ 15,
134
+ 6,
135
+ 7,
136
+ 9,
137
+ 8
138
+ ],
139
+ [
140
+ 12,
141
+ 13,
142
+ 11,
143
+ 15,
144
+ 6,
145
+ 9,
146
+ 9,
147
+ 7,
148
+ 12,
149
+ 15,
150
+ 11,
151
+ 13,
152
+ 7,
153
+ 8,
154
+ 7,
155
+ 7
156
+ ],
157
+ [
158
+ 13,
159
+ 15,
160
+ 14,
161
+ 11,
162
+ 7,
163
+ 7,
164
+ 6,
165
+ 8,
166
+ 13,
167
+ 14,
168
+ 13,
169
+ 12,
170
+ 5,
171
+ 5,
172
+ 6,
173
+ 9
174
+ ],
175
+ [
176
+ 14,
177
+ 11,
178
+ 12,
179
+ 14,
180
+ 8,
181
+ 6,
182
+ 5,
183
+ 5,
184
+ 15,
185
+ 12,
186
+ 15,
187
+ 14,
188
+ 9,
189
+ 9,
190
+ 8,
191
+ 6
192
+ ],
193
+ [
194
+ 15,
195
+ 12,
196
+ 13,
197
+ 13,
198
+ 9,
199
+ 5,
200
+ 8,
201
+ 6,
202
+ 14,
203
+ 11,
204
+ 12,
205
+ 11,
206
+ 8,
207
+ 6,
208
+ 5,
209
+ 5
210
+ ]
211
+ ].map((i) => Uint8Array.from(i));
212
+ var shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));
213
+ var shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));
214
+ var Kl160 = /* @__PURE__ */ Uint32Array.from([
215
+ 0,
216
+ 1518500249,
217
+ 1859775393,
218
+ 2400959708,
219
+ 2840853838
220
+ ]);
221
+ var Kr160 = /* @__PURE__ */ Uint32Array.from([
222
+ 1352829926,
223
+ 1548603684,
224
+ 1836072691,
225
+ 2053994217,
226
+ 0
227
+ ]);
228
+ function ripemd_f(group, x, y, z) {
229
+ if (group === 0) return x ^ y ^ z;
230
+ if (group === 1) return x & y | ~x & z;
231
+ if (group === 2) return (x | ~y) ^ z;
232
+ if (group === 3) return x & z | y & ~z;
233
+ return x ^ (y | ~z);
234
+ }
235
+ var BUF_160 = /* @__PURE__ */ new Uint32Array(16);
236
+ var RIPEMD160 = class extends HashMD {
237
+ constructor() {
238
+ super(64, 20, 8, true);
239
+ this.h0 = 1732584193;
240
+ this.h1 = -271733879;
241
+ this.h2 = -1732584194;
242
+ this.h3 = 271733878;
243
+ this.h4 = -1009589776;
244
+ }
245
+ get() {
246
+ const { h0, h1, h2, h3, h4 } = this;
247
+ return [
248
+ h0,
249
+ h1,
250
+ h2,
251
+ h3,
252
+ h4
253
+ ];
254
+ }
255
+ set(h0, h1, h2, h3, h4) {
256
+ this.h0 = h0 | 0;
257
+ this.h1 = h1 | 0;
258
+ this.h2 = h2 | 0;
259
+ this.h3 = h3 | 0;
260
+ this.h4 = h4 | 0;
261
+ }
262
+ process(view, offset) {
263
+ for (let i = 0; i < 16; i++, offset += 4) BUF_160[i] = view.getUint32(offset, true);
264
+ let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;
265
+ for (let group = 0; group < 5; group++) {
266
+ const rGroup = 4 - group;
267
+ const hbl = Kl160[group], hbr = Kr160[group];
268
+ const rl = idxL[group], rr = idxR[group];
269
+ const sl = shiftsL160[group], sr = shiftsR160[group];
270
+ for (let i = 0; i < 16; i++) {
271
+ const tl = rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el | 0;
272
+ al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl;
273
+ }
274
+ for (let i = 0; i < 16; i++) {
275
+ const tr = rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er | 0;
276
+ ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr;
277
+ }
278
+ }
279
+ this.set(this.h1 + cl + dr | 0, this.h2 + dl + er | 0, this.h3 + el + ar | 0, this.h4 + al + br | 0, this.h0 + bl + cr | 0);
280
+ }
281
+ roundClean() {
282
+ clean(BUF_160);
283
+ }
284
+ destroy() {
285
+ this.destroyed = true;
286
+ clean(this.buffer);
287
+ this.set(0, 0, 0, 0, 0);
288
+ }
289
+ };
290
+ /**
291
+ * RIPEMD-160 - a legacy hash function from 1990s.
292
+ * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
293
+ * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf
294
+ */
295
+ var ripemd160$1 = /* @__PURE__ */ createHasher(() => new RIPEMD160());
296
+ /**
297
+ * SHA1 (RFC 3174) legacy hash function.
298
+ * @module
299
+ * @deprecated
300
+ */
301
+ /** @deprecated Use import from `noble/hashes/legacy` module */
302
+ var sha1 = sha1$1;
303
+ /**
304
+ * RIPEMD-160 legacy hash function.
305
+ * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
306
+ * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf
307
+ * @module
308
+ * @deprecated
309
+ */
310
+ /** @deprecated Use import from `noble/hashes/legacy` module */
311
+ var ripemd160 = ripemd160$1;
312
+ /** @access private */
313
+ var K = Array.from({ length: 64 }, (_, i) => Math.floor(2 ** 32 * Math.abs(Math.sin(i + 1))));
314
+ var Chi = (a, b, c) => a & b ^ ~a & c;
315
+ var IV = /* @__PURE__ */ new Uint32Array([
316
+ 1732584193,
317
+ 4023233417,
318
+ 2562383102,
319
+ 271733878
320
+ ]);
321
+ var MD5_W = /* @__PURE__ */ new Uint32Array(16);
322
+ var MD5 = class extends HashMD {
323
+ constructor() {
324
+ super(64, 16, 8, true);
325
+ this.A = IV[0] | 0;
326
+ this.B = IV[1] | 0;
327
+ this.C = IV[2] | 0;
328
+ this.D = IV[3] | 0;
329
+ }
330
+ get() {
331
+ const { A, B, C, D } = this;
332
+ return [
333
+ A,
334
+ B,
335
+ C,
336
+ D
337
+ ];
338
+ }
339
+ set(A, B, C, D) {
340
+ this.A = A | 0;
341
+ this.B = B | 0;
342
+ this.C = C | 0;
343
+ this.D = D | 0;
344
+ }
345
+ process(view, offset) {
346
+ for (let i = 0; i < 16; i++, offset += 4) MD5_W[i] = view.getUint32(offset, true);
347
+ let { A, B, C, D } = this;
348
+ for (let i = 0; i < 64; i++) {
349
+ let F, g, s;
350
+ if (i < 16) {
351
+ F = Chi(B, C, D);
352
+ g = i;
353
+ s = [
354
+ 7,
355
+ 12,
356
+ 17,
357
+ 22
358
+ ];
359
+ } else if (i < 32) {
360
+ F = Chi(D, B, C);
361
+ g = (5 * i + 1) % 16;
362
+ s = [
363
+ 5,
364
+ 9,
365
+ 14,
366
+ 20
367
+ ];
368
+ } else if (i < 48) {
369
+ F = B ^ C ^ D;
370
+ g = (3 * i + 5) % 16;
371
+ s = [
372
+ 4,
373
+ 11,
374
+ 16,
375
+ 23
376
+ ];
377
+ } else {
378
+ F = C ^ (B | ~D);
379
+ g = 7 * i % 16;
380
+ s = [
381
+ 6,
382
+ 10,
383
+ 15,
384
+ 21
385
+ ];
386
+ }
387
+ F = F + A + K[i] + MD5_W[g];
388
+ A = D;
389
+ D = C;
390
+ C = B;
391
+ B = B + rotl(F, s[i % 4]);
392
+ }
393
+ A = A + this.A | 0;
394
+ B = B + this.B | 0;
395
+ C = C + this.C | 0;
396
+ D = D + this.D | 0;
397
+ this.set(A, B, C, D);
398
+ }
399
+ roundClean() {
400
+ MD5_W.fill(0);
401
+ }
402
+ destroy() {
403
+ this.set(0, 0, 0, 0);
404
+ this.buffer.fill(0);
405
+ }
406
+ };
407
+ /**
408
+ * @access private
409
+ * This file is needed to dynamic import the noble-hashes.
410
+ * Separate dynamic imports are not convenient as they result in too many chunks,
411
+ * which share a lot of code anyway.
412
+ */
413
+ var nobleHashes = new Map(Object.entries({
414
+ md5: /* @__PURE__ */ wrapConstructor(() => new MD5()),
415
+ sha1,
416
+ sha224,
417
+ sha256,
418
+ sha384,
419
+ sha512,
420
+ sha3_256,
421
+ sha3_512,
422
+ ripemd160
423
+ }));
424
+ //#endregion
425
+ export { nobleHashes };
426
+
427
+ //# sourceMappingURL=noble_hashes-B7AZyFyS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noble_hashes-B7AZyFyS.js","names":[],"sources":["../../../../node_modules/openpgp/dist/lightweight/noble_hashes.mjs"],"sourcesContent":["/*! OpenPGP.js v6.3.2 - 2026-09-24 - this is LGPL licensed code, see LICENSE/our website https://openpgpjs.org/ for more information. */\nconst globalThis = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nimport { i as createHasher, a as HashMD, l as rotl, g as clean, C as Chi$1, M as Maj, y as wrapConstructor, t as sha3_512, q as sha3_256, v as sha512, p as sha384, n as sha256, s as sha224 } from './sha512.mjs';\n\n/**\n\nSHA1 (RFC 3174), MD5 (RFC 1321) and RIPEMD160 (RFC 2286) legacy, weak hash functions.\nDon't use them in a new protocol. What \"weak\" means:\n\n- Collisions can be made with 2^18 effort in MD5, 2^60 in SHA1, 2^80 in RIPEMD160.\n- No practical pre-image attacks (only theoretical, 2^123.4)\n- HMAC seems kinda ok: https://datatracker.ietf.org/doc/html/rfc6151\n * @module\n */\n/** Initial SHA1 state */\nconst SHA1_IV = /* @__PURE__ */ Uint32Array.from([\n 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0,\n]);\n// Reusable temporary buffer\nconst SHA1_W = /* @__PURE__ */ new Uint32Array(80);\n/** SHA1 legacy hash class. */\nclass SHA1 extends HashMD {\n constructor() {\n super(64, 20, 8, false);\n this.A = SHA1_IV[0] | 0;\n this.B = SHA1_IV[1] | 0;\n this.C = SHA1_IV[2] | 0;\n this.D = SHA1_IV[3] | 0;\n this.E = SHA1_IV[4] | 0;\n }\n get() {\n const { A, B, C, D, E } = this;\n return [A, B, C, D, E];\n }\n set(A, B, C, D, E) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n SHA1_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 80; i++)\n SHA1_W[i] = rotl(SHA1_W[i - 3] ^ SHA1_W[i - 8] ^ SHA1_W[i - 14] ^ SHA1_W[i - 16], 1);\n // Compression function main loop, 80 rounds\n let { A, B, C, D, E } = this;\n for (let i = 0; i < 80; i++) {\n let F, K;\n if (i < 20) {\n F = Chi$1(B, C, D);\n K = 0x5a827999;\n }\n else if (i < 40) {\n F = B ^ C ^ D;\n K = 0x6ed9eba1;\n }\n else if (i < 60) {\n F = Maj(B, C, D);\n K = 0x8f1bbcdc;\n }\n else {\n F = B ^ C ^ D;\n K = 0xca62c1d6;\n }\n const T = (rotl(A, 5) + F + E + K + SHA1_W[i]) | 0;\n E = D;\n D = C;\n C = rotl(B, 30);\n B = A;\n A = T;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n this.set(A, B, C, D, E);\n }\n roundClean() {\n clean(SHA1_W);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0);\n clean(this.buffer);\n }\n}\n/** SHA1 (RFC 3174) legacy hash function. It was cryptographically broken. */\nconst sha1$1 = /* @__PURE__ */ createHasher(() => new SHA1());\n// RIPEMD-160\nconst Rho160 = /* @__PURE__ */ Uint8Array.from([\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n]);\nconst Id160 = /* @__PURE__ */ (() => Uint8Array.from(new Array(16).fill(0).map((_, i) => i)))();\nconst Pi160 = /* @__PURE__ */ (() => Id160.map((i) => (9 * i + 5) % 16))();\nconst idxLR = /* @__PURE__ */ (() => {\n const L = [Id160];\n const R = [Pi160];\n const res = [L, R];\n for (let i = 0; i < 4; i++)\n for (let j of res)\n j.push(j[i].map((k) => Rho160[k]));\n return res;\n})();\nconst idxL = /* @__PURE__ */ (() => idxLR[0])();\nconst idxR = /* @__PURE__ */ (() => idxLR[1])();\n// const [idxL, idxR] = idxLR;\nconst shifts160 = /* @__PURE__ */ [\n [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8],\n [12, 13, 11, 15, 6, 9, 9, 7, 12, 15, 11, 13, 7, 8, 7, 7],\n [13, 15, 14, 11, 7, 7, 6, 8, 13, 14, 13, 12, 5, 5, 6, 9],\n [14, 11, 12, 14, 8, 6, 5, 5, 15, 12, 15, 14, 9, 9, 8, 6],\n [15, 12, 13, 13, 9, 5, 8, 6, 14, 11, 12, 11, 8, 6, 5, 5],\n].map((i) => Uint8Array.from(i));\nconst shiftsL160 = /* @__PURE__ */ idxL.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst shiftsR160 = /* @__PURE__ */ idxR.map((idx, i) => idx.map((j) => shifts160[i][j]));\nconst Kl160 = /* @__PURE__ */ Uint32Array.from([\n 0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e,\n]);\nconst Kr160 = /* @__PURE__ */ Uint32Array.from([\n 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000,\n]);\n// It's called f() in spec.\nfunction ripemd_f(group, x, y, z) {\n if (group === 0)\n return x ^ y ^ z;\n if (group === 1)\n return (x & y) | (~x & z);\n if (group === 2)\n return (x | ~y) ^ z;\n if (group === 3)\n return (x & z) | (y & ~z);\n return x ^ (y | ~z);\n}\n// Reusable temporary buffer\nconst BUF_160 = /* @__PURE__ */ new Uint32Array(16);\nclass RIPEMD160 extends HashMD {\n constructor() {\n super(64, 20, 8, true);\n this.h0 = 0x67452301 | 0;\n this.h1 = 0xefcdab89 | 0;\n this.h2 = 0x98badcfe | 0;\n this.h3 = 0x10325476 | 0;\n this.h4 = 0xc3d2e1f0 | 0;\n }\n get() {\n const { h0, h1, h2, h3, h4 } = this;\n return [h0, h1, h2, h3, h4];\n }\n set(h0, h1, h2, h3, h4) {\n this.h0 = h0 | 0;\n this.h1 = h1 | 0;\n this.h2 = h2 | 0;\n this.h3 = h3 | 0;\n this.h4 = h4 | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n BUF_160[i] = view.getUint32(offset, true);\n // prettier-ignore\n let al = this.h0 | 0, ar = al, bl = this.h1 | 0, br = bl, cl = this.h2 | 0, cr = cl, dl = this.h3 | 0, dr = dl, el = this.h4 | 0, er = el;\n // Instead of iterating 0 to 80, we split it into 5 groups\n // And use the groups in constants, functions, etc. Much simpler\n for (let group = 0; group < 5; group++) {\n const rGroup = 4 - group;\n const hbl = Kl160[group], hbr = Kr160[group]; // prettier-ignore\n const rl = idxL[group], rr = idxR[group]; // prettier-ignore\n const sl = shiftsL160[group], sr = shiftsR160[group]; // prettier-ignore\n for (let i = 0; i < 16; i++) {\n const tl = (rotl(al + ripemd_f(group, bl, cl, dl) + BUF_160[rl[i]] + hbl, sl[i]) + el) | 0;\n al = el, el = dl, dl = rotl(cl, 10) | 0, cl = bl, bl = tl; // prettier-ignore\n }\n // 2 loops are 10% faster\n for (let i = 0; i < 16; i++) {\n const tr = (rotl(ar + ripemd_f(rGroup, br, cr, dr) + BUF_160[rr[i]] + hbr, sr[i]) + er) | 0;\n ar = er, er = dr, dr = rotl(cr, 10) | 0, cr = br, br = tr; // prettier-ignore\n }\n }\n // Add the compressed chunk to the current hash value\n this.set((this.h1 + cl + dr) | 0, (this.h2 + dl + er) | 0, (this.h3 + el + ar) | 0, (this.h4 + al + br) | 0, (this.h0 + bl + cr) | 0);\n }\n roundClean() {\n clean(BUF_160);\n }\n destroy() {\n this.destroyed = true;\n clean(this.buffer);\n this.set(0, 0, 0, 0, 0);\n }\n}\n/**\n * RIPEMD-160 - a legacy hash function from 1990s.\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n */\nconst ripemd160$1 = /* @__PURE__ */ createHasher(() => new RIPEMD160());\n\n/**\n * SHA1 (RFC 3174) legacy hash function.\n * @module\n * @deprecated\n */\n/** @deprecated Use import from `noble/hashes/legacy` module */\nconst sha1 = sha1$1;\n\n/**\n * RIPEMD-160 legacy hash function.\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160.html\n * https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf\n * @module\n * @deprecated\n */\n/** @deprecated Use import from `noble/hashes/legacy` module */\nconst ripemd160 = ripemd160$1;\n\n/** @access private */\n// Copied from https://github.com/paulmillr/noble-hashes/blob/main/test/misc/md5.ts\n// Per-round constants\nconst K = Array.from({ length: 64 }, (_, i) => Math.floor(2 ** 32 * Math.abs(Math.sin(i + 1))));\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Initial state (same as sha1, but 4 u32 instead of 5)\nconst IV = /* @__PURE__ */ new Uint32Array([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]);\n// Temporary buffer, not used to store anything between runs\n// Named this way for SHA1 compat\nconst MD5_W = /* @__PURE__ */ new Uint32Array(16);\nclass MD5 extends HashMD {\n constructor() {\n super(64, 16, 8, true);\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n }\n get() {\n const { A, B, C, D } = this;\n return [A, B, C, D];\n }\n set(A, B, C, D) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n }\n process(view, offset) {\n for (let i = 0; i < 16; i++, offset += 4)\n MD5_W[i] = view.getUint32(offset, true);\n // Compression function main loop, 64 rounds\n let { A, B, C, D } = this;\n for (let i = 0; i < 64; i++) {\n let F, g, s;\n if (i < 16) {\n F = Chi(B, C, D);\n g = i;\n s = [7, 12, 17, 22];\n }\n else if (i < 32) {\n F = Chi(D, B, C);\n g = (5 * i + 1) % 16;\n s = [5, 9, 14, 20];\n }\n else if (i < 48) {\n F = B ^ C ^ D;\n g = (3 * i + 5) % 16;\n s = [4, 11, 16, 23];\n }\n else {\n F = C ^ (B | ~D);\n g = (7 * i) % 16;\n s = [6, 10, 15, 21];\n }\n F = F + A + K[i] + MD5_W[g];\n A = D;\n D = C;\n C = B;\n B = B + rotl(F, s[i % 4]);\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n this.set(A, B, C, D);\n }\n roundClean() {\n MD5_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\nconst md5 = /* @__PURE__ */ wrapConstructor(() => new MD5());\n\n/**\n * @access private\n * This file is needed to dynamic import the noble-hashes.\n * Separate dynamic imports are not convenient as they result in too many chunks,\n * which share a lot of code anyway.\n */\nconst nobleHashes = new Map(Object.entries({\n md5,\n sha1,\n sha224,\n sha256,\n sha384,\n sha512,\n sha3_256,\n sha3_512,\n ripemd160\n}));\n\nexport { nobleHashes };\n"],"x_google_ignoreList":[0],"mappings":"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"}