ecash-lib 3.0.0 → 3.2.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 (100) hide show
  1. package/README.md +2 -0
  2. package/dist/ecc.d.ts +18 -1
  3. package/dist/ecc.d.ts.map +1 -1
  4. package/dist/ecc.js +29 -0
  5. package/dist/ecc.js.map +1 -1
  6. package/dist/ffi/ecash_lib_wasm_bg_browser.js +1743 -1679
  7. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  8. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +13 -11
  9. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  10. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +13 -11
  11. package/dist/ffi/ecash_lib_wasm_browser.d.ts +27 -11
  12. package/dist/ffi/ecash_lib_wasm_browser.js +64 -14
  13. package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +14 -0
  14. package/dist/ffi/ecash_lib_wasm_nodejs.js +64 -14
  15. package/dist/hdwallet.d.ts.map +1 -1
  16. package/dist/hdwallet.js +1 -0
  17. package/dist/hdwallet.js.map +1 -1
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +17 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/io/bytes.d.ts +2 -0
  23. package/dist/io/bytes.d.ts.map +1 -1
  24. package/dist/io/bytes.js +10 -2
  25. package/dist/io/bytes.js.map +1 -1
  26. package/dist/messages.d.ts +32 -0
  27. package/dist/messages.d.ts.map +1 -0
  28. package/dist/messages.js +102 -0
  29. package/dist/messages.js.map +1 -0
  30. package/dist/op.d.ts.map +1 -1
  31. package/dist/op.js +4 -3
  32. package/dist/op.js.map +1 -1
  33. package/dist/payment/asn1.d.ts +61 -0
  34. package/dist/payment/asn1.d.ts.map +1 -0
  35. package/dist/payment/asn1.js +322 -0
  36. package/dist/payment/asn1.js.map +1 -0
  37. package/dist/payment/index.d.ts +3 -0
  38. package/dist/payment/index.d.ts.map +1 -0
  39. package/dist/payment/index.js +32 -0
  40. package/dist/payment/index.js.map +1 -0
  41. package/dist/payment/x509.d.ts +11 -0
  42. package/dist/payment/x509.d.ts.map +1 -0
  43. package/dist/payment/x509.js +17 -0
  44. package/dist/payment/x509.js.map +1 -0
  45. package/dist/sigHashType.js.map +1 -1
  46. package/dist/token/alp.d.ts +6 -0
  47. package/dist/token/alp.d.ts.map +1 -1
  48. package/dist/token/alp.js +6 -2
  49. package/dist/token/alp.js.map +1 -1
  50. package/dist/token/alp.parse.d.ts +73 -0
  51. package/dist/token/alp.parse.d.ts.map +1 -0
  52. package/dist/token/alp.parse.js +168 -0
  53. package/dist/token/alp.parse.js.map +1 -0
  54. package/dist/token/common.d.ts +18 -0
  55. package/dist/token/common.d.ts.map +1 -1
  56. package/dist/token/common.js +23 -5
  57. package/dist/token/common.js.map +1 -1
  58. package/dist/token/empp.d.ts +10 -0
  59. package/dist/token/empp.d.ts.map +1 -1
  60. package/dist/token/empp.js +38 -1
  61. package/dist/token/empp.js.map +1 -1
  62. package/dist/token/slp.d.ts +12 -0
  63. package/dist/token/slp.d.ts.map +1 -1
  64. package/dist/token/slp.js +12 -2
  65. package/dist/token/slp.js.map +1 -1
  66. package/dist/token/slp.parse.d.ts +91 -0
  67. package/dist/token/slp.parse.d.ts.map +1 -0
  68. package/dist/token/slp.parse.js +251 -0
  69. package/dist/token/slp.parse.js.map +1 -0
  70. package/dist/txBuilder.js +1 -1
  71. package/dist/txBuilder.js.map +1 -1
  72. package/package.json +5 -7
  73. package/src/ecc.ts +54 -2
  74. package/src/ffi/ecash_lib_wasm_bg_browser.js +1743 -1679
  75. package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  76. package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +13 -11
  77. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  78. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +13 -11
  79. package/src/ffi/ecash_lib_wasm_browser.d.ts +27 -11
  80. package/src/ffi/ecash_lib_wasm_browser.js +64 -14
  81. package/src/ffi/ecash_lib_wasm_nodejs.d.ts +14 -0
  82. package/src/ffi/ecash_lib_wasm_nodejs.js +64 -14
  83. package/src/hdwallet.ts +1 -0
  84. package/src/index.ts +5 -0
  85. package/src/io/bytes.ts +11 -2
  86. package/src/messages.ts +125 -0
  87. package/src/op.ts +5 -3
  88. package/src/payment/asn1.ts +440 -0
  89. package/src/payment/index.ts +6 -0
  90. package/src/payment/x509.ts +15 -0
  91. package/src/sigHashType.ts +2 -2
  92. package/src/token/alp.parse.ts +258 -0
  93. package/src/token/alp.ts +10 -1
  94. package/src/token/common.ts +28 -4
  95. package/src/token/empp.ts +42 -1
  96. package/src/token/slp.parse.ts +383 -0
  97. package/src/token/slp.ts +22 -1
  98. package/src/txBuilder.ts +1 -1
  99. package/.eslintignore +0 -8
  100. package/eslint.config.js +0 -16
package/README.md CHANGED
@@ -92,3 +92,5 @@ console.log(toHex(rawTx));
92
92
  - 2.0.0 - Remove `initWasm`, auto-load the WebAssembly instead. Remove unneeded `ecc` parameters, esp. in `TxBuilder.sign` and `HdNode.fromSeed` [D17639](https://reviews.bitcoinabc.org/D17639) [D17640](https://reviews.bitcoinabc.org/D17640)
93
93
  - 2.1.0 - Add `signRecoverable` and `recoverSig` to `Ecc` [D17667](https://reviews.bitcoinabc.org/D17667)
94
94
  - 3.0.0 - Improve types and shapes in line with chronik proto updates [D17650](https://reviews.bitcoinabc.org/D17650)
95
+ - 3.1.0 - Add methods for signing and verifying messages [D17778](https://reviews.bitcoinabc.org/D17778)
96
+ - 3.2.0 - Add method for parsing pushes from an EMPP OP_RETURN [D18057](https://reviews.bitcoinabc.org/D18057)
package/dist/ecc.d.ts CHANGED
@@ -4,8 +4,18 @@ export interface Ecc {
4
4
  derivePubkey(seckey: Uint8Array): Uint8Array;
5
5
  /** Sign an ECDSA signature. msg needs to be a 32-byte hash */
6
6
  ecdsaSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
7
+ /**
8
+ * Verify an ECDSA signature. msg needs to be a 32-byte hash.
9
+ * Throws an exception if the signature is invalid.
10
+ **/
11
+ ecdsaVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
7
12
  /** Sign a Schnorr signature. msg needs to be a 32-byte hash */
8
13
  schnorrSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
14
+ /**
15
+ * Verify a Schnorr signature. msg needs to be a 32-byte hash.
16
+ * Throws an exception if the signature is invalid.
17
+ **/
18
+ schnorrVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
9
19
  /**
10
20
  * Return whether the given secret key is valid, i.e. whether is of correct
11
21
  * length (32 bytes) and is on the curve.
@@ -19,19 +29,26 @@ export interface Ecc {
19
29
  signRecoverable(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
20
30
  /** Recover the public key of an ECDSA signed signature (with recovery ID) */
21
31
  recoverSig(sig: Uint8Array, msg: Uint8Array): Uint8Array;
32
+ /** Compress an uncompressed public key (must start with 0x04) */
33
+ compressPk(pk: Uint8Array): Uint8Array;
22
34
  }
23
35
  /** Dummy Ecc impl that always returns 0, useful for measuring tx size */
24
36
  export declare class EccDummy implements Ecc {
25
37
  derivePubkey(_seckey: Uint8Array): Uint8Array;
26
38
  ecdsaSign(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
39
+ ecdsaVerify(_sig: Uint8Array, _msg: Uint8Array, _pk: Uint8Array): void;
27
40
  schnorrSign(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
41
+ schnorrVerify(_sig: Uint8Array, _msg: Uint8Array, _pk: Uint8Array): void;
28
42
  isValidSeckey(_seckey: Uint8Array): boolean;
29
43
  seckeyAdd(_a: Uint8Array, _b: Uint8Array): Uint8Array;
30
44
  pubkeyAdd(_a: Uint8Array, _b: Uint8Array): Uint8Array;
31
45
  signRecoverable(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
32
46
  recoverSig(_sig: Uint8Array, _msg: Uint8Array): Uint8Array;
47
+ compressPk(_pk: Uint8Array): Uint8Array;
33
48
  }
34
- export declare function __setEcc(ecc: Ecc): void;
49
+ type FfiEcc = Omit<Ecc, 'compressPk'>;
50
+ export declare function __setEcc(ecc: FfiEcc): void;
35
51
  export declare class Ecc implements Ecc {
36
52
  }
53
+ export {};
37
54
  //# sourceMappingURL=ecc.d.ts.map
package/dist/ecc.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ecc.d.ts","sourceRoot":"","sources":["../src/ecc.ts"],"names":[],"mappings":"AAIA,6DAA6D;AAC7D,MAAM,WAAW,GAAG;IAChB,2CAA2C;IAC3C,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAE7C,8DAA8D;IAC9D,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAE3D,+DAA+D;IAC/D,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAE7D;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAE3C,mCAAmC;IACnC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEpD,gDAAgD;IAChD,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEpD,mEAAmE;IACnE,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAEjE,6EAA6E;IAC7E,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5D;AAED,yEAAyE;AACzE,qBAAa,QAAS,YAAW,GAAG;IAChC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI7C,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI5D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI9D,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAI3C,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,UAAU;IAIrD,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,UAAU;IAIrD,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAIlE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;CAG7D;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,QAEhC;AAED,qBAAa,GAAI,YAAW,GAAG;CAyC9B"}
1
+ {"version":3,"file":"ecc.d.ts","sourceRoot":"","sources":["../src/ecc.ts"],"names":[],"mappings":"AAIA,6DAA6D;AAE7D,MAAM,WAAW,GAAG;IAChB,2CAA2C;IAC3C,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC;IAE7C,8DAA8D;IAC9D,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAE3D;;;QAGI;IACJ,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC;IAEpE,+DAA+D;IAC/D,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAE7D;;;QAGI;IACJ,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAAC;IAEtE;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC;IAE3C,mCAAmC;IACnC,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEpD,gDAAgD;IAChD,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAEpD,mEAAmE;IACnE,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAEjE,6EAA6E;IAC7E,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,UAAU,CAAC;IAEzD,iEAAiE;IACjE,UAAU,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CAAC;CAC1C;AAED,yEAAyE;AACzE,qBAAa,QAAS,YAAW,GAAG;IAChC,YAAY,CAAC,OAAO,EAAE,UAAU,GAAG,UAAU;IAI7C,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI5D,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAEtE,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI9D,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI;IAExE,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO;IAI3C,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,UAAU;IAIrD,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,UAAU;IAIrD,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAIlE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU;IAI1D,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU;CAG1C;AAED,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AAGtC,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,QAEnC;AAGD,qBAAa,GAAI,YAAW,GAAG;CAmE9B"}
package/dist/ecc.js CHANGED
@@ -12,9 +12,11 @@ class EccDummy {
12
12
  ecdsaSign(_seckey, _msg) {
13
13
  return new Uint8Array(73);
14
14
  }
15
+ ecdsaVerify(_sig, _msg, _pk) { }
15
16
  schnorrSign(_seckey, _msg) {
16
17
  return new Uint8Array(64);
17
18
  }
19
+ schnorrVerify(_sig, _msg, _pk) { }
18
20
  isValidSeckey(_seckey) {
19
21
  return false;
20
22
  }
@@ -30,6 +32,9 @@ class EccDummy {
30
32
  recoverSig(_sig, _msg) {
31
33
  return new Uint8Array(33);
32
34
  }
35
+ compressPk(_pk) {
36
+ return new Uint8Array(33);
37
+ }
33
38
  }
34
39
  exports.EccDummy = EccDummy;
35
40
  const ECC = {};
@@ -37,6 +42,7 @@ function __setEcc(ecc) {
37
42
  ECC.ecc = ecc;
38
43
  }
39
44
  exports.__setEcc = __setEcc;
45
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
40
46
  class Ecc {
41
47
  /** Derive a public key from secret key. */
42
48
  derivePubkey(seckey) {
@@ -46,10 +52,24 @@ class Ecc {
46
52
  ecdsaSign(seckey, msg) {
47
53
  return ECC.ecc.ecdsaSign(seckey, msg);
48
54
  }
55
+ /**
56
+ * Verify an ECDSA signature. msg needs to be a 32-byte hash.
57
+ * Throws an exception if the signature is invalid.
58
+ **/
59
+ ecdsaVerify(sig, msg, pk) {
60
+ ECC.ecc?.ecdsaVerify(sig, msg, pk);
61
+ }
49
62
  /** Sign a Schnorr signature. msg needs to be a 32-byte hash */
50
63
  schnorrSign(seckey, msg) {
51
64
  return ECC.ecc.schnorrSign(seckey, msg);
52
65
  }
66
+ /**
67
+ * Verify a Schnorr signature. msg needs to be a 32-byte hash.
68
+ * Throws an exception if the signature is invalid.
69
+ **/
70
+ schnorrVerify(sig, msg, pk) {
71
+ ECC.ecc?.schnorrVerify(sig, msg, pk);
72
+ }
53
73
  /**
54
74
  * Return whether the given secret key is valid, i.e. whether is of correct
55
75
  * length (32 bytes) and is on the curve.
@@ -71,6 +91,15 @@ class Ecc {
71
91
  recoverSig(sig, msg) {
72
92
  return ECC.ecc.recoverSig(sig, msg);
73
93
  }
94
+ compressPk(pk) {
95
+ if (pk[0] != 0x04) {
96
+ throw new Error('Uncompressed pubkey must start with 0x04');
97
+ }
98
+ const compressedPk = new Uint8Array(33);
99
+ compressedPk[0] = 0x02 | (pk[64] & 0x01);
100
+ compressedPk.set(pk.slice(1, 33), 1);
101
+ return compressedPk;
102
+ }
74
103
  }
75
104
  exports.Ecc = Ecc;
76
105
  //# sourceMappingURL=ecc.js.map
package/dist/ecc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ecc.js","sourceRoot":"","sources":["../src/ecc.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAgCtE,yEAAyE;AACzE,MAAa,QAAQ;IACjB,YAAY,CAAC,OAAmB;QAC5B,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,OAAmB,EAAE,IAAgB;QAC3C,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,OAAmB,EAAE,IAAgB;QAC7C,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,OAAmB;QAC7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,SAAS,CAAC,EAAc,EAAE,EAAc;QACpC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,EAAc,EAAE,EAAc;QACpC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,eAAe,CAAC,OAAmB,EAAE,IAAgB;QACjD,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,IAAgB,EAAE,IAAgB;QACzC,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;CACJ;AAhCD,4BAgCC;AAED,MAAM,GAAG,GAAkB,EAAE,CAAC;AAE9B,SAAgB,QAAQ,CAAC,GAAQ;IAC7B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;AAClB,CAAC;AAFD,4BAEC;AAED,MAAa,GAAG;IACZ,2CAA2C;IAC3C,YAAY,CAAC,MAAkB;QAC3B,OAAO,GAAG,CAAC,GAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,8DAA8D;IAC9D,SAAS,CAAC,MAAkB,EAAE,GAAe;QACzC,OAAO,GAAG,CAAC,GAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,+DAA+D;IAC/D,WAAW,CAAC,MAAkB,EAAE,GAAe;QAC3C,OAAO,GAAG,CAAC,GAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,MAAkB;QAC5B,OAAO,GAAG,CAAC,GAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,mCAAmC;IACnC,SAAS,CAAC,CAAa,EAAE,CAAa;QAClC,OAAO,GAAG,CAAC,GAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,gDAAgD;IAChD,SAAS,CAAC,CAAa,EAAE,CAAa;QAClC,OAAO,GAAG,CAAC,GAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,eAAe,CAAC,MAAkB,EAAE,GAAe;QAC/C,OAAO,GAAG,CAAC,GAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,UAAU,CAAC,GAAe,EAAE,GAAe;QACvC,OAAO,GAAG,CAAC,GAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;CACJ;AAzCD,kBAyCC"}
1
+ {"version":3,"file":"ecc.js","sourceRoot":"","sources":["../src/ecc.ts"],"names":[],"mappings":"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"}