@bitgo-beta/sdk-coin-dot 1.3.3-alpha.477 → 1.3.3-alpha.479

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 (321) hide show
  1. package/dist/cjs/src/dot.d.ts.map +1 -0
  2. package/dist/cjs/src/dot.js +610 -0
  3. package/dist/cjs/src/index.d.ts.map +1 -0
  4. package/dist/{src → cjs/src}/index.js +1 -1
  5. package/dist/cjs/src/lib/addressInitializationBuilder.d.ts.map +1 -0
  6. package/dist/cjs/src/lib/addressInitializationBuilder.js +182 -0
  7. package/dist/cjs/src/lib/batchTransactionBuilder.d.ts.map +1 -0
  8. package/dist/cjs/src/lib/batchTransactionBuilder.js +229 -0
  9. package/dist/cjs/src/lib/claimBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/claimBuilder.js +117 -0
  11. package/dist/cjs/src/lib/errors.d.ts.map +1 -0
  12. package/dist/cjs/src/lib/errors.js +19 -0
  13. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  14. package/dist/cjs/src/lib/iface.js +128 -0
  15. package/dist/cjs/src/lib/iface_utils.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/iface_utils.js +92 -0
  17. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  18. package/dist/{src → cjs/src}/lib/index.js +1 -1
  19. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  20. package/dist/cjs/src/lib/keyPair.js +117 -0
  21. package/dist/cjs/src/lib/nativeTransferBuilder.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/nativeTransferBuilder.js +219 -0
  23. package/dist/cjs/src/lib/proxyBuilder.d.ts.map +1 -0
  24. package/dist/cjs/src/lib/proxyBuilder.js +116 -0
  25. package/dist/cjs/src/lib/singletonRegistry.d.ts.map +1 -0
  26. package/dist/cjs/src/lib/singletonRegistry.js +20 -0
  27. package/dist/cjs/src/lib/stakingBuilder.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/stakingBuilder.js +167 -0
  29. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  30. package/dist/cjs/src/lib/transaction.js +624 -0
  31. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/transactionBuilder.js +351 -0
  33. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  34. package/dist/cjs/src/lib/transactionBuilderFactory.js +104 -0
  35. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/transferBuilder.js +11 -0
  37. package/dist/cjs/src/lib/txnSchema.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/txnSchema.js +117 -0
  39. package/dist/cjs/src/lib/unnominateBuilder.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/unnominateBuilder.js +48 -0
  41. package/dist/cjs/src/lib/unstakeBuilder.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/unstakeBuilder.js +87 -0
  43. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/utils.js +491 -0
  45. package/dist/cjs/src/lib/wasmParser.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/wasmParser.js +345 -0
  47. package/dist/cjs/src/lib/withdrawUnstakedBuilder.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/withdrawUnstakedBuilder.js +88 -0
  49. package/dist/cjs/src/register.d.ts.map +1 -0
  50. package/dist/cjs/src/register.js +11 -0
  51. package/dist/cjs/src/resources/index.d.ts.map +1 -0
  52. package/dist/{src → cjs/src}/resources/index.js +1 -1
  53. package/dist/cjs/src/resources/mainnet.d.ts.map +1 -0
  54. package/dist/cjs/src/resources/mainnet.js +5 -0
  55. package/dist/cjs/src/resources/polkadotAssetHub.d.ts.map +1 -0
  56. package/dist/cjs/src/resources/polkadotAssetHub.js +5 -0
  57. package/dist/cjs/src/resources/westend.d.ts.map +1 -0
  58. package/dist/{test/resources/testnet.js → cjs/src/resources/westend.js} +3 -3
  59. package/dist/cjs/src/resources/westendAssetHub.d.ts.map +1 -0
  60. package/dist/{src → cjs/src}/resources/westendAssetHub.js +1 -1
  61. package/dist/cjs/src/tdot.d.ts.map +1 -0
  62. package/dist/cjs/src/tdot.js +27 -0
  63. package/dist/cjs/test/fixtures.d.ts.map +1 -0
  64. package/dist/cjs/test/fixtures.js +439 -0
  65. package/dist/cjs/test/resources/index.d.ts.map +1 -0
  66. package/dist/cjs/test/resources/index.js +157 -0
  67. package/dist/cjs/test/resources/testnet.d.ts.map +1 -0
  68. package/dist/{src/resources/westend.js → cjs/test/resources/testnet.js} +3 -3
  69. package/dist/{test → cjs/test}/unit/address.d.ts.map +1 -1
  70. package/dist/cjs/test/unit/address.js +45 -0
  71. package/dist/{test → cjs/test}/unit/dot.d.ts.map +1 -1
  72. package/dist/cjs/test/unit/dot.js +880 -0
  73. package/dist/{test → cjs/test}/unit/keypair.d.ts.map +1 -1
  74. package/dist/cjs/test/unit/keypair.js +111 -0
  75. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  76. package/dist/cjs/test/unit/transaction.js +269 -0
  77. package/dist/cjs/test/unit/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  78. package/dist/cjs/test/unit/transactionBuilder/addressInitializationBuilder.js +265 -0
  79. package/dist/cjs/test/unit/transactionBuilder/base.d.ts.map +1 -0
  80. package/dist/cjs/test/unit/transactionBuilder/base.js +233 -0
  81. package/dist/cjs/test/unit/transactionBuilder/batchTransactionBuilder.d.ts.map +1 -0
  82. package/dist/cjs/test/unit/transactionBuilder/batchTransactionBuilder.js +521 -0
  83. package/dist/cjs/test/unit/transactionBuilder/claimBuilder.d.ts.map +1 -0
  84. package/dist/cjs/test/unit/transactionBuilder/claimBuilder.js +129 -0
  85. package/dist/cjs/test/unit/transactionBuilder/proxyBuilder.d.ts.map +1 -0
  86. package/dist/cjs/test/unit/transactionBuilder/proxyBuilder.js +88 -0
  87. package/dist/cjs/test/unit/transactionBuilder/singeltonRegistry.d.ts.map +1 -0
  88. package/dist/{test → cjs/test}/unit/transactionBuilder/singeltonRegistry.js +1 -1
  89. package/dist/cjs/test/unit/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/transactionBuilder/stakingBuilder.js +235 -0
  91. package/dist/cjs/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  92. package/dist/cjs/test/unit/transactionBuilder/transactionBuilderFactory.js +107 -0
  93. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  94. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +437 -0
  95. package/dist/cjs/test/unit/transactionBuilder/unnominateBuilder.d.ts.map +1 -0
  96. package/dist/cjs/test/unit/transactionBuilder/unnominateBuilder.js +97 -0
  97. package/dist/cjs/test/unit/transactionBuilder/unstakeBuilder.d.ts.map +1 -0
  98. package/dist/cjs/test/unit/transactionBuilder/unstakeBuilder.js +116 -0
  99. package/dist/cjs/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts.map +1 -0
  100. package/dist/cjs/test/unit/transactionBuilder/withdrawUnstakedBuilder.js +115 -0
  101. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  102. package/dist/cjs/test/unit/utils.js +117 -0
  103. package/dist/cjs/test/unit/wasmBuilderByteComparison.d.ts.map +1 -0
  104. package/dist/cjs/test/unit/wasmBuilderByteComparison.js +197 -0
  105. package/dist/cjs/test/unit/wasmParserExplanation.d.ts.map +1 -0
  106. package/dist/cjs/test/unit/wasmParserExplanation.js +147 -0
  107. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  108. package/dist/esm/dot.d.ts +147 -0
  109. package/dist/esm/dot.js +570 -0
  110. package/dist/esm/index.d.ts +5 -0
  111. package/dist/esm/index.js +5 -0
  112. package/dist/esm/lib/addressInitializationBuilder.d.ts +79 -0
  113. package/dist/esm/lib/addressInitializationBuilder.js +175 -0
  114. package/dist/esm/lib/batchTransactionBuilder.d.ts +62 -0
  115. package/dist/esm/lib/batchTransactionBuilder.js +222 -0
  116. package/dist/esm/lib/claimBuilder.d.ts +58 -0
  117. package/dist/esm/lib/claimBuilder.js +110 -0
  118. package/dist/esm/lib/errors.d.ts +8 -0
  119. package/dist/esm/lib/errors.js +14 -0
  120. package/dist/esm/lib/iface.d.ts +337 -0
  121. package/dist/esm/lib/iface.js +125 -0
  122. package/dist/esm/lib/iface_utils.d.ts +59 -0
  123. package/dist/esm/lib/iface_utils.js +83 -0
  124. package/dist/esm/lib/index.d.ts +21 -0
  125. package/dist/esm/lib/index.js +20 -0
  126. package/dist/esm/lib/keyPair.d.ts +38 -0
  127. package/dist/esm/lib/keyPair.js +77 -0
  128. package/dist/esm/lib/nativeTransferBuilder.d.ts +84 -0
  129. package/dist/esm/lib/nativeTransferBuilder.js +212 -0
  130. package/dist/esm/lib/proxyBuilder.d.ts +54 -0
  131. package/dist/esm/lib/proxyBuilder.js +109 -0
  132. package/dist/esm/lib/singletonRegistry.d.ts +7 -0
  133. package/dist/esm/lib/singletonRegistry.js +16 -0
  134. package/dist/esm/lib/stakingBuilder.d.ts +66 -0
  135. package/dist/esm/lib/stakingBuilder.js +160 -0
  136. package/dist/esm/lib/transaction.d.ts +83 -0
  137. package/dist/esm/lib/transaction.js +584 -0
  138. package/dist/esm/lib/transactionBuilder.d.ts +131 -0
  139. package/dist/esm/lib/transactionBuilder.js +311 -0
  140. package/dist/esm/lib/transactionBuilderFactory.d.ts +28 -0
  141. package/dist/esm/lib/transactionBuilderFactory.js +97 -0
  142. package/dist/esm/lib/transferBuilder.d.ts +11 -0
  143. package/dist/esm/lib/transferBuilder.js +7 -0
  144. package/dist/esm/lib/txnSchema.d.ts +15 -0
  145. package/dist/esm/lib/txnSchema.js +111 -0
  146. package/dist/esm/lib/unnominateBuilder.d.ts +24 -0
  147. package/dist/esm/lib/unnominateBuilder.js +44 -0
  148. package/dist/esm/lib/unstakeBuilder.d.ts +38 -0
  149. package/dist/esm/lib/unstakeBuilder.js +80 -0
  150. package/dist/esm/lib/utils.d.ts +261 -0
  151. package/dist/esm/lib/utils.js +451 -0
  152. package/dist/esm/lib/wasmParser.d.ts +57 -0
  153. package/dist/{src → esm}/lib/wasmParser.d.ts.map +1 -1
  154. package/dist/esm/lib/wasmParser.js +341 -0
  155. package/dist/esm/lib/withdrawUnstakedBuilder.d.ts +38 -0
  156. package/dist/esm/lib/withdrawUnstakedBuilder.js +81 -0
  157. package/dist/esm/register.d.ts +3 -0
  158. package/dist/esm/register.js +7 -0
  159. package/dist/esm/resources/index.d.ts +5 -0
  160. package/dist/esm/resources/index.js +5 -0
  161. package/dist/esm/resources/mainnet.d.ts +2 -0
  162. package/dist/esm/resources/mainnet.js +2 -0
  163. package/dist/esm/resources/polkadotAssetHub.d.ts +2 -0
  164. package/dist/esm/resources/polkadotAssetHub.js +2 -0
  165. package/dist/esm/resources/westend.d.ts +2 -0
  166. package/dist/esm/resources/westend.js +2 -0
  167. package/dist/esm/resources/westendAssetHub.d.ts +2 -0
  168. package/dist/esm/resources/westendAssetHub.js +2 -0
  169. package/dist/esm/tdot.d.ts +12 -0
  170. package/dist/esm/tdot.js +23 -0
  171. package/package.json +28 -11
  172. package/dist/src/dot.js +0 -610
  173. package/dist/src/lib/addressInitializationBuilder.js +0 -182
  174. package/dist/src/lib/batchTransactionBuilder.js +0 -229
  175. package/dist/src/lib/claimBuilder.js +0 -117
  176. package/dist/src/lib/errors.js +0 -19
  177. package/dist/src/lib/iface.js +0 -128
  178. package/dist/src/lib/iface_utils.js +0 -92
  179. package/dist/src/lib/keyPair.js +0 -117
  180. package/dist/src/lib/nativeTransferBuilder.js +0 -219
  181. package/dist/src/lib/proxyBuilder.js +0 -116
  182. package/dist/src/lib/singletonRegistry.js +0 -20
  183. package/dist/src/lib/stakingBuilder.js +0 -167
  184. package/dist/src/lib/transaction.js +0 -624
  185. package/dist/src/lib/transactionBuilder.js +0 -351
  186. package/dist/src/lib/transactionBuilderFactory.js +0 -104
  187. package/dist/src/lib/transferBuilder.js +0 -11
  188. package/dist/src/lib/txnSchema.js +0 -117
  189. package/dist/src/lib/unnominateBuilder.js +0 -48
  190. package/dist/src/lib/unstakeBuilder.js +0 -87
  191. package/dist/src/lib/utils.js +0 -491
  192. package/dist/src/lib/wasmParser.js +0 -376
  193. package/dist/src/lib/withdrawUnstakedBuilder.js +0 -88
  194. package/dist/src/register.js +0 -11
  195. package/dist/src/resources/mainnet.js +0 -5
  196. package/dist/src/resources/polkadotAssetHub.js +0 -5
  197. package/dist/src/tdot.js +0 -27
  198. package/dist/test/fixtures.d.ts.map +0 -1
  199. package/dist/test/fixtures.js +0 -439
  200. package/dist/test/resources/index.d.ts.map +0 -1
  201. package/dist/test/resources/index.js +0 -157
  202. package/dist/test/resources/testnet.d.ts.map +0 -1
  203. package/dist/test/unit/address.js +0 -45
  204. package/dist/test/unit/dot.js +0 -880
  205. package/dist/test/unit/keypair.js +0 -111
  206. package/dist/test/unit/transaction.d.ts.map +0 -1
  207. package/dist/test/unit/transaction.js +0 -269
  208. package/dist/test/unit/transactionBuilder/addressInitializationBuilder.d.ts.map +0 -1
  209. package/dist/test/unit/transactionBuilder/addressInitializationBuilder.js +0 -265
  210. package/dist/test/unit/transactionBuilder/base.d.ts.map +0 -1
  211. package/dist/test/unit/transactionBuilder/base.js +0 -233
  212. package/dist/test/unit/transactionBuilder/batchTransactionBuilder.d.ts.map +0 -1
  213. package/dist/test/unit/transactionBuilder/batchTransactionBuilder.js +0 -521
  214. package/dist/test/unit/transactionBuilder/claimBuilder.d.ts.map +0 -1
  215. package/dist/test/unit/transactionBuilder/claimBuilder.js +0 -129
  216. package/dist/test/unit/transactionBuilder/proxyBuilder.d.ts.map +0 -1
  217. package/dist/test/unit/transactionBuilder/proxyBuilder.js +0 -88
  218. package/dist/test/unit/transactionBuilder/singeltonRegistry.d.ts.map +0 -1
  219. package/dist/test/unit/transactionBuilder/stakingBuilder.d.ts.map +0 -1
  220. package/dist/test/unit/transactionBuilder/stakingBuilder.js +0 -235
  221. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +0 -1
  222. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +0 -107
  223. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  224. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -437
  225. package/dist/test/unit/transactionBuilder/unnominateBuilder.d.ts.map +0 -1
  226. package/dist/test/unit/transactionBuilder/unnominateBuilder.js +0 -97
  227. package/dist/test/unit/transactionBuilder/unstakeBuilder.d.ts.map +0 -1
  228. package/dist/test/unit/transactionBuilder/unstakeBuilder.js +0 -116
  229. package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts.map +0 -1
  230. package/dist/test/unit/transactionBuilder/withdrawUnstakedBuilder.js +0 -115
  231. package/dist/test/unit/utils.js +0 -117
  232. package/dist/test/unit/wasmBuilderByteComparison.d.ts.map +0 -1
  233. package/dist/test/unit/wasmBuilderByteComparison.js +0 -197
  234. package/dist/test/unit/wasmParserExplanation.d.ts.map +0 -1
  235. package/dist/test/unit/wasmParserExplanation.js +0 -149
  236. package/dist/tsconfig.tsbuildinfo +0 -1
  237. /package/dist/{src → cjs/src}/dot.d.ts +0 -0
  238. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  239. /package/dist/{src → cjs/src}/lib/addressInitializationBuilder.d.ts +0 -0
  240. /package/dist/{src → cjs/src}/lib/batchTransactionBuilder.d.ts +0 -0
  241. /package/dist/{src → cjs/src}/lib/claimBuilder.d.ts +0 -0
  242. /package/dist/{src → cjs/src}/lib/errors.d.ts +0 -0
  243. /package/dist/{src → cjs/src}/lib/iface.d.ts +0 -0
  244. /package/dist/{src → cjs/src}/lib/iface_utils.d.ts +0 -0
  245. /package/dist/{src → cjs/src}/lib/index.d.ts +0 -0
  246. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  247. /package/dist/{src → cjs/src}/lib/nativeTransferBuilder.d.ts +0 -0
  248. /package/dist/{src → cjs/src}/lib/proxyBuilder.d.ts +0 -0
  249. /package/dist/{src → cjs/src}/lib/singletonRegistry.d.ts +0 -0
  250. /package/dist/{src → cjs/src}/lib/stakingBuilder.d.ts +0 -0
  251. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  252. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  253. /package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +0 -0
  254. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  255. /package/dist/{src → cjs/src}/lib/txnSchema.d.ts +0 -0
  256. /package/dist/{src → cjs/src}/lib/unnominateBuilder.d.ts +0 -0
  257. /package/dist/{src → cjs/src}/lib/unstakeBuilder.d.ts +0 -0
  258. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  259. /package/dist/{src → cjs/src}/lib/wasmParser.d.ts +0 -0
  260. /package/dist/{src → cjs/src}/lib/withdrawUnstakedBuilder.d.ts +0 -0
  261. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  262. /package/dist/{src → cjs/src}/resources/index.d.ts +0 -0
  263. /package/dist/{src → cjs/src}/resources/mainnet.d.ts +0 -0
  264. /package/dist/{src → cjs/src}/resources/polkadotAssetHub.d.ts +0 -0
  265. /package/dist/{src → cjs/src}/resources/westend.d.ts +0 -0
  266. /package/dist/{src → cjs/src}/resources/westendAssetHub.d.ts +0 -0
  267. /package/dist/{src → cjs/src}/tdot.d.ts +0 -0
  268. /package/dist/{test → cjs/test}/fixtures.d.ts +0 -0
  269. /package/dist/{test → cjs/test}/resources/index.d.ts +0 -0
  270. /package/dist/{test → cjs/test}/resources/materialData.json +0 -0
  271. /package/dist/{test → cjs/test}/resources/materialDataModified.json +0 -0
  272. /package/dist/{test → cjs/test}/resources/testnet.d.ts +0 -0
  273. /package/dist/{test → cjs/test}/unit/address.d.ts +0 -0
  274. /package/dist/{test → cjs/test}/unit/dot.d.ts +0 -0
  275. /package/dist/{test → cjs/test}/unit/keypair.d.ts +0 -0
  276. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  277. /package/dist/{test → cjs/test}/unit/transactionBuilder/addressInitializationBuilder.d.ts +0 -0
  278. /package/dist/{test → cjs/test}/unit/transactionBuilder/base.d.ts +0 -0
  279. /package/dist/{test → cjs/test}/unit/transactionBuilder/batchTransactionBuilder.d.ts +0 -0
  280. /package/dist/{test → cjs/test}/unit/transactionBuilder/claimBuilder.d.ts +0 -0
  281. /package/dist/{test → cjs/test}/unit/transactionBuilder/proxyBuilder.d.ts +0 -0
  282. /package/dist/{test → cjs/test}/unit/transactionBuilder/singeltonRegistry.d.ts +0 -0
  283. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingBuilder.d.ts +0 -0
  284. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilderFactory.d.ts +0 -0
  285. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  286. /package/dist/{test → cjs/test}/unit/transactionBuilder/unnominateBuilder.d.ts +0 -0
  287. /package/dist/{test → cjs/test}/unit/transactionBuilder/unstakeBuilder.d.ts +0 -0
  288. /package/dist/{test → cjs/test}/unit/transactionBuilder/withdrawUnstakedBuilder.d.ts +0 -0
  289. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  290. /package/dist/{test → cjs/test}/unit/wasmBuilderByteComparison.d.ts +0 -0
  291. /package/dist/{test → cjs/test}/unit/wasmParserExplanation.d.ts +0 -0
  292. /package/dist/{src → esm}/dot.d.ts.map +0 -0
  293. /package/dist/{src → esm}/index.d.ts.map +0 -0
  294. /package/dist/{src → esm}/lib/addressInitializationBuilder.d.ts.map +0 -0
  295. /package/dist/{src → esm}/lib/batchTransactionBuilder.d.ts.map +0 -0
  296. /package/dist/{src → esm}/lib/claimBuilder.d.ts.map +0 -0
  297. /package/dist/{src → esm}/lib/errors.d.ts.map +0 -0
  298. /package/dist/{src → esm}/lib/iface.d.ts.map +0 -0
  299. /package/dist/{src → esm}/lib/iface_utils.d.ts.map +0 -0
  300. /package/dist/{src → esm}/lib/index.d.ts.map +0 -0
  301. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  302. /package/dist/{src → esm}/lib/nativeTransferBuilder.d.ts.map +0 -0
  303. /package/dist/{src → esm}/lib/proxyBuilder.d.ts.map +0 -0
  304. /package/dist/{src → esm}/lib/singletonRegistry.d.ts.map +0 -0
  305. /package/dist/{src → esm}/lib/stakingBuilder.d.ts.map +0 -0
  306. /package/dist/{src → esm}/lib/transaction.d.ts.map +0 -0
  307. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  308. /package/dist/{src → esm}/lib/transactionBuilderFactory.d.ts.map +0 -0
  309. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  310. /package/dist/{src → esm}/lib/txnSchema.d.ts.map +0 -0
  311. /package/dist/{src → esm}/lib/unnominateBuilder.d.ts.map +0 -0
  312. /package/dist/{src → esm}/lib/unstakeBuilder.d.ts.map +0 -0
  313. /package/dist/{src → esm}/lib/utils.d.ts.map +0 -0
  314. /package/dist/{src → esm}/lib/withdrawUnstakedBuilder.d.ts.map +0 -0
  315. /package/dist/{src → esm}/register.d.ts.map +0 -0
  316. /package/dist/{src → esm}/resources/index.d.ts.map +0 -0
  317. /package/dist/{src → esm}/resources/mainnet.d.ts.map +0 -0
  318. /package/dist/{src → esm}/resources/polkadotAssetHub.d.ts.map +0 -0
  319. /package/dist/{src → esm}/resources/westend.d.ts.map +0 -0
  320. /package/dist/{src → esm}/resources/westendAssetHub.d.ts.map +0 -0
  321. /package/dist/{src → esm}/tdot.d.ts.map +0 -0
@@ -0,0 +1,491 @@
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 __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Utils = void 0;
40
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
41
+ const keyring_1 = require("@polkadot/keyring");
42
+ const decode_1 = require("@polkadot/keyring/pair/decode");
43
+ const types_1 = require("@polkadot/types");
44
+ const Extrinsic_1 = require("@polkadot/types/extrinsic/v4/Extrinsic");
45
+ const util_1 = require("@polkadot/util");
46
+ const util_crypto_1 = require("@polkadot/util-crypto");
47
+ const txwrapper_core_1 = require("@substrate/txwrapper-core");
48
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
49
+ const bs58_1 = __importDefault(require("bs58"));
50
+ const hi_base32_1 = __importDefault(require("hi-base32"));
51
+ const _ = __importStar(require("lodash"));
52
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
53
+ const _1 = require(".");
54
+ const resources_1 = require("../resources");
55
+ const PROXY_METHOD_ARG = 2;
56
+ // map to retrieve the address encoding format when the key is the asset name
57
+ const coinToAddressMap = new Map([
58
+ ['dot', sdk_core_1.DotAddressFormat.polkadot],
59
+ ['tdot', sdk_core_1.DotAddressFormat.substrate],
60
+ ]);
61
+ class Utils {
62
+ /** @inheritdoc */
63
+ isValidAddress(address) {
64
+ try {
65
+ (0, keyring_1.encodeAddress)((0, util_1.isHex)(address) ? (0, util_1.hexToU8a)(address) : (0, keyring_1.decodeAddress)(address));
66
+ return true;
67
+ }
68
+ catch (error) {
69
+ return false;
70
+ }
71
+ }
72
+ /** @inheritdoc */
73
+ isValidBlockId(hash) {
74
+ return (0, util_1.isHex)(hash, 256);
75
+ }
76
+ /** @inheritdoc */
77
+ isValidPrivateKey(key) {
78
+ try {
79
+ const decodedPrv = (0, util_1.hexToU8a)(key);
80
+ return decodedPrv.length === tweetnacl_1.default.sign.secretKeyLength / 2;
81
+ }
82
+ catch (e) {
83
+ return false;
84
+ }
85
+ }
86
+ /** @inheritdoc */
87
+ isValidPublicKey(key) {
88
+ let pubKey = key;
89
+ // convert base58 pub key to hex format
90
+ // tss common pub is in base58 format and decodes to length of 32
91
+ if ((0, sdk_core_1.isBase58)(pubKey, 32)) {
92
+ const base58Decode = bs58_1.default.decode(pubKey);
93
+ pubKey = base58Decode.toString('hex');
94
+ }
95
+ return (0, sdk_core_1.isValidEd25519PublicKey)(pubKey);
96
+ }
97
+ /** @inheritdoc */
98
+ isValidSignature(signature) {
99
+ const signatureU8a = (0, util_1.u8aToU8a)(signature);
100
+ return [64, 65, 66].includes(signatureU8a.length);
101
+ }
102
+ /**
103
+ * Verifies the signature on a given message
104
+ *
105
+ * @param {string} signedMessage the signed message for the signature
106
+ * @param {string} signature the signature to verify
107
+ * @param {string} address the address of the signer
108
+ * @returns {boolean} whether the signature is valid or not
109
+ */
110
+ verifySignature(signedMessage, signature, address) {
111
+ const publicKey = (0, keyring_1.decodeAddress)(address);
112
+ const hexPublicKey = (0, util_1.u8aToHex)(publicKey);
113
+ return (0, util_crypto_1.signatureVerify)(signedMessage, signature, hexPublicKey).isValid;
114
+ }
115
+ /** @inheritdoc */
116
+ isValidTransactionId(txId) {
117
+ return (0, util_1.isHex)(txId, 256);
118
+ }
119
+ /**
120
+ * decodeSeed decodes a dot seed
121
+ *
122
+ * @param {string} seed - the seed to be validated.
123
+ * @returns {Seed} - the object Seed
124
+ */
125
+ decodeSeed(seed) {
126
+ const decoded = hi_base32_1.default.decode.asBytes(seed);
127
+ return {
128
+ seed: Buffer.from(decoded),
129
+ };
130
+ }
131
+ /**
132
+ * Helper function to capitalize the first letter of a string
133
+ *
134
+ * @param {string} val
135
+ * @returns {string}
136
+ */
137
+ capitalizeFirstLetter(val) {
138
+ return val.charAt(0).toUpperCase() + val.slice(1);
139
+ }
140
+ /**
141
+ * Helper function to decode the internal method hex in case of a proxy transaction
142
+ *
143
+ * @param {string | UnsignedTransaction} tx
144
+ * @param { metadataRpc: string; registry: TypeRegistry } options
145
+ * @returns {TransferArgs}
146
+ */
147
+ decodeCallMethod(tx, options) {
148
+ const { registry } = options;
149
+ let methodCall;
150
+ if (typeof tx === 'string') {
151
+ try {
152
+ const payload = (0, types_1.createTypeUnsafe)(registry, 'ExtrinsicPayload', [
153
+ tx,
154
+ { version: Extrinsic_1.EXTRINSIC_VERSION },
155
+ ]);
156
+ methodCall = (0, types_1.createTypeUnsafe)(registry, 'Call', [payload.method]);
157
+ }
158
+ catch (e) {
159
+ methodCall = registry.createType('Extrinsic', (0, util_1.hexToU8a)(tx), {
160
+ isSigned: true,
161
+ });
162
+ }
163
+ }
164
+ else {
165
+ methodCall = registry.createType('Call', tx.method);
166
+ }
167
+ const method = methodCall.args[PROXY_METHOD_ARG];
168
+ const decodedArgs = method.toJSON();
169
+ return decodedArgs.args;
170
+ }
171
+ /**
172
+ * keyPairFromSeed generates an object with secretKey and publicKey using the polkadot sdk
173
+ * @param seed 32 bytes long seed
174
+ * @returns KeyPair
175
+ */
176
+ keyPairFromSeed(seed) {
177
+ const keyring = new keyring_1.Keyring({ type: 'ed25519' });
178
+ const keyringPair = keyring.addFromSeed(seed);
179
+ const pairJson = keyringPair.toJson();
180
+ const decodedKeyPair = (0, decode_1.decodePair)('', (0, util_crypto_1.base64Decode)(pairJson.encoded), pairJson.encoding.type);
181
+ return new _1.KeyPair({ prv: Buffer.from(decodedKeyPair.secretKey).toString('hex') });
182
+ }
183
+ /**
184
+ * Signing function. Implement this on the OFFLINE signing device.
185
+ *
186
+ * @param {KeyringPair} pair - The signing pair.
187
+ * @param {string} signingPayload - Payload to sign.
188
+ * @param {UnsignedTransaction} transaction - raw transaction to sign
189
+ * @param {Object} options
190
+ * @param {HexString} options.metadataRpc - metadata that is needed for dot to sign
191
+ * @param {TypeRegistry} options.registry - metadata that is needed for dot to sign
192
+ */
193
+ createSignedTx(pair, signingPayload, transaction, options) {
194
+ const { registry, metadataRpc } = options;
195
+ const { signature } = registry
196
+ .createType('ExtrinsicPayload', signingPayload, {
197
+ version: Extrinsic_1.EXTRINSIC_VERSION,
198
+ })
199
+ .sign(pair);
200
+ // Serialize a signed transaction.
201
+ return this.serializeSignedTransaction(transaction, signature, metadataRpc, registry);
202
+ }
203
+ /**
204
+ * Serializes the signed transaction
205
+ *
206
+ * @param transaction Transaction to serialize
207
+ * @param signature Signature of the message
208
+ * @param metadataRpc Network metadata
209
+ * @param registry Transaction registry
210
+ * @returns string Serialized transaction
211
+ */
212
+ serializeSignedTransaction(transaction, signature, metadataRpc, registry) {
213
+ return txwrapper_polkadot_1.construct.signedTx(transaction, signature, {
214
+ metadataRpc,
215
+ registry,
216
+ });
217
+ }
218
+ /**
219
+ * Decodes the dot address from the given format
220
+ *
221
+ * @param {string} address
222
+ * @param {number} [ss58Format]
223
+ * @returns {string}
224
+ */
225
+ decodeDotAddress(address, ss58Format) {
226
+ const keypair = new _1.KeyPair({ pub: Buffer.from((0, keyring_1.decodeAddress)(address, undefined, ss58Format)).toString('hex') });
227
+ return keypair.getAddress(ss58Format);
228
+ }
229
+ /**
230
+ * Decodes the dot address from the given format
231
+ *
232
+ * @param {string} address
233
+ * @param {number} [ss58Format]
234
+ * @returns {string}
235
+ */
236
+ encodeDotAddress(address, ss58Format) {
237
+ return (0, keyring_1.encodeAddress)(address, ss58Format);
238
+ }
239
+ /**
240
+ * Retrieves the txHash of a signed txHex
241
+ *
242
+ * @param txHex signed transaction hex
243
+ * @returns {string}
244
+ */
245
+ getTxHash(txHex) {
246
+ return txwrapper_polkadot_1.construct.txHash(txHex);
247
+ }
248
+ getMaterial(coinConfig) {
249
+ const networkConfig = coinConfig.network;
250
+ const { specName, specVersion, chainName, txVersion, genesisHash } = networkConfig;
251
+ let metadataRpc = resources_1.mainnetMetadataRpc;
252
+ if (specName === 'westend') {
253
+ metadataRpc = resources_1.westendMetadataRpc;
254
+ }
255
+ else if (specName === 'westmint') {
256
+ metadataRpc = resources_1.westendAssetHubMetadataRpc;
257
+ }
258
+ else if (specName === 'statemint') {
259
+ metadataRpc = resources_1.polkadotAssetHubMetadataRpc;
260
+ }
261
+ return {
262
+ specName,
263
+ specVersion,
264
+ chainName,
265
+ metadata: metadataRpc,
266
+ txVersion,
267
+ genesisHash,
268
+ };
269
+ }
270
+ isSigningPayload(payload) {
271
+ return payload.blockHash !== undefined;
272
+ }
273
+ isProxyTransfer(arg) {
274
+ return arg.real !== undefined;
275
+ }
276
+ isTransfer(arg) {
277
+ return arg.dest?.id !== undefined && arg.value !== undefined;
278
+ }
279
+ isTransferAll(arg) {
280
+ return arg.dest?.id !== undefined && arg.keepAlive !== undefined;
281
+ }
282
+ /**
283
+ * Returns true if arg is of type BatchArgs, false otherwise.
284
+ *
285
+ * @param arg The object to test.
286
+ *
287
+ * @return true if arg is of type BatchArgs, false otherwise.
288
+ */
289
+ isBatch(arg) {
290
+ return arg.calls !== undefined;
291
+ }
292
+ /**
293
+ * Returns true if arg is of type BatchArgs and the calls of the batch are staking calls: a stake
294
+ * call (bond) followed by an add proxy call (addProxy), false otherwise.
295
+ *
296
+ * @param arg The object to test.
297
+ *
298
+ * @return true if arg is of type BatchArgs and the calls of the batch are staking calls: a stake
299
+ * call (bond) followed by an add proxy call (addProxy), false otherwise.
300
+ */
301
+ isStakingBatch(arg) {
302
+ const calls = arg.calls;
303
+ if (calls !== undefined) {
304
+ return (calls.length === 2 &&
305
+ (this.isStakeBatchCallArgs(calls[0].args) || this.isBondBatchExtra(calls[0].args)) &&
306
+ this.isAddProxyBatchCallArgs(calls[1].args));
307
+ }
308
+ return false;
309
+ }
310
+ /**
311
+ * Returns true if arg is of type StakeBatchCallArgs, false otherwise.
312
+ *
313
+ * @param arg The object to test.
314
+ *
315
+ * @return true if arg is of type StakeBatchCallArgs, false otherwise.
316
+ */
317
+ isStakeBatchCallArgs(arg) {
318
+ return arg.value !== undefined && arg.payee !== undefined;
319
+ }
320
+ /**
321
+ * Returns true if arg is of type AddProxyBatchCallArgs, false otherwise.
322
+ *
323
+ * @param arg The object to test.
324
+ *
325
+ * @return true if arg is of type AddProxyBatchCallArgs, false otherwise.
326
+ */
327
+ isAddProxyBatchCallArgs(arg) {
328
+ return (arg.delegate !== undefined &&
329
+ arg.proxy_type !== undefined &&
330
+ arg.delay !== undefined);
331
+ }
332
+ /**
333
+ * Returns true if arg is of type BatchArgs and the calls of the batch are unstaking calls: a remove
334
+ * proxy call (removeProxy), followed by a chill call, and an unstake call (unbond), false otherwise.
335
+ *
336
+ * @param arg The object to test.
337
+ *
338
+ * @return true if arg is of type BatchArgs and the calls of the batch are unstaking calls: a remove
339
+ * proxy call (removeProxy), followed by a chill call, and an unstake call (unbond), false otherwise.
340
+ */
341
+ isUnstakingBatch(arg) {
342
+ const calls = arg.calls;
343
+ if (calls !== undefined) {
344
+ return (calls.length === 3 &&
345
+ this.isRemoveProxyBatchCallArgs(calls[0].args) &&
346
+ _.isEmpty(calls[1].args) &&
347
+ this.isUnstakeBatchCallArgs(calls[2].args));
348
+ }
349
+ return false;
350
+ }
351
+ /**
352
+ * Returns true if arg is of type AddProxyBatchCallArgs, false otherwise.
353
+ *
354
+ * @param arg The object to test.
355
+ *
356
+ * @return true if arg is of type AddProxyBatchCallArgs, false otherwise.
357
+ */
358
+ isRemoveProxyBatchCallArgs(arg) {
359
+ return (arg.delegate !== undefined &&
360
+ arg.proxy_type !== undefined &&
361
+ arg.delay !== undefined);
362
+ }
363
+ /**
364
+ * Returns true if arg is of type UnstakeBatchCallArgs, false otherwise.
365
+ *
366
+ * @param arg The object to test.
367
+ *
368
+ * @return true if arg is of type UnstakeBatchCallArgs, false otherwise.
369
+ */
370
+ isUnstakeBatchCallArgs(arg) {
371
+ return arg.value !== undefined;
372
+ }
373
+ /**
374
+ * Returns true if arg is of type StakeArgs, false otherwise.
375
+ *
376
+ * @param arg The object to test.
377
+ *
378
+ * @return true if arg is of type StakeArgs, false otherwise.
379
+ */
380
+ isBond(arg) {
381
+ return arg.value !== undefined && arg.payee !== undefined;
382
+ }
383
+ /**
384
+ * Returns true if arg is of type StakeMoreArgs, false otherwise.
385
+ *
386
+ * @param arg The object to test.
387
+ *
388
+ * @return true if arg is of type StakeMoreArgs, false otherwise.
389
+ */
390
+ isBondExtra(arg) {
391
+ return arg.maxAdditional !== undefined;
392
+ }
393
+ /**
394
+ * Returns true if arg is of type StakeMoreArgs, false otherwise.
395
+ *
396
+ * @param arg The object to test.
397
+ *
398
+ * @return true if arg is of type StakeMoreArgs, false otherwise.
399
+ */
400
+ isBondBatchExtra(arg) {
401
+ return arg.max_additional !== undefined;
402
+ }
403
+ /**
404
+ * extracts and returns the signature in hex format given a raw signed transaction
405
+ *
406
+ * @param {string} rawTx signed raw transaction
407
+ * @param options registry dot registry used to retrieve the signature
408
+ */
409
+ recoverSignatureFromRawTx(rawTx, options) {
410
+ const { registry } = options;
411
+ const methodCall = registry.createType('Extrinsic', rawTx, {
412
+ isSigned: true,
413
+ });
414
+ let signature = (0, util_1.u8aToHex)(methodCall.signature);
415
+ // remove 0x from the signature since this is how it's returned from TSS signing
416
+ if (signature.startsWith('0x')) {
417
+ signature = signature.substr(2);
418
+ }
419
+ return signature;
420
+ }
421
+ /**
422
+ * Decodes the dot address from the given format
423
+ *
424
+ * @param {string} address
425
+ * @param {number} [ss58Format]
426
+ * @returns {KeyPair}
427
+ */
428
+ decodeDotAddressToKeyPair(address, ss58Format) {
429
+ return new _1.KeyPair({ pub: Buffer.from((0, keyring_1.decodeAddress)(address, undefined, ss58Format)).toString('hex') });
430
+ }
431
+ /**
432
+ * Checks whether the given input is a hex string with with 0 value
433
+ * used to check whether a given transaction is immortal or mortal
434
+ * @param hexValue
435
+ */
436
+ isZeroHex(hexValue) {
437
+ return hexValue === '0x00';
438
+ }
439
+ /**
440
+ * Takes an asset name and returns the respective address to format to
441
+ * since polkadot addresses differ depending on the network
442
+ * ref: https://wiki.polkadot.network/docs/learn-accounts
443
+ * @param networkCoinName
444
+ */
445
+ getAddressFormat(networkCoinName) {
446
+ return coinToAddressMap.get(networkCoinName);
447
+ }
448
+ /**
449
+ * Creates a pure proxy extrinsic. Polkadot has renamed anonymous proxies to pure proxies, but
450
+ * the libraries we are using to build transactions have not been updated, as a stop gap we are
451
+ * defining the pure proxy extrinsic here.
452
+ *
453
+ * @param args Arguments to the createPure extrinsic.
454
+ * @param info Common information to all transactions.
455
+ * @param options Chain registry and metadata.
456
+ */
457
+ pureProxy(args, info, options) {
458
+ return (0, txwrapper_core_1.defineMethod)({
459
+ method: {
460
+ args,
461
+ name: 'createPure',
462
+ pallet: 'proxy',
463
+ },
464
+ ...info,
465
+ }, options);
466
+ }
467
+ /**
468
+ * Removes '0x' from a given `string` if present.
469
+ *
470
+ * @param {string} str the string value.
471
+ *
472
+ * @return {string} a string without a '0x' prefix.
473
+ */
474
+ stripHexPrefix(str) {
475
+ return this.isHexPrefixed(str) ? str.slice(2) : str;
476
+ }
477
+ /**
478
+ * Returns true if a string starts with '0x', false otherwise.
479
+ *
480
+ * @param {string} str the string value.
481
+ *
482
+ * @return {boolean} true if a string starts with '0x', false otherwise.
483
+ */
484
+ isHexPrefixed(str) {
485
+ return str.slice(0, 2) === '0x';
486
+ }
487
+ }
488
+ exports.Utils = Utils;
489
+ const utils = new Utils();
490
+ exports.default = utils;
491
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUEySDtBQUUzSCwrQ0FBMEU7QUFDMUUsMERBQTJEO0FBRTNELDJDQUEyRztBQUMzRyxzRUFBMkU7QUFDM0UseUNBQXFFO0FBQ3JFLHVEQUFzRTtBQUN0RSw4REFBaUg7QUFFakgsc0VBQTBEO0FBQzFELGdEQUF3QjtBQUN4QiwwREFBK0I7QUFDL0IsMENBQTRCO0FBQzVCLDBEQUE2QjtBQWtCN0Isd0JBQTRCO0FBQzVCLDRDQUtzQjtBQUV0QixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQiw2RUFBNkU7QUFDN0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBa0M7SUFDaEUsQ0FBQyxLQUFLLEVBQUUsMkJBQWdCLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUMsTUFBTSxFQUFFLDJCQUFnQixDQUFDLFNBQVMsQ0FBQztDQUNyQyxDQUFDLENBQUM7QUFFSCxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLElBQUksQ0FBQztZQUNILElBQUEsdUJBQWEsRUFBQyxJQUFBLFlBQUssRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFRLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsdUJBQWEsRUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBQSxZQUFLLEVBQUMsSUFBSSxFQUFF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TSxFQUFFO2dCQUNOLElBQUk7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPO2FBQ2hCO1lBQ0QsR0FBRyxJQUFJO1NBQ1IsRUFDRCxPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxjQUFjLENBQUMsR0FBVztRQUN4QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLEdBQVc7UUFDdkIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBbmVELHNCQW1lQztBQVFELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRG90QXNzZXRUeXBlcywgQmFzZVV0aWxzLCBEb3RBZGRyZXNzRm9ybWF0LCBpc0Jhc2U1OCwgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksIFNlZWQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBEb3ROZXR3b3JrIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBkZWNvZGVBZGRyZXNzLCBlbmNvZGVBZGRyZXNzLCBLZXlyaW5nIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcnO1xuaW1wb3J0IHsgZGVjb2RlUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3BhaXIvZGVjb2RlJztcbmltcG9ydCB7IEtleXJpbmdQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlVHlwZVVuc2FmZSwgR2VuZXJpY0NhbGwsIEdlbmVyaWNFeHRyaW5zaWMsIEdlbmVyaWNFeHRyaW5zaWNQYXlsb2FkIH0gZnJvbSAnQHBvbGthZG90L3R5cGVzJztcbmltcG9ydCB7IEVYVFJJTlNJQ19WRVJTSU9OIH0gZnJvbSAnQHBvbGthZG90L3R5cGVzL2V4dHJpbnNpYy92NC9FeHRyaW5zaWMnO1xuaW1wb3J0IHsgaGV4VG9VOGEsIGlzSGV4LCB1OGFUb0hleCwgdThhVG9VOGEgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbCc7XG5pbXBvcnQgeyBiYXNlNjREZWNvZGUsIHNpZ25hdHVyZVZlcmlmeSB9IGZyb20gJ0Bwb2xrYWRvdC91dGlsLWNyeXB0byc7XG5pbXBvcnQgeyBBcmdzLCBCYXNlVHhJbmZvLCBkZWZpbmVNZXRob2QsIE9wdGlvbnNXaXRoTWV0YSwgVW5zaWduZWRUcmFuc2FjdGlvbiB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgRGVjb2RlZFNpZ25lZFR4LCBEZWNvZGVkU2lnbmluZ1BheWxvYWQsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IGNvbnN0cnVjdCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IGJhc2UzMiBmcm9tICdoaS1iYXNlMzInO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG5hY2wgZnJvbSAndHdlZXRuYWNsJztcbmltcG9ydCB7XG4gIEFkZFByb3h5QmF0Y2hDYWxsQXJncyxcbiAgQmF0Y2hBcmdzLFxuICBCYXRjaENhbGxPYmplY3QsXG4gIEhleFN0cmluZyxcbiAgTWF0ZXJpYWwsXG4gIFByb3h5QXJncyxcbiAgUHJveHlDYWxsQXJncyxcbiAgU3Rha2VBcmdzLFxuICBTdGFrZUJhdGNoQ2FsbEFyZ3MsXG4gIFN0YWtlTW9yZUFyZ3MsXG4gIFN0YWtlTW9yZUNhbGxBcmdzLFxuICBUcmFuc2ZlckFsbEFyZ3MsXG4gIFRyYW5zZmVyQXJncyxcbiAgVHhNZXRob2QsXG4gIFVuc3Rha2VCYXRjaENhbGxBcmdzLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEtleVBhaXIgfSBmcm9tICcuJztcbmltcG9ydCB7XG4gIG1haW5uZXRNZXRhZGF0YVJwYyxcbiAgd2VzdGVuZE1ldGFkYXRhUnBjLFxuICBwb2xrYWRvdEFzc2V0SHViTWV0YWRhdGFScGMsXG4gIHdlc3RlbmRBc3NldEh1Yk1ldGFkYXRhUnBjLFxufSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuXG5jb25zdCBQUk9YWV9NRVRIT0RfQVJHID0gMjtcbi8vIG1hcCB0byByZXRyaWV2ZSB0aGUgYWRkcmVzcyBlbmNvZGluZyBmb3JtYXQgd2hlbiB0aGUga2V5IGlzIHRoZSBhc3NldCBuYW1lXG5jb25zdCBjb2luVG9BZGRyZXNzTWFwID0gbmV3IE1hcDxEb3RBc3NldFR5cGVzLCBEb3RBZGRyZXNzRm9ybWF0PihbXG4gIFsnZG90JywgRG90QWRkcmVzc0Zvcm1hdC5wb2xrYWRvdF0sXG4gIFsndGRvdCcsIERvdEFkZHJlc3NGb3JtYXQuc3Vic3RyYXRlXSxcbl0pO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMgaW1wbGVtZW50cyBCYXNlVXRpbHMge1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGVuY29kZUFkZHJlc3MoaXNIZXgoYWRkcmVzcykgPyBoZXhUb1U4YShhZGRyZXNzKSA6IGRlY29kZUFkZHJlc3MoYWRkcmVzcykpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzSGV4KGhhc2gsIDI1Nik7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFByaXZhdGVLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFBydiA9IGhleFRvVThhKGtleSk7XG4gICAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWNyZXRLZXlMZW5ndGggLyAyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGxldCBwdWJLZXkgPSBrZXk7XG5cbiAgICAvLyBjb252ZXJ0IGJhc2U1OCBwdWIga2V5IHRvIGhleCBmb3JtYXRcbiAgICAvLyB0c3MgY29tbW9uIHB1YiBpcyBpbiBiYXNlNTggZm9ybWF0IGFuZCBkZWNvZGVzIHRvIGxlbmd0aCBvZiAzMlxuICAgIGlmIChpc0Jhc2U1OChwdWJLZXksIDMyKSkge1xuICAgICAgY29uc3QgYmFzZTU4RGVjb2RlID0gYnM1OC5kZWNvZGUocHViS2V5KTtcbiAgICAgIHB1YktleSA9IGJhc2U1OERlY29kZS50b1N0cmluZygnaGV4Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1YktleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZVU4YSA9IHU4YVRvVThhKHNpZ25hdHVyZSk7XG4gICAgcmV0dXJuIFs2NCwgNjUsIDY2XS5pbmNsdWRlcyhzaWduYXR1cmVVOGEubGVuZ3RoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGUgc2lnbmF0dXJlIG9uIGEgZ2l2ZW4gbWVzc2FnZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmVkTWVzc2FnZSB0aGUgc2lnbmVkIG1lc3NhZ2UgZm9yIHRoZSBzaWduYXR1cmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25hdHVyZSB0aGUgc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2lnbmVyXG4gICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQgb3Igbm90XG4gICAqL1xuICB2ZXJpZnlTaWduYXR1cmUoc2lnbmVkTWVzc2FnZTogc3RyaW5nLCBzaWduYXR1cmU6IHN0cmluZywgYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHVibGljS2V5ID0gZGVjb2RlQWRkcmVzcyhhZGRyZXNzKTtcbiAgICBjb25zdCBoZXhQdWJsaWNLZXkgPSB1OGFUb0hleChwdWJsaWNLZXkpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZVZlcmlmeShzaWduZWRNZXNzYWdlLCBzaWduYXR1cmUsIGhleFB1YmxpY0tleSkuaXNWYWxpZDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNIZXgodHhJZCwgMjU2KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWNvZGVTZWVkIGRlY29kZXMgYSBkb3Qgc2VlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VlZCAtIHRoZSBzZWVkIHRvIGJlIHZhbGlkYXRlZC5cbiAgICogQHJldHVybnMge1NlZWR9IC0gdGhlIG9iamVjdCBTZWVkXG4gICAqL1xuICBkZWNvZGVTZWVkKHNlZWQ6IHN0cmluZyk6IFNlZWQge1xuICAgIGNvbnN0IGRlY29kZWQgPSBiYXNlMzIuZGVjb2RlLmFzQnl0ZXMoc2VlZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlZWQ6IEJ1ZmZlci5mcm9tKGRlY29kZWQpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGNhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBhIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodmFsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB2YWwuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2YWwuc2xpY2UoMSk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIHRvIGRlY29kZSB0aGUgaW50ZXJuYWwgbWV0aG9kIGhleCBpbiBjYXNlIG9mIGEgcHJveHkgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVbnNpZ25lZFRyYW5zYWN0aW9ufSB0eFxuICAgKiBAcGFyYW0geyBtZXRhZGF0YVJwYzogc3RyaW5nOyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJBcmdzfVxuICAgKi9cbiAgZGVjb2RlQ2FsbE1ldGhvZChcbiAgICB0eDogc3RyaW5nIHwgVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBvcHRpb25zOiB7IG1ldGFkYXRhUnBjOiBzdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfVxuICApOiBUcmFuc2ZlckFyZ3Mge1xuICAgIGNvbnN0IHsgcmVnaXN0cnkgfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1ldGhvZENhbGw6IEdlbmVyaWNDYWxsIHwgR2VuZXJpY0V4dHJpbnNpYztcbiAgICBpZiAodHlwZW9mIHR4ID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcGF5bG9hZDogR2VuZXJpY0V4dHJpbnNpY1BheWxvYWQgPSBjcmVhdGVUeXBlVW5zYWZlKHJlZ2lzdHJ5LCAnRXh0cmluc2ljUGF5bG9hZCcsIFtcbiAgICAgICAgICB0eCxcbiAgICAgICAgICB7IHZlcnNpb246IEVYVFJJTlNJQ19WRVJTSU9OIH0sXG4gICAgICAgIF0pO1xuICAgICAgICBtZXRob2RDYWxsID0gY3JlYXRlVHlwZVVuc2FmZShyZWdpc3RyeSwgJ0NhbGwnLCBbcGF5bG9hZC5tZXRob2RdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpYycsIGhleFRvVThhKHR4KSwge1xuICAgICAgICAgIGlzU2lnbmVkOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0NhbGwnLCB0eC5tZXRob2QpO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2QgPSBtZXRob2RDYWxsLmFyZ3NbUFJPWFlfTUVUSE9EX0FSR107XG4gICAgY29uc3QgZGVjb2RlZEFyZ3MgPSBtZXRob2QudG9KU09OKCkgYXMgdW5rbm93biBhcyBQcm94eUNhbGxBcmdzO1xuICAgIHJldHVybiBkZWNvZGVkQXJncy5hcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIGtleVBhaXJGcm9tU2VlZCBnZW5lcmF0ZXMgYW4gb2JqZWN0IHdpdGggc2VjcmV0S2V5IGFuZCBwdWJsaWNLZXkgdXNpbmcgdGhlIHBvbGthZG90IHNka1xuICAgKiBAcGFyYW0gc2VlZCAzMiBieXRlcyBsb25nIHNlZWRcbiAgICogQHJldHVybnMgS2V5UGFpclxuICAgKi9cbiAga2V5UGFpckZyb21TZWVkKHNlZWQ6IFVpbnQ4QXJyYXkpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiAnZWQyNTUxOScgfSk7XG4gICAgY29uc3Qga2V5cmluZ1BhaXIgPSBrZXlyaW5nLmFkZEZyb21TZWVkKHNlZWQpO1xuICAgIGNvbnN0IHBhaXJKc29uID0ga2V5cmluZ1BhaXIudG9Kc29uKCk7XG4gICAgY29uc3QgZGVjb2RlZEtleVBhaXIgPSBkZWNvZGVQYWlyKCcnLCBiYXNlNjREZWNvZGUocGFpckpzb24uZW5jb2RlZCksIHBhaXJKc29uLmVuY29kaW5nLnR5cGUpO1xuICAgIHJldHVybiBuZXcgS2V5UGFpcih7IHBydjogQnVmZmVyLmZyb20oZGVjb2RlZEtleVBhaXIuc2VjcmV0S2V5KS50b1N0cmluZygnaGV4JykgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbmluZyBmdW5jdGlvbi4gSW1wbGVtZW50IHRoaXMgb24gdGhlIE9GRkxJTkUgc2lnbmluZyBkZXZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7S2V5cmluZ1BhaXJ9IHBhaXIgLSBUaGUgc2lnbmluZyBwYWlyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmluZ1BheWxvYWQgLSBQYXlsb2FkIHRvIHNpZ24uXG4gICAqIEBwYXJhbSB7VW5zaWduZWRUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb24gLSByYXcgdHJhbnNhY3Rpb24gdG8gc2lnblxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgKiBAcGFyYW0ge0hleFN0cmluZ30gb3B0aW9ucy5tZXRhZGF0YVJwYyAtIG1ldGFkYXRhIHRoYXQgaXMgbmVlZGVkIGZvciBkb3QgdG8gc2lnblxuICAgKiBAcGFyYW0ge1R5cGVSZWdpc3RyeX0gb3B0aW9ucy5yZWdpc3RyeSAtIG1ldGFkYXRhIHRoYXQgaXMgbmVlZGVkIGZvciBkb3QgdG8gc2lnblxuICAgKi9cbiAgY3JlYXRlU2lnbmVkVHgoXG4gICAgcGFpcjogS2V5cmluZ1BhaXIsXG4gICAgc2lnbmluZ1BheWxvYWQ6IHN0cmluZyxcbiAgICB0cmFuc2FjdGlvbjogVW5zaWduZWRUcmFuc2FjdGlvbixcbiAgICBvcHRpb25zOiB7IG1ldGFkYXRhUnBjOiBIZXhTdHJpbmc7IHJlZ2lzdHJ5OiBUeXBlUmVnaXN0cnkgfVxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgcmVnaXN0cnksIG1ldGFkYXRhUnBjIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHsgc2lnbmF0dXJlIH0gPSByZWdpc3RyeVxuICAgICAgLmNyZWF0ZVR5cGUoJ0V4dHJpbnNpY1BheWxvYWQnLCBzaWduaW5nUGF5bG9hZCwge1xuICAgICAgICB2ZXJzaW9uOiBFWFRSSU5TSUNfVkVSU0lPTixcbiAgICAgIH0pXG4gICAgICAuc2lnbihwYWlyKTtcblxuICAgIC8vIFNlcmlhbGl6ZSBhIHNpZ25lZCB0cmFuc2FjdGlvbi5cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgc2lnbmF0dXJlLCBtZXRhZGF0YVJwYywgcmVnaXN0cnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMgdGhlIHNpZ25lZCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gVHJhbnNhY3Rpb24gdG8gc2VyaWFsaXplXG4gICAqIEBwYXJhbSBzaWduYXR1cmUgU2lnbmF0dXJlIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSBtZXRhZGF0YVJwYyBOZXR3b3JrIG1ldGFkYXRhXG4gICAqIEBwYXJhbSByZWdpc3RyeSBUcmFuc2FjdGlvbiByZWdpc3RyeVxuICAgKiBAcmV0dXJucyBzdHJpbmcgU2VyaWFsaXplZCB0cmFuc2FjdGlvblxuICAgKi9cbiAgc2VyaWFsaXplU2lnbmVkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIHNpZ25hdHVyZSwgbWV0YWRhdGFScGM6IGAweCR7c3RyaW5nfWAsIHJlZ2lzdHJ5KTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29uc3RydWN0LnNpZ25lZFR4KHRyYW5zYWN0aW9uLCBzaWduYXR1cmUsIHtcbiAgICAgIG1ldGFkYXRhUnBjLFxuICAgICAgcmVnaXN0cnksXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVjb2RlcyB0aGUgZG90IGFkZHJlc3MgZnJvbSB0aGUgZ2l2ZW4gZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbc3M1OEZvcm1hdF1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGRlY29kZURvdEFkZHJlc3MoYWRkcmVzczogc3RyaW5nLCBzczU4Rm9ybWF0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleXBhaXIgPSBuZXcgS2V5UGFpcih7IHB1YjogQnVmZmVyLmZyb20oZGVjb2RlQWRkcmVzcyhhZGRyZXNzLCB1bmRlZmluZWQsIHNzNThGb3JtYXQpKS50b1N0cmluZygnaGV4JykgfSk7XG4gICAgcmV0dXJuIGtleXBhaXIuZ2V0QWRkcmVzcyhzczU4Rm9ybWF0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBkb3QgYWRkcmVzcyBmcm9tIHRoZSBnaXZlbiBmb3JtYXRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3NcbiAgICogQHBhcmFtIHtudW1iZXJ9IFtzczU4Rm9ybWF0XVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZW5jb2RlRG90QWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcsIHNzNThGb3JtYXQ/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBlbmNvZGVBZGRyZXNzKGFkZHJlc3MsIHNzNThGb3JtYXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgdHhIYXNoIG9mIGEgc2lnbmVkIHR4SGV4XG4gICAqXG4gICAqIEBwYXJhbSB0eEhleCBzaWduZWQgdHJhbnNhY3Rpb24gaGV4XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXRUeEhhc2godHhIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdC50eEhhc2godHhIZXgpO1xuICB9XG5cbiAgZ2V0TWF0ZXJpYWwoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pOiBNYXRlcmlhbCB7XG4gICAgY29uc3QgbmV0d29ya0NvbmZpZyA9IGNvaW5Db25maWcubmV0d29yayBhcyBEb3ROZXR3b3JrO1xuICAgIGNvbnN0IHsgc3BlY05hbWUsIHNwZWNWZXJzaW9uLCBjaGFpbk5hbWUsIHR4VmVyc2lvbiwgZ2VuZXNpc0hhc2ggfSA9IG5ldHdvcmtDb25maWc7XG4gICAgbGV0IG1ldGFkYXRhUnBjID0gbWFpbm5ldE1ldGFkYXRhUnBjO1xuXG4gICAgaWYgKHNwZWNOYW1lID09PSAnd2VzdGVuZCcpIHtcbiAgICAgIG1ldGFkYXRhUnBjID0gd2VzdGVuZE1ldGFkYXRhUnBjO1xuICAgIH0gZWxzZSBpZiAoc3BlY05hbWUgPT09ICd3ZXN0bWludCcpIHtcbiAgICAgIG1ldGFkYXRhUnBjID0gd2VzdGVuZEFzc2V0SHViTWV0YWRhdGFScGM7XG4gICAgfSBlbHNlIGlmIChzcGVjTmFtZSA9PT0gJ3N0YXRlbWludCcpIHtcbiAgICAgIG1ldGFkYXRhUnBjID0gcG9sa2Fkb3RBc3NldEh1Yk1ldGFkYXRhUnBjO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzcGVjTmFtZSxcbiAgICAgIHNwZWNWZXJzaW9uLFxuICAgICAgY2hhaW5OYW1lLFxuICAgICAgbWV0YWRhdGE6IG1ldGFkYXRhUnBjLFxuICAgICAgdHhWZXJzaW9uLFxuICAgICAgZ2VuZXNpc0hhc2gsXG4gICAgfSBhcyBNYXRlcmlhbDtcbiAgfVxuXG4gIGlzU2lnbmluZ1BheWxvYWQocGF5bG9hZDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkIHwgRGVjb2RlZFNpZ25lZFR4KTogcGF5bG9hZCBpcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQge1xuICAgIHJldHVybiAocGF5bG9hZCBhcyBEZWNvZGVkU2lnbmluZ1BheWxvYWQpLmJsb2NrSGFzaCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNQcm94eVRyYW5zZmVyKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBQcm94eUFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFByb3h5QXJncykucmVhbCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaXNUcmFuc2Zlcihhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgVHJhbnNmZXJBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLmRlc3Q/LmlkICE9PSB1bmRlZmluZWQgJiYgKGFyZyBhcyBUcmFuc2ZlckFyZ3MpLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBpc1RyYW5zZmVyQWxsKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBUcmFuc2ZlckFsbEFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykuZGVzdD8uaWQgIT09IHVuZGVmaW5lZCAmJiAoYXJnIGFzIFRyYW5zZmVyQWxsQXJncykua2VlcEFsaXZlICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIEJhdGNoQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJnIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAgICpcbiAgICogQHJldHVybiB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIEJhdGNoQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNCYXRjaChhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgQmF0Y2hBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBCYXRjaEFyZ3MpLmNhbGxzICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIEJhdGNoQXJncyBhbmQgdGhlIGNhbGxzIG9mIHRoZSBiYXRjaCBhcmUgc3Rha2luZyBjYWxsczogYSBzdGFrZVxuICAgKiBjYWxsIChib25kKSBmb2xsb3dlZCBieSBhbiBhZGQgcHJveHkgY2FsbCAoYWRkUHJveHkpLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcmcgVGhlIG9iamVjdCB0byB0ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgQmF0Y2hBcmdzIGFuZCB0aGUgY2FsbHMgb2YgdGhlIGJhdGNoIGFyZSBzdGFraW5nIGNhbGxzOiBhIHN0YWtlXG4gICAqIGNhbGwgKGJvbmQpIGZvbGxvd2VkIGJ5IGFuIGFkZCBwcm94eSBjYWxsIChhZGRQcm94eSksIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzU3Rha2luZ0JhdGNoKGFyZzogVHhNZXRob2RbJ2FyZ3MnXSk6IGFyZyBpcyBCYXRjaEFyZ3Mge1xuICAgIGNvbnN0IGNhbGxzID0gKGFyZyBhcyBCYXRjaEFyZ3MpLmNhbGxzO1xuICAgIGlmIChjYWxscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjYWxscy5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgKHRoaXMuaXNTdGFrZUJhdGNoQ2FsbEFyZ3MoY2FsbHNbMF0uYXJncykgfHwgdGhpcy5pc0JvbmRCYXRjaEV4dHJhKGNhbGxzWzBdLmFyZ3MpKSAmJlxuICAgICAgICB0aGlzLmlzQWRkUHJveHlCYXRjaENhbGxBcmdzKGNhbGxzWzFdLmFyZ3MpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIFN0YWtlQmF0Y2hDYWxsQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJnIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAgICpcbiAgICogQHJldHVybiB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIFN0YWtlQmF0Y2hDYWxsQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNTdGFrZUJhdGNoQ2FsbEFyZ3MoYXJnOiBCYXRjaENhbGxPYmplY3RbJ2FyZ3MnXSk6IGFyZyBpcyBTdGFrZUJhdGNoQ2FsbEFyZ3Mge1xuICAgIHJldHVybiAoYXJnIGFzIFN0YWtlQmF0Y2hDYWxsQXJncykudmFsdWUgIT09IHVuZGVmaW5lZCAmJiAoYXJnIGFzIFN0YWtlQmF0Y2hDYWxsQXJncykucGF5ZWUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgQWRkUHJveHlCYXRjaENhbGxBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcmcgVGhlIG9iamVjdCB0byB0ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgQWRkUHJveHlCYXRjaENhbGxBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0FkZFByb3h5QmF0Y2hDYWxsQXJncyhhcmc6IEJhdGNoQ2FsbE9iamVjdFsnYXJncyddKTogYXJnIGlzIEFkZFByb3h5QmF0Y2hDYWxsQXJncyB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhcmcgYXMgQWRkUHJveHlCYXRjaENhbGxBcmdzKS5kZWxlZ2F0ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoYXJnIGFzIEFkZFByb3h5QmF0Y2hDYWxsQXJncykucHJveHlfdHlwZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAoYXJnIGFzIEFkZFByb3h5QmF0Y2hDYWxsQXJncykuZGVsYXkgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIEJhdGNoQXJncyBhbmQgdGhlIGNhbGxzIG9mIHRoZSBiYXRjaCBhcmUgdW5zdGFraW5nIGNhbGxzOiBhIHJlbW92ZVxuICAgKiBwcm94eSBjYWxsIChyZW1vdmVQcm94eSksIGZvbGxvd2VkIGJ5IGEgY2hpbGwgY2FsbCwgYW5kIGFuIHVuc3Rha2UgY2FsbCAodW5ib25kKSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0gYXJnIFRoZSBvYmplY3QgdG8gdGVzdC5cbiAgICpcbiAgICogQHJldHVybiB0cnVlIGlmIGFyZyBpcyBvZiB0eXBlIEJhdGNoQXJncyBhbmQgdGhlIGNhbGxzIG9mIHRoZSBiYXRjaCBhcmUgdW5zdGFraW5nIGNhbGxzOiBhIHJlbW92ZVxuICAgKiBwcm94eSBjYWxsIChyZW1vdmVQcm94eSksIGZvbGxvd2VkIGJ5IGEgY2hpbGwgY2FsbCwgYW5kIGFuIHVuc3Rha2UgY2FsbCAodW5ib25kKSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNVbnN0YWtpbmdCYXRjaChhcmc6IFR4TWV0aG9kWydhcmdzJ10pOiBhcmcgaXMgQmF0Y2hBcmdzIHtcbiAgICBjb25zdCBjYWxscyA9IChhcmcgYXMgQmF0Y2hBcmdzKS5jYWxscztcbiAgICBpZiAoY2FsbHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgY2FsbHMubGVuZ3RoID09PSAzICYmXG4gICAgICAgIHRoaXMuaXNSZW1vdmVQcm94eUJhdGNoQ2FsbEFyZ3MoY2FsbHNbMF0uYXJncykgJiZcbiAgICAgICAgXy5pc0VtcHR5KGNhbGxzWzFdLmFyZ3MpICYmXG4gICAgICAgIHRoaXMuaXNVbnN0YWtlQmF0Y2hDYWxsQXJncyhjYWxsc1syXS5hcmdzKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcmcgaXMgb2YgdHlwZSBBZGRQcm94eUJhdGNoQ2FsbEFyZ3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIGFyZyBUaGUgb2JqZWN0IHRvIHRlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiBhcmcgaXMgb2YgdHlwZSBBZGRQcm94eUJhdGNoQ2FsbEFyZ3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGlzUmVtb3ZlUHJveHlCYXRjaENhbGxBcmdzKGFyZzogQmF0Y2hDYWxsT2JqZWN0WydhcmdzJ10pOiBhcmcgaXMgQWRkUHJveHlCYXRjaENhbGxBcmdzIHtcbiAgICByZXR1cm4gKFxuICAgICAgKGFyZyBhcyBBZGRQcm94eUJhdGNoQ2FsbEFyZ3MpLmRlbGVnYXRlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChhcmcgYXMgQWRkUHJveHlCYXRjaENhbGxBcmdzKS5wcm94eV90eXBlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIChhcmcgYXMgQWRkUHJveHlCYXRjaENhbGxBcmdzKS5kZWxheSAhPT0gdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgVW5zdGFrZUJhdGNoQ2FsbEFyZ3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIGFyZyBUaGUgb2JqZWN0IHRvIHRlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiBhcmcgaXMgb2YgdHlwZSBVbnN0YWtlQmF0Y2hDYWxsQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNVbnN0YWtlQmF0Y2hDYWxsQXJncyhhcmc6IEJhdGNoQ2FsbE9iamVjdFsnYXJncyddKTogYXJnIGlzIFVuc3Rha2VCYXRjaENhbGxBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBVbnN0YWtlQmF0Y2hDYWxsQXJncykudmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgU3Rha2VBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcmcgVGhlIG9iamVjdCB0byB0ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgU3Rha2VBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBpc0JvbmQoYXJnOiBUeE1ldGhvZFsnYXJncyddKTogYXJnIGlzIFN0YWtlQXJncyB7XG4gICAgcmV0dXJuIChhcmcgYXMgU3Rha2VBcmdzKS52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIChhcmcgYXMgU3Rha2VBcmdzKS5wYXllZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcmcgaXMgb2YgdHlwZSBTdGFrZU1vcmVBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcmcgVGhlIG9iamVjdCB0byB0ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgU3Rha2VNb3JlQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNCb25kRXh0cmEoYXJnOiBUeE1ldGhvZFsnYXJncyddIHwgQmF0Y2hDYWxsT2JqZWN0WydhcmdzJ10pOiBhcmcgaXMgU3Rha2VNb3JlQXJncyB7XG4gICAgcmV0dXJuIChhcmcgYXMgU3Rha2VNb3JlQXJncykubWF4QWRkaXRpb25hbCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBhcmcgaXMgb2YgdHlwZSBTdGFrZU1vcmVBcmdzLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSBhcmcgVGhlIG9iamVjdCB0byB0ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHRydWUgaWYgYXJnIGlzIG9mIHR5cGUgU3Rha2VNb3JlQXJncywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNCb25kQmF0Y2hFeHRyYShhcmc6IEJhdGNoQ2FsbE9iamVjdFsnYXJncyddKTogYXJnIGlzIFN0YWtlTW9yZUNhbGxBcmdzIHtcbiAgICByZXR1cm4gKGFyZyBhcyBTdGFrZU1vcmVDYWxsQXJncykubWF4X2FkZGl0aW9uYWwgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgc2lnbmF0dXJlIGluIGhleCBmb3JtYXQgZ2l2ZW4gYSByYXcgc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUeCBzaWduZWQgcmF3IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIHJlZ2lzdHJ5IGRvdCByZWdpc3RyeSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIHJlY292ZXJTaWduYXR1cmVGcm9tUmF3VHgocmF3VHg6IHN0cmluZywgb3B0aW9uczogeyByZWdpc3RyeTogVHlwZVJlZ2lzdHJ5IH0pOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgcmVnaXN0cnkgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgbWV0aG9kQ2FsbCA9IHJlZ2lzdHJ5LmNyZWF0ZVR5cGUoJ0V4dHJpbnNpYycsIHJhd1R4LCB7XG4gICAgICBpc1NpZ25lZDogdHJ1ZSxcbiAgICB9KTtcbiAgICBsZXQgc2lnbmF0dXJlID0gdThhVG9IZXgobWV0aG9kQ2FsbC5zaWduYXR1cmUpIGFzIHN0cmluZztcblxuICAgIC8vIHJlbW92ZSAweCBmcm9tIHRoZSBzaWduYXR1cmUgc2luY2UgdGhpcyBpcyBob3cgaXQncyByZXR1cm5lZCBmcm9tIFRTUyBzaWduaW5nXG4gICAgaWYgKHNpZ25hdHVyZS5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICBzaWduYXR1cmUgPSBzaWduYXR1cmUuc3Vic3RyKDIpO1xuICAgIH1cbiAgICByZXR1cm4gc2lnbmF0dXJlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZXMgdGhlIGRvdCBhZGRyZXNzIGZyb20gdGhlIGdpdmVuIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzc1xuICAgKiBAcGFyYW0ge251bWJlcn0gW3NzNThGb3JtYXRdXG4gICAqIEByZXR1cm5zIHtLZXlQYWlyfVxuICAgKi9cbiAgZGVjb2RlRG90QWRkcmVzc1RvS2V5UGFpcihhZGRyZXNzOiBzdHJpbmcsIHNzNThGb3JtYXQ/OiBudW1iZXIpOiBLZXlQYWlyIHtcbiAgICByZXR1cm4gbmV3IEtleVBhaXIoeyBwdWI6IEJ1ZmZlci5mcm9tKGRlY29kZUFkZHJlc3MoYWRkcmVzcywgdW5kZWZpbmVkLCBzczU4Rm9ybWF0KSkudG9TdHJpbmcoJ2hleCcpIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBpbnB1dCBpcyBhIGhleCBzdHJpbmcgd2l0aCB3aXRoIDAgdmFsdWVcbiAgICogdXNlZCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gdHJhbnNhY3Rpb24gaXMgaW1tb3J0YWwgb3IgbW9ydGFsXG4gICAqIEBwYXJhbSBoZXhWYWx1ZVxuICAgKi9cbiAgaXNaZXJvSGV4KGhleFZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaGV4VmFsdWUgPT09ICcweDAwJztcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhbiBhc3NldCBuYW1lIGFuZCByZXR1cm5zIHRoZSByZXNwZWN0aXZlIGFkZHJlc3MgdG8gZm9ybWF0IHRvXG4gICAqIHNpbmNlIHBvbGthZG90IGFkZHJlc3NlcyBkaWZmZXIgZGVwZW5kaW5nIG9uIHRoZSBuZXR3b3JrXG4gICAqIHJlZjogaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9sZWFybi1hY2NvdW50c1xuICAgKiBAcGFyYW0gbmV0d29ya0NvaW5OYW1lXG4gICAqL1xuICBnZXRBZGRyZXNzRm9ybWF0KG5ldHdvcmtDb2luTmFtZTogRG90QXNzZXRUeXBlcyk6IERvdEFkZHJlc3NGb3JtYXQge1xuICAgIHJldHVybiBjb2luVG9BZGRyZXNzTWFwLmdldChuZXR3b3JrQ29pbk5hbWUpIGFzIERvdEFkZHJlc3NGb3JtYXQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHB1cmUgcHJveHkgZXh0cmluc2ljLiBQb2xrYWRvdCBoYXMgcmVuYW1lZCBhbm9ueW1vdXMgcHJveGllcyB0byBwdXJlIHByb3hpZXMsIGJ1dFxuICAgKiB0aGUgbGlicmFyaWVzIHdlIGFyZSB1c2luZyB0byBidWlsZCB0cmFuc2FjdGlvbnMgaGF2ZSBub3QgYmVlbiB1cGRhdGVkLCBhcyBhIHN0b3AgZ2FwIHdlIGFyZVxuICAgKiBkZWZpbmluZyB0aGUgcHVyZSBwcm94eSBleHRyaW5zaWMgaGVyZS5cbiAgICpcbiAgICogQHBhcmFtIGFyZ3MgQXJndW1lbnRzIHRvIHRoZSBjcmVhdGVQdXJlIGV4dHJpbnNpYy5cbiAgICogQHBhcmFtIGluZm8gQ29tbW9uIGluZm9ybWF0aW9uIHRvIGFsbCB0cmFuc2FjdGlvbnMuXG4gICAqIEBwYXJhbSBvcHRpb25zIENoYWluIHJlZ2lzdHJ5IGFuZCBtZXRhZGF0YS5cbiAgICovXG4gIHB1cmVQcm94eShhcmdzOiBQdXJlUHJveHlBcmdzLCBpbmZvOiBCYXNlVHhJbmZvLCBvcHRpb25zOiBPcHRpb25zV2l0aE1ldGEpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gZGVmaW5lTWV0aG9kKFxuICAgICAge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBhcmdzLFxuICAgICAgICAgIG5hbWU6ICdjcmVhdGVQdXJlJyxcbiAgICAgICAgICBwYWxsZXQ6ICdwcm94eScsXG4gICAgICAgIH0sXG4gICAgICAgIC4uLmluZm8sXG4gICAgICB9LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyAnMHgnIGZyb20gYSBnaXZlbiBgc3RyaW5nYCBpZiBwcmVzZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIHRoZSBzdHJpbmcgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gYSBzdHJpbmcgd2l0aG91dCBhICcweCcgcHJlZml4LlxuICAgKi9cbiAgc3RyaXBIZXhQcmVmaXgoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzSGV4UHJlZml4ZWQoc3RyKSA/IHN0ci5zbGljZSgyKSA6IHN0cjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJzB4JywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIHRoZSBzdHJpbmcgdmFsdWUuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJzB4JywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNIZXhQcmVmaXhlZChzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdHIuc2xpY2UoMCwgMikgPT09ICcweCc7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFB1cmVQcm94eUFyZ3MgZXh0ZW5kcyBBcmdzIHtcbiAgcHJveHlUeXBlOiBzdHJpbmc7XG4gIGRlbGF5OiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasmParser.d.ts","sourceRoot":"","sources":["../../../../src/lib/wasmParser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAA8B,sBAAsB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAsBpG;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,2BAA2B,GAAG,kBAAkB,CAiC7F;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAsCnE"}