starknet 4.12.0 → 4.13.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 (224) hide show
  1. package/.eslintrc +1 -0
  2. package/CHANGELOG.md +14 -0
  3. package/__tests__/account.test.ts +0 -2
  4. package/dist/index.d.ts +2683 -24
  5. package/dist/index.global.js +22994 -0
  6. package/dist/index.global.js.map +1 -0
  7. package/dist/index.js +4713 -53
  8. package/dist/index.js.map +1 -0
  9. package/dist/index.mjs +4655 -0
  10. package/dist/index.mjs.map +1 -0
  11. package/index.d.ts +2683 -24
  12. package/index.global.js +22994 -0
  13. package/index.global.js.map +1 -0
  14. package/index.js +4713 -53
  15. package/index.js.map +1 -0
  16. package/index.mjs +4655 -0
  17. package/index.mjs.map +1 -0
  18. package/package.json +8 -2
  19. package/src/account/default.ts +43 -8
  20. package/src/account/interface.ts +25 -2
  21. package/src/constants.ts +0 -1
  22. package/src/provider/default.ts +3 -0
  23. package/src/provider/interface.ts +2 -0
  24. package/src/provider/rpc.ts +4 -4
  25. package/src/provider/sequencer.ts +4 -1
  26. package/src/types/lib.ts +1 -1
  27. package/src/types/provider.ts +5 -0
  28. package/src/utils/ellipticCurve.ts +3 -1
  29. package/src/utils/fetchPonyfill.ts +3 -2
  30. package/src/utils/hash.ts +3 -2
  31. package/src/utils/number.ts +2 -2
  32. package/tsup.config.ts +10 -0
  33. package/account/default.d.ts +0 -30
  34. package/account/default.js +0 -526
  35. package/account/index.d.ts +0 -2
  36. package/account/index.js +0 -18
  37. package/account/interface.d.ts +0 -161
  38. package/account/interface.js +0 -27
  39. package/constants.d.ts +0 -36
  40. package/constants.js +0 -2067
  41. package/contract/contractFactory.d.ts +0 -31
  42. package/contract/contractFactory.js +0 -102
  43. package/contract/default.d.ts +0 -108
  44. package/contract/default.js +0 -640
  45. package/contract/index.d.ts +0 -3
  46. package/contract/index.js +0 -19
  47. package/contract/interface.d.ts +0 -80
  48. package/contract/interface.js +0 -9
  49. package/dist/account/default.d.ts +0 -30
  50. package/dist/account/default.js +0 -526
  51. package/dist/account/index.d.ts +0 -2
  52. package/dist/account/index.js +0 -18
  53. package/dist/account/interface.d.ts +0 -161
  54. package/dist/account/interface.js +0 -27
  55. package/dist/constants.d.ts +0 -36
  56. package/dist/constants.js +0 -2067
  57. package/dist/contract/contractFactory.d.ts +0 -31
  58. package/dist/contract/contractFactory.js +0 -102
  59. package/dist/contract/default.d.ts +0 -108
  60. package/dist/contract/default.js +0 -640
  61. package/dist/contract/index.d.ts +0 -3
  62. package/dist/contract/index.js +0 -19
  63. package/dist/contract/interface.d.ts +0 -80
  64. package/dist/contract/interface.js +0 -9
  65. package/dist/provider/default.d.ts +0 -37
  66. package/dist/provider/default.js +0 -207
  67. package/dist/provider/errors.d.ts +0 -9
  68. package/dist/provider/errors.js +0 -40
  69. package/dist/provider/index.d.ts +0 -7
  70. package/dist/provider/index.js +0 -24
  71. package/dist/provider/interface.d.ts +0 -203
  72. package/dist/provider/interface.js +0 -9
  73. package/dist/provider/rpc.d.ts +0 -86
  74. package/dist/provider/rpc.js +0 -605
  75. package/dist/provider/sequencer.d.ts +0 -79
  76. package/dist/provider/sequencer.js +0 -575
  77. package/dist/provider/utils.d.ts +0 -30
  78. package/dist/provider/utils.js +0 -84
  79. package/dist/signer/default.d.ts +0 -13
  80. package/dist/signer/default.js +0 -102
  81. package/dist/signer/index.d.ts +0 -2
  82. package/dist/signer/index.js +0 -18
  83. package/dist/signer/interface.d.ts +0 -60
  84. package/dist/signer/interface.js +0 -9
  85. package/dist/types/account.d.ts +0 -11
  86. package/dist/types/account.js +0 -2
  87. package/dist/types/api/index.d.ts +0 -10
  88. package/dist/types/api/index.js +0 -18
  89. package/dist/types/api/openrpc.d.ts +0 -572
  90. package/dist/types/api/openrpc.js +0 -45
  91. package/dist/types/api/rpc.d.ts +0 -43
  92. package/dist/types/api/rpc.js +0 -2
  93. package/dist/types/api/sequencer.d.ts +0 -320
  94. package/dist/types/api/sequencer.js +0 -2
  95. package/dist/types/contract.d.ts +0 -5
  96. package/dist/types/contract.js +0 -2
  97. package/dist/types/index.d.ts +0 -7
  98. package/dist/types/index.js +0 -35
  99. package/dist/types/lib.d.ts +0 -120
  100. package/dist/types/lib.js +0 -8
  101. package/dist/types/provider.d.ts +0 -99
  102. package/dist/types/provider.js +0 -2
  103. package/dist/types/signer.d.ts +0 -19
  104. package/dist/types/signer.js +0 -2
  105. package/dist/utils/address.d.ts +0 -5
  106. package/dist/utils/address.js +0 -41
  107. package/dist/utils/ellipticCurve.d.ts +0 -29
  108. package/dist/utils/ellipticCurve.js +0 -132
  109. package/dist/utils/encode.d.ts +0 -15
  110. package/dist/utils/encode.js +0 -96
  111. package/dist/utils/fetchPonyfill.d.ts +0 -2
  112. package/dist/utils/fetchPonyfill.js +0 -6
  113. package/dist/utils/hash.d.ts +0 -37
  114. package/dist/utils/hash.js +0 -162
  115. package/dist/utils/json.d.ts +0 -16
  116. package/dist/utils/json.js +0 -19
  117. package/dist/utils/merkle.d.ts +0 -10
  118. package/dist/utils/merkle.js +0 -89
  119. package/dist/utils/number.d.ts +0 -16
  120. package/dist/utils/number.js +0 -112
  121. package/dist/utils/provider.d.ts +0 -4
  122. package/dist/utils/provider.js +0 -38
  123. package/dist/utils/responseParser/index.d.ts +0 -11
  124. package/dist/utils/responseParser/index.js +0 -9
  125. package/dist/utils/responseParser/rpc.d.ts +0 -20
  126. package/dist/utils/responseParser/rpc.js +0 -44
  127. package/dist/utils/responseParser/sequencer.d.ts +0 -17
  128. package/dist/utils/responseParser/sequencer.js +0 -99
  129. package/dist/utils/shortString.d.ts +0 -4
  130. package/dist/utils/shortString.js +0 -26
  131. package/dist/utils/stark.d.ts +0 -16
  132. package/dist/utils/stark.js +0 -91
  133. package/dist/utils/transaction.d.ts +0 -20
  134. package/dist/utils/transaction.js +0 -79
  135. package/dist/utils/typedData/index.d.ts +0 -72
  136. package/dist/utils/typedData/index.js +0 -239
  137. package/dist/utils/typedData/types.d.ts +0 -32
  138. package/dist/utils/typedData/types.js +0 -2
  139. package/dist/utils/typedData/utils.d.ts +0 -8
  140. package/dist/utils/typedData/utils.js +0 -16
  141. package/dist/utils/uint256.d.ts +0 -11
  142. package/dist/utils/uint256.js +0 -28
  143. package/dist/utils/url.d.ts +0 -7
  144. package/dist/utils/url.js +0 -49
  145. package/provider/default.d.ts +0 -37
  146. package/provider/default.js +0 -207
  147. package/provider/errors.d.ts +0 -9
  148. package/provider/errors.js +0 -40
  149. package/provider/index.d.ts +0 -7
  150. package/provider/index.js +0 -24
  151. package/provider/interface.d.ts +0 -203
  152. package/provider/interface.js +0 -9
  153. package/provider/rpc.d.ts +0 -86
  154. package/provider/rpc.js +0 -605
  155. package/provider/sequencer.d.ts +0 -79
  156. package/provider/sequencer.js +0 -575
  157. package/provider/utils.d.ts +0 -30
  158. package/provider/utils.js +0 -84
  159. package/signer/default.d.ts +0 -13
  160. package/signer/default.js +0 -102
  161. package/signer/index.d.ts +0 -2
  162. package/signer/index.js +0 -18
  163. package/signer/interface.d.ts +0 -60
  164. package/signer/interface.js +0 -9
  165. package/types/account.d.ts +0 -11
  166. package/types/account.js +0 -2
  167. package/types/api/index.d.ts +0 -10
  168. package/types/api/index.js +0 -18
  169. package/types/api/openrpc.d.ts +0 -572
  170. package/types/api/openrpc.js +0 -45
  171. package/types/api/rpc.d.ts +0 -43
  172. package/types/api/rpc.js +0 -2
  173. package/types/api/sequencer.d.ts +0 -320
  174. package/types/api/sequencer.js +0 -2
  175. package/types/contract.d.ts +0 -5
  176. package/types/contract.js +0 -2
  177. package/types/index.d.ts +0 -7
  178. package/types/index.js +0 -35
  179. package/types/lib.d.ts +0 -120
  180. package/types/lib.js +0 -8
  181. package/types/provider.d.ts +0 -99
  182. package/types/provider.js +0 -2
  183. package/types/signer.d.ts +0 -19
  184. package/types/signer.js +0 -2
  185. package/utils/address.d.ts +0 -5
  186. package/utils/address.js +0 -41
  187. package/utils/ellipticCurve.d.ts +0 -29
  188. package/utils/ellipticCurve.js +0 -132
  189. package/utils/encode.d.ts +0 -15
  190. package/utils/encode.js +0 -96
  191. package/utils/fetchPonyfill.d.ts +0 -2
  192. package/utils/fetchPonyfill.js +0 -6
  193. package/utils/hash.d.ts +0 -37
  194. package/utils/hash.js +0 -162
  195. package/utils/json.d.ts +0 -16
  196. package/utils/json.js +0 -19
  197. package/utils/merkle.d.ts +0 -10
  198. package/utils/merkle.js +0 -89
  199. package/utils/number.d.ts +0 -16
  200. package/utils/number.js +0 -112
  201. package/utils/provider.d.ts +0 -4
  202. package/utils/provider.js +0 -38
  203. package/utils/responseParser/index.d.ts +0 -11
  204. package/utils/responseParser/index.js +0 -9
  205. package/utils/responseParser/rpc.d.ts +0 -20
  206. package/utils/responseParser/rpc.js +0 -44
  207. package/utils/responseParser/sequencer.d.ts +0 -17
  208. package/utils/responseParser/sequencer.js +0 -99
  209. package/utils/shortString.d.ts +0 -4
  210. package/utils/shortString.js +0 -26
  211. package/utils/stark.d.ts +0 -16
  212. package/utils/stark.js +0 -91
  213. package/utils/transaction.d.ts +0 -20
  214. package/utils/transaction.js +0 -79
  215. package/utils/typedData/index.d.ts +0 -72
  216. package/utils/typedData/index.js +0 -239
  217. package/utils/typedData/types.d.ts +0 -32
  218. package/utils/typedData/types.js +0 -2
  219. package/utils/typedData/utils.d.ts +0 -8
  220. package/utils/typedData/utils.js +0 -16
  221. package/utils/uint256.d.ts +0 -11
  222. package/utils/uint256.js +0 -28
  223. package/utils/url.d.ts +0 -7
  224. package/utils/url.js +0 -49
package/dist/index.js CHANGED
@@ -1,54 +1,4714 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.typedData = exports.shortString = exports.uint256 = exports.ec = exports.merkle = exports.stark = exports.transaction = exports.number = exports.json = exports.hash = exports.encode = exports.constants = void 0;
30
- /**
31
- * Main
32
- */
33
- __exportStar(require("./contract"), exports);
34
- __exportStar(require("./types"), exports);
35
- __exportStar(require("./provider"), exports);
36
- __exportStar(require("./account"), exports);
37
- __exportStar(require("./signer"), exports);
38
- /**
39
- * Utils
40
- */
41
- exports.constants = __importStar(require("./constants"));
42
- exports.encode = __importStar(require("./utils/encode"));
43
- exports.hash = __importStar(require("./utils/hash"));
44
- exports.json = __importStar(require("./utils/json"));
45
- exports.number = __importStar(require("./utils/number"));
46
- exports.transaction = __importStar(require("./utils/transaction"));
47
- exports.stark = __importStar(require("./utils/stark"));
48
- exports.merkle = __importStar(require("./utils/merkle"));
49
- exports.ec = __importStar(require("./utils/ellipticCurve"));
50
- exports.uint256 = __importStar(require("./utils/uint256"));
51
- exports.shortString = __importStar(require("./utils/shortString"));
52
- exports.typedData = __importStar(require("./utils/typedData"));
53
- __exportStar(require("./utils/address"), exports);
54
- __exportStar(require("./utils/url"), exports);
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
+ mod
23
+ ));
24
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
25
+
26
+ // src/index.ts
27
+ var src_exports = {};
28
+ __export(src_exports, {
29
+ Account: () => Account,
30
+ AccountInterface: () => AccountInterface,
31
+ Contract: () => Contract,
32
+ ContractFactory: () => ContractFactory,
33
+ ContractInterface: () => ContractInterface,
34
+ GatewayError: () => GatewayError,
35
+ HttpError: () => HttpError,
36
+ Provider: () => Provider,
37
+ ProviderInterface: () => ProviderInterface,
38
+ RpcProvider: () => RpcProvider,
39
+ SequencerProvider: () => SequencerProvider,
40
+ Signer: () => Signer,
41
+ SignerInterface: () => SignerInterface,
42
+ addAddressPadding: () => addAddressPadding,
43
+ api: () => api_exports,
44
+ buildUrl: () => buildUrl,
45
+ constants: () => constants_exports,
46
+ defaultProvider: () => defaultProvider,
47
+ ec: () => ellipticCurve_exports,
48
+ encode: () => encode_exports,
49
+ getChecksumAddress: () => getChecksumAddress,
50
+ hash: () => hash_exports,
51
+ isUrl: () => isUrl,
52
+ json: () => json_exports,
53
+ merkle: () => merkle_exports,
54
+ number: () => number_exports,
55
+ shortString: () => shortString_exports,
56
+ stark: () => stark_exports,
57
+ transaction: () => transaction_exports,
58
+ typedData: () => typedData_exports,
59
+ uint256: () => uint256_exports,
60
+ validateAndParseAddress: () => validateAndParseAddress,
61
+ validateChecksumAddress: () => validateChecksumAddress
62
+ });
63
+ module.exports = __toCommonJS(src_exports);
64
+
65
+ // src/contract/default.ts
66
+ var import_bn2 = __toESM(require("bn.js"));
67
+ var import_minimalistic_assert4 = __toESM(require("minimalistic-assert"));
68
+
69
+ // src/utils/fetchPonyfill.ts
70
+ var import_isomorphic_fetch = __toESM(require("isomorphic-fetch"));
71
+ var fetchPonyfill_default = typeof window !== "undefined" && window.fetch || typeof global !== "undefined" && global.fetch || import_isomorphic_fetch.default;
72
+
73
+ // src/utils/hash.ts
74
+ var hash_exports = {};
75
+ __export(hash_exports, {
76
+ calculateContractAddressFromHash: () => calculateContractAddressFromHash,
77
+ calculateDeclareTransactionHash: () => calculateDeclareTransactionHash,
78
+ calculateDeployAccountTransactionHash: () => calculateDeployAccountTransactionHash,
79
+ calculateDeployTransactionHash: () => calculateDeployTransactionHash,
80
+ calculateTransactionHash: () => calculateTransactionHash,
81
+ calculateTransactionHashCommon: () => calculateTransactionHashCommon,
82
+ computeHashOnElements: () => computeHashOnElements,
83
+ feeTransactionVersion: () => feeTransactionVersion,
84
+ getSelector: () => getSelector,
85
+ getSelectorFromName: () => getSelectorFromName,
86
+ keccakBn: () => keccakBn,
87
+ pedersen: () => pedersen,
88
+ starknetKeccak: () => starknetKeccak,
89
+ transactionVersion: () => transactionVersion
90
+ });
91
+ var import_keccak = require("ethereum-cryptography/keccak.js");
92
+ var import_utils = require("ethereum-cryptography/utils.js");
93
+ var import_minimalistic_assert3 = __toESM(require("minimalistic-assert"));
94
+
95
+ // src/constants.ts
96
+ var constants_exports = {};
97
+ __export(constants_exports, {
98
+ ALPHA: () => ALPHA,
99
+ BETA: () => BETA,
100
+ CONSTANT_POINTS: () => CONSTANT_POINTS,
101
+ EC_ORDER: () => EC_ORDER,
102
+ FIELD_GEN: () => FIELD_GEN,
103
+ FIELD_PRIME: () => FIELD_PRIME,
104
+ FIELD_SIZE: () => FIELD_SIZE,
105
+ IS_BROWSER: () => IS_BROWSER,
106
+ MASK_250: () => MASK_250,
107
+ MASK_251: () => MASK_251,
108
+ MAX_ECDSA_VAL: () => MAX_ECDSA_VAL,
109
+ ONE: () => ONE,
110
+ StarknetChainId: () => StarknetChainId,
111
+ TWO: () => TWO,
112
+ TransactionHashPrefix: () => TransactionHashPrefix,
113
+ UDC: () => UDC,
114
+ ZERO: () => ZERO
115
+ });
116
+
117
+ // src/utils/number.ts
118
+ var number_exports = {};
119
+ __export(number_exports, {
120
+ assertInRange: () => assertInRange,
121
+ bigNumberishArrayToDecimalStringArray: () => bigNumberishArrayToDecimalStringArray,
122
+ bigNumberishArrayToHexadecimalStringArray: () => bigNumberishArrayToHexadecimalStringArray,
123
+ getDecimalString: () => getDecimalString,
124
+ getHexString: () => getHexString,
125
+ getHexStringArray: () => getHexStringArray,
126
+ hexToDecimalString: () => hexToDecimalString,
127
+ isHex: () => isHex,
128
+ isStringWholeNumber: () => isStringWholeNumber,
129
+ toBN: () => toBN,
130
+ toCairoBool: () => toCairoBool,
131
+ toFelt: () => toFelt,
132
+ toHex: () => toHex,
133
+ toHexString: () => toHexString
134
+ });
135
+ var import_bn = __toESM(require("bn.js"));
136
+ var import_minimalistic_assert = __toESM(require("minimalistic-assert"));
137
+
138
+ // src/utils/encode.ts
139
+ var encode_exports = {};
140
+ __export(encode_exports, {
141
+ IS_BROWSER: () => IS_BROWSER,
142
+ addHexPrefix: () => addHexPrefix,
143
+ arrayBufferToString: () => arrayBufferToString,
144
+ btoaUniversal: () => btoaUniversal,
145
+ buf2hex: () => buf2hex,
146
+ calcByteLength: () => calcByteLength,
147
+ padLeft: () => padLeft,
148
+ removeHexPrefix: () => removeHexPrefix,
149
+ sanitizeBytes: () => sanitizeBytes,
150
+ sanitizeHex: () => sanitizeHex,
151
+ utf8ToArray: () => utf8ToArray
152
+ });
153
+ var IS_BROWSER = typeof window !== "undefined";
154
+ var STRING_ZERO = "0";
155
+ function arrayBufferToString(array) {
156
+ return new Uint8Array(array).reduce((data, byte) => data + String.fromCharCode(byte), "");
157
+ }
158
+ function btoaUniversal(b) {
159
+ return IS_BROWSER ? btoa(arrayBufferToString(b)) : Buffer.from(b).toString("base64");
160
+ }
161
+ function buf2hex(buffer) {
162
+ return [...buffer].map((x) => x.toString(16).padStart(2, "0")).join("");
163
+ }
164
+ function removeHexPrefix(hex) {
165
+ return hex.replace(/^0x/, "");
166
+ }
167
+ function addHexPrefix(hex) {
168
+ return `0x${removeHexPrefix(hex)}`;
169
+ }
170
+ function padString(str, length, left, padding = STRING_ZERO) {
171
+ const diff = length - str.length;
172
+ let result = str;
173
+ if (diff > 0) {
174
+ const pad = padding.repeat(diff);
175
+ result = left ? pad + str : str + pad;
176
+ }
177
+ return result;
178
+ }
179
+ function padLeft(str, length, padding = STRING_ZERO) {
180
+ return padString(str, length, true, padding);
181
+ }
182
+ function calcByteLength(length, byteSize = 8) {
183
+ const remainder = length % byteSize;
184
+ return remainder ? (length - remainder) / byteSize * byteSize + byteSize : length;
185
+ }
186
+ function sanitizeBytes(str, byteSize = 8, padding = STRING_ZERO) {
187
+ return padLeft(str, calcByteLength(str.length, byteSize), padding);
188
+ }
189
+ function sanitizeHex(hex) {
190
+ hex = removeHexPrefix(hex);
191
+ hex = sanitizeBytes(hex, 2);
192
+ if (hex) {
193
+ hex = addHexPrefix(hex);
194
+ }
195
+ return hex;
196
+ }
197
+ function utf8ToArray(str) {
198
+ return new TextEncoder().encode(str);
199
+ }
200
+
201
+ // src/utils/number.ts
202
+ function isHex(hex) {
203
+ return /^0x[0-9a-f]*$/i.test(hex);
204
+ }
205
+ function toBN(number, base) {
206
+ if (typeof number === "string") {
207
+ number = number.toLowerCase();
208
+ }
209
+ if (typeof number === "string" && isHex(number) && !base)
210
+ return new import_bn.default(removeHexPrefix(number), "hex");
211
+ return new import_bn.default(number, base);
212
+ }
213
+ function toHex(number) {
214
+ return addHexPrefix(number.toString("hex"));
215
+ }
216
+ function hexToDecimalString(hex) {
217
+ return toBN(`0x${hex.replace(/^0x/, "")}`).toString();
218
+ }
219
+ function toFelt(num) {
220
+ if (import_bn.default.isBN(num)) {
221
+ return num.toString();
222
+ }
223
+ return toBN(num).toString();
224
+ }
225
+ function assertInRange(input, lowerBound, upperBound, inputName = "") {
226
+ const messageSuffix = inputName === "" ? "invalid length" : `invalid ${inputName} length`;
227
+ const inputBn = toBN(input);
228
+ (0, import_minimalistic_assert.default)(
229
+ inputBn.gte(toBN(lowerBound)) && inputBn.lt(toBN(upperBound)),
230
+ `Message not signable, ${messageSuffix}.`
231
+ );
232
+ }
233
+ function bigNumberishArrayToDecimalStringArray(rawCalldata) {
234
+ return rawCalldata.map((x) => toBN(x).toString(10));
235
+ }
236
+ function bigNumberishArrayToHexadecimalStringArray(rawCalldata) {
237
+ return rawCalldata.map((x) => toHex(toBN(x)));
238
+ }
239
+ var isStringWholeNumber = (value) => /^\d+$/.test(value);
240
+ var toHexString = (value) => toHex(toBN(value));
241
+ function getDecimalString(value) {
242
+ if (isHex(value)) {
243
+ return hexToDecimalString(value);
244
+ }
245
+ if (isStringWholeNumber(value)) {
246
+ return value;
247
+ }
248
+ throw new Error(`${value} need to be hex-string or whole-number-string`);
249
+ }
250
+ function getHexString(value) {
251
+ if (isHex(value)) {
252
+ return value;
253
+ }
254
+ if (isStringWholeNumber(value)) {
255
+ return toHexString(value);
256
+ }
257
+ throw new Error(`${value} need to be hex-string or whole-number-string`);
258
+ }
259
+ function getHexStringArray(value) {
260
+ return value.map((el) => getHexString(el));
261
+ }
262
+ var toCairoBool = (value) => (+value).toString();
263
+
264
+ // src/constants.ts
265
+ var ZERO = toBN(0);
266
+ var ONE = toBN(1);
267
+ var TWO = toBN(2);
268
+ var MASK_250 = TWO.pow(toBN(250)).sub(ONE);
269
+ var MASK_251 = TWO.pow(toBN(251));
270
+ var StarknetChainId = /* @__PURE__ */ ((StarknetChainId3) => {
271
+ StarknetChainId3["MAINNET"] = "0x534e5f4d41494e";
272
+ StarknetChainId3["TESTNET"] = "0x534e5f474f45524c49";
273
+ StarknetChainId3["TESTNET2"] = "0x534e5f474f45524c4932";
274
+ return StarknetChainId3;
275
+ })(StarknetChainId || {});
276
+ var TransactionHashPrefix = /* @__PURE__ */ ((TransactionHashPrefix2) => {
277
+ TransactionHashPrefix2["DECLARE"] = "0x6465636c617265";
278
+ TransactionHashPrefix2["DEPLOY"] = "0x6465706c6f79";
279
+ TransactionHashPrefix2["DEPLOY_ACCOUNT"] = "0x6465706c6f795f6163636f756e74";
280
+ TransactionHashPrefix2["INVOKE"] = "0x696e766f6b65";
281
+ TransactionHashPrefix2["L1_HANDLER"] = "0x6c315f68616e646c6572";
282
+ return TransactionHashPrefix2;
283
+ })(TransactionHashPrefix || {});
284
+ var UDC = {
285
+ ADDRESS: "0x041a78e741e5af2fec34b695679bc6891742439f7afb8484ecd7766661ad02bf",
286
+ ENTRYPOINT: "deployContract"
287
+ };
288
+ var FIELD_PRIME = "800000000000011000000000000000000000000000000000000000000000001";
289
+ var FIELD_GEN = "3";
290
+ var FIELD_SIZE = 251;
291
+ var EC_ORDER = "800000000000010FFFFFFFFFFFFFFFFB781126DCAE7B2321E66A241ADC64D2F";
292
+ var ALPHA = "1";
293
+ var BETA = "6F21413EFBE40DE150E596D72F7A8C5609AD26C15C915C1F4CDFCB99CEE9E89";
294
+ var MAX_ECDSA_VAL = "800000000000000000000000000000000000000000000000000000000000000";
295
+ var CONSTANT_POINTS = [
296
+ [
297
+ "49ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca6804",
298
+ "3ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a"
299
+ ],
300
+ [
301
+ "1ef15c18599971b7beced415a40f0c7deacfd9b0d1819e03d723d8bc943cfca",
302
+ "5668060aa49730b7be4801df46ec62de53ecd11abe43a32873000c36e8dc1f"
303
+ ],
304
+ [
305
+ "234287dcbaffe7f969c748655fca9e58fa8120b6d56eb0c1080d17957ebe47b",
306
+ "3b056f100f96fb21e889527d41f4e39940135dd7a6c94cc6ed0268ee89e5615"
307
+ ],
308
+ [
309
+ "3909690e1123c80678a7ba0fde0e8447f6f02b3f6b960034d1e93524f8b476",
310
+ "7122e9063d239d89d4e336753845b76f2b33ca0d7f0c1acd4b9fe974994cc19"
311
+ ],
312
+ [
313
+ "40fd002e38ea01a01b2702eb7c643e9decc2894cbf31765922e281939ab542c",
314
+ "109f720a79e2a41471f054ca885efd90c8cfbbec37991d1b6343991e0a3e740"
315
+ ],
316
+ [
317
+ "2f52066635c139fc2f64eb0bd5e3fd7a705f576854ec4f00aa60361fddb981b",
318
+ "6d78a24d8a5f97fc600318ce16b3c840315979c3273078ec1a285f217ee6a26"
319
+ ],
320
+ [
321
+ "6a0767a1fd60d5b9027a35af1b68e57a1c366ebcde2006cdd07af27043ef674",
322
+ "606b72c0ca0498b8c1817ed7922d550894c324f5efdfc85a19a1ae382411ca2"
323
+ ],
324
+ [
325
+ "7fa463ee2a2d6a585d5c3358918270f6c28c66df1f86803374d1edf3819cc62",
326
+ "a996edf01598832e644e1cae9a37288865ad80e2787f9bf958aceccc99afae"
327
+ ],
328
+ [
329
+ "3d4da70d1540da597dbae1651d28487604a4e66a4a1823b97e8e9639393dbec",
330
+ "45cdef70c35d3b6f0a2273a9886ccb6306d813e8204bdfd30b4efee63c8a3f9"
331
+ ],
332
+ [
333
+ "1e448fdbcd9896c6fbf5f36cb7e7fcb77a751ff2d942593cae023363cc7750e",
334
+ "30c81da0f3a8cb64468eaa491c7ae7b4842b62cb4148820da211afc4caffb3a"
335
+ ],
336
+ [
337
+ "6531acf1a7cb90a4eb27de0b7f915e387a3b0fd063ba6e1289b91f48411be26",
338
+ "31330f5daa091889981a3ea782ae997f5f171336ed0487a03f051551a2cafa2"
339
+ ],
340
+ [
341
+ "54be016394d5662d67d7e82f5e889ed2f97ccf95d911f57dd2362c4040ed4f4",
342
+ "c6cb184053f054d6a59c1bf0986d17090d25089b3fdcdaf185edc87ef113e5"
343
+ ],
344
+ [
345
+ "35b9ecd0499ca1d5d42dcbb0c6b4042b3733c64b607ca711e706e786ef2afc6",
346
+ "5624b476a5b21c3a544f0712d4817b06ad380a5a6529d323bf64da8ef862d8d"
347
+ ],
348
+ [
349
+ "4ce0378e3ee8f77ed58f2ddbd8bb7676c8a38bfb1d3694c275254bd8ca38e23",
350
+ "5a16fcbff0769c9cf2b02c31621878ec819fff4b8231bff82c6183db2746820"
351
+ ],
352
+ [
353
+ "648d5c6f98680a1b926bfeb01c00224c56fdcf751b251c4449c8a94f425cfcf",
354
+ "72c05ac793cd1620a833fbe2214d36900ebe446e095c62fcb740937f98cca8c"
355
+ ],
356
+ [
357
+ "bd09be3e4e1af8a14189977e334f097c18e4a8bf42577ef5aafa0f807bd89b",
358
+ "6e0e72ed7eb65c86cee29c411fb4761122558ee81013344ba8509c49de9f9b6"
359
+ ],
360
+ [
361
+ "35ea4e339b44ae7724419bdfbe07022253137a4afb7cbaffad341ea61249357",
362
+ "3665d676a026a174f367bb4417780e53a7803cb02d0db32eb4545c267c42f14"
363
+ ],
364
+ [
365
+ "36457bc744f42e697b825c2d1afd8f4029d696a4514710f81da52d88e178643",
366
+ "7c93715896735492a68c7969a024b3a8fd538bffc1521538107de1a5f13ce9c"
367
+ ],
368
+ [
369
+ "5b3a08ebcf9c109cc9082f70d9df2b9c11b5428ee23917b4e790c4c10f6e661",
370
+ "9d7b42ab0c20f5510df7ea5e196eec99342739077e9a168198c89da859753"
371
+ ],
372
+ [
373
+ "21883ef8580fc06e59481955d52ece3aca6e82c8c9fc58e216dcf46f96990c6",
374
+ "51a6423543e6e8a43e71da34cd90f5b520b8d33b67c4bf857573ab9e301aa4c"
375
+ ],
376
+ [
377
+ "19e86b77f9b581e81092b305c852faf53940a8f15f0a6990c414f04c0fa7ef9",
378
+ "515630e35d4398c9c79fc4ee08e1023fa47d8e03c6e7819c6d2ccef45398fa"
379
+ ],
380
+ [
381
+ "888ab8eb4c31bb2ac5b54aa320dbe1a69c96b864e8a5f54d89c1d1a6b86c24",
382
+ "730e148467f6a55ce22c5296f5380df88f38de76ef0b2de844cd3094aaaf3ea"
383
+ ],
384
+ [
385
+ "75e79ff13a894e7120dac17b7429c0c32ce7828f726c9973728c0977a5f5977",
386
+ "4960526e59c1c736561a201bc56f7d762641b39f609d273cc996f5d9197cfb8"
387
+ ],
388
+ [
389
+ "640fe009249115d7254f72ecafb3006139e4bed7e9041af51458c737282d1d5",
390
+ "3cc6c978a575246e2ce4f7ef1fcc7f63085db9ff98a1b1f3fe374087c0332c"
391
+ ],
392
+ [
393
+ "6d6fd09ccab7c26de9b3906191235deb5c34685580c488275356a05e209ca96",
394
+ "7157f81a34213dd8f91dea4f6df1bcfabc4ee091a3049eeeb3b7923d39b8645"
395
+ ],
396
+ [
397
+ "5531ca1d00f151d71da820918f74caf2985b24dca20e124721fff507b5a5876",
398
+ "518529643d3f25e47f72c322223ba60a63d6bfe78cf3f612215d9c19bf29200"
399
+ ],
400
+ [
401
+ "6192d454e4f8fe212bdfccd5b15dd5056d7622ffe456c6c67e5a7265aea49c4",
402
+ "2377a45dc630017ae863cb968ddb38333a70c7946d8684e6d7a6213f634b7bc"
403
+ ],
404
+ [
405
+ "542fb44b4ef3640a64fdb22a2560fb26668065c069cf31d1df424819a39ff18",
406
+ "5dbae9b0948e0361aea443503840341c322aa1a1366ce5390e71bf161f78f8c"
407
+ ],
408
+ [
409
+ "299ff3e3412a7eb4cb4a3051b07b1be2e7b1c4b789f39ffb52cba3d048b71de",
410
+ "1951d3175c02761b291d86b6c0a08387ad5e2a2130ccc33c852530572cb3958"
411
+ ],
412
+ [
413
+ "628ce3f5367dadc1411133e55eb25e2e3c2880d6e28754a5cb1c5d109627e73",
414
+ "ae3e9b7d50964e28bd15380400b7659b87affdef5d2586cbefcd9be7d67c0d"
415
+ ],
416
+ [
417
+ "6ea54aff064895eccf9db2283225d62044ae67621192b3346338948382f5933",
418
+ "6431507e51aadacfaf39f102a8ff387756e9b5e1bc8323d44acae55130d93db"
419
+ ],
420
+ [
421
+ "28097d50d175a6235320fe8cfe138dd9e46895d189582e472c38ad7a67d923a",
422
+ "7f9eab4133d7d09a7ff63368d6135c26262b62336eca1b5ca33f2096ce388ba"
423
+ ],
424
+ [
425
+ "619fd09cdd6ff4323973f256c2cbdcb224f7f25b8aef623af2d4a0105e62e02",
426
+ "2c95f0ae11d47eeae1bc7f1350f75f9185c5bc840382ceb38a797cae9c40308"
427
+ ],
428
+ [
429
+ "641c18982ced304512a3f2395942a38add0d6a7156229c2a7c8b8dfbe9beb96",
430
+ "6f6288c9c659b6af5ac975f4180deffe53d516399b2cc62f31732e9d4ba9837"
431
+ ],
432
+ [
433
+ "58ab546e51fe49fc5a382e4064a2bd6cfc268904412f86c26de14f28a71d0f2",
434
+ "124b7217943e7e328408e8afdfa7da00dcbc94a2bb85fd8e01fb162d2c2c0a9"
435
+ ],
436
+ [
437
+ "a82c2fdedbb26c3c762a12f7e86b0e01e65320e0a25a8399d665f6e266bf74",
438
+ "1a1de28e253f3e10f44d0111e8074f882d7f42e5900780ccbdc31da372d3fd8"
439
+ ],
440
+ [
441
+ "744c725a7455a992e3cf5bd007bc234dd4668dba285f553f38350ad94c1615b",
442
+ "7f721a87f48798bdc4a9c0eb88559e2ad7a74112fd901e70ea159e67a9c33f"
443
+ ],
444
+ [
445
+ "434df142ddaa60f7881b6348d91687de40457de7ccfb07f0304b9e820705d0c",
446
+ "7fae425e3b53f97dd1f5b20e49ed9fe24ff1efc341ba5e017ac89cf8df0cc39"
447
+ ],
448
+ [
449
+ "7a1e2b809dff46277021cbc376f79c37e1b683bbd6bca5317014f0dc0e1ae73",
450
+ "56790278a231912c334eff05281e08af1558e85516b4411ef64647c13bea431"
451
+ ],
452
+ [
453
+ "4931b7990348d41cf8907be79f45bb7991fd18f8a57868351c92fa7a34cbcd7",
454
+ "ca35091815cdf0837d396e25aad6052ad32d497a33b123256cffdc008bc50e"
455
+ ],
456
+ [
457
+ "250b815d352fd89f8210b624b147ea7d0a4f47bcac49f3ac9b777840da93ebe",
458
+ "1173f10e9691948b7da7632f328520455aadcba46e017f891e0a1d7da2bef04"
459
+ ],
460
+ [
461
+ "2223b85032fa67292f6e1f822628e6756e5c3cc08fc252ab88d63d624e4dfb2",
462
+ "55619ba96a7dcec77832fcb22cd5c21c7dcebc0280d730cba0002b67e0a8c63"
463
+ ],
464
+ [
465
+ "249b131e04de73af9820d3e22492d9ec51bdc0c4c4f34d95352fa44dd61f245",
466
+ "7576d3b5d136368ff01170a77d8286d0d1c7c40688862fb40813b4af3c6065e"
467
+ ],
468
+ [
469
+ "6777915d9b4769027eb7e04733f8a2d669c84fe06080f55e8a55674dfbf9efb",
470
+ "640d0ff384c9635e1af364760f104e058e3c86209fa9d2320aeac887b2e02d8"
471
+ ],
472
+ [
473
+ "2abe3f237681052f002414399111cf07f8421535af41251edc427a36b5b19c9",
474
+ "636ce4deaf468a503ab20ccb2f7e5bdc98551656ebf53e9c7786b11dd9090be"
475
+ ],
476
+ [
477
+ "4d5cc5414758ea1be55be779bd7da296c7e11f1564d9e8797ceea347c16f8ea",
478
+ "1a680c4c410cf5ddc74e95ff2897c193edaaecce5b2cde4e96bbae5c0054eff"
479
+ ],
480
+ [
481
+ "46c375c684b30adf4d51de81e92afee52b1a3847e177403372c82109373edca",
482
+ "1eaadc5783c90a0261306423d52009e991126b3f620e9cb6cffca41ca096f4f"
483
+ ],
484
+ [
485
+ "2ddfb71f51205888118cbabba8fd07d460a810289bfdeeb7118707e310cb152",
486
+ "1fd905d07b3933be886f2518246bdafa6f33259a174668808223cd7c28183c7"
487
+ ],
488
+ [
489
+ "386f3879960713d41fdb3b1e41bbebf26b1c0e27a9a75bb1adcc1a0d3e8547b",
490
+ "2b21498c0f34ec6f17c720334dc0f36021c2f87afbbbc8847d0bd536eb265e5"
491
+ ],
492
+ [
493
+ "407eae62c6c4de3b942195afec3f45efec71ddb5e6edee3d427631bcdbf9b90",
494
+ "436e7f2d78268ef62c4172d2ff1469028bad1f1d0f97ab007064418e61caa8f"
495
+ ],
496
+ [
497
+ "1b881175e21201d17e095e9b3966b354f47de8c1acee5177f5909e0fd72328f",
498
+ "69954b1a9b8bfccf8ec384d32924518a935758f3d3662ef754bcc88f1f6f3ec"
499
+ ],
500
+ [
501
+ "7d545a82bff003b8115be32a0c437f7c0a98f776bcf7fddb0392822844f3c5e",
502
+ "34b6e53a9565a7daa010711f5bf72254a4e61da3e6a562210a9abc9e8b66d69"
503
+ ],
504
+ [
505
+ "299b9fcd4fadfc4b6141457a3036aaa68501c23df579de26df69d4def89b913",
506
+ "b95bf2c2bb303c38bb396382edc798ca6a4847e573ce19b7b08533d1912675"
507
+ ],
508
+ [
509
+ "551f5a4dae4a341a3e20336a7d2f365ddd45849351ec6dd4fcbedfe4806d5d5",
510
+ "5865c977a0ecf13ce85ae14c5c316872080bd36f0f614f56b6dfc7ece83792e"
511
+ ],
512
+ [
513
+ "7a1d69c08e68c80ad8b310736e6247a53bcba0183b9b8798833bc696a0fb6e2",
514
+ "3ce803a20ebb3b120d5eaf0ad64bed0522fad1a0f2ce39a5c5cbae98c4438f6"
515
+ ],
516
+ [
517
+ "28acacc0bc41d84e83663f02b36981a2c8272ecd72d3901164be2affb09c504",
518
+ "7a5aee0b160eaff5b5968ab1a0304ce58c3d5ae0148d9191c39e87668229e5b"
519
+ ],
520
+ [
521
+ "1f78cfdbcc767b68e69a224a077468cdfcb0afd6952b85bccbdb96d1fb8500b",
522
+ "4772ba173c6b583284eb001cfc2a124104833f464ff9df096443e10ef3e9dd4"
523
+ ],
524
+ [
525
+ "2774108962ca9897e7f22c064d2ccedac4fef5fc9569331c27cdc336c95774b",
526
+ "9e13d79b68e8dc8091c019618f5b07283a710ddf1733dc674a99fc32c12911"
527
+ ],
528
+ [
529
+ "770d116415cd2c4ace0d8b721dd77e4a2ef766591f9ec9fa0b61304548994ed",
530
+ "42165d93c82f687635aa2b68492b3adffd516beb4baa94520efa11467a209fd"
531
+ ],
532
+ [
533
+ "5e6e4ece6621e2275415e1fda1e7c4f496de498b77c0b913073c6a6099394b9",
534
+ "3d92ce044fc77fa227adc31f6fc17ef8b4ec1c5aafc44630c0d9195075bf56d"
535
+ ],
536
+ [
537
+ "6e69c717b5d98807ff1e404a5187a9ceaf0110b83aa15a84f930928b1171825",
538
+ "1ee7cfc3a9744d7fa380ba28604af9df33ac077724374c04588bd71fa16b177"
539
+ ],
540
+ [
541
+ "404318f2d2ceb44f549c80f9d7de9879d8f7da4b81e7350c00e974ebf2daef1",
542
+ "3934831b5af70d17a3f1da9d2931bd757e6acf2893236264fc7e0d92ff1a1cb"
543
+ ],
544
+ [
545
+ "20dcb6f394fea6d549b2e75748f61b7ec03b6e52319cb14163373a9c22bb9dc",
546
+ "106a8c96cfb95a331618b7416d1498554730499e194a58fbf63019890480fc7"
547
+ ],
548
+ [
549
+ "119000f277ccee013e6bb121194ec1ab5460fb6a96eb702a14079865f4170aa",
550
+ "1737a32f5415e8720a5606ec1dd4756f02e7c6817e3723b453d091f2d192773"
551
+ ],
552
+ [
553
+ "45d0fb5cd95db76d05dec3faa12e467a308eabaad363a062353db3cd2d9b749",
554
+ "ae08691b5b0cdd19ec499132421638f470f493320e4003d123ab1da761b965"
555
+ ],
556
+ [
557
+ "1257b3e65cdfb6367c6d0942327e799bc66eb221e70c6573a9862889eb51c38",
558
+ "593309fd45755dd2cc4afd2b9316bc4638b0c5ddb3009694fcb7b250d0c8a2f"
559
+ ],
560
+ [
561
+ "186dcf9950f72e868014a8accf14aa36e82a7a2a29f86ba37f6632da4189db3",
562
+ "55684c9f7a043fc523ed78f756f834b4db823d5e4161bd79602c17d55a5cd8c"
563
+ ],
564
+ [
565
+ "58791d5569f282f5c3b01ecdc9388df7ba3ca223a2dc1eed5edaf2a1d302fb9",
566
+ "6298d7dd51561a045bb4089deda9f40b2865589ed433e56d54554f8b45e79f0"
567
+ ],
568
+ [
569
+ "13fd87144aa5aa4b24d5a7bf907d8280d15937fed262d41084898cb688fc28b",
570
+ "3fa54367770cc4479a857411ddcabe86627b405ce1cd14ad3b2863bde13abe4"
571
+ ],
572
+ [
573
+ "48118139445415f0c1879224e2dee744ed35280ff00537260402a1741ec3676",
574
+ "4dfa39dadaabecfc54ecb7a25319444f8e952782d863790e42a9887064fc0c1"
575
+ ],
576
+ [
577
+ "4ad031bb9eda84f2fe5d354c7948d41558ca657a04508654721810ee72ef158",
578
+ "620ebd5d0086b92c6009a42777b946a351c2c7ba852b57d3c9905fc337459ef"
579
+ ],
580
+ [
581
+ "4a34abb016ad8cb4575ea5bd28385d2348e5bcc0cbba90059f90f9c71f86e8b",
582
+ "4f781829ad83f9ed1e1b6de0e5f4ac60dfdfe7f23cb4411e815817e705e52c8"
583
+ ],
584
+ [
585
+ "7fc632d7512aab5356b7915dca854c8b12b369ab54f524fbce352f00eb9b9f9",
586
+ "2ce80b944fc9158005f630b34385d50c3ad84450a9e1e529925b3211dd2a1de"
587
+ ],
588
+ [
589
+ "65ed10347503cbc0216ca03f7536cca16b6abd18d332a9258685907f2e5c23f",
590
+ "3be1a18c6bfa6f2f4898ebefad5a8e844c74626d5baa04a820d407fe28bbca6"
591
+ ],
592
+ [
593
+ "1a8abba1be2e276cdd1f28c912280833a5ede1ec121738fcca47dc070dcc71d",
594
+ "21b724378bc029a5199799df005922590d4e59cae52976f8e437bf6693eec4a"
595
+ ],
596
+ [
597
+ "3a99c22dafcfe9004ebb674805736a26aeed7ed5d465ae37226dcbe270a972b",
598
+ "5bf67552af08e1e6e2a24bf562c23225e89869cab9bef8becb3669175a3c94f"
599
+ ],
600
+ [
601
+ "4a6a5e4b3501f2b7bbdd8da73ea81ffca347170bdfb6776a037cdd74c560fb4",
602
+ "5af167ebb259c2da88740ec559ee04052bb66480b836cadd0e2590c32d7111b"
603
+ ],
604
+ [
605
+ "6890d95308525f0bac9dc25cc1189eb92d29d4b3fe61bc8aee1c716ac17b1e8",
606
+ "e6f23f78e882026b53ea4fac6950e56e3da461e52339eb43d2fdb2dade7ca9"
607
+ ],
608
+ [
609
+ "748f4cf4f027efdeaed7c7f91ef3730ff2f2bb0bfc2db8f27aadde947f7d4d5",
610
+ "3a1cbc550699411052c76293b8c41a3a8a1ecf12cbbc029a1b2b6ea986fca93"
611
+ ],
612
+ [
613
+ "7321f3f581690922cd0dec40c9c352aae412ec2ccdf718f137f7786ab452cd3",
614
+ "5be5130c9277cdb76d7409452438ec15d246b211dd1e276ee58e82a81c98fd4"
615
+ ],
616
+ [
617
+ "6c4d6cb7e7ae70955224b8a912ff57ca218635a2436b36cee25dce8a5cdf51f",
618
+ "32f8c03c6db3246946e432e4148e69f5628b200c6d7d72449df6eeac0998039"
619
+ ],
620
+ [
621
+ "1dad5f2e795ea6fa5177f110989516eacf8fb37bd6a091c7c93f1d73a2fe309",
622
+ "56b2298c538180e99dea3e171dbb5c6fba0bd0a9ed40537277c0c2373a8e2c4"
623
+ ],
624
+ [
625
+ "1610605baacc9bc62c4cc923dc943347cfece7ae241e746fbe6c2c878221dbd",
626
+ "431a82d657e0d109d00dea88cf3fa9b999845221b7b5590a20c40fc71368c1c"
627
+ ],
628
+ [
629
+ "6a4f5c787fb09a5be2b04d2eafa1e6f3d3c863ee22960eb0b64f6eaf6659162",
630
+ "14dbc3eaea6146ee7eaace5a91ed9430dad3a47e9ca2f68b455171f8fe6a7b3"
631
+ ],
632
+ [
633
+ "738415b73e55412b0e582e45ff0d7bf4b1bf2922db581783fdcc75559f40e",
634
+ "33825aeb3fd8459999eb418d15102ba5864b069c6ea517f0c6e9eab8d9aca47"
635
+ ],
636
+ [
637
+ "2603e72ce53985c70782774057a17944f7b4ce224a809be4e2b5af3606aa1d8",
638
+ "92822921809c42318f42dac4d773325f41c43069e990adac7818a45e2554dc"
639
+ ],
640
+ [
641
+ "181cd967ab4615357cc96c82eae9152ce7598c1a1dfdd91a458bddb016ae9fe",
642
+ "5d562fdaeb0e12647e230e50eaf216bed52fa73c6b7378821a3bfc4cd66d4ff"
643
+ ],
644
+ [
645
+ "1121726069b9ef5954ba6490100b226e0be53fef3e071b7c58a1286174b789a",
646
+ "4b25594cf4e9eb2d14b3f52f2661a9992234fc222c0a0d44517cb77deb9c16f"
647
+ ],
648
+ [
649
+ "e543663969b915337f105f80995a77b356f1a51d8b4a4fb12d44364130e873",
650
+ "34b2e3c009fdab4cb7349a580df2e64c0098a123280078e5da6623a9ec6b44f"
651
+ ],
652
+ [
653
+ "4e2f8909bb62de5ef65600e61bbf969293815296b6e23702875e049b3ce5c45",
654
+ "3cb81f2c21f22a7add26fa38a9ce5d9cce1bb251bd2698f90c34ff0a84f7af"
655
+ ],
656
+ [
657
+ "37b546e403a1ba970c17b67c2f1361ab9c803f8d2b5cd93803014faa08861ed",
658
+ "37079184ea46272f5809b523d060686633f7995167897a153be1772fd6566f6"
659
+ ],
660
+ [
661
+ "27bddca77f7bd7f66b3693567a4238f2e6751d95b0bcb409f6b24d08f84798c",
662
+ "6417a85cbfd6fc02df560d3963a241a986baacdfa423f65d7227ce49a96c57d"
663
+ ],
664
+ [
665
+ "2de71a39aa043057d1bc66e45f804542acddf18f7a6d88c0d7fb0ca240debdf",
666
+ "306c1ce39ab46300f7cca0f3a2fbfa77296a27e24bc66b0b8044968ec0ee413"
667
+ ],
668
+ [
669
+ "307c877154364c0c03534e7327d5a88e1380ceef6481567ade37a14ee7c1a72",
670
+ "3404bc7dbfb33b95d922d0693aaf9358f77888d7d95e773c38d83dbe2e5f995"
671
+ ],
672
+ [
673
+ "79f09ff7c60850e5f5ea020722659a1ed27db4c95dca131f99552f785c8afbc",
674
+ "40429528c099349b426ddbf129497176951a64a53db5f9d8bd2be0252cb22b2"
675
+ ],
676
+ [
677
+ "4027dc6b56d446e5972f35464eeac85c5254ef377c902d9fe37aea841bb5292",
678
+ "7c3ea37689ef679fa2f5c7e031a78e23d484a8317990fd34d44d95cc1db3717"
679
+ ],
680
+ [
681
+ "645dbf78a3c228c4b7151450b5e65edb58e71f37e1e4bc5f471e0f1abd6d9c2",
682
+ "15cfe7850f327b256e23b00627451560c5c6ab60db78d45b7ab286afb6f13ab"
683
+ ],
684
+ [
685
+ "1503ca373757677ad1d911a2b599d01c46eb879d1ce21ae171c7e439846a85f",
686
+ "583eb269b7030da6a0c324026919de3f9489d2ff6ae0e6320c36f05469ad66c"
687
+ ],
688
+ [
689
+ "66e1819ba3ec4ad4ae9f7d7588d23baa004e29d3aad2393d52af204a81626ca",
690
+ "505249980cbe6273b82ad5038fe04a981896f4117345ac1abcc67e2525c0ee4"
691
+ ],
692
+ [
693
+ "5ec20dbb290254545f9292c0a8e4fbbfb80ad9aab0a0e0e9e9923f784d70ed1",
694
+ "bdb1ca3a859227cf5d00eaae1f22584e826ed83b7ccdb65483ed5213dc4323"
695
+ ],
696
+ [
697
+ "a5c1a5011f4b81c5c01ef0b07c0fbf0a166de77280f0ae241f2db6cba15194",
698
+ "4444521fb9b33d7dfeb1247d0ee1a2b854ad166cb663d9dd2e686909362a689"
699
+ ],
700
+ [
701
+ "1f35335de40e00c62642dac2fda8b30f071986ce4f11db849df11bc45ad4e0c",
702
+ "7801a2c761b90fd4477ba0be9a775003d5dfcd959b1ed198b4681f15e7acbf"
703
+ ],
704
+ [
705
+ "48db4798cf6821c1ffb8178b1d3bb6020e04186c96aaf4670972d367f4ed5f",
706
+ "781019494df95b888f1578f1b4a3f8e125ea60eca47ef9207a10630671217a3"
707
+ ],
708
+ [
709
+ "17f653d904210148a8e74d8e719a3061683c164aa6d79c902a19f185ab437bd",
710
+ "6780e97985932c3860d810af1e065d454b1cb4be0e7ffe2d8cea7d52526e223"
711
+ ],
712
+ [
713
+ "5c4d0c7432f9b0070436240f9855adae1467cdc9826952ae01b68cd52a3ad89",
714
+ "1c5747f968ed91261b7ae9bf1023c999da9816e37de602d6a1a50d397752bff"
715
+ ],
716
+ [
717
+ "6fedd7639fdaa2f7bad4ca0b391710f6f8a7e890250ae8ae4252bb8b39a1e58",
718
+ "436a215f655a3fd3778b2335ffdc9aca6b98474e43d764c1f8362830b084f0e"
719
+ ],
720
+ [
721
+ "7fbd45a889c5e9d127bb4f8474d6be7cb9796bbfff923b75e42a1ad4cae37d6",
722
+ "484bd12622a6ba81cd53049c550d9ed682a8e765b656b1cbff9bbea637bd1f4"
723
+ ],
724
+ [
725
+ "17d984d47937263f7966a3e7b1eea04071e678494bd749c9e02b48b3234f06d",
726
+ "7b341ff08722c4e161005d0037204a7a2001fdda7af2cc1a0b04a027f115a0f"
727
+ ],
728
+ [
729
+ "7f1822045db45ea07e1519c3ee1f7705915f35fe4dd8db1e8921b5d1c740edf",
730
+ "33d41e06b93320ad1b3d9580380ec797a05dac3f1cc8008899110ebefde2f78"
731
+ ],
732
+ [
733
+ "7b19453ecb74b7d0e2a66b9890ff73bfbbcd61a266abd6d82dbe665bf32f34d",
734
+ "6dba2355420dac582b1f349609ea1c89b89bba2d1a68a0642f1dd12d86e73cb"
735
+ ],
736
+ [
737
+ "273e82a15f395ddf2489a95685bec8bac62c4b459d1b28987d3cb27e4bc9128",
738
+ "653375b48a4cf5d5b101c9ef533039bedce5dbeef3f59e8f168bdc99b06ca5f"
739
+ ],
740
+ [
741
+ "3006c9e7fc6a553d8eb4e8a47ce9f10d1a39576ac255ae9e0a4ce3869e76212",
742
+ "65fe9e2ef2aae608be309332d464f57e28f1df5de1a6a519751b056971f932e"
743
+ ],
744
+ [
745
+ "5e8f384c8a4607fbe9789fcc52d54249d304d698562597d114c1d81452d3dee",
746
+ "3c8bc78066b5d947dc1e405e326ee55ea606c7988f666748d259850fa259a22"
747
+ ],
748
+ [
749
+ "7841b2102e9aa103fb53a642b3e167b21113ea44751ab38e0b5ef8312654db9",
750
+ "71bf5c8308fcf9c4a7847494cd9bdd946fddf7d3a37e8bb0b201ff2343deb8e"
751
+ ],
752
+ [
753
+ "40f68027420c11e3ade9aae041978dc18081c4f94943463aac92d887f922a62",
754
+ "499c6062594a6c7e21a3cb91ea451813393bff365a27a08f1a515439b83cf42"
755
+ ],
756
+ [
757
+ "6ce77a50d038b222634e87948df0590b79d66087b01e42b9b6d8fa30ebb1465",
758
+ "35f5c46bb1be8555a93f155a174d54ec048c2ac8676e7c743054ddc52709d37"
759
+ ],
760
+ [
761
+ "604f8b9f2dacb13d569262864063c2d4bb2b2cd716db6eeb2b1eeabc57746f6",
762
+ "68c6799e24f3b44eec3049973445174727a66970f1614a782efa2b91ab1e457"
763
+ ],
764
+ [
765
+ "73d620f3bfe77f672943d448d7dc05327adf64b8e7af50039c469d7f7c994c4",
766
+ "4859deb36eaf0c802f0d1514602368143a33ec6ce8fd55248b59025debc6afb"
767
+ ],
768
+ [
769
+ "3fd2bcd1c89d706a3647fbd354097f09c76636e93ae504973f944d8fc3bcc1",
770
+ "677ef842cf5eb2444941f527abec567725e469469192354ad509a26ebb3d0e0"
771
+ ],
772
+ [
773
+ "39222ea924ac17b533c72ffb2c47ffdc11d6a7f7c70fbde3a10fb0b8f35eb2f",
774
+ "20dc4bd1089019bc1d7379b4feb3eae6eb5af59e9f253845da9fd633057e952"
775
+ ],
776
+ [
777
+ "326f58994e1347f62e4102183215b5db956378d2f61f14aba4dec94577f53c",
778
+ "7a03284c296003bbe05178a1d82efdb7b8125511d63e20e50aed789c2e52e1"
779
+ ],
780
+ [
781
+ "53aa8939c74d4ee58f03bc88bace5a45c7bfcf27466201da05dc6723a5f5632",
782
+ "2e32535ca7732904a048183247b04b426ecf9b39fc393a9cebe92fb1dc7a7f1"
783
+ ],
784
+ [
785
+ "6cee1a03145e93b3e826e6067005f09c06099c98198c91c222407ba5c8c132e",
786
+ "beaecad1274e7c6e5476a100c271aa1a6f86ee5a9fa5c2f26124d5886fa63"
787
+ ],
788
+ [
789
+ "3ec659b8175e1be1bd5a252108714776b813e330393f587814f5f1f32a73332",
790
+ "529a5cf9f8c237ae69a94217d173c8d19c156952041f5c980da557990863fa7"
791
+ ],
792
+ [
793
+ "3d66ec5963d0c534d4139c8cef2e1ac48b3e7965fafabf58be26f903318af4e",
794
+ "3d3f2de7a95f59b683725ee6283cbaf31f97c4b600df9a4621413223a468740"
795
+ ],
796
+ [
797
+ "7fb38ace8e0932fac2ea0d3eb676db8d684db1817e2e4d59da7996ce398b4a",
798
+ "68f92bd5768cdd4710249f9d49ef1d5654e497b9a4ba10bd2971366d83fb400"
799
+ ],
800
+ [
801
+ "1c4a49314d6b4969cdd142c76ceb7682bfb868ace7f7568b0fc8635bda5a9fb",
802
+ "5fc0519f1f4cc10b5771312458748c036313b87707ed0540026ac64a5955aa9"
803
+ ],
804
+ [
805
+ "3073c95d08d3b97caea5f0be16b2789bee766f76b7e5499f8ce8f96abb0f344",
806
+ "52a8974b4eb9a1f6a0ae2c83cb4715bf18d73f057255fcb3f63b74f7e78f590"
807
+ ],
808
+ [
809
+ "44485b16d597a5de3604df6f7ed7e00b8aeef9e7e8dea8688255153b8bb16aa",
810
+ "6cccb0ba170123266f24b5d93a744397dc2c44820edc4f8f5b9a0f5c9b3b940"
811
+ ],
812
+ [
813
+ "7618f77b7b32d512688dd62e0b48231d9574c6361e8be353a7dc04f7c3a115e",
814
+ "78ffcd16d80636381ca231aae70d99c9e20298b4f5388fd823ea9fa2b8ddfd9"
815
+ ],
816
+ [
817
+ "7dc82fee1ef95cf5b3720fcc07f63246654bfe39762627839da40e51c75654d",
818
+ "4c0ccdd70955da74558de20c88352df8a02aa97e4d5971c500e884740a8cb62"
819
+ ],
820
+ [
821
+ "7fa5d460dc10cbb418b444d9bde97e92c70a99a222b99f244dccee7e62cc04c",
822
+ "636163901baa5b7576c38c43407af578b8c4607e01e86011ae2dde587a89f84"
823
+ ],
824
+ [
825
+ "758930d46006623a756c89bd0cc378f6a3c1f43c9a0edbb42274c35e75c16d2",
826
+ "1d74dd9f81c2fec811b8cbd6168a745b0a111932b2a345265ef2853b50b6245"
827
+ ],
828
+ [
829
+ "7332ee0626b044d664ef228f8cb84df7c643e52f6a2591ae1c9007ad61ec16e",
830
+ "229bd8e630572cbdee54283234cf3e9f060e6382f99943bf234119d47b54470"
831
+ ],
832
+ [
833
+ "78a16ef803aa20a075bb2f66c61bb2dae5698bebb94a0995fa74c3d53de1614",
834
+ "246d588b68edb6fed96c128349908c42dcd64c46341b205e79f4aed9b5d3675"
835
+ ],
836
+ [
837
+ "6e1933939bd03b67bba753cc0cbe7d2f25bad68c993887ef8c9e2fcd59b0647",
838
+ "599413f7c204a11a5ce315eab11299ab7326603412bb00bc1c59ff75a37d6b4"
839
+ ],
840
+ [
841
+ "4a79957a5a1888ad063b51c69565a2b48e8eb917183e220a1c8d3374526d30e",
842
+ "1f092de0e069bba7fc5386e2e9a114c1618f88c4b95e220cd35ffe96f99fcad"
843
+ ],
844
+ [
845
+ "3148aa3df9ece39aca84f59489f2710522216f14be6055ee0027529d1d55e2d",
846
+ "617e9a52a92975db0ba1977f71116f7058a0d31b869ac7f3ee2fd80b0c5100c"
847
+ ],
848
+ [
849
+ "5c1188e72384160ae39d07328346cda4f6c12d227448e6236f04dc971625287",
850
+ "1643006eb3a3bc6aafd5f685cf054f2a572e6ca58c0118bcec0b833741f116d"
851
+ ],
852
+ [
853
+ "3f72efc93c9b71adc4c51d8fc69d3940b20d08733af2b7d05140fdb1d1c1004",
854
+ "7399259987c8f4ebfab46e522380707e58427d3962ee0c2a91760813f76d232"
855
+ ],
856
+ [
857
+ "3129b34c03c51aa8f611e91d5cfcc9bd3ef108ee66e6d3ee35a0e0e50055bb",
858
+ "563b18b5650085efb4cf179a029e6afff27b1d3091cd28eaa68d24fa1f801c6"
859
+ ],
860
+ [
861
+ "16eac0f9fb4c67cf89a7fa4ee615bbe731d8edcb709a1b9b50c7d873a530f52",
862
+ "7ff8288b6e199ca8f316192881424a37fb080c29daa76b1f0edaccaf580a80e"
863
+ ],
864
+ [
865
+ "75f6b6028c43ce832f65d7e8e620d43b16cba215b4b94df5b60fc24e9655ee4",
866
+ "35e9ccfaed2293a8b94b28de03bcb13eb64a26c831e26cc61a39b97969a2ff0"
867
+ ],
868
+ [
869
+ "3c6152fe093bd6316897917ec56a218640ec1b2148f21db9b14fc7a5ff362e8",
870
+ "6eef2df27ae7d63a28856b07b73e7aad7ca94f317201a1e675ffc6f9a1710dd"
871
+ ],
872
+ [
873
+ "54e01b5fe4fd96052aad55b3f26b1d254dfc7e2525fffb9ae0a77eb8cc5579",
874
+ "7c3d39232ab333675b219abc766ed9b4782c840e6b046614dedb8a619696eb0"
875
+ ],
876
+ [
877
+ "d1e63f8ea8a76429cf254a6d3b668761f0dc572d4bfac4fd56d9eaf58fb6c0",
878
+ "2bd0a84d3908a63085824c9329a0983913006ba155b56a58eb3f9becab29c45"
879
+ ],
880
+ [
881
+ "2d6122f2a702edd4da7385b1580796a71d13bd72be94cfb3fec01149c006c2d",
882
+ "70eb282fae992efa6f5915e578b640653549f23385ef3a29ab29b1b9b8ad63b"
883
+ ],
884
+ [
885
+ "752fec14beaadb5ddbba6b3a17fcb86579fa588ef407fad0ea07dbb22a640d3",
886
+ "3feb6728eca21a1e84e8f9f23010387a53a96a1cb62d86fb37996150a1299ef"
887
+ ],
888
+ [
889
+ "63f94a92f27acde8f5ed949b459506f51d70c85bcc61a34d647264ecc53c65e",
890
+ "37e5dce0646ee66f4fdb93b82d54d83a054948fa7d7fa74ab6b36246fc7383e"
891
+ ],
892
+ [
893
+ "d6aa909287a2f05b9528690c741702c4c5f4d486c19a46c38215f52ef79c7b",
894
+ "5ebe1128dd81093df4aca0df365d58adab848d1be1a94b95eeb649afd66a018"
895
+ ],
896
+ [
897
+ "12866812b3053e2f7a9572bdaf5ef2b48c6fb62a0eed9ff0356df50e7d05557",
898
+ "6785f7eb2cd1c120e4c7167b46861d10117040a2e9f2ca86a71e9d67df90613"
899
+ ],
900
+ [
901
+ "46a730d05330b1b13673cb8a1b8f45460035e4a9f1a1751cfba099c4355c1c",
902
+ "76fb0ec6cd16a8141cdcd875c8b2de9fce42d296072643d148ac7e7fa7472df"
903
+ ],
904
+ [
905
+ "4bd4380a22900bd34835e0a908eacf4b6edb61eda0cf483f9212453b37e7516",
906
+ "5e9551cd20d8d7ddbf4366880b7d5267385afa1966ff30da4baaf273b009d29"
907
+ ],
908
+ [
909
+ "71f1994ad40baa2922424ae222663a64f93d8b67929e9a10f9e4c1ab19f3833",
910
+ "85320fe68ec0d37cc19fdfd03589d66906ffa4046c80e1b094a85f27676346"
911
+ ],
912
+ [
913
+ "5a63b1bf5232f28f808765c6be7ce1f81c52145b39f01c879fae0f4303bee61",
914
+ "3bc5d6df68bb6d0577bf9ae2ae59ec0e9b2dc7dd56ea179fb38a41e853db950"
915
+ ],
916
+ [
917
+ "161ded55ff1087032381e6c1449704f63ad2d88df82dfc44a71890fa09b3941",
918
+ "78a52e0013842037274ea75daaf8eb4afc04ccc4b07bfaf3f5ee47d165e01b"
919
+ ],
920
+ [
921
+ "1bfce5229c5fbff5c0f452a22317fcfcd9262f23df41840f84fe7d44cfba1a1",
922
+ "66b387872c00e63c73006a955d42cf49c46c5708fc9d1579b9ae38341b24a3d"
923
+ ],
924
+ [
925
+ "56d47dadc9cbd1dcb2ee3efcd5d4af5e6aea71df10815c68b54a14e81d11b44",
926
+ "47e966ba54df48e9b612a903685e0060a67e4725402e8cb4cf654e54e813a3e"
927
+ ],
928
+ [
929
+ "4b1c44438afd4ddf20a2cf612df2ee494ce84c7274c5529e857693e73018491",
930
+ "430403bd31d8f0677e06abff7159384560f27b9622943fea1a3192f14bf40d4"
931
+ ],
932
+ [
933
+ "7f7281728fc2214aa1dbf13176a4624b53814734abd570eb6ef7c7e32379606",
934
+ "312da47be347fb3fa2c9089b38df372560dcace2effeeacab4d96ab11567295"
935
+ ],
936
+ [
937
+ "16a28884a1be8183e0d3fc0db84a9afbf47126fd3be548c2a584aaafbfa7dfe",
938
+ "7c3f57b3b895564ba562c1cd80b71fda6d2e611665c6ab87744f5390858fe24"
939
+ ],
940
+ [
941
+ "323339f37b327a731232a9580e79952063c7c232bd1380146d8a83c285f4b8b",
942
+ "4f16be1d983c7232f92cce6b9690695978d42cecc8eeb8c206e125d1098a265"
943
+ ],
944
+ [
945
+ "624d26cbaa197e104eb83cebf2adeed09a5cdad359993fe5e3529d4d0def21d",
946
+ "261b7da3cfb55c788977e0d8d640e3e93ae5a325d962ce85c816d7d32cfc430"
947
+ ],
948
+ [
949
+ "f24ecb7ee83a3e28dab54a330dc93d0429a7aea36412e922dce8fbff40d60d",
950
+ "b043e36a258d1df1d21b0cc7be9c4dcae1bd4ed326c110e668ac23d86805a6"
951
+ ],
952
+ [
953
+ "686cea46b710bde1231483bfdbc700cfa3da6ecd5841c0e0c782f9ea24328ec",
954
+ "7eb7407aa58edd6911c7c7e8d1e03bb52ead4a2415a0c33325872ff3a521dd6"
955
+ ],
956
+ [
957
+ "3866ee1186264549df3dfcdf8705c0380c9372eef6d4081c2454d3aded1720e",
958
+ "634c6d3e8eb8af652a4be73e3b613452c2213104ca875b66b4b15ee5b1716af"
959
+ ],
960
+ [
961
+ "484c687cd2969a1d20a58cdfb9a60f280a473284503b1ecff5de514aaf8206b",
962
+ "34d44d26b7427e51a646d1b924084762f5b461685450f21d6a472de565bebd8"
963
+ ],
964
+ [
965
+ "203561333771fa0fe22c4033349f7b877d15b0542a5598e81e067968768247a",
966
+ "2b6a533aff6e2163a36a2a89cb7415848bef48db40f952ffd380f47676707c2"
967
+ ],
968
+ [
969
+ "2ffa6cca6233695760251206fc5e34c8d3692498589478cdd3d5b09f0b7c05d",
970
+ "6c57d605478fa9626c4ed769554d075daa53e1a1d0bd4d94174d3bfeeb11ad6"
971
+ ],
972
+ [
973
+ "5dccf0fa46a5571f204d0b033b45f299cbb3d9f80fded57253ea4f1c64faaef",
974
+ "30a38e131ee8756ee5ea2a3e16618a5dbc28b5b9311308bf037ecc2039dfc7d"
975
+ ],
976
+ [
977
+ "57b0a2eaebeafd950221facdd24790d7d1ab8883e5c5d55635f0d14a1ee4741",
978
+ "7b41cc478fa6be38417271db8ed12efc0da6982552c1496025d2df0576bf4ad"
979
+ ],
980
+ [
981
+ "611b5725101f611c387ccaa13889ecf3bb5595071a179ce350029bfca4ad7f1",
982
+ "3129755977abc8995fec7eec1123a1561e429fde37ff36af002d3211831ecf4"
983
+ ],
984
+ [
985
+ "1c06bbd0c52fdab9fcaf680c7a93fb821e538a2ed79f00f3c34d5afb9ea6b31",
986
+ "3873d3bdfe0be0157bbc141198dc95497823cc222986d24c594b87bd48dc527"
987
+ ],
988
+ [
989
+ "275cdbabc989c615130d36dabfa55ca9d539ed5f67c187444b0a9a12e5b7234",
990
+ "2b7f723e68e579e551115d56f0ae71a3b787b843cc04a35b9f11084b006521"
991
+ ],
992
+ [
993
+ "6cc702eb20f8b5940c7da71f8b1801f55c8c2d8e2e4a3c6c983f00bc1ffdd95",
994
+ "5d15b3727bc66f3aba6d589acdd139fae115232eb845abe61fbdfc51341352e"
995
+ ],
996
+ [
997
+ "44defb418700cee8c9bd696b872adb005490512d8bba081f8f99a9f15cc981c",
998
+ "3b2072cdb1d919b2b65b5cb3557f0a3381d7ca293c267ca4a38f83e77bcc96e"
999
+ ],
1000
+ [
1001
+ "fd83ce77b1578b3a9b8c3cbeaddb1504d2fd4a19c901c21ac65961224e4966",
1002
+ "110cbe64fc10c6b9c66f15ca406a35f50b723b35d83c5eb9797a57f8395f4f9"
1003
+ ],
1004
+ [
1005
+ "9dc6ff90e341875e113bbfb507724dc7095a280d2f32cb6ba61a1e0c2d2aef",
1006
+ "4aeb622896c852c2747454e8f172c9482955a42ecbe522d6ce07ecde79d0a51"
1007
+ ],
1008
+ [
1009
+ "71c58b0e47b9dd9107ebd8a8c8fa9f0534e78231bac612c1ddc7a94edf33eb7",
1010
+ "7f90edaf4792bf8334adbaa0f4ee7c654312725af188682d75f34874c4eccb9"
1011
+ ],
1012
+ [
1013
+ "1f6de1f14988778ceb2dfe844f92394f1f1e72fd1581ceb3bf336c95ce50345",
1014
+ "4f6007ed4e022d2ee9fe4ca8207c5f6c766c4f3b85260e941fb24ad0dcbf0bc"
1015
+ ],
1016
+ [
1017
+ "3ddc3ac25ede4a67a97547ed27dc920239b585fb3624177e2e8d59eba678115",
1018
+ "a9afd8f8bb759cbd1dff2addc63f47da4ba1291ea34229c09c0637dc5c8d24"
1019
+ ],
1020
+ [
1021
+ "c56b0269d8431556e471cab9d70edda3a37b391696f107b2dc370631de51d",
1022
+ "729c52f6b134f733eb750c14bd9f95c077f0f6f6ff4005701e5bedc6544599d"
1023
+ ],
1024
+ [
1025
+ "44d32ce19ac6807cb22e4f25fe1486a36a13926f147fbfa054b63ff0446177d",
1026
+ "212a21e8c124c9cd37c80d2dd66913ceaa6b6f666522f115c39382b2d5925e8"
1027
+ ],
1028
+ [
1029
+ "35dfc16f3ae6ccc06a267bf6d931601e52f3e45359ffc513570b65b96adc4f",
1030
+ "74311d10f4bece01b5ae65a6affe5c931463aa1b73a3320eeb41bbb7bb1ff62"
1031
+ ],
1032
+ [
1033
+ "e0acd9d2d907031b319b80121dc90699d003d220ea785d50e5033cdb3b1a03",
1034
+ "3911ba78d6e507485d6374b0f7d2e6198f6462a7d6d3cf046404a07af690357"
1035
+ ],
1036
+ [
1037
+ "3c57918ca254c0cb7dac251ef4e10c7d82327969552eae15d26c4c52660922a",
1038
+ "5fd5f5ff3f14e671548074114c72c48409df8a2e71fc8aa3c8acb506e2a88df"
1039
+ ],
1040
+ [
1041
+ "222ad8b61e219ba2b581f606b7c996516850a46a3db72fe1f72b5a9be6c324c",
1042
+ "72015a5e2db648112abd284fd867b59fc5606645177d26cf6e9a655c9912d42"
1043
+ ],
1044
+ [
1045
+ "3c86d5d774bc614469768ad38f7be9a53e9a233942c5c553b82e49aae684764",
1046
+ "480febea8229e130dedffff89c11f3c43e11724e6bd89d5566d78752859d41c"
1047
+ ],
1048
+ [
1049
+ "adb73bb8352d0c10175df371f7868ef2c9e0c79ac788430c480c0f7d85c187",
1050
+ "60b564785248111502e6f39c4994d6293fac22bc25f4d764b2fb1957d3c9bd8"
1051
+ ],
1052
+ [
1053
+ "3836ab8b46cf4f453a22532c886940b982029b29c42adca90ded5bf77e6bcb9",
1054
+ "7b15e91d6355f147b171a90b064a9d8b2d7bf3699bbf4987664c61c950d8996"
1055
+ ],
1056
+ [
1057
+ "12ed96af1a97c45ec31f1531e96f6fb28a03ba52ab8484545fbe0dddc97bb32",
1058
+ "6d1f522b6c6cad0940cff8e23decc72bb8d4164696af031415508b025aa8be1"
1059
+ ],
1060
+ [
1061
+ "27382994ae5878223ef802e9b4882f481a1b4008f1eec8484483471f7aa742b",
1062
+ "c31750d242b3975b0026a0e86ccdd17d0f680a8c6f53f197fc25eb1f777917"
1063
+ ],
1064
+ [
1065
+ "431677eba3715455bc235557518a74f3b111a88844ef13e159ad44bc16de3e6",
1066
+ "30000e1eb6a17d9df776981e65c6e500fded1ac12003adc9446b269812c9197"
1067
+ ],
1068
+ [
1069
+ "4b563e6f42589671579eabfa2cda5502b361c46a5ac8d45c8ed44741a925b33",
1070
+ "627bdb41678443fdd1aa607709e9699b652308615f4bea760a3b79ee0d9ab5c"
1071
+ ],
1072
+ [
1073
+ "2932fd3f81fc973ca9def6b7f1bb50f980fe589187cfe9e9f52ba4d356cf2c8",
1074
+ "1e6bfd00fa976c4770263a227048214c38850fe0f059e7b3d2c7871ef07d68f"
1075
+ ],
1076
+ [
1077
+ "e44e4f3d96d9dec775b996be57e57fdc28e7c68023109b221c414a244a0dbc",
1078
+ "58b1e52fa274812e5184e00e9ad812bec2463140adfb4bea3b2d665867dcc9"
1079
+ ],
1080
+ [
1081
+ "7fcb89be1f4bec745887bb891e53fefd665c53d00a9e74de16b8a7e1f7adfb5",
1082
+ "74af0b06633f779897e199609c71cc5649bbb65bc2c0abd4c678f0480c198d1"
1083
+ ],
1084
+ [
1085
+ "62a381ffb904ea3ff4d451d4c8459457cdbc3dc2fd2da646a95d8c1e90c0b7b",
1086
+ "1ba058658e09db9e319fa73de8ab4a992b71e4efc22c273725bdcab84e2a315"
1087
+ ],
1088
+ [
1089
+ "1b0fbb7a84c67e668450a54449c7a46261a2d355589f8b84ebfbaf9a77ee938",
1090
+ "44f8fffa33dd33a6146c35d196595e22cc4a215f61ee9197cd751400970a1b"
1091
+ ],
1092
+ [
1093
+ "78fe920bd96a356d4d95ee34adafe8fecf071d3107c36f047b4024ddc4b3eea",
1094
+ "6162f29607fdbec10181fbac6e57d5cb41b922c5791fb24bd28bcdd75d16c41"
1095
+ ],
1096
+ [
1097
+ "5629b849e026e65d119ac11821d7ab7efd9c52226f75c7427505d6818bb0c8d",
1098
+ "1539c0f90970ee8b490e45bbe5568170e5708521a0e59f976be680595906feb"
1099
+ ],
1100
+ [
1101
+ "62bc853f349bac8c6e5921d27ba85dbd9ba20a375d70a7bc008928f3e123b04",
1102
+ "6acfeb1de05ba43c3ef1a9110a983a320e77b3ca294abbc04aeca19b194f26f"
1103
+ ],
1104
+ [
1105
+ "4cf4bed663464418285cbae359b5d84ec76b5997d24f3640984c7663421190f",
1106
+ "941f818e3e3e8fb1568da85217d17f9250ebc948379014d900a7b1a848494"
1107
+ ],
1108
+ [
1109
+ "52ff3d9ffe9a302f6dfaaf74bab57c08027d5cb699a69b30830540c0a2d47a1",
1110
+ "987dd8876873778d933fbfed37aab2f7d6f669c37024f926b1edcb2ca55782"
1111
+ ],
1112
+ [
1113
+ "1109ee32f0bc53de6bfa457060b366e909d7c18061ec9845f46ac715496897f",
1114
+ "38f36f172bdfd454b9285f86e6bdece8fdffc95182c7d801b03c671cc55139b"
1115
+ ],
1116
+ [
1117
+ "4b4482f1d84efe23dadf3bb10df3dcaa251312dcdd604f616f1eb540e1f3232",
1118
+ "7c9c149dcae9135f940fb54482f9c3cd8193721643a6e23157b8020410d439c"
1119
+ ],
1120
+ [
1121
+ "69cb459b9e415b7581ca163611c470d875971d5d7949de732d1f0f200544a73",
1122
+ "a7136fa9dd00c0469863b7def3f83a5611ed628810d7e807e7a873da5a9897"
1123
+ ],
1124
+ [
1125
+ "b66a4e32ac9a4baa8f64780acd94ed3628b2b0ea874ba4dece629af65f9e62",
1126
+ "24328ba9996a24389658e3467b8b90dc3927ef8419fe28b3f55b1c1aaa51915"
1127
+ ],
1128
+ [
1129
+ "5ecc3080062dd451236de0e4eb91c5c75100733364bc5469f5fa76f79021ecb",
1130
+ "6da4abb9031a27b5be94529324fad8026e7d871570780081b0f424d4fe543c9"
1131
+ ],
1132
+ [
1133
+ "1e3146f00880bb22486d5bc73e54367d54251f4002bcf342d0393b05a4b9ce0",
1134
+ "23b6fb8e945d3205f633ba724202db5a99305f807137edf942cd60eef867699"
1135
+ ],
1136
+ [
1137
+ "2e1da8013285598b899f026c6974185db12c97b4c63509769d3d4ad1d18a4e5",
1138
+ "1e7e7b668674d1593c39d58bc7bccbf568208732b3519bc2cdf93db34366862"
1139
+ ],
1140
+ [
1141
+ "d26c3f389d81709506f184b53871497c8d36c5c9eee8e3737358204c1acba3",
1142
+ "34649c3d39f3b825947fedbca215ae30c5a5995e93b1c8efca4944cf85a082a"
1143
+ ],
1144
+ [
1145
+ "91300478a83595d548f32f259033291fc7d083953b0b8bde88c7559660c563",
1146
+ "e5d2bff57fc6551e9b80c06ac7314a71907cdcc66ce82f2cce721a670df10a"
1147
+ ],
1148
+ [
1149
+ "1f7abcb9d462c63ffe92aa56619ae8590089cca4d93ee3e5f34a63882452cc7",
1150
+ "7e9f85c7b7ca6e9a4f3a026d1048adbeef69ea9d876c6f647c257b879a81bdd"
1151
+ ],
1152
+ [
1153
+ "4d2caa1323012e4c83b0ad387308b8aef5637bc35ddd882e7f5e41cf2ca410f",
1154
+ "47150e808c81a540b6f8864e9d6636589cacaa516f82caaa96506edfbd6f0e"
1155
+ ],
1156
+ [
1157
+ "3c10a6083c38351deb3e6d1b386827d0acf48979b66b95249eb8700ec26b069",
1158
+ "47e34bfe561d903cffdd1d849b85aa3cbd31cb4a9bbd8cc2e5fd2f95016cabc"
1159
+ ],
1160
+ [
1161
+ "758bd54868eec045d0b4d3d2bc415d24bce13fee47cefdfda46425c109b657",
1162
+ "3392a7c66ea3bd7b044680bbe9f78ae86752097404c067e9d2572f55330df83"
1163
+ ],
1164
+ [
1165
+ "19e718e0ca1d2d6fadbc6006ee7dda7a385430e29f5e239cdd4bb7c3fdcb2f8",
1166
+ "5c68249b7fe03ea2e13481a63b6cd4bf74ce42009a89fee0b3f8f968b3ec709"
1167
+ ],
1168
+ [
1169
+ "28077f57ea62401806367e6d54fe45d02de5b072db787ffdcc3854e12a3e855",
1170
+ "14f3762689072f5fb41d03e94b01808c739f6d42b7b785b0e464100b150efd2"
1171
+ ],
1172
+ [
1173
+ "3b8a8cefd017363ce867265af3293cec081fa589fe561830f0078778cbd338f",
1174
+ "69ccf2383cb7b4f9c806d72535812483e7c5e9a1a5928529d64ca7e085e758d"
1175
+ ],
1176
+ [
1177
+ "77878f388d22161a2953e5aca6bac1ea480e102f329574b4b201640d44a296b",
1178
+ "7eb35706a90a03aff7c2fecca72659136547cee98038746db5aba16fd7178df"
1179
+ ],
1180
+ [
1181
+ "97332e6da70961f2ef31b7b628f1018d21db8db015922a301fca7d6fc6a8e6",
1182
+ "2e37b06f639fc7a82601b744570a2619e543cbfaf60e474107fcaf4686d3223"
1183
+ ],
1184
+ [
1185
+ "a81518d452d3aac48bf0386c3ff170ef4e684a4def242c964e129c64f4d647",
1186
+ "37506e44c85908ec7b7adda9547fbdcc2e3605151fefa77fbf127ce3bc938f2"
1187
+ ],
1188
+ [
1189
+ "e80336b2220b1d666074f6b0dac85353d0e4c2e8bd0f37055a2236a6a9fadc",
1190
+ "1cae76d73eda7a5964c5d9d3ad6748aff51f5543c56441d2fdb7b444a39846a"
1191
+ ],
1192
+ [
1193
+ "2c01fd8430ecb44e066f352c4f697fc9fda177dbe162f82862d7b9ea8c918de",
1194
+ "6e1dfa99640fdf5b30603d34c7c97c1aa6e6b7f3a2c52a21fc64b0fcac7d591"
1195
+ ],
1196
+ [
1197
+ "744e37b511cd0ddcfe15f3581947014c159de81ed055d15a13c7a2d1fa39f0f",
1198
+ "685caa8ff6979a6c63640ac638a3f9c75737f2031bd55322a47384357af164d"
1199
+ ],
1200
+ [
1201
+ "40e627ff84e1a7a9068b4368770f5956128a4d9e9e33e9cf5e24d9a242149fd",
1202
+ "2465bd6cb20bbdf810e2bc5c3c458cecf4f3aa163a7ac99c2579e5f33417f2e"
1203
+ ],
1204
+ [
1205
+ "5f635af7f554a17bceb6ccb6e637abf89ab6dadd399189b0a0390e87b1896bc",
1206
+ "2aa6238a69f89665646c0e3ca2ba5f709cc6e14351cf71e1b00ec45201417a2"
1207
+ ],
1208
+ [
1209
+ "5edad3063c9fa8305978d7e6a4e037c9fa519b8023c7608dfc3b66e5c1e8985",
1210
+ "49f405d07d7d01919da51159ecdad1031a5ac208c026fdfc14d38f633d92183"
1211
+ ],
1212
+ [
1213
+ "2fdf2e8a45858c12926a1f25a62255fb2d02d0149a15ef669f859806683e649",
1214
+ "61cfb686bb31e2524470d4ad2ae09e3cc91b16305a21d748098feb1d8ce3b3d"
1215
+ ],
1216
+ [
1217
+ "ecdbd7c37f1dffa3943977278da3bb429afdf948b4ea6cdebace3d3be82381",
1218
+ "190b67fb34f7f3ad6afd3d6b6427aa327547d8ac0fb4deeb0feeba1f63d6c60"
1219
+ ],
1220
+ [
1221
+ "233021b483f578dfa5222f8cccba5766ceee0ac65f6d4a3b1673b302a21fb3c",
1222
+ "7d4b6d44d175d4b593f06f5a6dcba2cdbc4eaa2097abaf613123546866cf4ef"
1223
+ ],
1224
+ [
1225
+ "42db4e953c2a7a743de9fe20c5798f2247f51db4eabc6f40e86c13909a310ce",
1226
+ "12c1a0764a0b9f3666e431923ce15e7fcd0ded5ab153f0b48d362cca1604e65"
1227
+ ],
1228
+ [
1229
+ "30d539e2b545fb957e40e2255f6463b52d227c9808472cee6a3d521aa283a44",
1230
+ "5f9eccf747fe6313570f99e845db32b40070acee9ce9e34da7f3c29ca53a07a"
1231
+ ],
1232
+ [
1233
+ "4bd64e5ade3e2733580a6116b4af328751198e7128f9acfe3a3496b545efb5a",
1234
+ "4d584768900dabfc0dbaa086632b8051bb3905ef79b84d96c01514441d0cc93"
1235
+ ],
1236
+ [
1237
+ "62d6e771f02e591557197d13c3e77dfa2d1794ac1808407bd8227c4be31b466",
1238
+ "5c6f5607c1808e899ba36a425911fa8566b7ea9cc80de8a80538c0fceb837c0"
1239
+ ],
1240
+ [
1241
+ "5ce406218cb2852b1d2fe1836b19462f664631785216e87ffbce26030e2101f",
1242
+ "5225f107743c255ab50e7be4a090fe39478d1ef4ff558468559d8cfa87bb94"
1243
+ ],
1244
+ [
1245
+ "670286486e8dda3dc66b0ed3149be7697d3e06c8279844079daa7e42d5af728",
1246
+ "26becabe7430380c56e320f5ae3329569cae7b0af06fd5327ee23979d200eb0"
1247
+ ],
1248
+ [
1249
+ "3ef448df33a4394c43e93e5850cd0c5a6dcb18ae1cd865d00fe8ede9336a9f5",
1250
+ "56711f6ab7e0e4f7365ac34e284ac2879f40208c46f6febcc1dcf7146ecf015"
1251
+ ],
1252
+ [
1253
+ "4b63fc130288e92f2d6ba238caa7a6364804e29829ac037c57df32fbf762bc3",
1254
+ "1eb8c80af55278b4113286c038fff2bfad2da62763bb03426506b869139da0e"
1255
+ ],
1256
+ [
1257
+ "4e7e998557b29a95f805a6e2e26efc1e970108272d4755738c04f28572295c0",
1258
+ "97cfcc2f447bde61bde71049d8200a74a3028b21703bc139143d81a3623f09"
1259
+ ],
1260
+ [
1261
+ "574b67898f02964c408f68e9470e7b615be037e40b824e6617f89cb56c21219",
1262
+ "49392d5f8e6740a1b0b7444f56d7a17363f8656c6e4c628678c86223f2e46c8"
1263
+ ],
1264
+ [
1265
+ "7e8cb50ea5d5c1b09e219e7305bcb601d99b6d7185b1c388aa8e36fe1e56554",
1266
+ "47fefa308645455c12ccb5817da338f0c4f423b341aff4a9d158891a4fd69ba"
1267
+ ],
1268
+ [
1269
+ "67266dea9e71b4ed2bf24a597a823dd048cf31e725db511edceac72998c9ef6",
1270
+ "39babd65850befde1f7c28e41dbdbb4caf82bbcf3bcb5b33161f1c2960b2d8"
1271
+ ],
1272
+ [
1273
+ "63e99c2cb9c74eb9227d48065e27abb8f606df8fc83b2c44e4ea38b046bad2b",
1274
+ "60494a53dd13ecf34e08079d343c88fb655d6d810785af81f08d5aa9bcdcf9"
1275
+ ],
1276
+ [
1277
+ "3cf0600b0f5a2a4eb78c487cd385350e8c7848e3f6983231881d7f1bbe28543",
1278
+ "56dee4288528de609976ef6b903b652127c37b0590e91a2fdbebc3f11df2628"
1279
+ ],
1280
+ [
1281
+ "758f09245fa4b8b23d290ee2b3bfcede199b4fdb11f3cf2502a8ceedd61b129",
1282
+ "622d9baadfde781e985d9722e0a04715666769a4cc7a9bea0b96d6386be1746"
1283
+ ],
1284
+ [
1285
+ "38e1a45b81492aa95d7abea2b08b8c14dc0b8a41108b036871fb737910ae18c",
1286
+ "145c611262656385e5ed6243568cd3f9f59dbfed7a01ba11e22bb8bb272e08e"
1287
+ ],
1288
+ [
1289
+ "206e54ca53a2f155bd4fc45bf2edb77798ae6623defd4cf22f2dd4a7d119dad",
1290
+ "6c94e7f0825ad81680e4cdbcaaaf4df806d57a0d1fb2331926c3fe2b79d22e8"
1291
+ ],
1292
+ [
1293
+ "56e98d2862893caebf66180e84badf19ffc8b53041eaaa313ae7286a8fac3d",
1294
+ "526306f9c01afd6e0c1198ea5de17630f5a39c4ecd02d8e6f0d613c355995c6"
1295
+ ],
1296
+ [
1297
+ "4fa56f376c83db33f9dab2656558f3399099ec1de5e3018b7a6932dba8aa378",
1298
+ "3fa0984c931c9e38113e0c0e47e4401562761f92a7a23b45168f4e80ff5b54d"
1299
+ ],
1300
+ [
1301
+ "450cfaadfecdb8a2fbd4b95c44cb1db723ee5ac9677c9c188b3d7c8eff4ca58",
1302
+ "1a552bdfc0c81be734f1f6ca9a6dd3ab4daa61c11fb53ebb7046eee25d617c7"
1303
+ ],
1304
+ [
1305
+ "6fe20e5c8a8004e33eafc84d16ef770f2f0b7bace19adaaa150f987d295a34d",
1306
+ "28a35040a2ebe9a14a162d3208d5eabc6e2f3a8310f926bd80be65aa71775e2"
1307
+ ],
1308
+ [
1309
+ "1bd65f45a35bf62ae8f9ffcbd7de2976b90518b6820c219f039c50043bb1edf",
1310
+ "fb5f0f8659f9b6ed7cb0ddd7999506d0c20b26bbe69d1915a31842cfac41eb"
1311
+ ],
1312
+ [
1313
+ "4ba4cc166be8dec764910f75b45f74b40c690c74709e90f3aa372f0bd2d6997",
1314
+ "40301cf5c1751f4b971e46c4ede85fcac5c59a5ce5ae7c48151f27b24b219c"
1315
+ ],
1316
+ [
1317
+ "21cfbc678f5a279ebb6ed124273c8df37eaf12a2d04180403ae6b5ec0b1e1ef",
1318
+ "4478ed6a346d899ad7b0b10350270aad39ddd5b68529297e4c91a54357f0a7f"
1319
+ ],
1320
+ [
1321
+ "350bfefbe3d864eaadac9cc1195c14159bb736be743aed7380d2384cadd2046",
1322
+ "5e2a4b3ad0e1d7b9b8ef72b10d68a80e5ee691d7db591fcfbaad6240d41da8b"
1323
+ ],
1324
+ [
1325
+ "529acd569127f73c8d34345f87e96cebfb48ee12a00a3861cda209337ed94e6",
1326
+ "3120671a89b705e5bfd99b0e7fd2118b4914a3ac309b3d74527cacb5ad7491"
1327
+ ],
1328
+ [
1329
+ "55d3d7956a97d10e65a4d8ffeba40deaf0db0b57f8e022cdb3df6df613f5c6d",
1330
+ "159e59a6f92f48fcf85aa96c1a03749a4c4e2cf9e2bc94dd36796daebd9b8b9"
1331
+ ],
1332
+ [
1333
+ "405f019ee8f2e972a005c549b0884b5051f63d1e78480b73208dc07d8c65a1f",
1334
+ "4301a3d0c285ad309ff24a12c100ead7f48ba1368143712f32ac141ab4d9e8d"
1335
+ ],
1336
+ [
1337
+ "376d59b298d982f02dccad0edd5bbd4e5e8fad7898750675ed0856850a7babe",
1338
+ "5233b12bbc50564eb61cc098a17d3d97f06ec7a230380e4c5d3b725cc318eba"
1339
+ ],
1340
+ [
1341
+ "2f55624af6109ef04b2ed035a44a904ace8627f55889f011f768aabf4de9a38",
1342
+ "7f64209ce7dfb63337ccf3d8c14f4093295f86996cabfee23b1655549aca089"
1343
+ ],
1344
+ [
1345
+ "3b8965e942bed2714bc2e685fb103496e1e3595ac6a343d6df45fb5ef6979ed",
1346
+ "5b7cac7a165cb69ae103dd9052fb39c00ed0aad47989005aee53972d82d45b5"
1347
+ ],
1348
+ [
1349
+ "7abfe3accdec1eae1a50049efdd9a8eb7c2921a08e8bf1fe606e9d5a4039ec4",
1350
+ "3af178e7e831f8148244d2d2b284a32991852db6212ad0a9d77540ef648a5fe"
1351
+ ],
1352
+ [
1353
+ "4983196df6ad7d6f0a8d76f86af3863ad8611374a03fc0fd00793181dbde9d",
1354
+ "204c1f91b70f975a21d24a8face664e496f00f602daaafa69a3b56098a4cf89"
1355
+ ],
1356
+ [
1357
+ "79e2b91c1531a3b16dbd53e72d94e16bf265cbec261658151acfaea3718ea72",
1358
+ "3d9bdb47e8b148c1c5e9e694ffbc2cf71aac74ae1a85e8d8c3f77e580f962eb"
1359
+ ],
1360
+ [
1361
+ "297efceec61b3be17565843cae465c52524b4ecd9331a4170f54f7de8c4556c",
1362
+ "6ccef1733624cc8b973ac63dd54e7a53604929affe81c3439525ae5ed6af993"
1363
+ ],
1364
+ [
1365
+ "44f04b1966264a23ccdc870c8563ad2efcd4c8087b5469b90e792287a5581c7",
1366
+ "1c417f0e9829fa3d3cbb7c3cf4dc7aac04c5bf66ff3f86b833a42c533aed1fc"
1367
+ ],
1368
+ [
1369
+ "6ff83f5d8b51db3be0bda80eed2e2adb7037f2f58f705e88f0f98197431ac26",
1370
+ "64f59b8428894c2b7afd740866065ded42e716c7d48accd3f117f22768ed9fd"
1371
+ ],
1372
+ [
1373
+ "14aa8187c9559f77cd1cf96b2dfc949182529936f2b0b4050ea56e134073b24",
1374
+ "5f36508c68b1dc586f3fd3f4e2bd29c6d8258491b8a6aa19ede811ce0d3d0a1"
1375
+ ],
1376
+ [
1377
+ "95e8882a68c5000d1c2be7c0b43e7f2a6f8de906485241f0285a5c73a27a83",
1378
+ "1e4cb67207ab73bc1e5d19fa2146fde6d03021393b77a55df4ddda1fd28f5b1"
1379
+ ],
1380
+ [
1381
+ "2ae0704dacb3da47d564514b4c3543505b403ba09a248c6e74593cba1867ff5",
1382
+ "5a4b5818088dc9ef4066b90a8893ae80fc89584f987ec1928ef9d72cea2bd67"
1383
+ ],
1384
+ [
1385
+ "61a10898a76fb99989e51c0e823cb60b95ec7ccccb917c42b2b28014f5fd94d",
1386
+ "23d8ec1de45366d3b86c64c2da05a2ce3d171adf52ca5522e652ffd0eeee795"
1387
+ ],
1388
+ [
1389
+ "79884133c879cf07734976fd64de220c5a972e04c2a3afb74c362d6c3beecbf",
1390
+ "2aaa0e6d4891b792b5643fdf09873343cd0e3fbba3cbd0601b481a4083f32b6"
1391
+ ],
1392
+ [
1393
+ "45f73d2fa82be6c5ccd0f62d2237efe8727c479967d27cce28e42b9a44bad5b",
1394
+ "2fa4932215f72d56d8be5205c5851c9b3e5f2a14468e4a7acace5437c6b27dd"
1395
+ ],
1396
+ [
1397
+ "37f53f771850f52f9c8f87b53c6bf0c93c2bed76f5fd1d5697356d0b2325007",
1398
+ "50f1a052b79b446fbc7b93ffa1a4515f6c3be3a76a2b0bc5eb8ff327549960c"
1399
+ ],
1400
+ [
1401
+ "71bd6d23e0d2f312d47582efa609101f15b9ccc571fca8ac4fe3457c67fbc9b",
1402
+ "3b3fdf86bd4c7fc26d60540a6439b4d179dcbf7b91efb0ddc60dfbff9a148c6"
1403
+ ],
1404
+ [
1405
+ "78219ba049438385b829c13a4993874a4a326c4143de0dd581c7b9956f99b06",
1406
+ "5505f1268dcdd4ee01b77abac3bfdcbf3f0513ab097c69ff777b4a631aaf256"
1407
+ ],
1408
+ [
1409
+ "b81e924a86536dcf68bc5a2ca2065a61103ba6c9eb0ae4cf8cce9dbe286f15",
1410
+ "653a6dfb51acfe8a844fb8362795e5549d424aed88d3a090366a44f840b5b83"
1411
+ ],
1412
+ [
1413
+ "441c0d7b7aa705046dc0e07ba5f33a7d9df23f694a05192ff8c2d7be2aa3fdc",
1414
+ "4c06568c0902bb99d428bfa0a946ed0f0ca0a51fbf07cad88e06e9c78e38a59"
1415
+ ],
1416
+ [
1417
+ "2569c8c78b6d6b92533f29f767c95720d377fa63ad5a3b9827ee0a74b0488aa",
1418
+ "4b59c81d3cfe08834f946d9d57614f5366e0bcd9349475aaaebe01341196fe0"
1419
+ ],
1420
+ [
1421
+ "3f2fa285a0471647b214eac652bbad9d58a9f2dd2e812aff0210d0d8a6eb32f",
1422
+ "4cdb18e1c2848c2b52c1a6557165bd1a8f55c2f7562f5cc0b326f73c25b696c"
1423
+ ],
1424
+ [
1425
+ "5bb5141ab4fcc5290ae9151b8045a2cd8391547ce7b3b33cbbb10f8fb538092",
1426
+ "5a36bfd52acc6a83a9913b937ec086cc27fed030b5fa70dbc5d3c12c9515f56"
1427
+ ],
1428
+ [
1429
+ "3f3fed272edf91aa7f8ca5d70005d390fbc67830ffc69c5fa3ae17582d2771",
1430
+ "459057e0883c44d8776fa217405f443e5954f08c4a5db68e437becaa664a999"
1431
+ ],
1432
+ [
1433
+ "5237ca6656237a717a739a4509f70db1b9dedbb6cd232f60c9bd8c4563a6b1f",
1434
+ "56c7799dd02896dbe7d69dd8bb9718270549592099569d107b7b49c34bf5a49"
1435
+ ],
1436
+ [
1437
+ "1cf6b8499ac881e0b2fc7def9bc1a28937033b2fc52de99e75909a620c7a281",
1438
+ "5769cf4f735366fa386b6858043dc99a100f86fbc77b16d57d77766197ba27a"
1439
+ ],
1440
+ [
1441
+ "1b74b8a6b86dbf9638cdb0601e1a332b8d880753423d38c3394902c57f15e40",
1442
+ "6bb2dc10d2ecbb913219d0ebdc8d3337d644ed8b6c4e70637ef4c7e50887488"
1443
+ ],
1444
+ [
1445
+ "61e4da415661bba52a4737e2bcde1a837787c4796b2e1854778534f1582c29b",
1446
+ "27c43e632cb7652e8508c9c38e3b4ad0d3dd6ba748d42dc84ec2685e64b9aad"
1447
+ ],
1448
+ [
1449
+ "7c460a204d23f20ce86596dae6ac9b36734e4a9f7c5b43262c97a36c6a41c6e",
1450
+ "481a11f9300ab4c4bf6924c5ca884728cc361247377065920966785d043fbbf"
1451
+ ],
1452
+ [
1453
+ "124ff5e55e4effa40daa5b9618d75c49c8b6fad95cbe8c0bfdd83cb9bed8316",
1454
+ "33a2ea15d0f71f58a00de71acd7f22ccf9002115e49dd1f7631faa0d32f9987"
1455
+ ],
1456
+ [
1457
+ "61c9f8fc86715e95ff43583a865c5a6515f93381839d557ef884a68637eaf4c",
1458
+ "5877daaa42bbab9083b571e12648a9d62ced4470d71653092b6546f4a5acceb"
1459
+ ],
1460
+ [
1461
+ "70a6b9a9e5d1fcc07dd9ebef6d8f5fcf04c6cb34932d0fe2335330ac6dc8d3d",
1462
+ "3f0cbd332ac56922e886656bee74f6e9bb4bb88f7af7bba9098678af1f38fc"
1463
+ ],
1464
+ [
1465
+ "41db8a0f1ea78443a39e08a54323743c8897eed1ddc28f41aec6f2655040d9f",
1466
+ "7d4bf32f8f4719c2e4af8b7889f3b65cfdd033dc2f971798a12170f2b26efce"
1467
+ ],
1468
+ [
1469
+ "62f035e01acdfe841104942d6c8c07f0fbd618cb85998ea24bcc24cfac1f8",
1470
+ "1caa886104b7d753fda93645a746989794cd825c62473b526ea34b3d51b5771"
1471
+ ],
1472
+ [
1473
+ "441c6f016d270e86c19843727b83b864cec060cafc813b23d7e41e5abb1a60a",
1474
+ "29fece4e40400f3acae0586f4fc8ed535e805e472123ec38d662d8a0b01c086"
1475
+ ],
1476
+ [
1477
+ "2c791ba0fb0b66177815c98191fa6188dba9c795e34a7c3c8a19086215e3cee",
1478
+ "11123151389d4b330db6a665a560407e7cd8c3807c749e2b0cffd9c3074ba77"
1479
+ ],
1480
+ [
1481
+ "5292da4ca71ae75ed0554c267747e39c7a129b3b863e1af3ebb3e368439c4ea",
1482
+ "63af6a5016deea8cc674c44f16c63c1db31f09af4fb4d2ea7917c28116661fc"
1483
+ ],
1484
+ [
1485
+ "3367388d5d1b7758dc3d92e244f227bb8a54e3d9909e7b7dd62ab5965e3efc7",
1486
+ "7ffb4833071e4b03ea755ccb9938487a478248fe9b1158a08f1ac298801c092"
1487
+ ],
1488
+ [
1489
+ "95c863314b7f18090f8eee602403be823a367a1b416d54c32e5f914e67d922",
1490
+ "159c2824f899171deee23e0ed520d4825bd667983df0a8d45d3a1f7156d91f9"
1491
+ ],
1492
+ [
1493
+ "621c6e08b3c57404644ad49ac7629832c141273fa1f323781b3395393fe985c",
1494
+ "65d1eb0140652958c4371ebec791e03317d6b2e689d90e304666f1b610783dd"
1495
+ ],
1496
+ [
1497
+ "54313129bf13993952cd2b31ed06013aba85e74c1b8a00e062031f32188a84e",
1498
+ "680129efc9eb8ec07fc180e8f6877e5f0f9f44e3000a2c586ed4ce49d12a313"
1499
+ ],
1500
+ [
1501
+ "21ea57a1c8286bb45872e78617853c47b89091670ba51c124afa3362e7260d",
1502
+ "7087e5c1536df233ec9bfe2f983e8d7622892b9bf64c450c9823898e2cc2fc8"
1503
+ ],
1504
+ [
1505
+ "3793b05b99e7a57d88db4ed0dbc3b771285abcd9052da50f88595354409f3f3",
1506
+ "12164105041c056f127e737c7cd63981e05f246bd2b6b65d1f427019c7c3801"
1507
+ ],
1508
+ [
1509
+ "befd345cef5fcae22ac37dacd6b9128cc58cbba3e3fd774e11b421c2ba392",
1510
+ "6209d25f24f88f7876ca604db23d05f78e6b3b67fb033f2f1bee221f352b8c8"
1511
+ ],
1512
+ [
1513
+ "15fa536045fda4c65ff74f10b4e669ce88b9996c6772288289d3ad725987fa6",
1514
+ "30e0c2124a35e265e931ccc66ce5ac3697d982814beb407144ff6762cb691df"
1515
+ ],
1516
+ [
1517
+ "38b795bd77ac573576dc204857a488cac2cce19809882631ca2069598c577c8",
1518
+ "786ba555d55ebef688b068bb9186a34a08cb00bdfef51619bbf911890ae9a13"
1519
+ ],
1520
+ [
1521
+ "6c66853592196c3eb8d9526dc155205e2c64097adf8684bb0e15eb460ce1c72",
1522
+ "1bb4ebf654f4250c8dd1061a4e1b464b31a8a9999ac9960446ef8108a66871a"
1523
+ ],
1524
+ [
1525
+ "5b08dfbc87ad9c00b88e78816973ad2f9c10c70f2156908892cc7b7a2a1fd30",
1526
+ "1151f407a77e2556073173d8f5c9ff561d8a23742121ca15f7d0ac391af50ea"
1527
+ ],
1528
+ [
1529
+ "309190eba106aa6ead54b5ca5817969aa68b4b4c627700799a49fc6bdd32ba1",
1530
+ "505b6a2bc7b0d78ca6ce2abe7dfb7312369918a4599cccf8a615f6701cfd851"
1531
+ ],
1532
+ [
1533
+ "89cc205966af08acc8910d563af7443d5dfbb5d88dae79c013c678c65dcecc",
1534
+ "1f8cf955694b246a423ac725791231257b88936e00347ecaa1e17045c0ab540"
1535
+ ],
1536
+ [
1537
+ "480086b61a80c36cf1e1a350baf554e58ee8d9333186b70c9c512fb9e9d5a84",
1538
+ "511edfe58f8d36a6170df743731da1ff525cfd5108be20e30ac4183d1281570"
1539
+ ],
1540
+ [
1541
+ "3caf14fb1d2e90a13ad4eb091250fe37133aabf6029633e905e5a93ead41dbb",
1542
+ "49122aff6059dfda19e4b973aba5ebe3804c91728936c6381c1ed1ea9380920"
1543
+ ],
1544
+ [
1545
+ "66d1b8fb2cabc46cd79741ce1cb7326077ad8ea3227a6427244bdd3806bdadd",
1546
+ "4a52eb74f4d5371ba3265dffd61c844f9e68d4ff0b44dc4936182f9280bb66b"
1547
+ ],
1548
+ [
1549
+ "373330c5afd53c31257fcc9050fef873e15ea9f81d9810f30744309b04e02b3",
1550
+ "5889806607b3dc97a9c5b0c8a2f16d1792099a22866b879ca480cb89a11ef5c"
1551
+ ],
1552
+ [
1553
+ "26840d0ec69a22c6818ff64b8b14633b531508c866e21d1dc9239778ae9e8c7",
1554
+ "157971f9a6e3a24d3b307be0e7c8cd352e2eb5cad33cf276270c0f309ee63fc"
1555
+ ],
1556
+ [
1557
+ "ebb84848f1c38c19a754d1b5d9460e39624dadbb30800987c9419c0f933b9f",
1558
+ "517b297cf32f4064e6d6c8e761ba8db89809604a701c7b3aa1a9c6beb370ea7"
1559
+ ],
1560
+ [
1561
+ "25780380bc0795ed0dca727c55240f1d63593e552d224adb40df2d3721c0f66",
1562
+ "10215fb5a893e0275e9f1f66b217dde35addee91ed0e8f7d79531a2ff57b8c8"
1563
+ ],
1564
+ [
1565
+ "243e1581cd1abfbf18c31c19a4c3d1cedfe69a40bb57b607c9af2717eefc742",
1566
+ "1296c27929f14535718c3a4ebe045f00afdc60afc74c7d398d8ce1b6609dc0f"
1567
+ ],
1568
+ [
1569
+ "48babb8649e054bc8e0b902c89e6940c265f48464520649502ef1064eb94562",
1570
+ "3235be7852b0526d1a16f6969ec0e5b0e09cedaadc65863dea4e47f4f398264"
1571
+ ],
1572
+ [
1573
+ "592db7c27e63489ef4bcef2eafce89f40067cd9a1ba48bc3dc76b5fc62ad9ca",
1574
+ "48b7711b570cd9ac65910e75e752f4b751fdbfb4091a28f59b8c046d3d9f8bc"
1575
+ ],
1576
+ [
1577
+ "31d133456222586ae42a9ec7ce8539ee04afbe0b2ed00a2564dab0798d9b55d",
1578
+ "a77c52fa1fd718db5c83e7fda6d7d4d9aafef9ad95cad621470f2b753729e5"
1579
+ ],
1580
+ [
1581
+ "4651668379883521e7983aafcb93811b4a72ef2975b3277773746708ef3e3fc",
1582
+ "512507f3f544d80ba5d47f73b571881e8d70d7b1d305b9704bdad036b7abc47"
1583
+ ],
1584
+ [
1585
+ "26069e359b2e847affaef604f772f36224608b7642245d0e643889ed231bddc",
1586
+ "75ae1ec379f074ebc91270077c74b4d34347ce183b676b4dbe100bfff143b9e"
1587
+ ],
1588
+ [
1589
+ "3196d01d1fa11dc3803b4813c4bbc6326869f61410f2bd14bc0f570d875aebe",
1590
+ "20313217cac79875bd2a503db1e86d1e5559911667a02524759344468d9561d"
1591
+ ],
1592
+ [
1593
+ "483256607f75f06fb126addc60cadddd602154cc4782bcc08351a48745d0b97",
1594
+ "2950a7e500ebbe9775f08be37cc2e62ccf9030de18948d1bab07a4a9173f75d"
1595
+ ],
1596
+ [
1597
+ "65f07b6050a2fc6eebe2c29ffa62f764060f7f9d3c82d2cb5e4e368aaa442c9",
1598
+ "562c9654b646cb84a213b41de203c871b3eae0a05c9c105a66a53c319c06373"
1599
+ ],
1600
+ [
1601
+ "284870f6181c43f3b01d94baa9c5b6ada0deb861145523ad9169580eb7bed35",
1602
+ "5e03e6c40c1cfa3cafb01fd0622349871832a9d35499d06408a83edc1b76d02"
1603
+ ],
1604
+ [
1605
+ "32229810a52137f0e6c3d37595c46f6132822d4b05f42674b48d7a7ac3ad85",
1606
+ "7babde959a0cf2c53ee59fc52c77c3adf899453f077f441965629f9aead30cd"
1607
+ ],
1608
+ [
1609
+ "1ea8b98a6b85e74e0a2fbc18b206e290f3ed94ce99ca665e8e2351dfade990a",
1610
+ "478e93c4724115fb1648c8d5347422adbc1a0bbf962b2312e14aec80e1be742"
1611
+ ],
1612
+ [
1613
+ "270cbaa08c79140c85b864475a0bf569cc03ac785e57f543dc444f37ce746cf",
1614
+ "3a9b8d894016680ae9d1bf3deb931d8987d4d8d8bfed45b81ccc595ec79046b"
1615
+ ],
1616
+ [
1617
+ "6943922708b8ae5b40dd7031ef2e487abc4ac39a3591368285e83d6c9c51f4d",
1618
+ "5f157c37d09634e8cbfbef90ea50af59815d011e419a691c67ca3402b5efc33"
1619
+ ],
1620
+ [
1621
+ "48ac6a80979fab4912cf0cb557d917a0bd68825d8658ec100496eaae6ff62e1",
1622
+ "2b6931350ab183402e39476340eb1177b7006f7a552915581e29a79bd7203a0"
1623
+ ],
1624
+ [
1625
+ "e3adf9517d92ef22d1e2a787740a292ba32d5ca69faa9e8675f63ed816dce5",
1626
+ "36bccf69bb12dadd610145a3399213248d193660d8dc90a2e206f23bf2c7997"
1627
+ ],
1628
+ [
1629
+ "5e6c8ae5afb2fa470f767581f3d578cf6a49547e4b78665edfd45776948bef8",
1630
+ "6cbfc11953dd7e195d2ce74e52a60df524767b44c4608bdd755be4bc85eb74c"
1631
+ ],
1632
+ [
1633
+ "15a576a1242d39300f0db3ad770983825988da0457718ecd596c63a0a0eb4a6",
1634
+ "69a42e5f6f5a63349b57683a4609bba90f556a1680fa1ec3b02ee7d3211f903"
1635
+ ],
1636
+ [
1637
+ "274cd14e4fbf2ed07402e8ad8075b320c5f76b7ea45ea36af523e95ed63ab50",
1638
+ "6ca640f9557c5f2d8b27f6ce95b108880ff4e4816b26b70b6506114389ce656"
1639
+ ],
1640
+ [
1641
+ "4d8284e132e2fe81c5f71be1e3c79ab51b229e2c56c323e207cda179999d123",
1642
+ "116cfc00e9fbee1cf16af6282123cdf20eed13021c2037ef4c86f94eb6e6cba"
1643
+ ],
1644
+ [
1645
+ "4056194fb5643e97991942ef5b63cadd89080bf57a01489c4398aca03f0980a",
1646
+ "2e2cddb434fa6f6da7859c3d518f0ced8795eea043a6c9613fb3e020103339f"
1647
+ ],
1648
+ [
1649
+ "5d119d5c5ce532afc0875e0ee9b026d878c8773d34237f90a0d0670da6f01b3",
1650
+ "4a79fc025ce076b6a4742fbcc8cad313d0a8220c58024a41a5a674c0947e64b"
1651
+ ],
1652
+ [
1653
+ "11800ce4061d99b9d53fd4138802335258f7798c5a935c9979f5a949ce1d483",
1654
+ "36745a4741a5c7290eaa8f2a3f9ec955ccb7ca323272e5d35d35c2a724ffac8"
1655
+ ],
1656
+ [
1657
+ "4302525bceb97fa642fd5560a4a39fba3d2c06f68e6aff3332ff1854439ebb3",
1658
+ "e31edfd081ce82f8177b2d7d96e69851d09e908c2517114ffb37ee12c0ac64"
1659
+ ],
1660
+ [
1661
+ "2f5fcbb96f0a66fd3bdfbcc78bda361cb812570f50e7c476533d56eee01c0e3",
1662
+ "527428a34855b5695c479d8fb7e831a299f7897f36682a74169cc60d160df2d"
1663
+ ],
1664
+ [
1665
+ "52167df045ad0dc999b98de3d035aced9da4434211149b8cf4bf20e774580cf",
1666
+ "19051d2a1ad3fab190c5dfaf45188b49b4e90cca22aae54f0a785562d3d3f41"
1667
+ ],
1668
+ [
1669
+ "541b5332491dbdb2b6f6bccceb7634970c046963891fae936dd950f4432b961",
1670
+ "78fa54da996a51e3a9c06091d58c2405a806649da2bb1f323807c4eec50eda2"
1671
+ ],
1672
+ [
1673
+ "5f11e973da659b7738f87ca5bd4f3bd02207dd3c8d978f0d3e83fe81030febd",
1674
+ "137aba7027069f62d25caed416e13537687bb1428e71e5f0a0c52d52f2e65bc"
1675
+ ],
1676
+ [
1677
+ "15ec941ee6c2110b819b5541be52981c09d83484c9dc735c43f39f5778718b4",
1678
+ "4561826142dc5b56acfcf605a78a4090472bb61235bcd605a765e05d0a7e549"
1679
+ ],
1680
+ [
1681
+ "68ba398736d659522f484406110b43c68158bf4992094acf797a38979c587a4",
1682
+ "7c1d9e1702e28afddf22fed7a7a79df4315c174d0c6c4f4c75bc77d9b56777f"
1683
+ ],
1684
+ [
1685
+ "67889cea31c81a429fbae643a4fce0ecd690a5c32b99397e39ed6d7a08702df",
1686
+ "7ea277c80b671146c9e455b98f42f45b941ac95ca2d15c8fa9ea82ee9b45e01"
1687
+ ],
1688
+ [
1689
+ "596f2c68390ac26505d3c2eca5c77d46f8f3acbed192a2649d8c525a58d2334",
1690
+ "49f3bd8c62c610d5c19c52d970bde24b270c4ff7ae900453b909e72483974a0"
1691
+ ],
1692
+ [
1693
+ "567779fb8b0afe592cea284629e3621ccfae3c4d7d3dc559c9fed750591a395",
1694
+ "6010bdc33f1cdb374facefff537e7910b72a1120502f312a7ce41df0d552ddd"
1695
+ ],
1696
+ [
1697
+ "cebed0233e810aa6a29a8b0829d28f1c92f303d14dd73d6b12da98117dfc7",
1698
+ "4bdd51e1192a00df23aa8d0673e4915877ca41ddb8c9eaf21d39dd167fde7b7"
1699
+ ],
1700
+ [
1701
+ "4c7085f066adeb6781596771972b188177e63f2e2b3788d03e033cdd5af1f06",
1702
+ "2929ee89f525862b0cedb3ab9b5166e1680cb77fb4668f10a6a3d76b5434566"
1703
+ ],
1704
+ [
1705
+ "760e341bd836899c226176f47685f69438270c150c6fe7744cd723cd1e72359",
1706
+ "1bf09f2f1aac1a10ce8bdf20d5d178db747f01a4aa0aa8a5e4bfeef562cd94e"
1707
+ ],
1708
+ [
1709
+ "6016b94c00b54920027ef64902c61478244b1936337d2ad41d9a8d43dd6a4b2",
1710
+ "3bf3dd9bce7f6d6f120de87fcbce6219340b59c2c1d75ee0d45105d33aab1cd"
1711
+ ],
1712
+ [
1713
+ "4929e44ff692eb944d1045bee96e750219cda3bda0500029f0df49a1db30b5b",
1714
+ "2e138dcbd092242699004b4ce98764ffe4e892841f56830af298581cd1e523f"
1715
+ ],
1716
+ [
1717
+ "5972d0e526311bacb70a04e88969b6c63c7399b578f0dc28bbd00d65ef01da7",
1718
+ "76b22bca9ac12d26530e7b0757e646beb3bbc5680d0f3f82fb8ee57ed4b5e39"
1719
+ ],
1720
+ [
1721
+ "2ca0a42a26e26934ca2d48db960b4719113d87c5e57fb437d557c5eb4e03ac7",
1722
+ "62778c02561d4ec5d83a132afd7763a8349207c6b5d01fba70b56ba660cba2e"
1723
+ ],
1724
+ [
1725
+ "5137ee53f076e21a2c23da09f63c0d275408c31e4634a6b6373be5cf13e6c00",
1726
+ "14fb446c077beb78e04de3282a63bfde12f9af85caaca4ddfab506cee31c0c1"
1727
+ ],
1728
+ [
1729
+ "7d944853d1627b63f560aeda33acf640d35a4ee4d23a744957a2dae9d5b7c6c",
1730
+ "bcb411a210710acbcb9ea12680d89e3e4e652228b6786d3886e95f4d9e6970"
1731
+ ],
1732
+ [
1733
+ "37d412c2ffb173a728477446b60b2b702d07a5243cb5fc8963e623a5ee75843",
1734
+ "672c79968908f92cd0cb0b4c65ba86e8f359b015623a89441e1bf859bba84cb"
1735
+ ],
1736
+ [
1737
+ "5b37f472aa80398bff12cc74c8ee784c4fc89757292580d3a498bff17e9f114",
1738
+ "7d79da1aab9cfef58a5f3d1c9ec466956a45f8d2af0c1da6dd4c93f720fae6e"
1739
+ ],
1740
+ [
1741
+ "25c09b3f1188c562571536202eb0f5fc4b9a7590417b8ea58b4343685d88a63",
1742
+ "3d5b817c73b37e9a1d24ca923351359b42ced2f3cafbcac8c2d6322dc767bb"
1743
+ ],
1744
+ [
1745
+ "32e60904e73f9756f71e0a918d302aeca17cad4acacc81bab15702ab5ff78f0",
1746
+ "bcf4c0204f8275072f98a65b09ac58b87cdc9c70c4edfe99fe18870a3a5459"
1747
+ ],
1748
+ [
1749
+ "49c35575996c1517d2daed90d2fe4a58e674d6b4aaa7288d0642c8bf59e562f",
1750
+ "57eeee00adea4ca80eeabab57852cbf03f1a57e21872cd44221e0550b9193b8"
1751
+ ],
1752
+ [
1753
+ "10e1776b4c2a867bf1b028c6edec224cc6616c747e272f49e69b67b02a893dd",
1754
+ "8d45d62ec8e627b56950f2f7622a0438647f9e9f28e723e4a37cebc039a1b0"
1755
+ ],
1756
+ [
1757
+ "79a93a75ecbe943acc964fd39ecfc971dc6555b2bc335e7b53f52f4eb16cd36",
1758
+ "146132a68ce2ca8b48363612226771ac547eb3cf52b6eb7981718faac08aa3c"
1759
+ ],
1760
+ [
1761
+ "6b22d32e0590e169504e7f19864fd646d0994e7ed3e578a5b88f6e095913439",
1762
+ "68c3b22d859fb85e5c8fa0a8aea932285945b230957e603394333e9ad5acd82"
1763
+ ],
1764
+ [
1765
+ "71ce5ec8286eb8c93b8481c6d19cf0a288ef4da4397e9c80f65023e516bc097",
1766
+ "54470babc742780cd8a05499026e738ccbf81d4170d1731734de68a8e5b402c"
1767
+ ],
1768
+ [
1769
+ "27beb13a43bc6a1f6ce046da438b0beac5899ff4d57962dcfb6476b563f74b",
1770
+ "14074e9e93ee45394dfbe833998b9d1691961f8ba3166224b36404448c61bb3"
1771
+ ],
1772
+ [
1773
+ "6b1de6c8f161aa6509a1dcacf2c0aa1bcf6ee9d9b40e032a9d72f77a6fa298c",
1774
+ "5e9312eb5b59d6cbadd7d3dcbc39f1b5bd9a8346fdcfdf1107bada6f9cc048"
1775
+ ],
1776
+ [
1777
+ "32670fc3fa43bf39974ba72ea51f0d045d92d084a81fe5282dfc8309aa900b9",
1778
+ "518fee521bf1af62356aac3b7e53fdbf57121e030c6e9572b3de69912ca4eb4"
1779
+ ],
1780
+ [
1781
+ "4b9ca363eabed9c66091a347375f7065cd28f49f914447de7cc1461f1375f1e",
1782
+ "3a1a3a2e5e7e72476befe2571ece708052d740d02cbe6fed58740968ae609c4"
1783
+ ],
1784
+ [
1785
+ "4cc6da42863a3deca62fa218b7a3b50e034eb4bafd393eccba3f4cbe192ef10",
1786
+ "20bfa683c884f203713953b26d2821287ecd305fa2cb70570474533fc07f918"
1787
+ ],
1788
+ [
1789
+ "87705353c44a5ccec8de65cf5433be6b3d9bd21eea49b60e6c907cf1a67a6a",
1790
+ "112804b13eee56e3b01aff75fa08fa8374c44fc461aed8a30ad54acd09c24eb"
1791
+ ],
1792
+ [
1793
+ "6cf6eeeb9d339c0a05f72fd5af73fc7588e6d957100ee8999109437bc126cae",
1794
+ "54fa257cea22032eac272fcd034dadf2e00d602ef9e519cf7072023c130aad1"
1795
+ ],
1796
+ [
1797
+ "19b32925048c5519d929650c833661b452ef7be7963fab0b6b328ab7dd7a28a",
1798
+ "1bd0c14a10bf9b88ea61011c0b2e64d07da151c6203800d5a5d12063838a510"
1799
+ ],
1800
+ [
1801
+ "12a5fc5559428bc3b4eff97b21b63668b866e0722807f1db1f19696bacd9b0d",
1802
+ "4c2eb07f0c24047a3d73b560144f3fd32c99d6dbd9fc7cd2fd2a72a6e4b24c7"
1803
+ ],
1804
+ [
1805
+ "13662b7a7d390aa76eb86a7c3bff6d9913eb28db6bd1a7c42de5cdad2e35ce2",
1806
+ "40626aded7f56f82cc431ae30527b096f57fbfbc04d3e12a5abae3edf301cf1"
1807
+ ],
1808
+ [
1809
+ "255825bd49b8a2cce114360bd9c8fe8c641af64c8e7710107213cfcb006f43d",
1810
+ "3619cce4482335232f9e76a1460be9d296f2d468d26e4f95a78c71524fe59cc"
1811
+ ],
1812
+ [
1813
+ "7f83009eeed4f12f54d341bbf06066480cfcdf51dda103ac54d4bcecf6b3b31",
1814
+ "4269519d28faafd7fd68bebfd8404d71ba05d62c4bb6d65d24aa6802fb84ab6"
1815
+ ],
1816
+ [
1817
+ "2f325650eb316646b4eec903fe44828fcb11054f1bd42ca3a77f7e734110b35",
1818
+ "44f976082271016f9048e22c507d97d628722bb431f8d5cc1890524e6c386bf"
1819
+ ],
1820
+ [
1821
+ "750b166bb6edc0ee80fae39c7c106879036738df2d79fb2294e1c21e9a24d6b",
1822
+ "54f8aa297a1afafe2a17a3254f45861167414327e918d17003c6aad01d0b24c"
1823
+ ],
1824
+ [
1825
+ "3aedb10db9cf3285cdeee375879396fac1fb50dd259e1716f8c01e66f67ca72",
1826
+ "7feb9400f621f58c21601f23b7ec7c94a9b6b193c1cd74a8a60846aedadd359"
1827
+ ],
1828
+ [
1829
+ "4ab7151702de76faa493e7a0b1ac20ee4d10c33b83fec9477547cb1236973eb",
1830
+ "63f1f122e3ef3acc46b0915ac69c3f5772879799cad889a817f55f5853d1235"
1831
+ ],
1832
+ [
1833
+ "1675ead0d20e5bc3a7a7331999a87ac4c916ae29669e54197bb02aa6364520f",
1834
+ "4d1122da90d49e491922d9b533a6a668e2f65a2737ebb391ebb29fb7c1f8a9d"
1835
+ ],
1836
+ [
1837
+ "2f7148111ef53c613157aeec12e16a20f13481da4390b6ce18a85d1d8547087",
1838
+ "2eeda779ab395597651d2a0b833ccf53b10280750139916ae2baf4ec57c633d"
1839
+ ],
1840
+ [
1841
+ "4439c7810e7b2ba772b701ec3acdca0b80c9df23047710b87f7dc3f13b337d3",
1842
+ "5029cfe704c602a8a4662af0a5860ec03fb88f046d0e3400f2ce7638014c621"
1843
+ ],
1844
+ [
1845
+ "2248eec40b5732a6a488b681f093643af7937071bc73118acae295a32b51b05",
1846
+ "1577e4aec30a97b648de4d0b19cf8891151b4eb11f8de9c6d7312f091552e19"
1847
+ ],
1848
+ [
1849
+ "4738424e558d4e0d87a3124ca02ea24f0adc6b7a9768b0d3945ed2a6104857c",
1850
+ "33576f92aca3f0c8ae689c3c274c2de6b918940d86a6852e02fc99e35d1614"
1851
+ ],
1852
+ [
1853
+ "7829edd8b866ebf7baaf604ed13d19a9797578f44bbc51b1cd67ca53803e96b",
1854
+ "5559040a6083f2af1f9133ccaf5bc2ce06e56ddfc7dd410e9635c0116b62722"
1855
+ ],
1856
+ [
1857
+ "7f927b881f2cdc05e1a69e40bb714af47b630d1425f08ab5d574ee698f33d51",
1858
+ "26a465288e96572de303203bd38f4a03031e8158da0591cb037c0a5111d1056"
1859
+ ],
1860
+ [
1861
+ "36a65598552f8753580d1655417d645a140966e10a1e1663015f9fdfae44881",
1862
+ "33d5bbfaebf59eae72b89b1aea12ab2ba3c9617f8c3baed1ec16bdf668381b5"
1863
+ ],
1864
+ [
1865
+ "403becfa545c826782026ff409cc16c9d4fe428f1b5b6e630c92439d2fa5fd",
1866
+ "47bd6f2bf5d74f710ecb479c79b01fb774fbdad590e683a415cdedf33f71dc5"
1867
+ ],
1868
+ [
1869
+ "3a747826d241b877d3d56b16e0b810cf088eda4fd6048da174c9991a942a5eb",
1870
+ "2c7ba19b0a3486a2cdb84d4a388d34beb077a0e467ba44590166f93f6a09d2e"
1871
+ ],
1872
+ [
1873
+ "3d60cd375842714b37bda89dd1f13a7e0f3ff133b522209617d031bce05a537",
1874
+ "f77f216451ab01ad5226844d2162a7f32744688bcb4325445539e2ce5cec4"
1875
+ ],
1876
+ [
1877
+ "235bf66f67c9100e7f0e22bb299cdfaa603644b240e0770aec7e7fd163e2a65",
1878
+ "37110b3fa83ece3990afca2bea8d5ebb3c7aace60a0147f8e6ab733e2f2b4d5"
1879
+ ],
1880
+ [
1881
+ "3b796d4eb69a55471fa86108f787b3604874e92b6887a7667a6c2bfbbd9a42b",
1882
+ "4912d6dc0419732ef82cb3278415851d4e2d7ca89e0f4d7128cc9de51b810fe"
1883
+ ],
1884
+ [
1885
+ "48d53516dd51e49faa7ab46c8c10db1befd10f23c6a9d9bc3640a2f0da44518",
1886
+ "73a2fb3d064adadf21aa1362c04affc660598f38a9e069b3afb74d0a99ae9ee"
1887
+ ],
1888
+ [
1889
+ "48c32cff161ed145da0d5b73084897647abb777adf65738559ceab6939cf3e0",
1890
+ "3d99308978e828f857c382df32b472bda81e8ec8e30c8844077ba6d6d2ba903"
1891
+ ],
1892
+ [
1893
+ "2947ff091a8ec9684affbc9a62e09e598841c4a6dc638088492aa47dea57097",
1894
+ "19a2cc97975e547f97a4d02e42f89e6ced6f5a953cfccdec347867d26926541"
1895
+ ],
1896
+ [
1897
+ "1960d85f30475615f82484eba0bdafb7ea7cac3809f0518a757d66f02b01676",
1898
+ "36c8f77baabf0cc8805d993bbe62041fcf4e3239cf9d53278a4fbd91e75eeb7"
1899
+ ],
1900
+ [
1901
+ "2765f28074d21d5a055340b6d40092d2bbef807e02009fabfa08ec0b9bdf38b",
1902
+ "7fb189e0553d5df52b6843661814824b3f3cbebbd54988f042fb256c6bf30b"
1903
+ ],
1904
+ [
1905
+ "348836cb2aaa00212f4b1a4e2d7fc5417f246bf2fe5c9a16ebabda449e2e08a",
1906
+ "3f7276fd7d69e0d55ce5ee1d2d830534a27227fe0b6d8a36c93f9a78b872969"
1907
+ ],
1908
+ [
1909
+ "7afb9d34b6a42ea8c6d870e4b8191c274201dc1f93a1a2219a2392b7e345a31",
1910
+ "42bbc20dc7115e0758b364a110227b16b64ec58fc535ce5ff1a9ad8b8a09fdd"
1911
+ ],
1912
+ [
1913
+ "2cae0c2afee1767fd4c66f52e1f176d217e92e89cc19eb36d5a6c1715f641a",
1914
+ "5335efe2d9bc3667d25ea88bf76438a4d6ab9ba5c512f9da7d0529b79b62d83"
1915
+ ],
1916
+ [
1917
+ "1cc5fde334707723c3a06f00c106db88664284a2df47bb6b144d9f960aea3e2",
1918
+ "dbbf610d100316938bcd8bcd078513512ecb50d4579690dbefaa419c05980d"
1919
+ ],
1920
+ [
1921
+ "54e90cb8f3a2998d2675c5780679e06c0556b1e618f8fdf07f9a4b2466fbf1e",
1922
+ "16248676b6f06ec5e34994bc3115f85c8147b54f34d8500928f2fdc051e2089"
1923
+ ],
1924
+ [
1925
+ "525c70a2ba0dbdd68d75640f47f13d0d415ea595f7030f533f4625c2a46523b",
1926
+ "58292c8675e5e1a438f49e0c05648d9a7aa997f2f1fd77d5de1944afe5d7eea"
1927
+ ],
1928
+ [
1929
+ "54726d78d099007393348787a03107ab492e59690a46c87fb02ec554f2353bd",
1930
+ "53b54b77184ba75a3391e0ebfa6d6974db028f3f8e34bbd5460759a5848dd76"
1931
+ ],
1932
+ [
1933
+ "4ac81a66903537769d3aac6c483ccc08535cb767b6b5e1ec8017a7393ab70ae",
1934
+ "2cb22b77a8a05d26f11a4dec80eff292633aa05553a889c5ab16b6ac6e2ab17"
1935
+ ],
1936
+ [
1937
+ "21d0175349e21114988a2930b9a607d43245783cb4a0c984ce27f4c4206708",
1938
+ "59f1f49342cc5496213d3329bf4ca7fb0044337449c579bf53147a1dac9e67c"
1939
+ ],
1940
+ [
1941
+ "167f821b381f4c8adcc39789475fb55ba639e5124fe75f26dd61be396dd5e66",
1942
+ "22002c87d4cafb47ac9d27286d5cf5ff7a6715d69814118269b0729be9e4b3a"
1943
+ ],
1944
+ [
1945
+ "31010666c6db83a9f9e4db4c48173afd405783ac53852a6e38a8ff925528843",
1946
+ "1f466dc9b5d9094107c741dbf380f9fd98d8549cd50f67169901516f8cce74c"
1947
+ ],
1948
+ [
1949
+ "1ad3875769a5053388a86edc85dd80fdffbbda6a456aea497ff81a0f1f6707b",
1950
+ "2de7cdec5e2bad56a71bd2f33a4ae4c874e1ad4210a6ac32b443cfa34e85b1b"
1951
+ ],
1952
+ [
1953
+ "c489650fb7f459ce09cd05a456fc5a46b849b38a671298ed645bcdaab168b0",
1954
+ "45610d092b8af1c43ceed474cd17f7bbee65120aa6fa4d37f949e7e41f25327"
1955
+ ],
1956
+ [
1957
+ "394256a5ef4d7af5459587a0bd2edb8acaf5ecfef2563c9a04daf34a4abe4c6",
1958
+ "1ebee390dae1403c0c53994e1d064fa64e20fcb45392e209b2b99486a559ffd"
1959
+ ],
1960
+ [
1961
+ "410a1511fead6151e9bedb089b9832d0fe01fab76d3f8459929f767525aeb27",
1962
+ "361f0a5ffe09fcc3ad4eff3f5e89508ac247af80267100b69de3c59df561cfa"
1963
+ ],
1964
+ [
1965
+ "38cd437c9f659e110a869605c182ee9fdc26de36baf559d9229e258267bb734",
1966
+ "624b1128ea7739bf1cbd0e423af92a4884323c868d2ba0ee9d362946edee2d1"
1967
+ ],
1968
+ [
1969
+ "78b126e50b7042d2a019f95cb87a3213c664ca1bafe345999b1e9e2dac1e608",
1970
+ "19e398196b22f4488cbe854c614ad8c353839abc5ab3a4f3f5c03c16ba8a198"
1971
+ ],
1972
+ [
1973
+ "6d3a5ce91132f385a91823c5c8046c4b638f5fe63357424410d901457cdb867",
1974
+ "7b80bae16d2d487e122495174f7a70992bc5dafbed72bf84127ead7c57302bb"
1975
+ ],
1976
+ [
1977
+ "32d053a904dc4d88fbe7d0b96e0cbeca22a00aa5c79c753d52b0b60abf31602",
1978
+ "3af6a02e5cae6d6490354ae51185149e3fdb6d0d9caab90e95ff58aa0c40377"
1979
+ ],
1980
+ [
1981
+ "49b1fbff5bdb0aa6938b066dde0ed772c0d81f9eff52e7fe038b0ccbd78adb5",
1982
+ "1c6e57834eb14d507eed8b36c81ddf92fa91c242467061927a742fafa82b43d"
1983
+ ],
1984
+ [
1985
+ "2f28b8994ca6f234d9293d26196b43b9d1d5306844348c4a638102c05de85f5",
1986
+ "759cfb172eab065d477248b3569f4ff5791055f01e95fe71b94b8e615d73c96"
1987
+ ],
1988
+ [
1989
+ "3c2ee954ff534f856f59188fa0f29ed8a022aee0cac52d634f6dc58cd514d70",
1990
+ "22bd162e74925f0a876bd8a206b8767dfdd7c898576a73a490f138d9a7f99c6"
1991
+ ],
1992
+ [
1993
+ "5763a7cab001e1aaeabf9ab5b9b2fffe6cc2b299ab04ec4933da74d960e1ab",
1994
+ "715ee4f8ee93ab5a1dba00f0a6abc4eec47d49b61254cc27fc36a031e32f0f8"
1995
+ ],
1996
+ [
1997
+ "19976ad8d7b7f47c785408243a227401996b36e47c7a78a7bc7d4256233ba9a",
1998
+ "896b713c5d7777b0703821a73c1d9a4c3755501042120534ff13990975e1f5"
1999
+ ],
2000
+ [
2001
+ "61674b992c29827186cab5ff454758dbbed8e89bc23d0bd33193afccc3a04bc",
2002
+ "38e1020744c13903809ea30a0662fdb5226ae760cdcf10800faabec452e00f8"
2003
+ ],
2004
+ [
2005
+ "2ea2d48bcb83c0c9cda4efe11f07165cfcbc9ccd26526e5fb12556316d4b1df",
2006
+ "1d2d68b74ad384c5c4a9c85453104216357bfcdf635680b40215f0f800974cb"
2007
+ ],
2008
+ [
2009
+ "7881212050264c40c336ed3a15dd2cd868ec9a558f5b728869eab66e8b8ed54",
2010
+ "21aaefcc8ad8a161b8971d6880321781dbd939570c540da4c330922b8c81e9b"
2011
+ ],
2012
+ [
2013
+ "b6be88ce0461d20f59c5199573cda0170b61decf6e8e69a6d32f1695adc4ed",
2014
+ "5536e4808370716f2bb3423a9a49a38ddbfe91faf3b7a35eb53d3519238b6cf"
2015
+ ],
2016
+ [
2017
+ "e5972af1655eb6dde2e8c77cc58044299922441b5ee41ceaf5cafedc765bcc",
2018
+ "550282f37a4783dd60801c237045992d6fbe82a5902e7d837ea25f6f98c7b3a"
2019
+ ],
2020
+ [
2021
+ "7efc1aad1f580d8f50274f1c114c40056be19a8c96fa8c4cb5bf85e1e7f3e4",
2022
+ "2689f1c3898b114d668be6413643ee9f879913d40c262541fd0316264c60a4f"
2023
+ ],
2024
+ [
2025
+ "7939db98037f59b0113e9d60051f75ac9c3cfd1a3eb535c73e2d945068c6c5c",
2026
+ "410914ca8bbf3c65cdf3e9772ca790c19131c50068d34b7346c10260a578a8e"
2027
+ ],
2028
+ [
2029
+ "225b77ad00a2b83d26690190b74867326eca4f55bfbc3a13be036225ca3b1b5",
2030
+ "411faafef89042ce6beb64309fdaff70fa53e9d32d79a21e7f82f80e79ff05e"
2031
+ ],
2032
+ [
2033
+ "1501e64c99c8b6658b0479f2c05c9142d246eaabfccf2fcec8dc4399539d8e1",
2034
+ "3bab1e3339e42c9ee66c65b0b20236fdd9362d3ce786ad3a9779ab578af50a8"
2035
+ ],
2036
+ [
2037
+ "59b907b941f24fb8ea2458153e55f07534b388e835af7b69f3c9f54392a335",
2038
+ "1d5438c4f2f68a417f3d56f916d899a6ffe910f5f2989ca31687f1b10f60db8"
2039
+ ],
2040
+ [
2041
+ "2887d08a26f484546f360e33abbf7a998b7170a5b30070938b84f072c676bf3",
2042
+ "62a78e8d00e5d3a59e2fc424ffa08961567ba1ef24c8531cd7bceee6074a535"
2043
+ ],
2044
+ [
2045
+ "6e3cc8076b3d45377929033af35aab0c6d19ae4fd47c0daf844079ca04c46eb",
2046
+ "7b90f338e4d848aa8f19d0b5c3bca916a2a9024acbf14bddb278bca2aa39e5f"
2047
+ ],
2048
+ [
2049
+ "34844dacdd3ec54a3af328bb9d67715ab33425e194ac9977ca02ef22e8f7a88",
2050
+ "3c1affc6372f32a1634748124f9e1a03c4f0c993971da0dc28888b0801279d"
2051
+ ],
2052
+ [
2053
+ "436b192e03a49796cf9bc5e93c88268b71c9c24f9c3a85322bba634ebea309d",
2054
+ "67a8091ef69d62abcb28ce5df4dc7d53f8dc2b9690344f75ecd03a6d9386044"
2055
+ ],
2056
+ [
2057
+ "592d25b68baff87a6d7fd41ff0dadbddc1bd1316683de3b2d677501c0eb14e4",
2058
+ "27ad1e1099683f54589010faeefb19e38569ace43653be8787a42b0591e7bc5"
2059
+ ],
2060
+ [
2061
+ "89a5111ae911512ba62e87b97f643c0219702f235c70f62c6678a129302009",
2062
+ "557fa3d98e9ce7b83b47545013a4498f3de43787fb66b1a54521222242f7c1b"
2063
+ ],
2064
+ [
2065
+ "1c9b5e53377e72da5066cb08566bbf9ec31ec1877f455d932cd9b1aa375d34e",
2066
+ "72f79555a8bc207863f32d482fca54692825449fd8963fcea3de3a8183a739a"
2067
+ ],
2068
+ [
2069
+ "574a6e05eb14591729515be239ea8c1fa9e12d4049d42876f76c8ff37bca03",
2070
+ "5f99b3af43ca68c1c73e8190d5f73c8de162ba643d7d5f0cd73cfa8135db6d3"
2071
+ ],
2072
+ [
2073
+ "513fc5c2e16505b2b25a2f284e167d5401194bcac0dc3ecf8b7c9acb560daa1",
2074
+ "687ee7a1a8954d08d3856e1a16ded808e419e789736d3f55f79f7693bad69f5"
2075
+ ],
2076
+ [
2077
+ "53d48bd1205274b1c2b0a0ceb3d21c5fcd7c8892a784931603240b288a598b9",
2078
+ "35387abd7ea59c9b956de44d36533cad1f6668c438d666651695ff3862159be"
2079
+ ],
2080
+ [
2081
+ "213eb1ea99e08825110dd61094eb6e8145119dc1c507636f068730b1e086d44",
2082
+ "744f6853f4f02f4f042468d0739e0c9f64df720b87ed77d1979547084ef7a89"
2083
+ ],
2084
+ [
2085
+ "735ef017d091ca23264ad0aa7bb9b2be3309b4539605e79ed4a652ccb2fbe3c",
2086
+ "7f0ccc7a5747c4e921fff97d431169f690763427e2cfd1ad74d7a0308d7faa9"
2087
+ ],
2088
+ [
2089
+ "3f36babc5a30070b610ed97db44997e6d9115c9c0579ad8f75d295a17130001",
2090
+ "79047908a2474e32d5c712a07bf5c4ad522590bb5d6cefda410d30528e12ca8"
2091
+ ],
2092
+ [
2093
+ "51c04907ae88a5926b242fb2862cb1f2c651a94e6caad5bff8601c079fded74",
2094
+ "10a585a269f460aed43f54c7de13cdf623fc8de5957526997278be939ef32ad"
2095
+ ],
2096
+ [
2097
+ "c1e1bd626a735aa2c065831317217ecce68e377eb1f67e54ce2e97bc2ef2dc",
2098
+ "53c5af23a9b482f420be6dfd37b6886154cfd130794098e1f51c1885ac2556a"
2099
+ ],
2100
+ [
2101
+ "5aff3b30775ae4758e604a4a6262803a545f5ef4e7855fa245ac6a6431a9ece",
2102
+ "39a4799e5519047f29333bee9c86c99bfa8056d4aa381c396c4a44331fe795f"
2103
+ ],
2104
+ [
2105
+ "3d753e9723701a8e9d99b91bb93dee2eda7ffa5072fb2cd5c5fd99aebcdb299",
2106
+ "15798bf5c17d6d5880fed1553af32dd8d8baf2888c715a886575448a24c7975"
2107
+ ],
2108
+ [
2109
+ "6593e5078466b07a4222d2e544da826d2c583c9cc5f2eaea148b129b00d4aa0",
2110
+ "11b352b08a0a61d3cd67d1dc08069dec3bde907b3da0f56de5011b956bf8744"
2111
+ ],
2112
+ [
2113
+ "7a6eb353c5be9ff03fe4a06c01fb71aad2b38144179a291ebcbb2c2417cca65",
2114
+ "3de3ecb12f2fa699b46a9d399abf77ca17bebc3e491bfb2542dd0fba991e2bb"
2115
+ ],
2116
+ [
2117
+ "2c7ead583d6c32162091034a9eddfa775b4e84b8bdbea939edb2a80dcf64f6",
2118
+ "461790ce40d9c276d962b2a1e9a74d66e9d7335962e234e8a2fc6963d31722d"
2119
+ ],
2120
+ [
2121
+ "34285af023d9b4c2c2b88e8704bf2c05a9b553b00b2e70ff05f8c2970cb134f",
2122
+ "33fe678e7671760a83836107428dbade68c3593fbe568f3f8f1b2c568099c44"
2123
+ ],
2124
+ [
2125
+ "6222f720a24466263db6a11842f117fc4bb78da6705f140e48869db3e087441",
2126
+ "6eff5b9bf3aeedc962bc5a24b66e7bdad2153450ed53a058bf2c8dbf2907693"
2127
+ ],
2128
+ [
2129
+ "17c6ec5ea206eb97cbf53851e37ce391080e0d2bf1e5395610f79ab0503f7ce",
2130
+ "3adb71ca3523d88ceb1e365f12dfb24895453c14daf0046b2626cddadfdf5f7"
2131
+ ],
2132
+ [
2133
+ "70859f9771a713e54974ce11cdaf44b0dcc3e9befa0c0834908d877eeaafd27",
2134
+ "d18f794bf0cc0623b711e7450030424e52326c45ba9b03341883ae4828a5f8"
2135
+ ],
2136
+ [
2137
+ "2a820cfd0fd4ab0871e7b303cd545a3086caf8fa818c087a4017197da74efbf",
2138
+ "5f992683ff37f6c041b84bfc01503d333ac9763505cc8f69473da01812969d1"
2139
+ ],
2140
+ [
2141
+ "5b0526de2c07fe7cd73e3884f642d57a0ac5e13c68590ed03a14e530616e8c1",
2142
+ "eec69d0cbd92c9fca31ec967dba848bec368e792d6678797946a5e34fe3487"
2143
+ ],
2144
+ [
2145
+ "6cf6b3efee707210cb3a72f1e885c3d0953aefb43e5e148c740aa1641725c61",
2146
+ "911cb630b898e2c1a9115f9e45bafe3b819edfb1eab6e15612d14289939984"
2147
+ ],
2148
+ [
2149
+ "74e913de55f1e46143cb2ecfc580f8d3d3908f200281322b84e21c989cda293",
2150
+ "761d2736c9ac7670ba905bc2629c6c0dbe988820a4454ff415ba68710f7df92"
2151
+ ],
2152
+ [
2153
+ "44084305e0c911a40b7cbefe5f13cffe9a99375d1a584c4a2200958050af7a9",
2154
+ "249c83877371564708ea525b64b1e7e12785460d83364446531c9adcacba5f0"
2155
+ ],
2156
+ [
2157
+ "2bf71ad4d1bee1a67fb300477029f54bdb0e09f78bf2ac2e8afc7465a7adbcc",
2158
+ "6244dd6cad282539049be57487bfd9900bb0d5da805d02b535096368fcb4cd5"
2159
+ ],
2160
+ [
2161
+ "3a62d8f763b62def36e4089458046a49c5ecb91b861549530773e0548ff2bb",
2162
+ "6a10a03ba61e6ac657270465c09aa9526cf1ebe96bdecdf0e7000476a47b9eb"
2163
+ ],
2164
+ [
2165
+ "284eed3a17c51e0677d4fe897f056abe9def8af07a4630e6ca5723e2aa6677",
2166
+ "516a06ac1d5626ed03d2eee9de6f60f0311eca703a99b0fb31b9c66b01c27c7"
2167
+ ],
2168
+ [
2169
+ "2a2c63b16cccd685f731d06fe93ce2cffb358d34d03dda9a7368185c1eb0c32",
2170
+ "7180baca0ba81284809f92eca1654cd76b925a9242e5d5e0f18d0a55d13c6ec"
2171
+ ],
2172
+ [
2173
+ "5f9466017ec09769611389ea5370ad68dda936d3f5816c9e928ff9574abf9a7",
2174
+ "6619b5b145bb5f4f29deb7a4cd68ef4da3995312fa6537f0d01684da4267ece"
2175
+ ],
2176
+ [
2177
+ "74f229babe01b4962b3307589c1a13019134b1db6822698388bebb55d21c30f",
2178
+ "156ae857ab3279f754facba0db36398dffec8c31e5e160473198f2f891b7531"
2179
+ ],
2180
+ [
2181
+ "334b9fe3a5fd99bc966ddd1309698fd32afd1f235062f2c275b6616a185de45",
2182
+ "221a60053583cc0607f6f2e6966b62fc9dac00538bb7eb1148e007a92116d2"
2183
+ ],
2184
+ [
2185
+ "7ad710ba002a67c731efbaba2149d16fec5d2f7aa3d126fd9886172e9f4ea30",
2186
+ "3a10f8e902a7a13aec94d66415347e1314f9bac83a7db176096b809b25ffb86"
2187
+ ],
2188
+ [
2189
+ "4306dd0a184a3283c3097ff8f7434cec80912e9dc04b7df21ba73fda9f8e6d8",
2190
+ "6d42bd3d1a8dbddafd09e872e2aa3891ae79ec939dc1b382196bc21c4ab749"
2191
+ ],
2192
+ [
2193
+ "1c3f2124e1135c32a426d1d14e471edd9e0f2c7bd703ee123cbbd608e8c4be7",
2194
+ "3cc607a3c3f1ab68dd5fa56c65996002721b8ad8ad4b0dd9e5b1467d316583"
2195
+ ],
2196
+ [
2197
+ "294af33272ffcee0b56a436de1b73759cbddebef4c07888b42c2f92b0b68e1",
2198
+ "d837164311d5dca8d37b99ef9eb22708643c83d1cbdfe852f63ea07b06fbad"
2199
+ ],
2200
+ [
2201
+ "753bdb5439a19bbffdfa02b1dc24e8368f22d0a8276b109c11e6feb26f56f39",
2202
+ "6ed396231af93647633eab467f1a034f38e76823eb85baf97cae56e2dcd9f75"
2203
+ ],
2204
+ [
2205
+ "5674f0cb892b733fc0b50e121d8679afed0a925c32594cc65ffe83bebe7748e",
2206
+ "7fbf0325dd38dd94905adab2c52758552292a6a103d9edfcb11938828e828c8"
2207
+ ],
2208
+ [
2209
+ "4a8f053573a0a74251059d0229d89b6660407ba0b491779fd10f87a5117c81f",
2210
+ "21b70112485398bf67ec9d733df24a1df30dea718a93b786f41ed04e3ae3c5e"
2211
+ ],
2212
+ [
2213
+ "726c01ec4a08df8fc8de173311f50d4f3b97c5a9cf68c1536146f827db95ae8",
2214
+ "15013cafadefa7f1c4e4dfdd70bd4d3979dd18bd7f0332572ce2a3fd8773d12"
2215
+ ],
2216
+ [
2217
+ "38ac0fbfa98937257460db7e6645d7e5112b6fce7234813fc8a704e8ade8da2",
2218
+ "73c0109f86048aad08c443f781ae60ad13b99f7b9cfdf3128fe6d6eeb799a7b"
2219
+ ],
2220
+ [
2221
+ "6f6d3a38621582ace092eb50ecfe9eff265df141ebdcab8653299116fcea291",
2222
+ "4a1bf3f39bc919c8f1b720a0b1ce952cad17f2ba98308ee6b76dd9b6f3d7b75"
2223
+ ],
2224
+ [
2225
+ "6a307fc28e1df8d9ad01766419e097797d65cb674436fa1c8f012d3de2c2a1f",
2226
+ "26911a635ba824db004875d79dd84834a97ac12643e42829015bf88c1fd6f05"
2227
+ ],
2228
+ [
2229
+ "2a74860e3336d6db916555894cc8028f41508812925db1925457afe40257155",
2230
+ "5f8da573f4c39816ce2dba8a20224223a7cfec53117ec78973930c0e9b60244"
2231
+ ],
2232
+ [
2233
+ "4d2b49e1ed0799f719b8269f092cb489a466a645bc0ccabafdc678864c176d7",
2234
+ "5410083df7d256f18cbf5697ae5e52c31e075d8a3b27e21d6f5177ca882f6c1"
2235
+ ],
2236
+ [
2237
+ "110ecb9fbf6c333d168cee473cc5ad98809b6cb9eb5d1f6cd28ab5fab504fd3",
2238
+ "7e3c54d7533d9f8c3310f219dab0cc3ea4d39b418a748eeffd6bae2b8637a43"
2239
+ ],
2240
+ [
2241
+ "5be4d711b80da70e6d3ac493250bbfd16f20b25f31919b3a91cf14ffbac1096",
2242
+ "7f55a0919f082e8885f1515e83c5b39b6022404503507498e1b4422d79c43e2"
2243
+ ],
2244
+ [
2245
+ "2605125b95ca4ba93a21cbbba5762898a7cf9e988f07ab9e64cb3868e3b139d",
2246
+ "62f0ccf55b9fc0eaf9736fc8ee484e2acdbe259813af9803cf815829a5e9d3b"
2247
+ ],
2248
+ [
2249
+ "1092bbbf206f2a3068167c3dd99a72de31e206f6c504c071c8214d105ff814d",
2250
+ "309f489f68a62089f53b96df5d4fbc3ecc5a1a42eb7ece0e49bad17ad490ff4"
2251
+ ],
2252
+ [
2253
+ "2abdee9409d9c92559ca3f4e6bddd649c31aa09b90bfcb4a612af491241e18d",
2254
+ "3ffa8eac180a29de3f8a69efca84bac046f921f5725e96a6ff0530be1436aaf"
2255
+ ],
2256
+ [
2257
+ "376313f27d00bb1aae7ec991745efe6ee28c6b50de0c6cd9845cc4bb4f83543",
2258
+ "6a8e0a9389ba528b156fa94ac090a895d7b795818d4941c29415d9e2984c547"
2259
+ ],
2260
+ [
2261
+ "a80380c71bd466a696b3f0fbf02817c9459d9798f4f3899cf32edf647fe066",
2262
+ "6a09805e814e7cdfc76eba4b79f1df5ae559e0f0aba9f728d3cba4ea5c57471"
2263
+ ],
2264
+ [
2265
+ "223694b921d247d989a79b9b2b2f07496036c40cb043eab074a9d6a2cd2ffed",
2266
+ "c247217f1b1df35e30d9e15fdaadf42d6fb0edd3a5a7e265d4cdc426c120aa"
2267
+ ],
2268
+ [
2269
+ "102333620df278c6714bbc880fc087db58c1b9b4d77ed4d61b32a74bfc7c3e2",
2270
+ "6a77d37727ccf71c2caeb151faf4404d4b94e9047f9f0a7c3966367f3b53c65"
2271
+ ],
2272
+ [
2273
+ "891626f466536929ee7eadcd18b41925706dedab7528ed5f0f7abf039eb9d2",
2274
+ "5f73d11c141c933a35b2d0d06e5cbae614a20d17dc3b439f8bcdc3413c5ea37"
2275
+ ],
2276
+ [
2277
+ "215c23fd3f073f870e5e80303967391bf173f8adcdbeec72d131c557babc203",
2278
+ "10634332e9d9439a321597dc5b0fac9ff478834c3d6e281735f21a4a5e13266"
2279
+ ],
2280
+ [
2281
+ "21ea0bdc1332bc36e6aeb43be9071651c27e4ea2eadec636c8d818d4af72a36",
2282
+ "3a523d9643dccc6bb9c7c58413312caa3e60ba9c7c7f0177e0f3f469a3241e3"
2283
+ ],
2284
+ [
2285
+ "60deaed1bffb6190beed40caaf2bfab5e43d3707aff7ad3f278d571aa247eae",
2286
+ "e41f71ff254c1418e6a66992af307789fe04d6606fb2670900bb1a089fd879"
2287
+ ],
2288
+ [
2289
+ "1e1fac4a1646253fb1332fadc21fbdd3e3a24a840d129400f520ae4116a4cf5",
2290
+ "69c406f9f46576afad68808de0ab7e8922b6226af748e721d9097e21f1800f3"
2291
+ ],
2292
+ [
2293
+ "5db0ddcdf79ffe74d6454c12d2bc60b06776db03c75dc413f5be42ea9a91b5e",
2294
+ "134c3d6c699841f17306835bb193785228ffe7ab212a01a861c56b086a18cec"
2295
+ ],
2296
+ [
2297
+ "626814e320fb5bea505b248fd1c1389ad586c1cfe04923fe2f83173e915f4f8",
2298
+ "7ae407a926e887206a8b85cf485f1f327c9bb8ccbb6897024e2d122877d8ee0"
2299
+ ],
2300
+ [
2301
+ "23186237dc7d3b570cea645282ad4c359731bbfa54e7f036426bf6493812cd",
2302
+ "7d1fbab7e61a22d3b00993290d9f4cd5d820061573e787f66c2cff9a18e1eaf"
2303
+ ],
2304
+ [
2305
+ "54302dcb0e6cc1c6e44cca8f61a63bb2ca65048d53fb325d36ff12c49a58202",
2306
+ "1b77b3e37d13504b348046268d8ae25ce98ad783c25561a879dcc77e99c2426"
2307
+ ],
2308
+ [
2309
+ "13961b56b9fc0e412e468c385c22bd0680a25624ec211ffbb6bc877b2a6926c",
2310
+ "62f7f7792c77cd981fad13cb6863fe099c4d971c1374109185eae99943f16e9"
2311
+ ],
2312
+ [
2313
+ "47abd7308c70659af3f00fafe6837298af3cb530b6c2ba710ffd07a6bc1ae98",
2314
+ "75d0c8a7377aa9f0663d0c124a5659750847afabc29e39893fd27534a4a03cb"
2315
+ ],
2316
+ [
2317
+ "2c6276b764fb398fa555857dbe0ce0ec18fab7a233bf23851295739801f0585",
2318
+ "5d8f4897ce44007ec5bfcb9aeb78b8f6e1d40a514f72d213c9300d2770d2b8c"
2319
+ ]
2320
+ ];
2321
+
2322
+ // src/utils/ellipticCurve.ts
2323
+ var ellipticCurve_exports = {};
2324
+ __export(ellipticCurve_exports, {
2325
+ ec: () => ec,
2326
+ genKeyPair: () => genKeyPair,
2327
+ getKeyPair: () => getKeyPair,
2328
+ getKeyPairFromPublicKey: () => getKeyPairFromPublicKey,
2329
+ getStarkKey: () => getStarkKey,
2330
+ sign: () => sign,
2331
+ verify: () => verify
2332
+ });
2333
+ var import_elliptic = __toESM(require("elliptic"));
2334
+ var import_hash = __toESM(require("hash.js"));
2335
+ var import_minimalistic_assert2 = __toESM(require("minimalistic-assert"));
2336
+ var { ec: EC, curves } = import_elliptic.default;
2337
+ var ec = new EC(
2338
+ new curves.PresetCurve({
2339
+ type: "short",
2340
+ prime: null,
2341
+ p: FIELD_PRIME,
2342
+ a: "00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001",
2343
+ b: "06f21413 efbe40de 150e596d 72f7a8c5 609ad26c 15c915c1 f4cdfcb9 9cee9e89",
2344
+ n: EC_ORDER,
2345
+ hash: import_hash.default.sha256,
2346
+ gRed: false,
2347
+ g: CONSTANT_POINTS[1]
2348
+ })
2349
+ );
2350
+ function fixMessage(msg) {
2351
+ const pureHex = msg.replace(/^0x0*/, "");
2352
+ if (pureHex.length <= 62) {
2353
+ return pureHex;
2354
+ }
2355
+ (0, import_minimalistic_assert2.default)(pureHex.length === 63);
2356
+ return `${pureHex}0`;
2357
+ }
2358
+ var genKeyPair = ec.genKeyPair.bind(ec);
2359
+ function getKeyPair(pk) {
2360
+ const pkBn = toBN(pk);
2361
+ return ec.keyFromPrivate(removeHexPrefix(toHex(pkBn)), "hex");
2362
+ }
2363
+ function getStarkKey(keyPair) {
2364
+ keyPair.getPublic(true, "hex");
2365
+ return addHexPrefix(sanitizeBytes(keyPair.pub.getX().toString(16), 2));
2366
+ }
2367
+ function getKeyPairFromPublicKey(publicKey) {
2368
+ const publicKeyBn = toBN(publicKey);
2369
+ return ec.keyFromPublic(removeHexPrefix(toHex(publicKeyBn)), "hex");
2370
+ }
2371
+ function sign(keyPair, msgHash) {
2372
+ const msgHashBN = toBN(addHexPrefix(msgHash));
2373
+ assertInRange(msgHashBN, ZERO, toBN(addHexPrefix(MAX_ECDSA_VAL)), "msgHash");
2374
+ const msgSignature = keyPair.sign(fixMessage(msgHash));
2375
+ const { r, s } = msgSignature;
2376
+ const w = s.invm(ec.n);
2377
+ assertInRange(r, ONE, toBN(addHexPrefix(MAX_ECDSA_VAL)), "r");
2378
+ assertInRange(s, ONE, toBN(addHexPrefix(EC_ORDER)), "s");
2379
+ assertInRange(w, ONE, toBN(addHexPrefix(MAX_ECDSA_VAL)), "w");
2380
+ return [r.toString(), s.toString()];
2381
+ }
2382
+ function chunkArray(arr, n) {
2383
+ return Array(Math.ceil(arr.length / n)).fill("").map((_, i) => arr.slice(i * n, i * n + n));
2384
+ }
2385
+ function verify(keyPair, msgHash, sig) {
2386
+ const keyPairArray = Array.isArray(keyPair) ? keyPair : [keyPair];
2387
+ const msgHashBN = toBN(addHexPrefix(msgHash));
2388
+ (0, import_minimalistic_assert2.default)(sig.length % 2 === 0, "Signature must be an array of length dividable by 2");
2389
+ assertInRange(msgHashBN, ZERO, toBN(addHexPrefix(MAX_ECDSA_VAL)), "msgHash");
2390
+ (0, import_minimalistic_assert2.default)(keyPairArray.length === sig.length / 2, "Signature and keyPair length must be equal");
2391
+ return chunkArray(sig, 2).every(([r, s], i) => {
2392
+ const rBN = toBN(r);
2393
+ const sBN = toBN(s);
2394
+ const w = sBN.invm(ec.n);
2395
+ assertInRange(rBN, ONE, toBN(addHexPrefix(MAX_ECDSA_VAL)), "r");
2396
+ assertInRange(sBN, ONE, toBN(addHexPrefix(EC_ORDER)), "s");
2397
+ assertInRange(w, ONE, toBN(addHexPrefix(MAX_ECDSA_VAL)), "w");
2398
+ return ec.verify(fixMessage(msgHash), { r: rBN, s: sBN }, keyPairArray[i]) ?? false;
2399
+ });
2400
+ }
2401
+
2402
+ // src/utils/hash.ts
2403
+ var transactionVersion = 1;
2404
+ var feeTransactionVersion = toBN(2).pow(toBN(128)).add(toBN(transactionVersion));
2405
+ function keccakBn(value) {
2406
+ const hexWithoutPrefix = removeHexPrefix(toHex(toBN(value)));
2407
+ const evenHex = hexWithoutPrefix.length % 2 === 0 ? hexWithoutPrefix : `0${hexWithoutPrefix}`;
2408
+ return addHexPrefix(buf2hex((0, import_keccak.keccak256)((0, import_utils.hexToBytes)(evenHex))));
2409
+ }
2410
+ function keccakHex(value) {
2411
+ return addHexPrefix(buf2hex((0, import_keccak.keccak256)(utf8ToArray(value))));
2412
+ }
2413
+ function starknetKeccak(value) {
2414
+ return toBN(keccakHex(value)).and(MASK_250);
2415
+ }
2416
+ function getSelectorFromName(funcName) {
2417
+ return toHex(starknetKeccak(funcName));
2418
+ }
2419
+ function getSelector(value) {
2420
+ if (isHex(value)) {
2421
+ return value;
2422
+ }
2423
+ if (isStringWholeNumber(value)) {
2424
+ return toHexString(value);
2425
+ }
2426
+ return getSelectorFromName(value);
2427
+ }
2428
+ var constantPoints = CONSTANT_POINTS.map(
2429
+ (coords) => ec.curve.point(coords[0], coords[1])
2430
+ );
2431
+ function pedersen(input) {
2432
+ let point = constantPoints[0];
2433
+ for (let i = 0; i < input.length; i += 1) {
2434
+ let x = toBN(input[i]);
2435
+ (0, import_minimalistic_assert3.default)(x.gte(ZERO) && x.lt(toBN(addHexPrefix(FIELD_PRIME))), `Invalid input: ${input[i]}`);
2436
+ if (!x.isZero()) {
2437
+ for (let j = 0; j < 252; j += 1) {
2438
+ const pt = constantPoints[2 + i * 252 + j];
2439
+ (0, import_minimalistic_assert3.default)(!point.getX().eq(pt.getX()));
2440
+ if (x.and(ONE).toNumber() !== 0) {
2441
+ point = point.add(pt);
2442
+ }
2443
+ x = x.shrn(1);
2444
+ }
2445
+ }
2446
+ }
2447
+ return addHexPrefix(point.getX().toString(16));
2448
+ }
2449
+ function computeHashOnElements(data) {
2450
+ return [...data, data.length].reduce((x, y) => pedersen([x, y]), 0).toString();
2451
+ }
2452
+ function calculateTransactionHashCommon(txHashPrefix, version, contractAddress, entryPointSelector, calldata, maxFee, chainId, additionalData = []) {
2453
+ const calldataHash = computeHashOnElements(calldata);
2454
+ const dataToHash = [
2455
+ txHashPrefix,
2456
+ version,
2457
+ contractAddress,
2458
+ entryPointSelector,
2459
+ calldataHash,
2460
+ maxFee,
2461
+ chainId,
2462
+ ...additionalData
2463
+ ];
2464
+ return computeHashOnElements(dataToHash);
2465
+ }
2466
+ function calculateDeployTransactionHash(contractAddress, constructorCalldata, version, chainId) {
2467
+ return calculateTransactionHashCommon(
2468
+ "0x6465706c6f79" /* DEPLOY */,
2469
+ version,
2470
+ contractAddress,
2471
+ getSelectorFromName("constructor"),
2472
+ constructorCalldata,
2473
+ ZERO,
2474
+ chainId
2475
+ );
2476
+ }
2477
+ function calculateDeclareTransactionHash(classHash, senderAddress, version, maxFee, chainId, nonce) {
2478
+ return calculateTransactionHashCommon(
2479
+ "0x6465636c617265" /* DECLARE */,
2480
+ version,
2481
+ senderAddress,
2482
+ 0,
2483
+ [classHash],
2484
+ maxFee,
2485
+ chainId,
2486
+ [nonce]
2487
+ );
2488
+ }
2489
+ function calculateDeployAccountTransactionHash(contractAddress, classHash, constructorCalldata, salt, version, maxFee, chainId, nonce) {
2490
+ const calldata = [classHash, salt, ...constructorCalldata];
2491
+ return calculateTransactionHashCommon(
2492
+ "0x6465706c6f795f6163636f756e74" /* DEPLOY_ACCOUNT */,
2493
+ version,
2494
+ contractAddress,
2495
+ 0,
2496
+ calldata,
2497
+ maxFee,
2498
+ chainId,
2499
+ [nonce]
2500
+ );
2501
+ }
2502
+ function calculateTransactionHash(contractAddress, version, calldata, maxFee, chainId, nonce) {
2503
+ return calculateTransactionHashCommon(
2504
+ "0x696e766f6b65" /* INVOKE */,
2505
+ version,
2506
+ contractAddress,
2507
+ 0,
2508
+ calldata,
2509
+ maxFee,
2510
+ chainId,
2511
+ [nonce]
2512
+ );
2513
+ }
2514
+ function calculateContractAddressFromHash(salt, classHash, constructorCalldata, deployerAddress) {
2515
+ const constructorCalldataHash = computeHashOnElements(constructorCalldata);
2516
+ const CONTRACT_ADDRESS_PREFIX = toFelt("0x535441524b4e45545f434f4e54524143545f41444452455353");
2517
+ const dataToHash = [
2518
+ CONTRACT_ADDRESS_PREFIX,
2519
+ deployerAddress,
2520
+ salt,
2521
+ classHash,
2522
+ constructorCalldataHash
2523
+ ];
2524
+ return computeHashOnElements(dataToHash);
2525
+ }
2526
+
2527
+ // src/utils/json.ts
2528
+ var json_exports = {};
2529
+ __export(json_exports, {
2530
+ default: () => json_default,
2531
+ parse: () => parse,
2532
+ parseAlwaysAsBig: () => parseAlwaysAsBig,
2533
+ stringify: () => stringify,
2534
+ stringifyAlwaysAsBig: () => stringifyAlwaysAsBig
2535
+ });
2536
+ var import_json_bigint = __toESM(require("json-bigint"));
2537
+ var json = (alwaysParseAsBig) => {
2538
+ return (0, import_json_bigint.default)({
2539
+ alwaysParseAsBig,
2540
+ useNativeBigInt: true,
2541
+ protoAction: "preserve",
2542
+ constructorAction: "preserve"
2543
+ });
2544
+ };
2545
+ var { parse, stringify } = json(false);
2546
+ var { parse: parseAlwaysAsBig, stringify: stringifyAlwaysAsBig } = json(true);
2547
+ var json_default = { parse, stringify };
2548
+
2549
+ // src/utils/stark.ts
2550
+ var stark_exports = {};
2551
+ __export(stark_exports, {
2552
+ compileCalldata: () => compileCalldata,
2553
+ compressProgram: () => compressProgram,
2554
+ estimatedFeeToMaxFee: () => estimatedFeeToMaxFee,
2555
+ formatSignature: () => formatSignature,
2556
+ makeAddress: () => makeAddress,
2557
+ randomAddress: () => randomAddress
2558
+ });
2559
+ var import_pako = require("pako");
2560
+ function compressProgram(jsonProgram) {
2561
+ const stringified = typeof jsonProgram === "string" ? jsonProgram : stringify(jsonProgram);
2562
+ const compressedProgram = (0, import_pako.gzip)(stringified);
2563
+ return btoaUniversal(compressedProgram);
2564
+ }
2565
+ function randomAddress() {
2566
+ const randomKeyPair = genKeyPair();
2567
+ return getStarkKey(randomKeyPair);
2568
+ }
2569
+ function makeAddress(input) {
2570
+ return addHexPrefix(input).toLowerCase();
2571
+ }
2572
+ function formatSignature(sig) {
2573
+ if (!sig)
2574
+ return [];
2575
+ try {
2576
+ return sig.map((x) => toBN(x)).map((x) => x.toString());
2577
+ } catch (e) {
2578
+ return [];
2579
+ }
2580
+ }
2581
+ function compileCalldata(args) {
2582
+ return Object.values(args).flatMap((value) => {
2583
+ if (Array.isArray(value))
2584
+ return [toBN(value.length).toString(), ...value.map((x) => toBN(x).toString())];
2585
+ if (typeof value === "object" && "type" in value)
2586
+ return Object.entries(value).filter(([k]) => k !== "type").map(([, v]) => toBN(v).toString());
2587
+ return toBN(value).toString();
2588
+ });
2589
+ }
2590
+ function estimatedFeeToMaxFee(estimatedFee, overhead = 0.5) {
2591
+ const overHeadPercent = Math.round((1 + overhead) * 100);
2592
+ return toBN(estimatedFee).mul(toBN(overHeadPercent)).div(toBN(100));
2593
+ }
2594
+
2595
+ // src/utils/provider.ts
2596
+ function wait(delay) {
2597
+ return new Promise((res) => {
2598
+ setTimeout(res, delay);
2599
+ });
2600
+ }
2601
+ function parseCalldata(calldata = []) {
2602
+ return calldata.map((data) => {
2603
+ if (typeof data === "string" && isHex(data)) {
2604
+ return data;
2605
+ }
2606
+ return toHex(toBN(data));
2607
+ });
2608
+ }
2609
+ function parseContract(contract) {
2610
+ const parsedContract = typeof contract === "string" ? parse(contract) : contract;
2611
+ return {
2612
+ ...parsedContract,
2613
+ program: compressProgram(parsedContract.program)
2614
+ };
2615
+ }
2616
+
2617
+ // src/utils/responseParser/rpc.ts
2618
+ var RPCResponseParser = class {
2619
+ parseGetBlockResponse(res) {
2620
+ return {
2621
+ timestamp: res.timestamp,
2622
+ block_hash: res.block_hash,
2623
+ block_number: res.block_number,
2624
+ new_root: res.new_root,
2625
+ parent_hash: res.parent_hash,
2626
+ status: res.status,
2627
+ transactions: res.transactions
2628
+ };
2629
+ }
2630
+ parseGetTransactionResponse(res) {
2631
+ return {
2632
+ calldata: res.calldata || [],
2633
+ contract_address: res.contract_address,
2634
+ max_fee: res.max_fee,
2635
+ nonce: res.nonce,
2636
+ signature: res.signature || [],
2637
+ transaction_hash: res.transaction_hash,
2638
+ version: res.version
2639
+ };
2640
+ }
2641
+ parseFeeEstimateResponse(res) {
2642
+ return {
2643
+ overall_fee: toBN(res.overall_fee),
2644
+ gas_consumed: toBN(res.gas_consumed),
2645
+ gas_price: toBN(res.gas_price)
2646
+ };
2647
+ }
2648
+ parseCallContractResponse(res) {
2649
+ return {
2650
+ result: res
2651
+ };
2652
+ }
2653
+ };
2654
+
2655
+ // src/provider/utils.ts
2656
+ var Block = class {
2657
+ constructor(_identifier) {
2658
+ this.hash = null;
2659
+ this.number = null;
2660
+ this.tag = null;
2661
+ this.valueOf = () => this.number;
2662
+ this.toString = () => this.hash;
2663
+ this.setIdentifier = function(__identifier) {
2664
+ if (typeof __identifier === "string" && isHex(__identifier)) {
2665
+ this.hash = __identifier;
2666
+ } else if (typeof __identifier === "number") {
2667
+ this.number = __identifier;
2668
+ } else {
2669
+ this.tag = __identifier;
2670
+ }
2671
+ };
2672
+ this.setIdentifier(_identifier);
2673
+ }
2674
+ get queryIdentifier() {
2675
+ if (this.number !== null) {
2676
+ return `blockNumber=${this.number}`;
2677
+ }
2678
+ if (this.hash !== null) {
2679
+ return `blockHash=${this.hash}`;
2680
+ }
2681
+ return `blockNumber=${this.tag}`;
2682
+ }
2683
+ get identifier() {
2684
+ if (this.number !== null) {
2685
+ return { block_number: this.number };
2686
+ }
2687
+ if (this.hash !== null) {
2688
+ return { block_hash: this.hash };
2689
+ }
2690
+ return this.tag;
2691
+ }
2692
+ set identifier(_identifier) {
2693
+ this.setIdentifier(_identifier);
2694
+ }
2695
+ };
2696
+
2697
+ // src/provider/rpc.ts
2698
+ var RpcProvider = class {
2699
+ constructor(optionsOrProvider) {
2700
+ this.responseParser = new RPCResponseParser();
2701
+ const { nodeUrl, retries, headers } = optionsOrProvider;
2702
+ this.nodeUrl = nodeUrl;
2703
+ this.retries = retries || 200;
2704
+ this.headers = { "Content-Type": "application/json", ...headers };
2705
+ this.getChainId().then((chainId) => {
2706
+ this.chainId = chainId;
2707
+ });
2708
+ }
2709
+ fetch(method, params) {
2710
+ return fetchPonyfill_default(this.nodeUrl, {
2711
+ method: "POST",
2712
+ body: stringify({ method, jsonrpc: "2.0", params, id: 0 }),
2713
+ headers: this.headers
2714
+ });
2715
+ }
2716
+ errorHandler(error) {
2717
+ if (error) {
2718
+ const { code, message } = error;
2719
+ throw new Error(`${code}: ${message}`);
2720
+ }
2721
+ }
2722
+ async fetchEndpoint(method, params) {
2723
+ var _a;
2724
+ try {
2725
+ const rawResult = await this.fetch(method, params);
2726
+ const { error, result } = await rawResult.json();
2727
+ this.errorHandler(error);
2728
+ return result;
2729
+ } catch (error) {
2730
+ this.errorHandler((_a = error == null ? void 0 : error.response) == null ? void 0 : _a.data);
2731
+ throw error;
2732
+ }
2733
+ }
2734
+ async getChainId() {
2735
+ return this.fetchEndpoint("starknet_chainId");
2736
+ }
2737
+ async getBlock(blockIdentifier = "pending") {
2738
+ return this.getBlockWithTxHashes(blockIdentifier).then(
2739
+ this.responseParser.parseGetBlockResponse
2740
+ );
2741
+ }
2742
+ async getBlockHashAndNumber() {
2743
+ return this.fetchEndpoint("starknet_blockHashAndNumber");
2744
+ }
2745
+ async getBlockWithTxHashes(blockIdentifier = "pending") {
2746
+ const block_id = new Block(blockIdentifier).identifier;
2747
+ return this.fetchEndpoint("starknet_getBlockWithTxHashes", { block_id });
2748
+ }
2749
+ async getBlockWithTxs(blockIdentifier = "pending") {
2750
+ const block_id = new Block(blockIdentifier).identifier;
2751
+ return this.fetchEndpoint("starknet_getBlockWithTxs", { block_id });
2752
+ }
2753
+ async getClassHashAt(contractAddress, blockIdentifier = "pending") {
2754
+ const block_id = new Block(blockIdentifier).identifier;
2755
+ return this.fetchEndpoint("starknet_getClassHashAt", {
2756
+ block_id,
2757
+ contract_address: contractAddress
2758
+ });
2759
+ }
2760
+ async getNonce(contractAddress, blockIdentifier = "pending") {
2761
+ const block_id = new Block(blockIdentifier).identifier;
2762
+ return this.fetchEndpoint("starknet_getNonce", {
2763
+ contract_address: contractAddress,
2764
+ block_id
2765
+ });
2766
+ }
2767
+ async getPendingTransactions() {
2768
+ return this.fetchEndpoint("starknet_pendingTransactions");
2769
+ }
2770
+ async getProtocolVersion() {
2771
+ throw new Error("Pathfinder does not implement this rpc 0.1.0 method");
2772
+ }
2773
+ async getStateUpdate(blockIdentifier = "pending") {
2774
+ const block_id = new Block(blockIdentifier).identifier;
2775
+ return this.fetchEndpoint("starknet_getStateUpdate", { block_id });
2776
+ }
2777
+ async getStorageAt(contractAddress, key, blockIdentifier = "pending") {
2778
+ const parsedKey = toHex(toBN(key));
2779
+ const block_id = new Block(blockIdentifier).identifier;
2780
+ return this.fetchEndpoint("starknet_getStorageAt", {
2781
+ contract_address: contractAddress,
2782
+ key: parsedKey,
2783
+ block_id
2784
+ });
2785
+ }
2786
+ async getTransaction(txHash) {
2787
+ return this.getTransactionByHash(txHash).then(this.responseParser.parseGetTransactionResponse);
2788
+ }
2789
+ async getTransactionByHash(txHash) {
2790
+ return this.fetchEndpoint("starknet_getTransactionByHash", { transaction_hash: txHash });
2791
+ }
2792
+ async getTransactionByBlockIdAndIndex(blockIdentifier, index) {
2793
+ const block_id = new Block(blockIdentifier).identifier;
2794
+ return this.fetchEndpoint("starknet_getTransactionByBlockIdAndIndex", { block_id, index });
2795
+ }
2796
+ async getTransactionReceipt(txHash) {
2797
+ return this.fetchEndpoint("starknet_getTransactionReceipt", { transaction_hash: txHash });
2798
+ }
2799
+ async getClassByHash(classHash) {
2800
+ return this.getClass(classHash);
2801
+ }
2802
+ async getClass(classHash, blockIdentifier = "pending") {
2803
+ const block_id = new Block(blockIdentifier).identifier;
2804
+ return this.fetchEndpoint("starknet_getClass", { class_hash: classHash, block_id });
2805
+ }
2806
+ async getClassAt(contractAddress, blockIdentifier = "pending") {
2807
+ const block_id = new Block(blockIdentifier).identifier;
2808
+ return this.fetchEndpoint("starknet_getClassAt", {
2809
+ block_id,
2810
+ contract_address: contractAddress
2811
+ });
2812
+ }
2813
+ async getCode(_contractAddress, _blockIdentifier) {
2814
+ throw new Error("RPC does not implement getCode function");
2815
+ }
2816
+ async getEstimateFee(invocation, invocationDetails, blockIdentifier = "pending") {
2817
+ return this.getInvokeEstimateFee(invocation, invocationDetails, blockIdentifier);
2818
+ }
2819
+ async getInvokeEstimateFee(invocation, invocationDetails, blockIdentifier = "pending") {
2820
+ const block_id = new Block(blockIdentifier).identifier;
2821
+ return this.fetchEndpoint("starknet_estimateFee", {
2822
+ request: {
2823
+ type: "INVOKE",
2824
+ sender_address: invocation.contractAddress,
2825
+ calldata: parseCalldata(invocation.calldata),
2826
+ signature: bigNumberishArrayToHexadecimalStringArray(invocation.signature || []),
2827
+ version: toHex(toBN((invocationDetails == null ? void 0 : invocationDetails.version) || 0)),
2828
+ nonce: toHex(toBN(invocationDetails.nonce)),
2829
+ max_fee: toHex(toBN((invocationDetails == null ? void 0 : invocationDetails.maxFee) || 0))
2830
+ },
2831
+ block_id
2832
+ }).then(this.responseParser.parseFeeEstimateResponse);
2833
+ }
2834
+ async getDeclareEstimateFee({ senderAddress, contractDefinition, signature }, details, blockIdentifier = "pending") {
2835
+ const block_id = new Block(blockIdentifier).identifier;
2836
+ return this.fetchEndpoint("starknet_estimateFee", {
2837
+ request: {
2838
+ type: "DECLARE",
2839
+ contract_class: {
2840
+ program: contractDefinition.program,
2841
+ entry_points_by_type: contractDefinition.entry_points_by_type,
2842
+ abi: contractDefinition.abi
2843
+ },
2844
+ sender_address: senderAddress,
2845
+ signature: bigNumberishArrayToHexadecimalStringArray(signature || []),
2846
+ version: toHex(toBN((details == null ? void 0 : details.version) || 0)),
2847
+ nonce: toHex(toBN(details.nonce)),
2848
+ max_fee: toHex(toBN((details == null ? void 0 : details.maxFee) || 0))
2849
+ },
2850
+ block_id
2851
+ }).then(this.responseParser.parseFeeEstimateResponse);
2852
+ }
2853
+ async getDeployAccountEstimateFee({ classHash, constructorCalldata, addressSalt, signature }, details, blockIdentifier = "pending") {
2854
+ const block_id = new Block(blockIdentifier).identifier;
2855
+ return this.fetchEndpoint("starknet_estimateFee", {
2856
+ request: {
2857
+ type: "DEPLOY_ACCOUNT",
2858
+ constructor_calldata: bigNumberishArrayToHexadecimalStringArray(constructorCalldata || []),
2859
+ class_hash: toHex(toBN(classHash)),
2860
+ contract_address_salt: toHex(toBN(addressSalt || 0)),
2861
+ signature: bigNumberishArrayToHexadecimalStringArray(signature || []),
2862
+ version: toHex(toBN((details == null ? void 0 : details.version) || 0)),
2863
+ nonce: toHex(toBN(details.nonce)),
2864
+ max_fee: toHex(toBN((details == null ? void 0 : details.maxFee) || 0))
2865
+ },
2866
+ block_id
2867
+ }).then(this.responseParser.parseFeeEstimateResponse);
2868
+ }
2869
+ async declareContract({ contractDefinition, signature, senderAddress }, details) {
2870
+ return this.fetchEndpoint("starknet_addDeclareTransaction", {
2871
+ declare_transaction: {
2872
+ contract_class: {
2873
+ program: contractDefinition.program,
2874
+ entry_points_by_type: contractDefinition.entry_points_by_type,
2875
+ abi: contractDefinition.abi
2876
+ },
2877
+ type: "DECLARE",
2878
+ version: toHex(toBN(details.version || 0)),
2879
+ max_fee: toHex(toBN(details.maxFee || 0)),
2880
+ signature: bigNumberishArrayToHexadecimalStringArray(signature || []),
2881
+ sender_address: senderAddress,
2882
+ nonce: toHex(toBN(details.nonce))
2883
+ }
2884
+ });
2885
+ }
2886
+ async deployContract({ contract, constructorCalldata, addressSalt }, details) {
2887
+ const contractDefinition = parseContract(contract);
2888
+ return this.fetchEndpoint("starknet_addDeployTransaction", {
2889
+ deploy_transaction: {
2890
+ contract_address_salt: addressSalt ?? randomAddress(),
2891
+ constructor_calldata: bigNumberishArrayToHexadecimalStringArray(constructorCalldata ?? []),
2892
+ contract_class: {
2893
+ program: contractDefinition.program,
2894
+ entry_points_by_type: contractDefinition.entry_points_by_type,
2895
+ abi: contractDefinition.abi
2896
+ },
2897
+ type: "DEPLOY",
2898
+ version: toHex(toBN((details == null ? void 0 : details.version) || 0))
2899
+ }
2900
+ });
2901
+ }
2902
+ async deployAccountContract({ classHash, constructorCalldata, addressSalt, signature }, details) {
2903
+ return this.fetchEndpoint("starknet_addDeployAccountTransaction", {
2904
+ constructor_calldata: bigNumberishArrayToHexadecimalStringArray(constructorCalldata || []),
2905
+ class_hash: toHex(toBN(classHash)),
2906
+ contract_address_salt: toHex(toBN(addressSalt || 0)),
2907
+ type: "DEPLOY",
2908
+ max_fee: toHex(toBN(details.maxFee || 0)),
2909
+ version: toHex(toBN(details.version || 0)),
2910
+ signature: bigNumberishArrayToHexadecimalStringArray(signature || []),
2911
+ nonce: toHex(toBN(details.nonce))
2912
+ });
2913
+ }
2914
+ async invokeFunction(functionInvocation, details) {
2915
+ return this.fetchEndpoint("starknet_addInvokeTransaction", {
2916
+ invoke_transaction: {
2917
+ sender_address: functionInvocation.contractAddress,
2918
+ calldata: parseCalldata(functionInvocation.calldata),
2919
+ type: "INVOKE",
2920
+ max_fee: toHex(toBN(details.maxFee || 0)),
2921
+ version: toHex(toBN(details.version || 0)),
2922
+ signature: bigNumberishArrayToHexadecimalStringArray(functionInvocation.signature || []),
2923
+ nonce: toHex(toBN(details.nonce))
2924
+ }
2925
+ });
2926
+ }
2927
+ async callContract(call, blockIdentifier = "pending") {
2928
+ const block_id = new Block(blockIdentifier).identifier;
2929
+ const result = await this.fetchEndpoint("starknet_call", {
2930
+ request: {
2931
+ contract_address: call.contractAddress,
2932
+ entry_point_selector: getSelectorFromName(call.entrypoint),
2933
+ calldata: parseCalldata(call.calldata)
2934
+ },
2935
+ block_id
2936
+ });
2937
+ return this.responseParser.parseCallContractResponse(result);
2938
+ }
2939
+ async traceTransaction(transactionHash) {
2940
+ return this.fetchEndpoint("starknet_traceTransaction", { transaction_hash: transactionHash });
2941
+ }
2942
+ async traceBlockTransactions(blockHash) {
2943
+ return this.fetchEndpoint("starknet_traceBlockTransactions", { block_hash: blockHash });
2944
+ }
2945
+ async waitForTransaction(txHash, retryInterval = 8e3) {
2946
+ let { retries } = this;
2947
+ let onchain = false;
2948
+ while (!onchain) {
2949
+ const successStates = ["ACCEPTED_ON_L1", "ACCEPTED_ON_L2", "PENDING"];
2950
+ const errorStates = ["REJECTED", "NOT_RECEIVED"];
2951
+ await wait(retryInterval);
2952
+ try {
2953
+ const res = await this.getTransactionReceipt(txHash);
2954
+ if (!("status" in res)) {
2955
+ const error = new Error("pending transaction");
2956
+ throw error;
2957
+ }
2958
+ if (res.status && successStates.includes(res.status)) {
2959
+ onchain = true;
2960
+ } else if (res.status && errorStates.includes(res.status)) {
2961
+ const message = res.status;
2962
+ const error = new Error(message);
2963
+ error.response = res;
2964
+ throw error;
2965
+ }
2966
+ } catch (error) {
2967
+ if (error instanceof Error && errorStates.includes(error.message)) {
2968
+ throw error;
2969
+ }
2970
+ if (retries === 0) {
2971
+ throw new Error("waitForTransaction timedout with retries");
2972
+ }
2973
+ }
2974
+ retries -= 1;
2975
+ }
2976
+ await wait(retryInterval);
2977
+ }
2978
+ async getTransactionCount(blockIdentifier = "pending") {
2979
+ const block_id = new Block(blockIdentifier).identifier;
2980
+ return this.fetchEndpoint("starknet_getBlockTransactionCount", { block_id });
2981
+ }
2982
+ async getBlockNumber() {
2983
+ return this.fetchEndpoint("starknet_blockNumber");
2984
+ }
2985
+ async getSyncingStats() {
2986
+ return this.fetchEndpoint("starknet_syncing");
2987
+ }
2988
+ async getEvents(eventFilter) {
2989
+ return this.fetchEndpoint("starknet_getEvents", { filter: eventFilter });
2990
+ }
2991
+ };
2992
+
2993
+ // src/provider/sequencer.ts
2994
+ var import_url_join2 = __toESM(require("url-join"));
2995
+
2996
+ // src/utils/responseParser/index.ts
2997
+ var ResponseParser = class {
2998
+ };
2999
+
3000
+ // src/utils/responseParser/sequencer.ts
3001
+ var SequencerAPIResponseParser = class extends ResponseParser {
3002
+ parseGetBlockResponse(res) {
3003
+ return {
3004
+ ...res,
3005
+ new_root: res.state_root,
3006
+ parent_hash: res.parent_block_hash,
3007
+ transactions: Object.values(res.transactions).map((value) => "transaction_hash" in value && value.transaction_hash).filter(Boolean)
3008
+ };
3009
+ }
3010
+ parseGetTransactionResponse(res) {
3011
+ return {
3012
+ ...res,
3013
+ calldata: "calldata" in res.transaction ? res.transaction.calldata : [],
3014
+ contract_address: "contract_address" in res.transaction ? res.transaction.contract_address : void 0,
3015
+ contract_class: "contract_class" in res.transaction ? res.transaction.contract_class : void 0,
3016
+ entry_point_selector: "entry_point_selector" in res.transaction ? res.transaction.entry_point_selector : void 0,
3017
+ max_fee: "max_fee" in res.transaction ? res.transaction.max_fee : void 0,
3018
+ nonce: res.transaction.nonce,
3019
+ sender_address: "sender_address" in res.transaction ? res.transaction.sender_address : void 0,
3020
+ signature: "signature" in res.transaction ? res.transaction.signature : void 0,
3021
+ transaction_hash: "transaction_hash" in res.transaction ? res.transaction.transaction_hash : void 0,
3022
+ version: "version" in res.transaction ? res.transaction.version : void 0
3023
+ };
3024
+ }
3025
+ parseGetTransactionReceiptResponse(res) {
3026
+ return {
3027
+ transaction_hash: res.transaction_hash,
3028
+ status: res.status,
3029
+ messages_sent: res.l2_to_l1_messages,
3030
+ events: res.events,
3031
+ ..."block_hash" in res && { block_hash: res.block_hash },
3032
+ ..."block_number" in res && { block_number: res.block_number },
3033
+ ..."actual_fee" in res && { actual_fee: res.actual_fee },
3034
+ ..."transaction_index" in res && { transaction_index: res.transaction_index },
3035
+ ..."execution_resources" in res && { execution_resources: res.execution_resources },
3036
+ ..."l1_to_l2_consumed_message" in res && {
3037
+ l1_to_l2_consumed_message: res["l1_to_l2_consumed_message"]
3038
+ },
3039
+ ..."transaction_failure_reason" in res && {
3040
+ transaction_failure_reason: res.transaction_failure_reason
3041
+ }
3042
+ };
3043
+ }
3044
+ parseFeeEstimateResponse(res) {
3045
+ if ("overall_fee" in res) {
3046
+ let gasInfo = {};
3047
+ try {
3048
+ gasInfo = {
3049
+ gas_consumed: toBN(res.gas_usage),
3050
+ gas_price: toBN(res.gas_price)
3051
+ };
3052
+ } catch {
3053
+ }
3054
+ return {
3055
+ overall_fee: toBN(res.overall_fee),
3056
+ ...gasInfo
3057
+ };
3058
+ }
3059
+ return {
3060
+ overall_fee: toBN(res.amount)
3061
+ };
3062
+ }
3063
+ parseCallContractResponse(res) {
3064
+ return {
3065
+ result: res.result
3066
+ };
3067
+ }
3068
+ parseInvokeFunctionResponse(res) {
3069
+ return {
3070
+ transaction_hash: res.transaction_hash
3071
+ };
3072
+ }
3073
+ parseDeployContractResponse(res) {
3074
+ return {
3075
+ transaction_hash: res.transaction_hash,
3076
+ contract_address: res.address
3077
+ };
3078
+ }
3079
+ parseDeclareContractResponse(res) {
3080
+ return {
3081
+ transaction_hash: res.transaction_hash,
3082
+ class_hash: res.class_hash
3083
+ };
3084
+ }
3085
+ };
3086
+
3087
+ // src/utils/url.ts
3088
+ var import_url_join = __toESM(require("url-join"));
3089
+ var protocolAndDomainRE = /^(?:\w+:)?\/\/(\S+)$/;
3090
+ var localhostDomainRE = /^localhost[:?\d]*(?:[^:?\d]\S*)?$/;
3091
+ var nonLocalhostDomainRE = /^[^\s.]+\.\S{2,}$/;
3092
+ function isUrl(s) {
3093
+ if (!s) {
3094
+ return false;
3095
+ }
3096
+ if (typeof s !== "string") {
3097
+ return false;
3098
+ }
3099
+ const match = s.match(protocolAndDomainRE);
3100
+ if (!match) {
3101
+ return false;
3102
+ }
3103
+ const everythingAfterProtocol = match[1];
3104
+ if (!everythingAfterProtocol) {
3105
+ return false;
3106
+ }
3107
+ if (localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol)) {
3108
+ return true;
3109
+ }
3110
+ return false;
3111
+ }
3112
+ function buildUrl(baseUrl, defaultPath, urlOrPath) {
3113
+ return isUrl(urlOrPath) ? urlOrPath : (0, import_url_join.default)(baseUrl, urlOrPath ?? defaultPath);
3114
+ }
3115
+
3116
+ // src/provider/errors.ts
3117
+ var import_ts_custom_error = require("ts-custom-error");
3118
+ var GatewayError = class extends import_ts_custom_error.CustomError {
3119
+ constructor(message, errorCode) {
3120
+ super(message);
3121
+ this.errorCode = errorCode;
3122
+ }
3123
+ };
3124
+ var HttpError = class extends import_ts_custom_error.CustomError {
3125
+ constructor(message, errorCode) {
3126
+ super(message);
3127
+ this.errorCode = errorCode;
3128
+ }
3129
+ };
3130
+
3131
+ // src/provider/sequencer.ts
3132
+ function isEmptyQueryObject(obj) {
3133
+ return obj === void 0 || Object.keys(obj).length === 0 || Object.keys(obj).length === 1 && Object.entries(obj).every(([k, v]) => k === "blockIdentifier" && v === null);
3134
+ }
3135
+ var SequencerProvider = class {
3136
+ constructor(optionsOrProvider = { network: "goerli-alpha-2" }) {
3137
+ this.responseParser = new SequencerAPIResponseParser();
3138
+ if ("network" in optionsOrProvider) {
3139
+ this.baseUrl = SequencerProvider.getNetworkFromName(optionsOrProvider.network);
3140
+ this.chainId = SequencerProvider.getChainIdFromBaseUrl(this.baseUrl);
3141
+ this.feederGatewayUrl = (0, import_url_join2.default)(this.baseUrl, "feeder_gateway");
3142
+ this.gatewayUrl = (0, import_url_join2.default)(this.baseUrl, "gateway");
3143
+ } else {
3144
+ this.baseUrl = optionsOrProvider.baseUrl;
3145
+ this.feederGatewayUrl = buildUrl(
3146
+ this.baseUrl,
3147
+ "feeder_gateway",
3148
+ optionsOrProvider.feederGatewayUrl
3149
+ );
3150
+ this.gatewayUrl = buildUrl(this.baseUrl, "gateway", optionsOrProvider.gatewayUrl);
3151
+ this.chainId = optionsOrProvider.chainId ?? SequencerProvider.getChainIdFromBaseUrl(optionsOrProvider.baseUrl);
3152
+ this.headers = optionsOrProvider == null ? void 0 : optionsOrProvider.headers;
3153
+ }
3154
+ }
3155
+ static getNetworkFromName(name) {
3156
+ switch (name) {
3157
+ case "mainnet-alpha":
3158
+ return "https://alpha-mainnet.starknet.io";
3159
+ case "goerli-alpha":
3160
+ return "https://alpha4.starknet.io";
3161
+ case "goerli-alpha-2":
3162
+ return "https://alpha4-2.starknet.io";
3163
+ default:
3164
+ return "https://alpha4.starknet.io";
3165
+ }
3166
+ }
3167
+ static getChainIdFromBaseUrl(baseUrl) {
3168
+ try {
3169
+ const url = new URL(baseUrl);
3170
+ if (url.host.includes("mainnet.starknet.io")) {
3171
+ return "0x534e5f4d41494e" /* MAINNET */;
3172
+ }
3173
+ } catch {
3174
+ console.error(`Could not parse baseUrl: ${baseUrl}`);
3175
+ }
3176
+ return "0x534e5f474f45524c49" /* TESTNET */;
3177
+ }
3178
+ getFetchUrl(endpoint) {
3179
+ const gatewayUrlEndpoints = ["add_transaction"];
3180
+ return gatewayUrlEndpoints.includes(endpoint) ? this.gatewayUrl : this.feederGatewayUrl;
3181
+ }
3182
+ getFetchMethod(endpoint) {
3183
+ const postMethodEndpoints = [
3184
+ "add_transaction",
3185
+ "call_contract",
3186
+ "estimate_fee",
3187
+ "estimate_message_fee"
3188
+ ];
3189
+ return postMethodEndpoints.includes(endpoint) ? "POST" : "GET";
3190
+ }
3191
+ getQueryString(query) {
3192
+ if (isEmptyQueryObject(query)) {
3193
+ return "";
3194
+ }
3195
+ const queryString = Object.entries(query).map(([key, value]) => {
3196
+ if (key === "blockIdentifier") {
3197
+ const block = new Block(value);
3198
+ return `${block.queryIdentifier}`;
3199
+ }
3200
+ return `${key}=${value}`;
3201
+ }).join("&");
3202
+ return `?${queryString}`;
3203
+ }
3204
+ getHeaders(method) {
3205
+ if (method === "POST") {
3206
+ return {
3207
+ "Content-Type": "application/json",
3208
+ ...this.headers
3209
+ };
3210
+ }
3211
+ return this.headers;
3212
+ }
3213
+ async fetchEndpoint(endpoint, ...[query, request]) {
3214
+ const baseUrl = this.getFetchUrl(endpoint);
3215
+ const method = this.getFetchMethod(endpoint);
3216
+ const queryString = this.getQueryString(query);
3217
+ const headers = this.getHeaders(method);
3218
+ const url = (0, import_url_join2.default)(baseUrl, endpoint, queryString);
3219
+ try {
3220
+ const res = await fetchPonyfill_default(url, {
3221
+ method,
3222
+ body: stringify(request),
3223
+ headers
3224
+ });
3225
+ const textResponse = await res.text();
3226
+ if (!res.ok) {
3227
+ let responseBody;
3228
+ try {
3229
+ responseBody = parse(textResponse);
3230
+ } catch {
3231
+ throw new HttpError(res.statusText, res.status);
3232
+ }
3233
+ const errorCode = responseBody.code || (responseBody == null ? void 0 : responseBody.status_code);
3234
+ throw new GatewayError(responseBody.message, errorCode);
3235
+ }
3236
+ if (endpoint === "estimate_fee") {
3237
+ return parseAlwaysAsBig(textResponse, (_, v) => {
3238
+ if (v && typeof v === "bigint") {
3239
+ return toBN(v.toString());
3240
+ }
3241
+ return v;
3242
+ });
3243
+ }
3244
+ return parse(textResponse);
3245
+ } catch (err) {
3246
+ if (err instanceof GatewayError || err instanceof HttpError) {
3247
+ throw err;
3248
+ }
3249
+ if (err instanceof Error) {
3250
+ throw Error(`Could not ${method} from endpoint \`${url}\`: ${err.message}`);
3251
+ }
3252
+ throw err;
3253
+ }
3254
+ }
3255
+ async getChainId() {
3256
+ return Promise.resolve(this.chainId);
3257
+ }
3258
+ async callContract({ contractAddress, entrypoint: entryPointSelector, calldata = [] }, blockIdentifier = "pending") {
3259
+ return this.fetchEndpoint(
3260
+ "call_contract",
3261
+ { blockIdentifier },
3262
+ {
3263
+ signature: [],
3264
+ contract_address: contractAddress,
3265
+ entry_point_selector: getSelectorFromName(entryPointSelector),
3266
+ calldata
3267
+ }
3268
+ ).then(this.responseParser.parseCallContractResponse);
3269
+ }
3270
+ async getBlock(blockIdentifier = "pending") {
3271
+ return this.fetchEndpoint("get_block", { blockIdentifier }).then(
3272
+ this.responseParser.parseGetBlockResponse
3273
+ );
3274
+ }
3275
+ async getNonce(contractAddress, blockIdentifier = "pending") {
3276
+ return this.fetchEndpoint("get_nonce", { contractAddress, blockIdentifier });
3277
+ }
3278
+ async getStorageAt(contractAddress, key, blockIdentifier = "pending") {
3279
+ const parsedKey = toBN(key).toString(10);
3280
+ return this.fetchEndpoint("get_storage_at", {
3281
+ blockIdentifier,
3282
+ contractAddress,
3283
+ key: parsedKey
3284
+ });
3285
+ }
3286
+ async getTransaction(txHash) {
3287
+ const txHashHex = toHex(toBN(txHash));
3288
+ return this.fetchEndpoint("get_transaction", { transactionHash: txHashHex }).then(
3289
+ (value) => this.responseParser.parseGetTransactionResponse(value)
3290
+ );
3291
+ }
3292
+ async getTransactionReceipt(txHash) {
3293
+ const txHashHex = toHex(toBN(txHash));
3294
+ return this.fetchEndpoint("get_transaction_receipt", { transactionHash: txHashHex }).then(
3295
+ this.responseParser.parseGetTransactionReceiptResponse
3296
+ );
3297
+ }
3298
+ async getClassAt(contractAddress, blockIdentifier = "pending") {
3299
+ return this.fetchEndpoint("get_full_contract", { blockIdentifier, contractAddress }).then(
3300
+ parseContract
3301
+ );
3302
+ }
3303
+ async getClassHashAt(contractAddress, blockIdentifier = "pending") {
3304
+ return this.fetchEndpoint("get_class_hash_at", { blockIdentifier, contractAddress });
3305
+ }
3306
+ async getClassByHash(classHash) {
3307
+ return this.fetchEndpoint("get_class_by_hash", { classHash }).then(parseContract);
3308
+ }
3309
+ async invokeFunction(functionInvocation, details) {
3310
+ return this.fetchEndpoint("add_transaction", void 0, {
3311
+ type: "INVOKE_FUNCTION",
3312
+ contract_address: functionInvocation.contractAddress,
3313
+ calldata: bigNumberishArrayToDecimalStringArray(functionInvocation.calldata ?? []),
3314
+ signature: bigNumberishArrayToDecimalStringArray(functionInvocation.signature ?? []),
3315
+ nonce: toHex(toBN(details.nonce)),
3316
+ max_fee: toHex(toBN(details.maxFee || 0)),
3317
+ version: toHex(toBN(details.version || 1))
3318
+ }).then(this.responseParser.parseInvokeFunctionResponse);
3319
+ }
3320
+ async deployContract({
3321
+ contract,
3322
+ constructorCalldata,
3323
+ addressSalt
3324
+ }) {
3325
+ const contractDefinition = parseContract(contract);
3326
+ return this.fetchEndpoint("add_transaction", void 0, {
3327
+ type: "DEPLOY",
3328
+ contract_address_salt: addressSalt ?? randomAddress(),
3329
+ constructor_calldata: bigNumberishArrayToDecimalStringArray(constructorCalldata ?? []),
3330
+ contract_definition: contractDefinition
3331
+ }).then(this.responseParser.parseDeployContractResponse);
3332
+ }
3333
+ async deployAccountContract({ classHash, constructorCalldata, addressSalt, signature }, details) {
3334
+ return this.fetchEndpoint("add_transaction", void 0, {
3335
+ type: "DEPLOY_ACCOUNT",
3336
+ contract_address_salt: addressSalt ?? randomAddress(),
3337
+ constructor_calldata: bigNumberishArrayToDecimalStringArray(constructorCalldata ?? []),
3338
+ class_hash: toHex(toBN(classHash)),
3339
+ max_fee: toHex(toBN(details.maxFee || 0)),
3340
+ version: toHex(toBN(details.version || 0)),
3341
+ nonce: toHex(toBN(details.nonce)),
3342
+ signature: bigNumberishArrayToDecimalStringArray(signature || [])
3343
+ }).then(this.responseParser.parseDeployContractResponse);
3344
+ }
3345
+ async declareContract({ senderAddress, contractDefinition, signature }, details) {
3346
+ return this.fetchEndpoint("add_transaction", void 0, {
3347
+ type: "DECLARE",
3348
+ contract_class: contractDefinition,
3349
+ nonce: toHex(toBN(details.nonce)),
3350
+ signature: bigNumberishArrayToDecimalStringArray(signature || []),
3351
+ sender_address: senderAddress,
3352
+ max_fee: toHex(toBN(details.maxFee || 0)),
3353
+ version: toHex(toBN(details.version || 1))
3354
+ }).then(this.responseParser.parseDeclareContractResponse);
3355
+ }
3356
+ async getEstimateFee(invocation, invocationDetails, blockIdentifier = "pending") {
3357
+ return this.getInvokeEstimateFee(invocation, invocationDetails, blockIdentifier);
3358
+ }
3359
+ async getInvokeEstimateFee(invocation, invocationDetails, blockIdentifier = "pending") {
3360
+ return this.fetchEndpoint(
3361
+ "estimate_fee",
3362
+ { blockIdentifier },
3363
+ {
3364
+ type: "INVOKE_FUNCTION",
3365
+ contract_address: invocation.contractAddress,
3366
+ calldata: invocation.calldata ?? [],
3367
+ signature: bigNumberishArrayToDecimalStringArray(invocation.signature || []),
3368
+ version: toHex(toBN((invocationDetails == null ? void 0 : invocationDetails.version) || 1)),
3369
+ nonce: toHex(toBN(invocationDetails.nonce))
3370
+ }
3371
+ ).then(this.responseParser.parseFeeEstimateResponse);
3372
+ }
3373
+ async getDeclareEstimateFee({ senderAddress, contractDefinition, signature }, details, blockIdentifier = "pending") {
3374
+ return this.fetchEndpoint(
3375
+ "estimate_fee",
3376
+ { blockIdentifier },
3377
+ {
3378
+ type: "DECLARE",
3379
+ sender_address: senderAddress,
3380
+ contract_class: contractDefinition,
3381
+ signature: bigNumberishArrayToDecimalStringArray(signature || []),
3382
+ version: toHex(toBN((details == null ? void 0 : details.version) || 1)),
3383
+ nonce: toHex(toBN(details.nonce))
3384
+ }
3385
+ ).then(this.responseParser.parseFeeEstimateResponse);
3386
+ }
3387
+ async getDeployAccountEstimateFee({ classHash, addressSalt, constructorCalldata, signature }, details, blockIdentifier = "pending") {
3388
+ return this.fetchEndpoint(
3389
+ "estimate_fee",
3390
+ { blockIdentifier },
3391
+ {
3392
+ type: "DEPLOY_ACCOUNT",
3393
+ class_hash: toHex(toBN(classHash)),
3394
+ constructor_calldata: bigNumberishArrayToDecimalStringArray(constructorCalldata || []),
3395
+ contract_address_salt: toHex(toBN(addressSalt || 0)),
3396
+ signature: bigNumberishArrayToDecimalStringArray(signature || []),
3397
+ version: toHex(toBN((details == null ? void 0 : details.version) || 0)),
3398
+ nonce: toHex(toBN(details.nonce))
3399
+ }
3400
+ ).then(this.responseParser.parseFeeEstimateResponse);
3401
+ }
3402
+ async getCode(contractAddress, blockIdentifier = "pending") {
3403
+ return this.fetchEndpoint("get_code", { contractAddress, blockIdentifier });
3404
+ }
3405
+ async waitForTransaction(txHash, retryInterval = 8e3) {
3406
+ let onchain = false;
3407
+ while (!onchain) {
3408
+ await wait(retryInterval);
3409
+ const res = await this.getTransactionStatus(txHash);
3410
+ const successStates = ["ACCEPTED_ON_L1", "ACCEPTED_ON_L2", "PENDING"];
3411
+ const errorStates = ["REJECTED", "NOT_RECEIVED"];
3412
+ if (successStates.includes(res.tx_status)) {
3413
+ onchain = true;
3414
+ } else if (errorStates.includes(res.tx_status)) {
3415
+ const message = res.tx_failure_reason ? `${res.tx_status}: ${res.tx_failure_reason.code}
3416
+ ${res.tx_failure_reason.error_message}` : res.tx_status;
3417
+ const error = new Error(message);
3418
+ error.response = res;
3419
+ throw error;
3420
+ }
3421
+ }
3422
+ }
3423
+ async getTransactionStatus(txHash) {
3424
+ const txHashHex = toHex(toBN(txHash));
3425
+ return this.fetchEndpoint("get_transaction_status", { transactionHash: txHashHex });
3426
+ }
3427
+ async getContractAddresses() {
3428
+ return this.fetchEndpoint("get_contract_addresses");
3429
+ }
3430
+ async getTransactionTrace(txHash) {
3431
+ const txHashHex = toHex(toBN(txHash));
3432
+ return this.fetchEndpoint("get_transaction_trace", { transactionHash: txHashHex });
3433
+ }
3434
+ async estimateMessageFee({ from_address, to_address, entry_point_selector, payload }, blockIdentifier = "pending") {
3435
+ const validCallL1Handler = {
3436
+ from_address: getDecimalString(from_address),
3437
+ to_address: getHexString(to_address),
3438
+ entry_point_selector: getSelector(entry_point_selector),
3439
+ payload: getHexStringArray(payload)
3440
+ };
3441
+ return this.fetchEndpoint("estimate_message_fee", { blockIdentifier }, validCallL1Handler);
3442
+ }
3443
+ };
3444
+
3445
+ // src/provider/default.ts
3446
+ var Provider = class {
3447
+ constructor(providerOrOptions) {
3448
+ if (providerOrOptions && "chainId" in providerOrOptions) {
3449
+ this.provider = providerOrOptions;
3450
+ } else if (providerOrOptions == null ? void 0 : providerOrOptions.rpc) {
3451
+ this.provider = new RpcProvider(providerOrOptions.rpc);
3452
+ } else if (providerOrOptions == null ? void 0 : providerOrOptions.sequencer) {
3453
+ this.provider = new SequencerProvider(providerOrOptions.sequencer);
3454
+ } else {
3455
+ this.provider = new SequencerProvider();
3456
+ }
3457
+ }
3458
+ get chainId() {
3459
+ return this.provider.chainId;
3460
+ }
3461
+ async getChainId() {
3462
+ return this.provider.getChainId();
3463
+ }
3464
+ async getBlock(blockIdentifier = "pending") {
3465
+ return this.provider.getBlock(blockIdentifier);
3466
+ }
3467
+ async getClassAt(contractAddress, blockIdentifier = "pending") {
3468
+ return this.provider.getClassAt(contractAddress, blockIdentifier);
3469
+ }
3470
+ async getClassHashAt(contractAddress, blockIdentifier = "pending") {
3471
+ return this.provider.getClassHashAt(contractAddress, blockIdentifier);
3472
+ }
3473
+ getClassByHash(classHash) {
3474
+ return this.provider.getClassByHash(classHash);
3475
+ }
3476
+ async getEstimateFee(invocationWithTxType, invocationDetails, blockIdentifier = "pending") {
3477
+ return this.provider.getEstimateFee(invocationWithTxType, invocationDetails, blockIdentifier);
3478
+ }
3479
+ async getInvokeEstimateFee(invocationWithTxType, invocationDetails, blockIdentifier = "pending") {
3480
+ return this.provider.getInvokeEstimateFee(
3481
+ invocationWithTxType,
3482
+ invocationDetails,
3483
+ blockIdentifier
3484
+ );
3485
+ }
3486
+ async getNonce(contractAddress, blockIdentifier) {
3487
+ return this.provider.getNonce(contractAddress, blockIdentifier);
3488
+ }
3489
+ async getStorageAt(contractAddress, key, blockIdentifier = "pending") {
3490
+ return this.provider.getStorageAt(contractAddress, key, blockIdentifier);
3491
+ }
3492
+ async getTransaction(txHash) {
3493
+ return this.provider.getTransaction(txHash);
3494
+ }
3495
+ async getTransactionReceipt(txHash) {
3496
+ return this.provider.getTransactionReceipt(txHash);
3497
+ }
3498
+ async callContract(request, blockIdentifier = "pending") {
3499
+ return this.provider.callContract(request, blockIdentifier);
3500
+ }
3501
+ async invokeFunction(functionInvocation, details) {
3502
+ return this.provider.invokeFunction(functionInvocation, details);
3503
+ }
3504
+ async deployContract(payload, details) {
3505
+ return this.provider.deployContract(payload, details);
3506
+ }
3507
+ async deployAccountContract(payload, details) {
3508
+ return this.provider.deployAccountContract(payload, details);
3509
+ }
3510
+ async declareContract(transaction, details) {
3511
+ return this.provider.declareContract(transaction, details);
3512
+ }
3513
+ async getDeclareEstimateFee(transaction, details, blockIdentifier = "pending") {
3514
+ return this.provider.getDeclareEstimateFee(transaction, details, blockIdentifier);
3515
+ }
3516
+ getDeployAccountEstimateFee(transaction, details, blockIdentifier = "pending") {
3517
+ return this.provider.getDeployAccountEstimateFee(transaction, details, blockIdentifier);
3518
+ }
3519
+ async getCode(contractAddress, blockIdentifier) {
3520
+ return this.provider.getCode(contractAddress, blockIdentifier);
3521
+ }
3522
+ async waitForTransaction(txHash, retryInterval) {
3523
+ return this.provider.waitForTransaction(txHash, retryInterval);
3524
+ }
3525
+ };
3526
+
3527
+ // src/provider/interface.ts
3528
+ var ProviderInterface = class {
3529
+ };
3530
+
3531
+ // src/provider/index.ts
3532
+ var defaultProvider = new Provider();
3533
+
3534
+ // src/contract/default.ts
3535
+ function parseFelt(candidate) {
3536
+ try {
3537
+ return toBN(candidate);
3538
+ } catch (e) {
3539
+ throw Error("Couldnt parse felt");
3540
+ }
3541
+ }
3542
+ function buildCall(contract, functionAbi) {
3543
+ return async function(...args) {
3544
+ return contract.call(functionAbi.name, args);
3545
+ };
3546
+ }
3547
+ function buildInvoke(contract, functionAbi) {
3548
+ return async function(...args) {
3549
+ const { inputs } = functionAbi;
3550
+ const inputsLength = inputs.reduce((acc, input) => {
3551
+ if (!/_len$/.test(input.name)) {
3552
+ return acc + 1;
3553
+ }
3554
+ return acc;
3555
+ }, 0);
3556
+ const options = {};
3557
+ if (inputsLength + 1 === args.length && typeof args[args.length - 1] === "object") {
3558
+ Object.assign(options, args.pop());
3559
+ }
3560
+ return contract.invoke(functionAbi.name, args, options);
3561
+ };
3562
+ }
3563
+ function buildDefault(contract, functionAbi) {
3564
+ if (functionAbi.stateMutability === "view") {
3565
+ return buildCall(contract, functionAbi);
3566
+ }
3567
+ return buildInvoke(contract, functionAbi);
3568
+ }
3569
+ function buildPopulate(contract, functionAbi) {
3570
+ return function(...args) {
3571
+ return contract.populate(functionAbi.name, args);
3572
+ };
3573
+ }
3574
+ function buildEstimate(contract, functionAbi) {
3575
+ return function(...args) {
3576
+ return contract.estimate(functionAbi.name, args);
3577
+ };
3578
+ }
3579
+ var Contract = class {
3580
+ constructor(abi, address, providerOrAccount = defaultProvider) {
3581
+ this.address = address && address.toLowerCase();
3582
+ this.providerOrAccount = providerOrAccount;
3583
+ this.abi = abi;
3584
+ this.structs = abi.filter((abiEntry) => abiEntry.type === "struct").reduce(
3585
+ (acc, abiEntry) => ({
3586
+ ...acc,
3587
+ [abiEntry.name]: abiEntry
3588
+ }),
3589
+ {}
3590
+ );
3591
+ Object.defineProperty(this, "functions", {
3592
+ enumerable: true,
3593
+ value: {},
3594
+ writable: false
3595
+ });
3596
+ Object.defineProperty(this, "callStatic", {
3597
+ enumerable: true,
3598
+ value: {},
3599
+ writable: false
3600
+ });
3601
+ Object.defineProperty(this, "populateTransaction", {
3602
+ enumerable: true,
3603
+ value: {},
3604
+ writable: false
3605
+ });
3606
+ Object.defineProperty(this, "estimateFee", {
3607
+ enumerable: true,
3608
+ value: {},
3609
+ writable: false
3610
+ });
3611
+ this.abi.forEach((abiElement) => {
3612
+ if (abiElement.type !== "function") {
3613
+ return;
3614
+ }
3615
+ const signature = abiElement.name;
3616
+ if (!this[signature]) {
3617
+ Object.defineProperty(this, signature, {
3618
+ enumerable: true,
3619
+ value: buildDefault(this, abiElement),
3620
+ writable: false
3621
+ });
3622
+ }
3623
+ if (!this.functions[signature]) {
3624
+ Object.defineProperty(this.functions, signature, {
3625
+ enumerable: true,
3626
+ value: buildDefault(this, abiElement),
3627
+ writable: false
3628
+ });
3629
+ }
3630
+ if (!this.callStatic[signature]) {
3631
+ Object.defineProperty(this.callStatic, signature, {
3632
+ enumerable: true,
3633
+ value: buildCall(this, abiElement),
3634
+ writable: false
3635
+ });
3636
+ }
3637
+ if (!this.populateTransaction[signature]) {
3638
+ Object.defineProperty(this.populateTransaction, signature, {
3639
+ enumerable: true,
3640
+ value: buildPopulate(this, abiElement),
3641
+ writable: false
3642
+ });
3643
+ }
3644
+ if (!this.estimateFee[signature]) {
3645
+ Object.defineProperty(this.estimateFee, signature, {
3646
+ enumerable: true,
3647
+ value: buildEstimate(this, abiElement),
3648
+ writable: false
3649
+ });
3650
+ }
3651
+ });
3652
+ }
3653
+ attach(address) {
3654
+ this.address = address;
3655
+ }
3656
+ connect(providerOrAccount) {
3657
+ this.providerOrAccount = providerOrAccount;
3658
+ }
3659
+ async deployed() {
3660
+ if (this.deployTransactionHash) {
3661
+ await this.providerOrAccount.waitForTransaction(this.deployTransactionHash);
3662
+ this.deployTransactionHash = void 0;
3663
+ }
3664
+ return this;
3665
+ }
3666
+ async call(method, args = [], {
3667
+ blockIdentifier = "pending"
3668
+ } = {}) {
3669
+ (0, import_minimalistic_assert4.default)(this.address !== null, "contract is not connected to an address");
3670
+ this.validateMethodAndArgs("CALL", method, args);
3671
+ const { inputs } = this.abi.find((abi) => abi.name === method);
3672
+ const calldata = this.compileCalldata(args, inputs);
3673
+ return this.providerOrAccount.callContract(
3674
+ {
3675
+ contractAddress: this.address,
3676
+ calldata,
3677
+ entrypoint: method
3678
+ },
3679
+ blockIdentifier
3680
+ ).then((x) => this.parseResponse(method, x.result));
3681
+ }
3682
+ invoke(method, args = [], options = {}) {
3683
+ (0, import_minimalistic_assert4.default)(this.address !== null, "contract is not connected to an address");
3684
+ this.validateMethodAndArgs("INVOKE", method, args);
3685
+ const { inputs } = this.abi.find((abi) => abi.name === method);
3686
+ const inputsLength = inputs.reduce((acc, input) => {
3687
+ if (!/_len$/.test(input.name)) {
3688
+ return acc + 1;
3689
+ }
3690
+ return acc;
3691
+ }, 0);
3692
+ if (args.length !== inputsLength) {
3693
+ throw Error(
3694
+ `Invalid number of arguments, expected ${inputsLength} arguments, but got ${args.length}`
3695
+ );
3696
+ }
3697
+ const calldata = this.compileCalldata(args, inputs);
3698
+ const invocation = {
3699
+ contractAddress: this.address,
3700
+ calldata,
3701
+ entrypoint: method
3702
+ };
3703
+ if ("execute" in this.providerOrAccount) {
3704
+ return this.providerOrAccount.execute(invocation, void 0, {
3705
+ maxFee: options.maxFee,
3706
+ nonce: options.nonce
3707
+ });
3708
+ }
3709
+ if (!options.nonce) {
3710
+ throw new Error(`Nonce is required when invoking a function without an account`);
3711
+ }
3712
+ console.warn(`Invoking ${method} without an account. This will not work on a public node.`);
3713
+ return this.providerOrAccount.invokeFunction(
3714
+ {
3715
+ ...invocation,
3716
+ signature: options.signature || []
3717
+ },
3718
+ {
3719
+ nonce: options.nonce
3720
+ }
3721
+ );
3722
+ }
3723
+ async estimate(method, args = []) {
3724
+ (0, import_minimalistic_assert4.default)(this.address !== null, "contract is not connected to an address");
3725
+ this.validateMethodAndArgs("INVOKE", method, args);
3726
+ const invocation = this.populateTransaction[method](...args);
3727
+ if ("estimateInvokeFee" in this.providerOrAccount) {
3728
+ return this.providerOrAccount.estimateInvokeFee(invocation);
3729
+ }
3730
+ throw Error("Contract must be connected to the account contract to estimate");
3731
+ }
3732
+ populate(method, args = []) {
3733
+ const { inputs } = this.abi.find((abi) => abi.name === method);
3734
+ return {
3735
+ contractAddress: this.address,
3736
+ entrypoint: method,
3737
+ calldata: this.compileCalldata(args, inputs)
3738
+ };
3739
+ }
3740
+ calculateStructMembers(struct) {
3741
+ return this.structs[struct].members.reduce((acc, member) => {
3742
+ if (member.type === "felt") {
3743
+ return acc + 1;
3744
+ }
3745
+ return acc + this.calculateStructMembers(member.type);
3746
+ }, 0);
3747
+ }
3748
+ validateMethodAndArgs(type, method, args = []) {
3749
+ const invokeableFunctionNames = this.abi.filter((abi) => {
3750
+ if (abi.type !== "function")
3751
+ return false;
3752
+ const isView = abi.stateMutability === "view";
3753
+ return type === "INVOKE" ? !isView : isView;
3754
+ }).map((abi) => abi.name);
3755
+ (0, import_minimalistic_assert4.default)(
3756
+ invokeableFunctionNames.includes(method),
3757
+ `${type === "INVOKE" ? "invokeable" : "viewable"} method not found in abi`
3758
+ );
3759
+ const methodAbi = this.abi.find(
3760
+ (abi) => abi.name === method && abi.type === "function"
3761
+ );
3762
+ let argPosition = 0;
3763
+ methodAbi.inputs.forEach((input) => {
3764
+ if (/_len$/.test(input.name)) {
3765
+ return;
3766
+ }
3767
+ if (input.type === "felt") {
3768
+ (0, import_minimalistic_assert4.default)(
3769
+ typeof args[argPosition] === "string" || typeof args[argPosition] === "number" || args[argPosition] instanceof import_bn2.default,
3770
+ `arg ${input.name} should be a felt (string, number, BigNumber)`
3771
+ );
3772
+ argPosition += 1;
3773
+ } else if (input.type in this.structs && typeof args[argPosition] === "object") {
3774
+ if (Array.isArray(args[argPosition])) {
3775
+ const structMembersLength = this.calculateStructMembers(input.type);
3776
+ (0, import_minimalistic_assert4.default)(
3777
+ args[argPosition].length === structMembersLength,
3778
+ `arg should be of length ${structMembersLength}`
3779
+ );
3780
+ } else {
3781
+ this.structs[input.type].members.forEach(({ name }) => {
3782
+ (0, import_minimalistic_assert4.default)(
3783
+ Object.keys(args[argPosition]).includes(name),
3784
+ `arg should have a property ${name}`
3785
+ );
3786
+ });
3787
+ }
3788
+ argPosition += 1;
3789
+ } else {
3790
+ (0, import_minimalistic_assert4.default)(Array.isArray(args[argPosition]), `arg ${input.name} should be an Array`);
3791
+ if (input.type === "felt*") {
3792
+ args[argPosition].forEach((felt) => {
3793
+ (0, import_minimalistic_assert4.default)(
3794
+ typeof felt === "string" || typeof felt === "number" || felt instanceof import_bn2.default,
3795
+ `arg ${input.name} should be an array of string, number or BigNumber`
3796
+ );
3797
+ });
3798
+ argPosition += 1;
3799
+ } else if (/\(felt/.test(input.type)) {
3800
+ const tupleLength = input.type.split(",").length;
3801
+ (0, import_minimalistic_assert4.default)(
3802
+ args[argPosition].length === tupleLength,
3803
+ `arg ${input.name} should have ${tupleLength} elements in tuple`
3804
+ );
3805
+ args[argPosition].forEach((felt) => {
3806
+ (0, import_minimalistic_assert4.default)(
3807
+ typeof felt === "string" || typeof felt === "number" || felt instanceof import_bn2.default,
3808
+ `arg ${input.name} should be an array of string, number or BigNumber`
3809
+ );
3810
+ });
3811
+ argPosition += 1;
3812
+ } else {
3813
+ const arrayType = input.type.replace("*", "");
3814
+ args[argPosition].forEach((struct) => {
3815
+ this.structs[arrayType].members.forEach(({ name }) => {
3816
+ if (Array.isArray(struct)) {
3817
+ const structMembersLength = this.calculateStructMembers(arrayType);
3818
+ (0, import_minimalistic_assert4.default)(
3819
+ struct.length === structMembersLength,
3820
+ `arg should be of length ${structMembersLength}`
3821
+ );
3822
+ } else {
3823
+ (0, import_minimalistic_assert4.default)(
3824
+ Object.keys(struct).includes(name),
3825
+ `arg ${input.name} should be an array of ${arrayType}`
3826
+ );
3827
+ }
3828
+ });
3829
+ });
3830
+ argPosition += 1;
3831
+ }
3832
+ }
3833
+ });
3834
+ }
3835
+ parseCalldataValue(element, type) {
3836
+ if (element === void 0) {
3837
+ throw Error("Missing element in calldata");
3838
+ }
3839
+ if (Array.isArray(element)) {
3840
+ const structMemberNum = this.calculateStructMembers(type);
3841
+ if (element.length !== structMemberNum) {
3842
+ throw Error("Missing element in calldata");
3843
+ }
3844
+ return element.map((el) => toFelt(el));
3845
+ }
3846
+ if (this.structs[type] && this.structs[type].members.length) {
3847
+ return this.structs[type].members.reduce((acc, member) => {
3848
+ const parsedData = this.parseCalldataValue(element[member.name], member.type);
3849
+ if (typeof parsedData === "string") {
3850
+ acc.push(parsedData);
3851
+ } else {
3852
+ acc.push(...parsedData);
3853
+ }
3854
+ return acc;
3855
+ }, []);
3856
+ }
3857
+ return toFelt(element);
3858
+ }
3859
+ parseResponseStruct(responseIterator, type) {
3860
+ if (type in this.structs && this.structs[type]) {
3861
+ return this.structs[type].members.reduce((acc, el) => {
3862
+ acc[el.name] = this.parseResponseStruct(responseIterator, el.type);
3863
+ return acc;
3864
+ }, {});
3865
+ }
3866
+ return parseFelt(responseIterator.next().value);
3867
+ }
3868
+ parseCalldataField(argsIterator, input) {
3869
+ const { name, type } = input;
3870
+ const { value } = argsIterator.next();
3871
+ const parsedCalldata = [];
3872
+ switch (true) {
3873
+ case /\*/.test(type):
3874
+ if (Array.isArray(value)) {
3875
+ parsedCalldata.push(toFelt(value.length));
3876
+ return value.reduce((acc, el) => {
3877
+ if (/felt/.test(type)) {
3878
+ acc.push(toFelt(el));
3879
+ } else {
3880
+ acc.push(...this.parseCalldataValue(el, type.replace("*", "")));
3881
+ }
3882
+ return acc;
3883
+ }, parsedCalldata);
3884
+ }
3885
+ throw Error(`Expected ${name} to be array`);
3886
+ case type in this.structs:
3887
+ return this.parseCalldataValue(value, type);
3888
+ case /\(felt/.test(type):
3889
+ if (Array.isArray(value)) {
3890
+ return value.map((el) => toFelt(el));
3891
+ }
3892
+ throw Error(`Expected ${name} to be array`);
3893
+ default:
3894
+ return toFelt(value);
3895
+ }
3896
+ }
3897
+ compileCalldata(args, inputs) {
3898
+ const argsIterator = args[Symbol.iterator]();
3899
+ return inputs.reduce((acc, input) => {
3900
+ if (/_len$/.test(input.name)) {
3901
+ return acc;
3902
+ }
3903
+ const parsedData = this.parseCalldataField(argsIterator, input);
3904
+ if (Array.isArray(parsedData)) {
3905
+ acc.push(...parsedData);
3906
+ } else {
3907
+ acc.push(parsedData);
3908
+ }
3909
+ return acc;
3910
+ }, []);
3911
+ }
3912
+ parseResponseField(responseIterator, output, parsedResult) {
3913
+ const { name, type } = output;
3914
+ const parsedDataArr = [];
3915
+ switch (true) {
3916
+ case /_len$/.test(name):
3917
+ return parseFelt(responseIterator.next().value).toNumber();
3918
+ case /\(felt/.test(type):
3919
+ return type.split(",").reduce((acc) => {
3920
+ acc.push(parseFelt(responseIterator.next().value));
3921
+ return acc;
3922
+ }, []);
3923
+ case /\*/.test(type):
3924
+ if (parsedResult && parsedResult[`${name}_len`]) {
3925
+ const arrLen = parsedResult[`${name}_len`];
3926
+ while (parsedDataArr.length < arrLen) {
3927
+ parsedDataArr.push(
3928
+ this.parseResponseStruct(responseIterator, output.type.replace("*", ""))
3929
+ );
3930
+ }
3931
+ }
3932
+ return parsedDataArr;
3933
+ case type in this.structs:
3934
+ return this.parseResponseStruct(responseIterator, type);
3935
+ default:
3936
+ return parseFelt(responseIterator.next().value);
3937
+ }
3938
+ }
3939
+ parseResponse(method, response) {
3940
+ const { outputs } = this.abi.find((abi) => abi.name === method);
3941
+ const responseIterator = response.flat()[Symbol.iterator]();
3942
+ const resultObject = outputs.flat().reduce((acc, output) => {
3943
+ acc[output.name] = this.parseResponseField(responseIterator, output, acc);
3944
+ if (acc[output.name] && acc[`${output.name}_len`]) {
3945
+ delete acc[`${output.name}_len`];
3946
+ }
3947
+ return acc;
3948
+ }, {});
3949
+ return Object.entries(resultObject).reduce((acc, [key, value]) => {
3950
+ acc.push(value);
3951
+ acc[key] = value;
3952
+ return acc;
3953
+ }, []);
3954
+ }
3955
+ };
3956
+
3957
+ // src/contract/interface.ts
3958
+ var ContractInterface = class {
3959
+ };
3960
+
3961
+ // src/contract/contractFactory.ts
3962
+ var import_minimalistic_assert5 = __toESM(require("minimalistic-assert"));
3963
+ var ContractFactory = class {
3964
+ constructor(compiledContract, providerOrAccount = defaultProvider, abi = compiledContract.abi) {
3965
+ this.abi = abi;
3966
+ this.compiledContract = compiledContract;
3967
+ this.providerOrAccount = providerOrAccount;
3968
+ }
3969
+ async deploy(constructorCalldata, addressSalt) {
3970
+ const { contract_address, transaction_hash } = await this.providerOrAccount.deployContract({
3971
+ contract: this.compiledContract,
3972
+ constructorCalldata,
3973
+ addressSalt
3974
+ });
3975
+ (0, import_minimalistic_assert5.default)(Boolean(contract_address), "Deployment of the contract failed");
3976
+ const contractInstance = new Contract(
3977
+ this.compiledContract.abi,
3978
+ contract_address,
3979
+ this.providerOrAccount
3980
+ );
3981
+ contractInstance.deployTransactionHash = transaction_hash;
3982
+ return contractInstance;
3983
+ }
3984
+ connect(providerOrAccount) {
3985
+ this.providerOrAccount = providerOrAccount;
3986
+ return this;
3987
+ }
3988
+ attach(address) {
3989
+ return new Contract(this.abi, address, this.providerOrAccount);
3990
+ }
3991
+ };
3992
+
3993
+ // src/types/api/index.ts
3994
+ var api_exports = {};
3995
+
3996
+ // src/signer/interface.ts
3997
+ var SignerInterface = class {
3998
+ };
3999
+
4000
+ // src/utils/transaction.ts
4001
+ var transaction_exports = {};
4002
+ __export(transaction_exports, {
4003
+ fromCallsToExecuteCalldata: () => fromCallsToExecuteCalldata,
4004
+ fromCallsToExecuteCalldataWithNonce: () => fromCallsToExecuteCalldataWithNonce,
4005
+ transformCallsToMulticallArrays: () => transformCallsToMulticallArrays
4006
+ });
4007
+ var transformCallsToMulticallArrays = (calls) => {
4008
+ const callArray = [];
4009
+ const calldata = [];
4010
+ calls.forEach((call) => {
4011
+ const data = call.calldata || [];
4012
+ callArray.push({
4013
+ to: toBN(call.contractAddress).toString(10),
4014
+ selector: toBN(getSelectorFromName(call.entrypoint)).toString(10),
4015
+ data_offset: calldata.length.toString(),
4016
+ data_len: data.length.toString()
4017
+ });
4018
+ calldata.push(...data);
4019
+ });
4020
+ return {
4021
+ callArray,
4022
+ calldata: bigNumberishArrayToDecimalStringArray(calldata)
4023
+ };
4024
+ };
4025
+ var fromCallsToExecuteCalldata = (calls) => {
4026
+ const { callArray, calldata } = transformCallsToMulticallArrays(calls);
4027
+ return [
4028
+ callArray.length.toString(),
4029
+ ...callArray.map(
4030
+ ({ to, selector, data_offset, data_len }) => [to, selector, data_offset, data_len]
4031
+ ).flat(),
4032
+ calldata.length.toString(),
4033
+ ...calldata
4034
+ ];
4035
+ };
4036
+ var fromCallsToExecuteCalldataWithNonce = (calls, nonce) => {
4037
+ return [...fromCallsToExecuteCalldata(calls), toBN(nonce).toString()];
4038
+ };
4039
+
4040
+ // src/utils/typedData/index.ts
4041
+ var typedData_exports = {};
4042
+ __export(typedData_exports, {
4043
+ encodeData: () => encodeData,
4044
+ encodeType: () => encodeType,
4045
+ encodeValue: () => encodeValue,
4046
+ getDependencies: () => getDependencies,
4047
+ getMessageHash: () => getMessageHash,
4048
+ getStructHash: () => getStructHash,
4049
+ getTypeHash: () => getTypeHash,
4050
+ isMerkleTreeType: () => isMerkleTreeType,
4051
+ prepareSelector: () => prepareSelector
4052
+ });
4053
+
4054
+ // src/utils/merkle.ts
4055
+ var merkle_exports = {};
4056
+ __export(merkle_exports, {
4057
+ MerkleTree: () => MerkleTree,
4058
+ proofMerklePath: () => proofMerklePath
4059
+ });
4060
+ var MerkleTree = class {
4061
+ constructor(leafHashes) {
4062
+ this.branches = [];
4063
+ this.leaves = leafHashes;
4064
+ this.root = this.build(leafHashes);
4065
+ }
4066
+ build(leaves) {
4067
+ if (leaves.length === 1) {
4068
+ return leaves[0];
4069
+ }
4070
+ if (leaves.length !== this.leaves.length) {
4071
+ this.branches.push(leaves);
4072
+ }
4073
+ const newLeaves = [];
4074
+ for (let i = 0; i < leaves.length; i += 2) {
4075
+ if (i + 1 === leaves.length) {
4076
+ newLeaves.push(MerkleTree.hash(leaves[i], "0x0"));
4077
+ } else {
4078
+ newLeaves.push(MerkleTree.hash(leaves[i], leaves[i + 1]));
4079
+ }
4080
+ }
4081
+ return this.build(newLeaves);
4082
+ }
4083
+ static hash(a, b) {
4084
+ const [aSorted, bSorted] = [toBN(a), toBN(b)].sort((x, y) => x.gte(y) ? 1 : -1);
4085
+ return pedersen([aSorted, bSorted]);
4086
+ }
4087
+ getProof(leaf, branch = this.leaves, hashPath = []) {
4088
+ const index = branch.indexOf(leaf);
4089
+ if (index === -1) {
4090
+ throw new Error("leaf not found");
4091
+ }
4092
+ if (branch.length === 1) {
4093
+ return hashPath;
4094
+ }
4095
+ const isLeft = index % 2 === 0;
4096
+ const neededBranch = (isLeft ? branch[index + 1] : branch[index - 1]) ?? "0x0";
4097
+ const newHashPath = [...hashPath, neededBranch];
4098
+ const currentBranchLevelIndex = this.leaves.length === branch.length ? -1 : this.branches.findIndex((b) => b.length === branch.length);
4099
+ const nextBranch = this.branches[currentBranchLevelIndex + 1] ?? [this.root];
4100
+ return this.getProof(
4101
+ MerkleTree.hash(isLeft ? leaf : neededBranch, isLeft ? neededBranch : leaf),
4102
+ nextBranch,
4103
+ newHashPath
4104
+ );
4105
+ }
4106
+ };
4107
+ function proofMerklePath(root, leaf, path) {
4108
+ if (path.length === 0) {
4109
+ return root === leaf;
4110
+ }
4111
+ const [next, ...rest] = path;
4112
+ return proofMerklePath(root, MerkleTree.hash(leaf, next), rest);
4113
+ }
4114
+
4115
+ // src/utils/shortString.ts
4116
+ var shortString_exports = {};
4117
+ __export(shortString_exports, {
4118
+ decodeShortString: () => decodeShortString,
4119
+ encodeShortString: () => encodeShortString,
4120
+ isASCII: () => isASCII,
4121
+ isShortString: () => isShortString
4122
+ });
4123
+ function isASCII(str) {
4124
+ return /^[\x00-\x7F]*$/.test(str);
4125
+ }
4126
+ function isShortString(str) {
4127
+ return str.length <= 31;
4128
+ }
4129
+ function encodeShortString(str) {
4130
+ if (!isASCII(str))
4131
+ throw new Error(`${str} is not an ASCII string`);
4132
+ if (!isShortString(str))
4133
+ throw new Error(`${str} is too long`);
4134
+ return addHexPrefix(str.replace(/./g, (char) => char.charCodeAt(0).toString(16)));
4135
+ }
4136
+ function decodeShortString(str) {
4137
+ return removeHexPrefix(str).replace(/.{2}/g, (hex) => String.fromCharCode(parseInt(hex, 16)));
4138
+ }
4139
+
4140
+ // src/utils/typedData/utils.ts
4141
+ var validateTypedData = (data) => {
4142
+ const typedData = data;
4143
+ const valid = Boolean(typedData.types && typedData.primaryType && typedData.message);
4144
+ return valid;
4145
+ };
4146
+
4147
+ // src/utils/typedData/index.ts
4148
+ function getHex(value) {
4149
+ try {
4150
+ return toHex(toBN(value));
4151
+ } catch (e) {
4152
+ if (typeof value === "string") {
4153
+ return toHex(toBN(encodeShortString(value)));
4154
+ }
4155
+ throw new Error(`Invalid BigNumberish: ${value}`);
4156
+ }
4157
+ }
4158
+ function prepareSelector(selector) {
4159
+ return isHex(selector) ? selector : getSelectorFromName(selector);
4160
+ }
4161
+ function isMerkleTreeType(type) {
4162
+ return type.type === "merkletree";
4163
+ }
4164
+ var getDependencies = (types, type, dependencies = []) => {
4165
+ if (type[type.length - 1] === "*") {
4166
+ type = type.slice(0, -1);
4167
+ }
4168
+ if (dependencies.includes(type)) {
4169
+ return dependencies;
4170
+ }
4171
+ if (!types[type]) {
4172
+ return dependencies;
4173
+ }
4174
+ return [
4175
+ type,
4176
+ ...types[type].reduce(
4177
+ (previous, t) => [
4178
+ ...previous,
4179
+ ...getDependencies(types, t.type, previous).filter(
4180
+ (dependency) => !previous.includes(dependency)
4181
+ )
4182
+ ],
4183
+ []
4184
+ )
4185
+ ];
4186
+ };
4187
+ function getMerkleTreeType(types, ctx) {
4188
+ if (ctx.parent && ctx.key) {
4189
+ const parentType = types[ctx.parent];
4190
+ const merkleType = parentType.find((t) => t.name === ctx.key);
4191
+ const isMerkleTree = isMerkleTreeType(merkleType);
4192
+ if (!isMerkleTree) {
4193
+ throw new Error(`${ctx.key} is not a merkle tree`);
4194
+ }
4195
+ if (merkleType.contains.endsWith("*")) {
4196
+ throw new Error(`Merkle tree contain property must not be an array but was given ${ctx.key}`);
4197
+ }
4198
+ return merkleType.contains;
4199
+ }
4200
+ return "raw";
4201
+ }
4202
+ var encodeType = (types, type) => {
4203
+ const [primary, ...dependencies] = getDependencies(types, type);
4204
+ const newTypes = !primary ? [] : [primary, ...dependencies.sort()];
4205
+ return newTypes.map((dependency) => {
4206
+ return `${dependency}(${types[dependency].map((t) => `${t.name}:${t.type}`)})`;
4207
+ }).join("");
4208
+ };
4209
+ var getTypeHash = (types, type) => {
4210
+ return getSelectorFromName(encodeType(types, type));
4211
+ };
4212
+ var encodeValue = (types, type, data, ctx = {}) => {
4213
+ if (types[type]) {
4214
+ return [type, getStructHash(types, type, data)];
4215
+ }
4216
+ if (Object.keys(types).map((x) => `${x}*`).includes(type)) {
4217
+ const structHashes = data.map((struct) => {
4218
+ return getStructHash(types, type.slice(0, -1), struct);
4219
+ });
4220
+ return [type, computeHashOnElements(structHashes)];
4221
+ }
4222
+ if (type === "merkletree") {
4223
+ const merkleTreeType = getMerkleTreeType(types, ctx);
4224
+ const structHashes = data.map((struct) => {
4225
+ return encodeValue(types, merkleTreeType, struct)[1];
4226
+ });
4227
+ const { root } = new MerkleTree(structHashes);
4228
+ return ["felt", root];
4229
+ }
4230
+ if (type === "felt*") {
4231
+ return ["felt*", computeHashOnElements(data)];
4232
+ }
4233
+ if (type === "selector") {
4234
+ return ["felt", prepareSelector(data)];
4235
+ }
4236
+ return [type, getHex(data)];
4237
+ };
4238
+ var encodeData = (types, type, data) => {
4239
+ const [returnTypes, values] = types[type].reduce(
4240
+ ([ts, vs], field) => {
4241
+ if (data[field.name] === void 0 || data[field.name] === null) {
4242
+ throw new Error(`Cannot encode data: missing data for '${field.name}'`);
4243
+ }
4244
+ const value = data[field.name];
4245
+ const [t, encodedValue] = encodeValue(types, field.type, value, {
4246
+ parent: type,
4247
+ key: field.name
4248
+ });
4249
+ return [
4250
+ [...ts, t],
4251
+ [...vs, encodedValue]
4252
+ ];
4253
+ },
4254
+ [["felt"], [getTypeHash(types, type)]]
4255
+ );
4256
+ return [returnTypes, values];
4257
+ };
4258
+ var getStructHash = (types, type, data) => {
4259
+ return computeHashOnElements(encodeData(types, type, data)[1]);
4260
+ };
4261
+ var getMessageHash = (typedData, account) => {
4262
+ if (!validateTypedData(typedData)) {
4263
+ throw new Error("Typed data does not match JSON schema");
4264
+ }
4265
+ const message = [
4266
+ encodeShortString("StarkNet Message"),
4267
+ getStructHash(typedData.types, "StarkNetDomain", typedData.domain),
4268
+ account,
4269
+ getStructHash(typedData.types, typedData.primaryType, typedData.message)
4270
+ ];
4271
+ return computeHashOnElements(message);
4272
+ };
4273
+
4274
+ // src/signer/default.ts
4275
+ var Signer = class {
4276
+ constructor(keyPair = genKeyPair()) {
4277
+ this.keyPair = keyPair;
4278
+ }
4279
+ async getPubKey() {
4280
+ return getStarkKey(this.keyPair);
4281
+ }
4282
+ async signMessage(typedData, accountAddress) {
4283
+ const msgHash = getMessageHash(typedData, accountAddress);
4284
+ return sign(this.keyPair, msgHash);
4285
+ }
4286
+ async signTransaction(transactions, transactionsDetail, abis) {
4287
+ if (abis && abis.length !== transactions.length) {
4288
+ throw new Error("ABI must be provided for each transaction or no transaction");
4289
+ }
4290
+ const calldata = fromCallsToExecuteCalldata(transactions);
4291
+ const msgHash = calculateTransactionHash(
4292
+ transactionsDetail.walletAddress,
4293
+ transactionsDetail.version,
4294
+ calldata,
4295
+ transactionsDetail.maxFee,
4296
+ transactionsDetail.chainId,
4297
+ transactionsDetail.nonce
4298
+ );
4299
+ return sign(this.keyPair, msgHash);
4300
+ }
4301
+ async signDeployAccountTransaction({
4302
+ classHash,
4303
+ contractAddress,
4304
+ constructorCalldata,
4305
+ addressSalt,
4306
+ maxFee,
4307
+ version,
4308
+ chainId,
4309
+ nonce
4310
+ }) {
4311
+ const msgHash = calculateDeployAccountTransactionHash(
4312
+ contractAddress,
4313
+ classHash,
4314
+ constructorCalldata,
4315
+ addressSalt,
4316
+ version,
4317
+ maxFee,
4318
+ chainId,
4319
+ nonce
4320
+ );
4321
+ return sign(this.keyPair, msgHash);
4322
+ }
4323
+ async signDeclareTransaction({ classHash, senderAddress, chainId, maxFee, version, nonce }) {
4324
+ const msgHash = calculateDeclareTransactionHash(
4325
+ classHash,
4326
+ senderAddress,
4327
+ version,
4328
+ maxFee,
4329
+ chainId,
4330
+ nonce
4331
+ );
4332
+ return sign(this.keyPair, msgHash);
4333
+ }
4334
+ };
4335
+
4336
+ // src/account/default.ts
4337
+ var Account = class extends Provider {
4338
+ constructor(providerOrOptions, address, keyPairOrSigner) {
4339
+ super(providerOrOptions);
4340
+ this.address = address.toLowerCase();
4341
+ this.signer = "getPubKey" in keyPairOrSigner ? keyPairOrSigner : new Signer(keyPairOrSigner);
4342
+ }
4343
+ async getNonce(blockIdentifier) {
4344
+ return super.getNonce(this.address, blockIdentifier);
4345
+ }
4346
+ async estimateFee(calls, estimateFeeDetails) {
4347
+ return this.estimateInvokeFee(calls, estimateFeeDetails);
4348
+ }
4349
+ async estimateInvokeFee(calls, { nonce: providedNonce, blockIdentifier } = {}) {
4350
+ const transactions = Array.isArray(calls) ? calls : [calls];
4351
+ const nonce = toBN(providedNonce ?? await this.getNonce());
4352
+ const version = toBN(feeTransactionVersion);
4353
+ const chainId = await this.getChainId();
4354
+ const signerDetails = {
4355
+ walletAddress: this.address,
4356
+ nonce,
4357
+ maxFee: ZERO,
4358
+ version,
4359
+ chainId
4360
+ };
4361
+ const signature = await this.signer.signTransaction(transactions, signerDetails);
4362
+ const calldata = fromCallsToExecuteCalldata(transactions);
4363
+ const response = await super.getInvokeEstimateFee(
4364
+ { contractAddress: this.address, calldata, signature },
4365
+ { version, nonce },
4366
+ blockIdentifier
4367
+ );
4368
+ const suggestedMaxFee = estimatedFeeToMaxFee(response.overall_fee);
4369
+ return {
4370
+ ...response,
4371
+ suggestedMaxFee
4372
+ };
4373
+ }
4374
+ async estimateDeclareFee({ classHash, contract }, { blockIdentifier, nonce: providedNonce } = {}) {
4375
+ const nonce = toBN(providedNonce ?? await this.getNonce());
4376
+ const version = toBN(feeTransactionVersion);
4377
+ const chainId = await this.getChainId();
4378
+ const contractDefinition = parseContract(contract);
4379
+ const signature = await this.signer.signDeclareTransaction({
4380
+ classHash,
4381
+ senderAddress: this.address,
4382
+ chainId,
4383
+ maxFee: ZERO,
4384
+ version,
4385
+ nonce
4386
+ });
4387
+ const response = await super.getDeclareEstimateFee(
4388
+ { senderAddress: this.address, signature, contractDefinition },
4389
+ { version, nonce },
4390
+ blockIdentifier
4391
+ );
4392
+ const suggestedMaxFee = estimatedFeeToMaxFee(response.overall_fee);
4393
+ return {
4394
+ ...response,
4395
+ suggestedMaxFee
4396
+ };
4397
+ }
4398
+ async estimateAccountDeployFee({
4399
+ classHash,
4400
+ addressSalt = 0,
4401
+ constructorCalldata = [],
4402
+ contractAddress: providedContractAddress
4403
+ }, { blockIdentifier, nonce: providedNonce } = {}) {
4404
+ const nonce = toBN(providedNonce ?? await this.getNonce());
4405
+ const version = toBN(feeTransactionVersion);
4406
+ const chainId = await this.getChainId();
4407
+ const contractAddress = providedContractAddress ?? calculateContractAddressFromHash(addressSalt, classHash, constructorCalldata, 0);
4408
+ const signature = await this.signer.signDeployAccountTransaction({
4409
+ classHash,
4410
+ contractAddress,
4411
+ chainId,
4412
+ maxFee: ZERO,
4413
+ version,
4414
+ nonce,
4415
+ addressSalt,
4416
+ constructorCalldata
4417
+ });
4418
+ const response = await super.getDeployAccountEstimateFee(
4419
+ { classHash, addressSalt, constructorCalldata, signature },
4420
+ { version, nonce },
4421
+ blockIdentifier
4422
+ );
4423
+ const suggestedMaxFee = estimatedFeeToMaxFee(response.overall_fee);
4424
+ return {
4425
+ ...response,
4426
+ suggestedMaxFee
4427
+ };
4428
+ }
4429
+ async estimateDeployFee({
4430
+ classHash,
4431
+ salt,
4432
+ unique = true,
4433
+ constructorCalldata = [],
4434
+ additionalCalls = []
4435
+ }, transactionsDetail) {
4436
+ const compiledConstructorCallData = compileCalldata(constructorCalldata);
4437
+ const callsArray = Array.isArray(additionalCalls) ? additionalCalls : [additionalCalls];
4438
+ return this.estimateInvokeFee(
4439
+ [
4440
+ {
4441
+ contractAddress: UDC.ADDRESS,
4442
+ entrypoint: UDC.ENTRYPOINT,
4443
+ calldata: [
4444
+ classHash,
4445
+ salt,
4446
+ toCairoBool(unique),
4447
+ compiledConstructorCallData.length,
4448
+ ...compiledConstructorCallData
4449
+ ]
4450
+ },
4451
+ ...callsArray
4452
+ ],
4453
+ transactionsDetail
4454
+ );
4455
+ }
4456
+ async execute(calls, abis = void 0, transactionsDetail = {}) {
4457
+ const transactions = Array.isArray(calls) ? calls : [calls];
4458
+ const nonce = toBN(transactionsDetail.nonce ?? await this.getNonce());
4459
+ const maxFee = transactionsDetail.maxFee ?? await this.getSuggestedMaxFee({ type: "INVOKE", payload: calls }, transactionsDetail);
4460
+ const version = toBN(transactionVersion);
4461
+ const chainId = await this.getChainId();
4462
+ const signerDetails = {
4463
+ walletAddress: this.address,
4464
+ nonce,
4465
+ maxFee,
4466
+ version,
4467
+ chainId
4468
+ };
4469
+ const signature = await this.signer.signTransaction(transactions, signerDetails, abis);
4470
+ const calldata = fromCallsToExecuteCalldata(transactions);
4471
+ return this.invokeFunction(
4472
+ { contractAddress: this.address, calldata, signature },
4473
+ {
4474
+ nonce,
4475
+ maxFee,
4476
+ version
4477
+ }
4478
+ );
4479
+ }
4480
+ async declare({ classHash, contract }, transactionsDetail = {}) {
4481
+ const nonce = toBN(transactionsDetail.nonce ?? await this.getNonce());
4482
+ const maxFee = transactionsDetail.maxFee ?? await this.getSuggestedMaxFee(
4483
+ { type: "DECLARE", payload: { classHash, contract } },
4484
+ transactionsDetail
4485
+ );
4486
+ const version = toBN(transactionVersion);
4487
+ const chainId = await this.getChainId();
4488
+ const signature = await this.signer.signDeclareTransaction({
4489
+ classHash,
4490
+ senderAddress: this.address,
4491
+ chainId,
4492
+ maxFee,
4493
+ version,
4494
+ nonce
4495
+ });
4496
+ const contractDefinition = parseContract(contract);
4497
+ return this.declareContract(
4498
+ { contractDefinition, senderAddress: this.address, signature },
4499
+ {
4500
+ nonce,
4501
+ maxFee,
4502
+ version
4503
+ }
4504
+ );
4505
+ }
4506
+ async deploy({
4507
+ classHash,
4508
+ salt,
4509
+ unique = true,
4510
+ constructorCalldata = [],
4511
+ additionalCalls = []
4512
+ }, transactionsDetail = {}) {
4513
+ const compiledConstructorCallData = compileCalldata(constructorCalldata);
4514
+ const callsArray = Array.isArray(additionalCalls) ? additionalCalls : [additionalCalls];
4515
+ return this.execute(
4516
+ [
4517
+ {
4518
+ contractAddress: UDC.ADDRESS,
4519
+ entrypoint: UDC.ENTRYPOINT,
4520
+ calldata: [
4521
+ classHash,
4522
+ salt,
4523
+ toCairoBool(unique),
4524
+ compiledConstructorCallData.length,
4525
+ ...compiledConstructorCallData
4526
+ ]
4527
+ },
4528
+ ...callsArray
4529
+ ],
4530
+ void 0,
4531
+ transactionsDetail
4532
+ );
4533
+ }
4534
+ async deployAccount({
4535
+ classHash,
4536
+ constructorCalldata = [],
4537
+ addressSalt = 0,
4538
+ contractAddress: providedContractAddress
4539
+ }, transactionsDetail = {}) {
4540
+ const nonce = toBN(transactionsDetail.nonce ?? await this.getNonce());
4541
+ const version = toBN(transactionVersion);
4542
+ const chainId = await this.getChainId();
4543
+ const contractAddress = providedContractAddress ?? calculateContractAddressFromHash(addressSalt, classHash, constructorCalldata, 0);
4544
+ const maxFee = transactionsDetail.maxFee ?? await this.getSuggestedMaxFee(
4545
+ {
4546
+ type: "DEPLOY_ACCOUNT",
4547
+ payload: { classHash, constructorCalldata, addressSalt, contractAddress }
4548
+ },
4549
+ transactionsDetail
4550
+ );
4551
+ const signature = await this.signer.signDeployAccountTransaction({
4552
+ classHash,
4553
+ constructorCalldata,
4554
+ contractAddress,
4555
+ addressSalt,
4556
+ chainId,
4557
+ maxFee,
4558
+ version,
4559
+ nonce
4560
+ });
4561
+ return this.deployAccountContract(
4562
+ { classHash, addressSalt, constructorCalldata, signature },
4563
+ {
4564
+ nonce,
4565
+ maxFee,
4566
+ version
4567
+ }
4568
+ );
4569
+ }
4570
+ async signMessage(typedData) {
4571
+ return this.signer.signMessage(typedData, this.address);
4572
+ }
4573
+ async hashMessage(typedData) {
4574
+ return getMessageHash(typedData, this.address);
4575
+ }
4576
+ async verifyMessageHash(hash, signature) {
4577
+ try {
4578
+ await this.callContract({
4579
+ contractAddress: this.address,
4580
+ entrypoint: "isValidSignature",
4581
+ calldata: compileCalldata({
4582
+ hash: toBN(hash).toString(),
4583
+ signature: signature.map((x) => toBN(x).toString())
4584
+ })
4585
+ });
4586
+ return true;
4587
+ } catch {
4588
+ return false;
4589
+ }
4590
+ }
4591
+ async verifyMessage(typedData, signature) {
4592
+ const hash = await this.hashMessage(typedData);
4593
+ return this.verifyMessageHash(hash, signature);
4594
+ }
4595
+ async getSuggestedMaxFee({ type, payload }, details) {
4596
+ let feeEstimate;
4597
+ switch (type) {
4598
+ case "INVOKE":
4599
+ feeEstimate = await this.estimateInvokeFee(payload, details);
4600
+ break;
4601
+ case "DECLARE":
4602
+ feeEstimate = await this.estimateDeclareFee(payload, details);
4603
+ break;
4604
+ case "DEPLOY_ACCOUNT":
4605
+ feeEstimate = await this.estimateAccountDeployFee(payload, details);
4606
+ break;
4607
+ case "DEPLOY":
4608
+ feeEstimate = await this.estimateDeployFee(payload, details);
4609
+ break;
4610
+ default:
4611
+ feeEstimate = { suggestedMaxFee: ZERO, overall_fee: ZERO };
4612
+ break;
4613
+ }
4614
+ return feeEstimate.suggestedMaxFee.toString();
4615
+ }
4616
+ };
4617
+
4618
+ // src/account/interface.ts
4619
+ var AccountInterface = class extends ProviderInterface {
4620
+ };
4621
+
4622
+ // src/utils/uint256.ts
4623
+ var uint256_exports = {};
4624
+ __export(uint256_exports, {
4625
+ UINT_128_MAX: () => UINT_128_MAX,
4626
+ UINT_256_MAX: () => UINT_256_MAX,
4627
+ bnToUint256: () => bnToUint256,
4628
+ isUint256: () => isUint256,
4629
+ uint256ToBN: () => uint256ToBN
4630
+ });
4631
+ function uint256ToBN(uint256) {
4632
+ return toBN(uint256.high).shln(128).add(toBN(uint256.low));
4633
+ }
4634
+ var UINT_128_MAX = toBN(1).shln(128).sub(toBN(1));
4635
+ var UINT_256_MAX = toBN(1).shln(256).sub(toBN(1));
4636
+ function isUint256(bn) {
4637
+ return toBN(bn).lte(UINT_256_MAX);
4638
+ }
4639
+ function bnToUint256(bignumber) {
4640
+ const bn = toBN(bignumber);
4641
+ if (!isUint256(bn))
4642
+ throw new Error("Number is too large");
4643
+ return {
4644
+ low: addHexPrefix(bn.maskn(128).toString(16)),
4645
+ high: addHexPrefix(bn.shrn(128).toString(16))
4646
+ };
4647
+ }
4648
+
4649
+ // src/utils/address.ts
4650
+ var import_bytes = require("@ethersproject/bytes");
4651
+ function addAddressPadding(address) {
4652
+ return addHexPrefix(removeHexPrefix(toHex(toBN(address))).padStart(64, "0"));
4653
+ }
4654
+ function validateAndParseAddress(address) {
4655
+ assertInRange(address, ZERO, MASK_251, "Starknet Address");
4656
+ const result = addAddressPadding(address);
4657
+ if (!result.match(/^(0x)?[0-9a-fA-F]{64}$/)) {
4658
+ throw new Error("Invalid Address Format");
4659
+ }
4660
+ return result;
4661
+ }
4662
+ function getChecksumAddress(address) {
4663
+ const chars = removeHexPrefix(validateAndParseAddress(address)).toLowerCase().split("");
4664
+ const hashed = (0, import_bytes.arrayify)(keccakBn(address), { hexPad: "left" });
4665
+ for (let i = 0; i < chars.length; i += 2) {
4666
+ if (hashed[i >> 1] >> 4 >= 8) {
4667
+ chars[i] = chars[i].toUpperCase();
4668
+ }
4669
+ if ((hashed[i >> 1] & 15) >= 8) {
4670
+ chars[i + 1] = chars[i + 1].toUpperCase();
4671
+ }
4672
+ }
4673
+ return addHexPrefix(chars.join(""));
4674
+ }
4675
+ function validateChecksumAddress(address) {
4676
+ return getChecksumAddress(address) === address;
4677
+ }
4678
+ // Annotate the CommonJS export names for ESM import in node:
4679
+ 0 && (module.exports = {
4680
+ Account,
4681
+ AccountInterface,
4682
+ Contract,
4683
+ ContractFactory,
4684
+ ContractInterface,
4685
+ GatewayError,
4686
+ HttpError,
4687
+ Provider,
4688
+ ProviderInterface,
4689
+ RpcProvider,
4690
+ SequencerProvider,
4691
+ Signer,
4692
+ SignerInterface,
4693
+ addAddressPadding,
4694
+ api,
4695
+ buildUrl,
4696
+ constants,
4697
+ defaultProvider,
4698
+ ec,
4699
+ encode,
4700
+ getChecksumAddress,
4701
+ hash,
4702
+ isUrl,
4703
+ json,
4704
+ merkle,
4705
+ number,
4706
+ shortString,
4707
+ stark,
4708
+ transaction,
4709
+ typedData,
4710
+ uint256,
4711
+ validateAndParseAddress,
4712
+ validateChecksumAddress
4713
+ });
4714
+ //# sourceMappingURL=index.js.map