@bitgo/abstract-utxo 10.13.0 → 10.14.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 (308) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +13 -8
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +20 -21
  4. package/dist/cjs/src/address/fixedScript.d.ts +4 -4
  5. package/dist/cjs/src/address/fixedScript.d.ts.map +1 -1
  6. package/dist/cjs/src/address/fixedScript.js +17 -35
  7. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  8. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  9. package/dist/cjs/src/descriptor/assertDescriptorWalletAddress.js +4 -2
  10. package/dist/cjs/src/impl/bch/bch.d.ts +4 -2
  11. package/dist/cjs/src/impl/bch/bch.d.ts.map +1 -1
  12. package/dist/cjs/src/impl/bch/bch.js +4 -3
  13. package/dist/cjs/src/impl/bch/tbch.d.ts +2 -0
  14. package/dist/cjs/src/impl/bch/tbch.d.ts.map +1 -1
  15. package/dist/cjs/src/impl/bch/tbch.js +3 -36
  16. package/dist/cjs/src/impl/bcha/bcha.d.ts +3 -2
  17. package/dist/cjs/src/impl/bcha/bcha.d.ts.map +1 -1
  18. package/dist/cjs/src/impl/bcha/bcha.js +4 -37
  19. package/dist/cjs/src/impl/bcha/tbcha.d.ts +2 -0
  20. package/dist/cjs/src/impl/bcha/tbcha.d.ts.map +1 -1
  21. package/dist/cjs/src/impl/bcha/tbcha.js +3 -36
  22. package/dist/cjs/src/impl/bsv/bsv.d.ts +3 -2
  23. package/dist/cjs/src/impl/bsv/bsv.d.ts.map +1 -1
  24. package/dist/cjs/src/impl/bsv/bsv.js +4 -37
  25. package/dist/cjs/src/impl/bsv/tbsv.d.ts +2 -0
  26. package/dist/cjs/src/impl/bsv/tbsv.d.ts.map +1 -1
  27. package/dist/cjs/src/impl/bsv/tbsv.js +3 -36
  28. package/dist/cjs/src/impl/btc/btc.d.ts +4 -2
  29. package/dist/cjs/src/impl/btc/btc.d.ts.map +1 -1
  30. package/dist/cjs/src/impl/btc/btc.js +4 -37
  31. package/dist/cjs/src/impl/btc/tbtc.d.ts +2 -0
  32. package/dist/cjs/src/impl/btc/tbtc.d.ts.map +1 -1
  33. package/dist/cjs/src/impl/btc/tbtc.js +3 -36
  34. package/dist/cjs/src/impl/btc/tbtc4.d.ts +2 -0
  35. package/dist/cjs/src/impl/btc/tbtc4.d.ts.map +1 -1
  36. package/dist/cjs/src/impl/btc/tbtc4.js +3 -36
  37. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts +2 -0
  38. package/dist/cjs/src/impl/btc/tbtcbgsig.d.ts.map +1 -1
  39. package/dist/cjs/src/impl/btc/tbtcbgsig.js +3 -36
  40. package/dist/cjs/src/impl/btc/tbtcsig.d.ts +2 -0
  41. package/dist/cjs/src/impl/btc/tbtcsig.d.ts.map +1 -1
  42. package/dist/cjs/src/impl/btc/tbtcsig.js +3 -36
  43. package/dist/cjs/src/impl/btg/btg.d.ts +4 -2
  44. package/dist/cjs/src/impl/btg/btg.d.ts.map +1 -1
  45. package/dist/cjs/src/impl/btg/btg.js +4 -37
  46. package/dist/cjs/src/impl/dash/dash.d.ts +4 -2
  47. package/dist/cjs/src/impl/dash/dash.d.ts.map +1 -1
  48. package/dist/cjs/src/impl/dash/dash.js +4 -37
  49. package/dist/cjs/src/impl/dash/tdash.d.ts +2 -0
  50. package/dist/cjs/src/impl/dash/tdash.d.ts.map +1 -1
  51. package/dist/cjs/src/impl/dash/tdash.js +3 -36
  52. package/dist/cjs/src/impl/doge/doge.d.ts +4 -2
  53. package/dist/cjs/src/impl/doge/doge.d.ts.map +1 -1
  54. package/dist/cjs/src/impl/doge/doge.js +4 -4
  55. package/dist/cjs/src/impl/doge/tdoge.d.ts +2 -0
  56. package/dist/cjs/src/impl/doge/tdoge.d.ts.map +1 -1
  57. package/dist/cjs/src/impl/doge/tdoge.js +3 -36
  58. package/dist/cjs/src/impl/ltc/ltc.d.ts +4 -2
  59. package/dist/cjs/src/impl/ltc/ltc.d.ts.map +1 -1
  60. package/dist/cjs/src/impl/ltc/ltc.js +4 -3
  61. package/dist/cjs/src/impl/ltc/tltc.d.ts +2 -0
  62. package/dist/cjs/src/impl/ltc/tltc.d.ts.map +1 -1
  63. package/dist/cjs/src/impl/ltc/tltc.js +3 -2
  64. package/dist/cjs/src/impl/zec/tzec.d.ts +2 -0
  65. package/dist/cjs/src/impl/zec/tzec.d.ts.map +1 -1
  66. package/dist/cjs/src/impl/zec/tzec.js +3 -36
  67. package/dist/cjs/src/impl/zec/zec.d.ts +4 -2
  68. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -1
  69. package/dist/cjs/src/impl/zec/zec.js +4 -37
  70. package/dist/cjs/src/names.d.ts +14 -4
  71. package/dist/cjs/src/names.d.ts.map +1 -1
  72. package/dist/cjs/src/names.js +74 -57
  73. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts +2 -1
  74. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
  75. package/dist/cjs/src/offlineVault/OfflineVaultHalfSigned.js +3 -5
  76. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts +2 -1
  77. package/dist/cjs/src/offlineVault/TransactionExplanation.d.ts.map +1 -1
  78. package/dist/cjs/src/offlineVault/TransactionExplanation.js +3 -4
  79. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts +3 -2
  80. package/dist/cjs/src/offlineVault/descriptor/transaction.d.ts.map +1 -1
  81. package/dist/cjs/src/offlineVault/descriptor/transaction.js +6 -3
  82. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  83. package/dist/cjs/src/recovery/backupKeyRecovery.js +40 -22
  84. package/dist/cjs/src/recovery/crossChainRecovery.d.ts +3 -2
  85. package/dist/cjs/src/recovery/crossChainRecovery.d.ts.map +1 -1
  86. package/dist/cjs/src/recovery/crossChainRecovery.js +33 -24
  87. package/dist/cjs/src/recovery/psbt.d.ts +9 -8
  88. package/dist/cjs/src/recovery/psbt.d.ts.map +1 -1
  89. package/dist/cjs/src/recovery/psbt.js +55 -41
  90. package/dist/cjs/src/tnumber.d.ts +4 -0
  91. package/dist/cjs/src/tnumber.d.ts.map +1 -0
  92. package/dist/cjs/src/tnumber.js +12 -0
  93. package/dist/cjs/src/transaction/bip322.d.ts.map +1 -1
  94. package/dist/cjs/src/transaction/bip322.js +26 -11
  95. package/dist/cjs/src/transaction/decode.d.ts +4 -3
  96. package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
  97. package/dist/cjs/src/transaction/decode.js +8 -5
  98. package/dist/cjs/src/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  99. package/dist/cjs/src/transaction/descriptor/explainPsbt.js +7 -5
  100. package/dist/cjs/src/transaction/descriptor/parse.d.ts +2 -1
  101. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
  102. package/dist/cjs/src/transaction/descriptor/parse.js +14 -14
  103. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +2 -1
  104. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  105. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +4 -4
  106. package/dist/cjs/src/transaction/explainTransaction.d.ts +2 -1
  107. package/dist/cjs/src/transaction/explainTransaction.d.ts.map +1 -1
  108. package/dist/cjs/src/transaction/explainTransaction.js +5 -5
  109. package/dist/cjs/src/transaction/fetchInputs.d.ts +2 -1
  110. package/dist/cjs/src/transaction/fetchInputs.d.ts.map +1 -1
  111. package/dist/cjs/src/transaction/fetchInputs.js +4 -2
  112. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts +1 -1
  113. package/dist/cjs/src/transaction/fixedScript/SigningError.d.ts.map +1 -1
  114. package/dist/cjs/src/transaction/fixedScript/SigningError.js +1 -1
  115. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +4 -4
  116. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  117. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +24 -19
  118. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +3 -3
  119. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts +6 -4
  120. package/dist/cjs/src/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  121. package/dist/cjs/src/transaction/fixedScript/replayProtection.js +17 -49
  122. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts +4 -2
  123. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  124. package/dist/cjs/src/transaction/fixedScript/signLegacyTransaction.js +6 -5
  125. package/dist/cjs/src/transaction/fixedScript/{signPsbt.d.ts → signPsbtUtxolib.d.ts} +4 -13
  126. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  127. package/dist/cjs/src/transaction/fixedScript/signPsbtUtxolib.js +157 -0
  128. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +2 -7
  129. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  130. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +3 -17
  131. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +9 -1
  132. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  133. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +28 -9
  134. package/dist/cjs/src/transaction/fixedScript/verifyTransaction.js +2 -2
  135. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts +3 -3
  136. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.d.ts.map +1 -1
  137. package/dist/cjs/src/transaction/getPayGoVerificationPubkey.js +6 -39
  138. package/dist/cjs/src/transaction/recipient.d.ts +4 -4
  139. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
  140. package/dist/cjs/src/transaction/recipient.js +7 -4
  141. package/dist/cjs/src/transaction/signTransaction.js +2 -2
  142. package/dist/cjs/src/wallet.js +2 -2
  143. package/dist/cjs/test/unit/address.js +9 -9
  144. package/dist/cjs/test/unit/bip322.js +319 -3
  145. package/dist/cjs/test/unit/coins.js +18 -1
  146. package/dist/cjs/test/unit/customChangeWallet.js +2 -2
  147. package/dist/cjs/test/unit/prebuildAndSign.js +2 -2
  148. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +15 -2
  149. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +6 -7
  150. package/dist/cjs/test/unit/transaction/descriptor/parse.js +2 -2
  151. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +7 -10
  152. package/dist/cjs/test/unit/transaction/fixedScript/parsePsbt.js +5 -6
  153. package/dist/cjs/test/unit/transaction/fixedScript/replayProtection.js +3 -2
  154. package/dist/cjs/test/unit/transaction/fixedScript/signPsbt.js +8 -11
  155. package/dist/cjs/test/unit/transaction.js +23 -24
  156. package/dist/cjs/test/unit/util/unspents.d.ts.map +1 -1
  157. package/dist/cjs/test/unit/util/unspents.js +4 -2
  158. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  159. package/dist/esm/abstractUtxoCoin.d.ts +13 -8
  160. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  161. package/dist/esm/abstractUtxoCoin.js +22 -23
  162. package/dist/esm/address/fixedScript.d.ts +4 -4
  163. package/dist/esm/address/fixedScript.d.ts.map +1 -1
  164. package/dist/esm/address/fixedScript.js +17 -35
  165. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts +2 -2
  166. package/dist/esm/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  167. package/dist/esm/descriptor/assertDescriptorWalletAddress.js +4 -2
  168. package/dist/esm/impl/bch/bch.d.ts +4 -2
  169. package/dist/esm/impl/bch/bch.d.ts.map +1 -1
  170. package/dist/esm/impl/bch/bch.js +4 -3
  171. package/dist/esm/impl/bch/tbch.d.ts +2 -0
  172. package/dist/esm/impl/bch/tbch.d.ts.map +1 -1
  173. package/dist/esm/impl/bch/tbch.js +3 -3
  174. package/dist/esm/impl/bcha/bcha.d.ts +3 -2
  175. package/dist/esm/impl/bcha/bcha.d.ts.map +1 -1
  176. package/dist/esm/impl/bcha/bcha.js +4 -4
  177. package/dist/esm/impl/bcha/tbcha.d.ts +2 -0
  178. package/dist/esm/impl/bcha/tbcha.d.ts.map +1 -1
  179. package/dist/esm/impl/bcha/tbcha.js +3 -3
  180. package/dist/esm/impl/bsv/bsv.d.ts +3 -2
  181. package/dist/esm/impl/bsv/bsv.d.ts.map +1 -1
  182. package/dist/esm/impl/bsv/bsv.js +4 -4
  183. package/dist/esm/impl/bsv/tbsv.d.ts +2 -0
  184. package/dist/esm/impl/bsv/tbsv.d.ts.map +1 -1
  185. package/dist/esm/impl/bsv/tbsv.js +3 -3
  186. package/dist/esm/impl/btc/btc.d.ts +4 -2
  187. package/dist/esm/impl/btc/btc.d.ts.map +1 -1
  188. package/dist/esm/impl/btc/btc.js +4 -4
  189. package/dist/esm/impl/btc/tbtc.d.ts +2 -0
  190. package/dist/esm/impl/btc/tbtc.d.ts.map +1 -1
  191. package/dist/esm/impl/btc/tbtc.js +3 -3
  192. package/dist/esm/impl/btc/tbtc4.d.ts +2 -0
  193. package/dist/esm/impl/btc/tbtc4.d.ts.map +1 -1
  194. package/dist/esm/impl/btc/tbtc4.js +3 -3
  195. package/dist/esm/impl/btc/tbtcbgsig.d.ts +2 -0
  196. package/dist/esm/impl/btc/tbtcbgsig.d.ts.map +1 -1
  197. package/dist/esm/impl/btc/tbtcbgsig.js +3 -3
  198. package/dist/esm/impl/btc/tbtcsig.d.ts +2 -0
  199. package/dist/esm/impl/btc/tbtcsig.d.ts.map +1 -1
  200. package/dist/esm/impl/btc/tbtcsig.js +3 -3
  201. package/dist/esm/impl/btg/btg.d.ts +4 -2
  202. package/dist/esm/impl/btg/btg.d.ts.map +1 -1
  203. package/dist/esm/impl/btg/btg.js +4 -4
  204. package/dist/esm/impl/dash/dash.d.ts +4 -2
  205. package/dist/esm/impl/dash/dash.d.ts.map +1 -1
  206. package/dist/esm/impl/dash/dash.js +4 -4
  207. package/dist/esm/impl/dash/tdash.d.ts +2 -0
  208. package/dist/esm/impl/dash/tdash.d.ts.map +1 -1
  209. package/dist/esm/impl/dash/tdash.js +3 -3
  210. package/dist/esm/impl/doge/doge.d.ts +4 -2
  211. package/dist/esm/impl/doge/doge.d.ts.map +1 -1
  212. package/dist/esm/impl/doge/doge.js +4 -4
  213. package/dist/esm/impl/doge/tdoge.d.ts +2 -0
  214. package/dist/esm/impl/doge/tdoge.d.ts.map +1 -1
  215. package/dist/esm/impl/doge/tdoge.js +3 -3
  216. package/dist/esm/impl/ltc/ltc.d.ts +4 -2
  217. package/dist/esm/impl/ltc/ltc.d.ts.map +1 -1
  218. package/dist/esm/impl/ltc/ltc.js +4 -3
  219. package/dist/esm/impl/ltc/tltc.d.ts +2 -0
  220. package/dist/esm/impl/ltc/tltc.d.ts.map +1 -1
  221. package/dist/esm/impl/ltc/tltc.js +3 -2
  222. package/dist/esm/impl/zec/tzec.d.ts +2 -0
  223. package/dist/esm/impl/zec/tzec.d.ts.map +1 -1
  224. package/dist/esm/impl/zec/tzec.js +3 -3
  225. package/dist/esm/impl/zec/zec.d.ts +4 -2
  226. package/dist/esm/impl/zec/zec.d.ts.map +1 -1
  227. package/dist/esm/impl/zec/zec.js +4 -4
  228. package/dist/esm/names.d.ts +14 -4
  229. package/dist/esm/names.d.ts.map +1 -1
  230. package/dist/esm/names.js +67 -54
  231. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts +2 -1
  232. package/dist/esm/offlineVault/OfflineVaultHalfSigned.d.ts.map +1 -1
  233. package/dist/esm/offlineVault/OfflineVaultHalfSigned.js +3 -5
  234. package/dist/esm/offlineVault/TransactionExplanation.d.ts +2 -1
  235. package/dist/esm/offlineVault/TransactionExplanation.d.ts.map +1 -1
  236. package/dist/esm/offlineVault/TransactionExplanation.js +3 -4
  237. package/dist/esm/offlineVault/descriptor/transaction.d.ts +3 -2
  238. package/dist/esm/offlineVault/descriptor/transaction.d.ts.map +1 -1
  239. package/dist/esm/offlineVault/descriptor/transaction.js +6 -3
  240. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
  241. package/dist/esm/recovery/backupKeyRecovery.js +41 -23
  242. package/dist/esm/recovery/crossChainRecovery.d.ts +3 -2
  243. package/dist/esm/recovery/crossChainRecovery.d.ts.map +1 -1
  244. package/dist/esm/recovery/crossChainRecovery.js +34 -25
  245. package/dist/esm/recovery/psbt.d.ts +9 -8
  246. package/dist/esm/recovery/psbt.d.ts.map +1 -1
  247. package/dist/esm/recovery/psbt.js +55 -41
  248. package/dist/esm/tnumber.d.ts +4 -0
  249. package/dist/esm/tnumber.d.ts.map +1 -0
  250. package/dist/esm/tnumber.js +9 -0
  251. package/dist/esm/transaction/bip322.d.ts.map +1 -1
  252. package/dist/esm/transaction/bip322.js +27 -12
  253. package/dist/esm/transaction/decode.d.ts +4 -3
  254. package/dist/esm/transaction/decode.d.ts.map +1 -1
  255. package/dist/esm/transaction/decode.js +8 -5
  256. package/dist/esm/transaction/descriptor/explainPsbt.d.ts.map +1 -1
  257. package/dist/esm/transaction/descriptor/explainPsbt.js +7 -5
  258. package/dist/esm/transaction/descriptor/parse.d.ts +2 -1
  259. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
  260. package/dist/esm/transaction/descriptor/parse.js +14 -14
  261. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +2 -1
  262. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  263. package/dist/esm/transaction/descriptor/verifyTransaction.js +4 -4
  264. package/dist/esm/transaction/explainTransaction.d.ts +2 -1
  265. package/dist/esm/transaction/explainTransaction.d.ts.map +1 -1
  266. package/dist/esm/transaction/explainTransaction.js +5 -5
  267. package/dist/esm/transaction/fetchInputs.d.ts +2 -1
  268. package/dist/esm/transaction/fetchInputs.d.ts.map +1 -1
  269. package/dist/esm/transaction/fetchInputs.js +4 -2
  270. package/dist/esm/transaction/fixedScript/SigningError.d.ts +1 -1
  271. package/dist/esm/transaction/fixedScript/SigningError.d.ts.map +1 -1
  272. package/dist/esm/transaction/fixedScript/SigningError.js +1 -1
  273. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +4 -4
  274. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  275. package/dist/esm/transaction/fixedScript/explainTransaction.js +24 -19
  276. package/dist/esm/transaction/fixedScript/parseTransaction.js +3 -3
  277. package/dist/esm/transaction/fixedScript/replayProtection.d.ts +6 -4
  278. package/dist/esm/transaction/fixedScript/replayProtection.d.ts.map +1 -1
  279. package/dist/esm/transaction/fixedScript/replayProtection.js +17 -16
  280. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts +4 -2
  281. package/dist/esm/transaction/fixedScript/signLegacyTransaction.d.ts.map +1 -1
  282. package/dist/esm/transaction/fixedScript/signLegacyTransaction.js +6 -5
  283. package/dist/esm/transaction/fixedScript/{signPsbt.d.ts → signPsbtUtxolib.d.ts} +4 -13
  284. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.d.ts.map +1 -0
  285. package/dist/esm/transaction/fixedScript/signPsbtUtxolib.js +117 -0
  286. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +2 -7
  287. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  288. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +3 -17
  289. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +9 -1
  290. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  291. package/dist/esm/transaction/fixedScript/signTransaction.js +28 -10
  292. package/dist/esm/transaction/fixedScript/verifyTransaction.js +2 -2
  293. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts +3 -3
  294. package/dist/esm/transaction/getPayGoVerificationPubkey.d.ts.map +1 -1
  295. package/dist/esm/transaction/getPayGoVerificationPubkey.js +6 -6
  296. package/dist/esm/transaction/recipient.d.ts +4 -4
  297. package/dist/esm/transaction/recipient.d.ts.map +1 -1
  298. package/dist/esm/transaction/recipient.js +7 -4
  299. package/dist/esm/transaction/signTransaction.js +2 -2
  300. package/dist/esm/wallet.js +2 -2
  301. package/package.json +12 -12
  302. package/dist/cjs/src/transaction/fixedScript/signPsbt.d.ts.map +0 -1
  303. package/dist/cjs/src/transaction/fixedScript/signPsbt.js +0 -174
  304. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts +0 -3
  305. package/dist/cjs/test/unit/transaction/fixedScript/util.d.ts.map +0 -1
  306. package/dist/cjs/test/unit/transaction/fixedScript/util.js +0 -41
  307. package/dist/esm/transaction/fixedScript/signPsbt.d.ts.map +0 -1
  308. package/dist/esm/transaction/fixedScript/signPsbt.js +0 -134
@@ -43,11 +43,12 @@ const utxocore = __importStar(require("@bitgo/utxo-core"));
43
43
  const recipient_1 = require("../recipient");
44
44
  const getPayGoVerificationPubkey_1 = require("../getPayGoVerificationPubkey");
45
45
  const keychains_1 = require("../../keychains");
46
- function toChangeOutput(txOutput, network, changeInfo) {
46
+ const names_1 = require("../../names");
47
+ function toChangeOutput(txOutput, coinName, changeInfo) {
47
48
  if (!changeInfo) {
48
49
  return undefined;
49
50
  }
50
- const address = (0, recipient_1.toExtendedAddressFormat)(txOutput.script, network);
51
+ const address = (0, recipient_1.toExtendedAddressFormat)(txOutput.script, coinName);
51
52
  const change = changeInfo.find((change) => change.address === address);
52
53
  if (!change) {
53
54
  return undefined;
@@ -63,7 +64,7 @@ function toChangeOutput(txOutput, network, changeInfo) {
63
64
  function outputSum(outputs) {
64
65
  return outputs.reduce((sum, output) => sum + BigInt(output.amount), BigInt(0));
65
66
  }
66
- function explainCommon(tx, params, network) {
67
+ function explainCommon(tx, params, coinName) {
67
68
  const displayOrder = ['id', 'outputAmount', 'changeAmount', 'outputs', 'changeOutputs'];
68
69
  const changeOutputs = [];
69
70
  const customChangeOutputs = [];
@@ -72,14 +73,14 @@ function explainCommon(tx, params, network) {
72
73
  tx.outs.forEach((currentOutput) => {
73
74
  // Try to encode the script pubkey with an address. If it fails, try to parse it as an OP_RETURN output with the prefix.
74
75
  // If that fails, then it is an unrecognized scriptPubkey and should fail
75
- const currentAddress = (0, recipient_1.toExtendedAddressFormat)(currentOutput.script, network);
76
+ const currentAddress = (0, recipient_1.toExtendedAddressFormat)(currentOutput.script, coinName);
76
77
  const currentAmount = BigInt(currentOutput.value);
77
- const changeOutput = toChangeOutput(currentOutput, network, changeInfo);
78
+ const changeOutput = toChangeOutput(currentOutput, coinName, changeInfo);
78
79
  if (changeOutput) {
79
80
  changeOutputs.push(changeOutput);
80
81
  return;
81
82
  }
82
- const customChangeOutput = toChangeOutput(currentOutput, network, customChangeInfo);
83
+ const customChangeOutput = toChangeOutput(currentOutput, coinName, customChangeInfo);
83
84
  if (customChangeOutput) {
84
85
  customChangeOutputs.push(customChangeOutput);
85
86
  return;
@@ -128,7 +129,8 @@ function getPsbtInputSignaturesCount(psbt, params) {
128
129
  ? utxo_lib_1.bitgo.getSignatureValidationArrayPsbt(psbt, rootWalletKeys).map((sv) => sv[1].filter((v) => v).length)
129
130
  : Array(psbt.data.inputs.length).fill(0);
130
131
  }
131
- function getTxInputSignaturesCount(tx, params, network) {
132
+ function getTxInputSignaturesCount(tx, params, coinName) {
133
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
132
134
  const prevOutputs = params.txInfo?.unspents?.map((u) => utxo_lib_1.bitgo.toOutput(u, network));
133
135
  const rootWalletKeys = getRootWalletKeys(params);
134
136
  const { unspents = [] } = params.txInfo ?? {};
@@ -198,7 +200,7 @@ function getChangeInfo(psbt, walletKeys) {
198
200
  * Extract PayGo address proof information from the PSBT if present
199
201
  * @returns Information about the PayGo proof, including the output index and address
200
202
  */
201
- function getPayGoVerificationInfo(psbt, network) {
203
+ function getPayGoVerificationInfo(psbt, coinName) {
202
204
  let outputIndex = undefined;
203
205
  let address = undefined;
204
206
  // Check if this PSBT has any PayGo address proofs
@@ -206,12 +208,13 @@ function getPayGoVerificationInfo(psbt, network) {
206
208
  return undefined;
207
209
  }
208
210
  // This pulls the pubkey depending on given network
209
- const verificationPubkey = (0, getPayGoVerificationPubkey_1.getPayGoVerificationPubkey)(network);
211
+ const verificationPubkey = (0, getPayGoVerificationPubkey_1.getPayGoVerificationPubkey)(coinName);
210
212
  // find which output index that contains the PayGo proof
211
213
  outputIndex = utxocore.paygo.getPayGoAddressProofOutputIndex(psbt);
212
214
  if (outputIndex === undefined || !verificationPubkey) {
213
215
  return undefined;
214
216
  }
217
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
215
218
  const output = psbt.txOutputs[outputIndex];
216
219
  address = utxolib.address.fromOutputScript(output.script, network);
217
220
  if (!address) {
@@ -225,7 +228,8 @@ function getPayGoVerificationInfo(psbt, network) {
225
228
  * @returns An array of objects containing the message and address for each input,
226
229
  * or undefined if no BIP322 messages are found.
227
230
  */
228
- function getBip322MessageInfoAndVerify(psbt, network) {
231
+ function getBip322MessageInfoAndVerify(psbt, coinName) {
232
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
229
233
  const bip322Messages = [];
230
234
  for (let i = 0; i < psbt.data.inputs.length; i++) {
231
235
  const message = utxo_core_1.bip322.getBip322ProofMessageAtIndex(psbt, i);
@@ -285,11 +289,12 @@ function getBip322MessageInfoAndVerify(psbt, network) {
285
289
  *
286
290
  * @param psbt {bitgo.UtxoPsbt} The PSBT to explain
287
291
  * @param pubs {bitgo.RootWalletKeys | string[]} The public keys to use for the explanation
288
- * @param network {utxolib.Network} The network to use for the explanation
292
+ * @param coinName {UtxoCoinName} The coin name to use for the explanation
289
293
  * @param strict {boolean} Whether to throw an error if the PayGo address proof is invalid
290
294
  */
291
- function explainPsbt(psbt, params, network, { strict = true } = {}) {
292
- const payGoVerificationInfo = getPayGoVerificationInfo(psbt, network);
295
+ function explainPsbt(psbt, params, coinName, { strict = true } = {}) {
296
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
297
+ const payGoVerificationInfo = getPayGoVerificationInfo(psbt, coinName);
293
298
  if (payGoVerificationInfo) {
294
299
  try {
295
300
  utxocore.paygo.verifyPayGoAddressProof(psbt, payGoVerificationInfo.outputIndex, secp256k1_1.bip32.fromBase58(payGoVerificationInfo.verificationPubkey, utxolib.networks.bitcoin).publicKey);
@@ -301,13 +306,13 @@ function explainPsbt(psbt, params, network, { strict = true } = {}) {
301
306
  console.error(e);
302
307
  }
303
308
  }
304
- const messages = getBip322MessageInfoAndVerify(psbt, network);
309
+ const messages = getBip322MessageInfoAndVerify(psbt, coinName);
305
310
  const changeInfo = getChangeInfo(psbt);
306
311
  const customChangeInfo = params.customChangePubs
307
312
  ? getChangeInfo(psbt, (0, keychains_1.toBip32Triple)(params.customChangePubs))
308
313
  : undefined;
309
314
  const tx = psbt.getUnsignedTx();
310
- const common = explainCommon(tx, { ...params, changeInfo, customChangeInfo }, network);
315
+ const common = explainCommon(tx, { ...params, changeInfo, customChangeInfo }, coinName);
311
316
  const inputSignaturesCount = getPsbtInputSignaturesCount(psbt, params);
312
317
  // Set fee from subtracting inputs from outputs
313
318
  const outputAmount = psbt.txOutputs.reduce((cumulative, curr) => cumulative + BigInt(curr.value), BigInt(0));
@@ -332,13 +337,13 @@ function explainPsbt(psbt, params, network, { strict = true } = {}) {
332
337
  messages,
333
338
  };
334
339
  }
335
- function explainLegacyTx(tx, params, network) {
336
- const common = explainCommon(tx, params, network);
337
- const inputSignaturesCount = getTxInputSignaturesCount(tx, params, network);
340
+ function explainLegacyTx(tx, params, coinName) {
341
+ const common = explainCommon(tx, params, coinName);
342
+ const inputSignaturesCount = getTxInputSignaturesCount(tx, params, coinName);
338
343
  return {
339
344
  ...common,
340
345
  inputSignatures: inputSignaturesCount,
341
346
  signatures: inputSignaturesCount.reduce((prev, curr) => (curr > prev ? curr : prev), 0),
342
347
  };
343
348
  }
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRYQSxrQ0F1REM7QUFFRCwwQ0FnQkM7QUFyY0QseURBQTJDO0FBQzNDLGdEQUEwQztBQUMxQyxnREFBeUQ7QUFDekQsOENBQXdDO0FBRXhDLDJEQUE2QztBQUk3Qyw0Q0FBdUQ7QUFDdkQsOEVBQTJFO0FBQzNFLCtDQUFnRDtBQTREaEQsU0FBUyxjQUFjLENBQ3JCLFFBQTJDLEVBQzNDLE9BQXdCLEVBQ3hCLFVBQTJDO0lBRTNDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQ0FBdUIsRUFBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE9BQU87UUFDTCxPQUFPO1FBQ1AsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztRQUNuQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxPQUFzQztJQUN2RCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENB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QyxDQUFDLENBQUMsQ0FBQztJQUVkLE9BQU87UUFDTCxHQUFHLE1BQU07UUFDVCxHQUFHLEVBQUUsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzVDLGVBQWUsRUFBRSxvQkFBb0I7UUFDckMsVUFBVSxFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkYsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsZUFBZSxDQUM3QixFQUFrQyxFQUNsQyxNQUlDLEVBQ0QsT0FBd0I7SUFFeEIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEQsTUFBTSxvQkFBb0IsR0FBRyx5QkFBeUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLE9BQU87UUFDTCxHQUFHLE1BQU07UUFDVCxlQUFlLEVBQUUsb0JBQW9CO1FBQ3JDLFVBQVUsRUFBRSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0tBQ3hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgYmlwMzIyIH0gZnJvbSAnQGJpdGdvL3V0eG8tY29yZSc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgYmlwMzIgfSBmcm9tICdAYml0Z28vc2VjcDI1NmsxJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2NvcmUgZnJvbSAnQGJpdGdvL3V0eG8tY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQmlwMzIyTWVzc2FnZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHR5cGUgeyBPdXRwdXQsIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXkgfSBmcm9tICcuLi9nZXRQYXlHb1ZlcmlmaWNhdGlvblB1YmtleSc7XG5pbXBvcnQgeyB0b0JpcDMyVHJpcGxlIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcblxuLy8gPT09PT0gVHJhbnNhY3Rpb24gRXhwbGFuYXRpb24gVHlwZSBEZWZpbml0aW9ucyA9PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0VXR4b1RyYW5zYWN0aW9uRXhwbGFuYXRpb248VEZlZSA9IHN0cmluZywgVENoYW5nZU91dHB1dCBleHRlbmRzIE91dHB1dCA9IE91dHB1dD5cbiAgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBzdHJpbmc+IHtcbiAgLyoqIE5PVEU6IHRoaXMgYWN0dWFsbHkgb25seSBjYXB0dXJlcyBleHRlcm5hbCBvdXRwdXRzICovXG4gIG91dHB1dHM6IE91dHB1dFtdO1xuICBjaGFuZ2VPdXRwdXRzOiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZU91dHB1dHM/OiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZUFtb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogQklQMzIyIG1lc3NhZ2VzIGV4dHJhY3RlZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMuXG4gICAqIFRoZXNlIG1lc3NhZ2VzIGFyZSB1c2VkIGZvciB2ZXJpZnlpbmcgdGhlIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIEJJUDMyMiBzdGFuZGFyZC5cbiAgICovXG4gIG1lc3NhZ2VzPzogQmlwMzIyTWVzc2FnZVtdO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgLSB0aGUgc2lnbmF0dXJlIGZpZWxkcyBhcmUgbm90IHZlcnkgdXNlZnVsICovXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldpdGhTaWduYXR1cmVzPFRGZWUgPSBzdHJpbmcsIFRDaGFuZ2VPdXRwdXQgZXh0ZW5kcyBPdXRwdXQgPSBPdXRwdXQ+XG4gIGV4dGVuZHMgQWJzdHJhY3RVdHhvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBUQ2hhbmdlT3V0cHV0PiB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVudXNlZCBvdXRzaWRlIG9mIHRlc3RzICovXG4gIGxvY2t0aW1lPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgaW5wdXQgc2lnbmF0dXJlcyBwZXIgaW5wdXQuXG4gICAqIEBkZXByZWNhdGVkIC0gdGhpcyBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aG91dCBrbm93aW5nIHdobyBzaWduZWQgZWFjaCBpbnB1dC5cbiAgICovXG4gIGlucHV0U2lnbmF0dXJlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEhpZ2hlc3QgaW5wdXQgc2lnbmF0dXJlIGNvdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQGRlcHJlY2F0ZWQgLSB0aGlzIGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRob3V0IGtub3dpbmcgd2hvIHNpZ25lZCBlYWNoIGlucHV0LlxuICAgKi9cbiAgc2lnbmF0dXJlczogbnVtYmVyO1xufVxuXG4vKiogRm9yIG91ciB3YXNtIGJhY2tlbmQsIHdlIGRvIG5vdCByZXR1cm4gdGhlIGRlcHJlY2F0ZWQgZmllbGRzLiBXZSBzZXQgVEZlZSB0byBzdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc20gPSBBYnN0cmFjdFV0eG9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZywgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQ+O1xuXG4vKiogV2hlbiBwYXJzaW5nIHRoZSBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LCB3ZSBjYW5ub3QgYWx3YXlzIGluZmVyIHRoZSBmZWUgc28gd2Ugc2V0IGl0IHRvIHN0cmluZyB8IHVuZGVmaW5lZCAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJMZWdhY3kgPSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uV2l0aFNpZ25hdHVyZXM8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuLyoqIFdoZW4gcGFyc2luZyBhIFBTQlQsIHdlIGNhbiBpbmZlciB0aGUgZmVlIHNvIHdlIHNldCBURmVlIHRvIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliUHNidCA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRGVzY3JpcHRvciA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmcsIE91dHB1dD47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPVxuICB8IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc207XG5cbmV4cG9ydCB0eXBlIENoYW5nZUFkZHJlc3NJbmZvID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiB0b0NoYW5nZU91dHB1dChcbiAgdHhPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8bnVtYmVyIHwgYmlnaW50PixcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICBjaGFuZ2VJbmZvOiBDaGFuZ2VBZGRyZXNzSW5mb1tdIHwgdW5kZWZpbmVkXG4pOiBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCB8IHVuZGVmaW5lZCB7XG4gIGlmICghY2hhbmdlSW5mbykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgYWRkcmVzcyA9IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KHR4T3V0cHV0LnNjcmlwdCwgbmV0d29yayk7XG4gIGNvbnN0IGNoYW5nZSA9IGNoYW5nZUluZm8uZmluZCgoY2hhbmdlKSA9PiBjaGFuZ2UuYWRkcmVzcyA9PT0gYWRkcmVzcyk7XG4gIGlmICghY2hhbmdlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGFkZHJlc3MsXG4gICAgYW1vdW50OiB0eE91dHB1dC52YWx1ZS50b1N0cmluZygpLFxuICAgIGNoYWluOiBjaGFuZ2UuY2hhaW4sXG4gICAgaW5kZXg6IGNoYW5nZS5pbmRleCxcbiAgICBleHRlcm5hbDogZmFsc2UsXG4gIH07XG59XG5cbmZ1bmN0aW9uIG91dHB1dFN1bShvdXRwdXRzOiB7IGFtb3VudDogc3RyaW5nIHwgbnVtYmVyIH1bXSk6IGJpZ2ludCB7XG4gIHJldHVybiBvdXRwdXRzLnJlZHVjZSgoc3VtLCBvdXRwdXQpID0+IHN1bSArIEJpZ0ludChvdXRwdXQuYW1vdW50KSwgQmlnSW50KDApKTtcbn1cblxuZnVuY3Rpb24gZXhwbGFpbkNvbW1vbjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgdHg6IGJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPixcbiAgcGFyYW1zOiB7XG4gICAgY2hhbmdlSW5mbz86IENoYW5nZUFkZHJlc3NJbmZvW107XG4gICAgY3VzdG9tQ2hhbmdlSW5mbz86IENoYW5nZUFkZHJlc3NJbmZvW107XG4gICAgZmVlSW5mbz86IHN0cmluZztcbiAgfSxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pIHtcbiAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cyddO1xuICBjb25zdCBjaGFuZ2VPdXRwdXRzOiBGaXhlZFNjcmlwdFdhbGxldE91dHB1dFtdID0gW107XG4gIGNvbnN0IGN1c3RvbUNoYW5nZU91dHB1dHM6IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0W10gPSBbXTtcbiAgY29uc3QgZXh0ZXJuYWxPdXRwdXRzOiBPdXRwdXRbXSA9IFtdO1xuXG4gIGNvbnN0IHsgY2hhbmdlSW5mbywgY3VzdG9tQ2hhbmdlSW5mbyB9ID0gcGFyYW1zO1xuXG4gIHR4Lm91dHMuZm9yRWFjaCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIHNjcmlwdCBwdWJrZXkgd2l0aCBhbiBhZGRyZXNzLiBJZiBpdCBmYWlscywgdHJ5IHRvIHBhcnNlIGl0IGFzIGFuIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB0aGUgcHJlZml4LlxuICAgIC8vIElmIHRoYXQgZmFpbHMsIHRoZW4gaXQgaXMgYW4gdW5yZWNvZ25pemVkIHNjcmlwdFB1YmtleSBhbmQgc2hvdWxkIGZhaWxcbiAgICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGN1cnJlbnRPdXRwdXQuc2NyaXB0LCBuZXR3b3JrKTtcbiAgICBjb25zdCBjdXJyZW50QW1vdW50ID0gQmlnSW50KGN1cnJlbnRPdXRwdXQudmFsdWUpO1xuXG4gICAgY29uc3QgY2hhbmdlT3V0cHV0ID0gdG9DaGFuZ2VPdXRwdXQoY3VycmVudE91dHB1dCwgbmV0d29yaywgY2hhbmdlSW5mbyk7XG4gICAgaWYgKGNoYW5nZU91dHB1dCkge1xuICAgICAgY2hhbmdlT3V0cHV0cy5wdXNoKGNoYW5nZU91dHB1dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY3VzdG9tQ2hhbmdlT3V0cHV0ID0gdG9DaGFuZ2VPdXRwdXQoY3VycmVudE91dHB1dCwgbmV0d29yaywgY3VzdG9tQ2hhbmdlSW5mbyk7XG4gICAgaWYgKGN1c3RvbUNoYW5nZU91dHB1dCkge1xuICAgICAgY3VzdG9tQ2hhbmdlT3V0cHV0cy5wdXNoKGN1c3RvbUNoYW5nZU91dHB1dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXh0ZXJuYWxPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGN1cnJlbnRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIC8vIElmIGNoYW5nZUluZm8gaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgaW5mb3JtYXRpb25cbiAgICAgIC8vIHdhcyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYnV0IHRoZSBvdXRwdXQgd2FzIG5vdCBpZGVudGlmaWVkIGFzIGNoYW5nZS4gSW4gdGhpcyBjYXNlLFxuICAgICAgLy8gdGhlIG91dHB1dCBpcyBleHRlcm5hbCwgYW5kIHdlIGNhbiBzZXQgaXQgYXMgc28uIElmIGNoYW5nZUluZm8gaXMgdW5kZWZpbmVkLCBpdCBtZWFucyB3ZSB3ZXJlXG4gICAgICAvLyBnaXZlbiBubyBpbmZvcm1hdGlvbiBhYm91dCBjaGFuZ2Ugb3V0cHV0cywgc28gd2UgY2FuJ3QgZGV0ZXJtaW5lIGFueXRoaW5nIGFib3V0IHRoZSBvdXRwdXQsXG4gICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1bmRlZmluZWQuXG4gICAgICBleHRlcm5hbDogY2hhbmdlSW5mbyA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSB7XG4gICAgb3V0cHV0czogZXh0ZXJuYWxPdXRwdXRzLFxuICAgIG91dHB1dEFtb3VudDogb3V0cHV0U3VtKGV4dGVybmFsT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgY2hhbmdlQW1vdW50OiBvdXRwdXRTdW0oY2hhbmdlT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGN1c3RvbUNoYW5nZUFtb3VudDogb3V0cHV0U3VtKGN1c3RvbUNoYW5nZU91dHB1dHMpLnRvU3RyaW5nKCksXG4gICAgY3VzdG9tQ2hhbmdlT3V0cHV0cyxcbiAgfTtcblxuICBsZXQgZmVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBsb2NrdGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChwYXJhbXMuZmVlSW5mbykge1xuICAgIGRpc3BsYXlPcmRlci5wdXNoKCdmZWUnKTtcbiAgICBmZWUgPSBwYXJhbXMuZmVlSW5mbztcbiAgfVxuXG4gIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHR4LmxvY2t0aW1lKSAmJiB0eC5sb2NrdGltZSA+IDApIHtcbiAgICBkaXNwbGF5T3JkZXIucHVzaCgnbG9ja3RpbWUnKTtcbiAgICBsb2NrdGltZSA9IHR4LmxvY2t0aW1lO1xuICB9XG5cbiAgcmV0dXJuIHsgZGlzcGxheU9yZGVyLCBpZDogdHguZ2V0SWQoKSwgLi4ub3V0cHV0RGV0YWlscywgZmVlLCBsb2NrdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRSb290V2FsbGV0S2V5cyhwYXJhbXM6IHsgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW10gfSk6IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBhcmFtcy5wdWJzIGluc3RhbmNlb2YgYml0Z28uUm9vdFdhbGxldEtleXMpIHtcbiAgICByZXR1cm4gcGFyYW1zLnB1YnM7XG4gIH1cbiAgY29uc3Qga2V5cyA9IHBhcmFtcy5wdWJzPy5tYXAoKHhwdWIpID0+IGJpcDMyLmZyb21CYXNlNTgoeHB1YikpO1xuICByZXR1cm4ga2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMyA/IG5ldyBiaXRnby5Sb290V2FsbGV0S2V5cyhrZXlzIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT4pIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQc2J0SW5wdXRTaWduYXR1cmVzQ291bnQoXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfVxuKSB7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgcmV0dXJuIHJvb3RXYWxsZXRLZXlzXG4gICAgPyBiaXRnby5nZXRTaWduYXR1cmVWYWxpZGF0aW9uQXJyYXlQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKS5tYXAoKHN2KSA9PiBzdlsxXS5maWx0ZXIoKHYpID0+IHYpLmxlbmd0aClcbiAgICA6IChBcnJheShwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkgYXMgbnVtYmVyW10pLmZpbGwoMCk7XG59XG5cbmZ1bmN0aW9uIGdldFR4SW5wdXRTaWduYXR1cmVzQ291bnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiBiaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHBhcmFtczoge1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBiaXRnby5VbnNwZW50PFROdW1iZXI+W10gfTtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfSxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pIHtcbiAgY29uc3QgcHJldk91dHB1dHMgPSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubWFwKCh1KSA9PiBiaXRnby50b091dHB1dDxUTnVtYmVyPih1LCBuZXR3b3JrKSk7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgY29uc3QgeyB1bnNwZW50cyA9IFtdIH0gPSBwYXJhbXMudHhJbmZvID8/IHt9O1xuXG4gIC8vIGdldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgcGVyIGlucHV0XG4gIHJldHVybiB0eC5pbnMubWFwKChpbnB1dCwgaWR4KTogbnVtYmVyID0+IHtcbiAgICBpZiAodW5zcGVudHMubGVuZ3RoICE9PSB0eC5pbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gICAgfVxuICAgIGlmICghcm9vdFdhbGxldEtleXMpIHtcbiAgICAgIC8vIG5vIHB1YiBrZXlzIG9yIGluY29ycmVjdCBudW1iZXIgb2YgcHViIGtleXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50PFROdW1iZXI+KHR4LCBpZHgsIHVuc3BlbnRzLCByb290V2FsbGV0S2V5cykuZmlsdGVyKCh2KSA9PiB2KS5sZW5ndGg7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCBhbmQgd2UgY2FuJ3QgdmFsaWRhdGUgdGhlIHNpZ25hdHVyZXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhvdXRwdXQ6IGJpdGdvLlBzYnRPdXRwdXQpIHtcbiAgY29uc3QgZGVyaXZhdGlvbnMgPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uID8/IG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24gPz8gdW5kZWZpbmVkO1xuICBpZiAoIWRlcml2YXRpb25zKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwYXRocyA9IGRlcml2YXRpb25zLm1hcCgoZCkgPT4gZC5wYXRoKTtcbiAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggIT09IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDMgcGF0aHMgaW4gYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmICghcGF0aHMuZXZlcnkoKHApID0+IHBhdGhzWzBdID09PSBwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgYWxsIHBhdGhzIHRvIGJlIHRoZSBzYW1lJyk7XG4gIH1cblxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGhzWzBdICE9PSBwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZ2V0IGEgc2luZ2xlIGNoYWluIGFuZCBpbmRleCBvbiB0aGUgb3V0cHV0IGJlY2F1c2UgdGhlcmUgYXJlIGRpZmZlcmVudCBwYXRocyBmb3IgZGlmZmVyZW50IGtleXMnXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmdldENoYWluQW5kSW5kZXhGcm9tUGF0aChwYXRoc1swXSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYW5nZUluZm8ocHNidDogYml0Z28uVXR4b1BzYnQsIHdhbGxldEtleXM/OiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgd2FsbGV0S2V5cyA9IHdhbGxldEtleXMgPz8gdXR4b2xpYi5iaXRnby5nZXRTb3J0ZWRSb290Tm9kZXMocHNidCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uRXJyb3JOb011bHRpU2lnSW5wdXRGb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmZpbmRXYWxsZXRPdXRwdXRJbmRpY2VzKHBzYnQsIHdhbGxldEtleXMpLm1hcCgoaSkgPT4ge1xuICAgIGNvbnN0IGRlcml2YXRpb25JbmZvcm1hdGlvbiA9IGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhwc2J0LmRhdGEub3V0cHV0c1tpXSk7XG4gICAgaWYgKCFkZXJpdmF0aW9uSW5mb3JtYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgZGVyaXZhdGlvbiBpbmZvcm1hdGlvbiBvbiBiaXAzMkRlcml2YXRpb24gb3IgdGFwQmlwMzJEZXJpdmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1tpXS5zY3JpcHQsIHBzYnQubmV0d29yayksXG4gICAgICBleHRlcm5hbDogZmFsc2UsXG4gICAgICAuLi5kZXJpdmF0aW9uSW5mb3JtYXRpb24sXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBQYXlHbyBhZGRyZXNzIHByb29mIGluZm9ybWF0aW9uIGZyb20gdGhlIFBTQlQgaWYgcHJlc2VudFxuICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBheUdvIHByb29mLCBpbmNsdWRpbmcgdGhlIG91dHB1dCBpbmRleCBhbmQgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBnZXRQYXlHb1ZlcmlmaWNhdGlvbkluZm8oXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IHsgb3V0cHV0SW5kZXg6IG51bWJlcjsgdmVyaWZpY2F0aW9uUHVia2V5OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIGxldCBvdXRwdXRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBsZXQgYWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAvLyBDaGVjayBpZiB0aGlzIFBTQlQgaGFzIGFueSBQYXlHbyBhZGRyZXNzIHByb29mc1xuICBpZiAoIXV0eG9jb3JlLnBheWdvLnBzYnRPdXRwdXRJbmNsdWRlc1BheWdvQWRkcmVzc1Byb29mKHBzYnQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFRoaXMgcHVsbHMgdGhlIHB1YmtleSBkZXBlbmRpbmcgb24gZ2l2ZW4gbmV0d29ya1xuICBjb25zdCB2ZXJpZmljYXRpb25QdWJrZXkgPSBnZXRQYXlHb1ZlcmlmaWNhdGlvblB1YmtleShuZXR3b3JrKTtcbiAgLy8gZmluZCB3aGljaCBvdXRwdXQgaW5kZXggdGhhdCBjb250YWlucyB0aGUgUGF5R28gcHJvb2ZcbiAgb3V0cHV0SW5kZXggPSB1dHhvY29yZS5wYXlnby5nZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpO1xuICBpZiAob3V0cHV0SW5kZXggPT09IHVuZGVmaW5lZCB8fCAhdmVyaWZpY2F0aW9uUHVia2V5KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSBwc2J0LnR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvdXRwdXQuc2NyaXB0LCBuZXR3b3JrKTtcbiAgaWYgKCFhZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW4gbm90IGRlcml2ZSBhZGRyZXNzICR7YWRkcmVzc30gUGF5IEdvIEF0dGVzdGF0aW9uLmApO1xuICB9XG5cbiAgcmV0dXJuIHsgb3V0cHV0SW5kZXgsIHZlcmlmaWNhdGlvblB1YmtleSB9O1xufVxuXG4vKipcbiAqIEV4dHJhY3QgdGhlIEJJUDMyMiBtZXNzYWdlcyBhbmQgYWRkcmVzc2VzIGZyb20gdGhlIFBTQlQgaW5wdXRzIGFuZCBwZXJmb3JtXG4gKiB2ZXJpZmljYXRpb24gb24gdGhlIHRyYW5zYWN0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IG1lZXRzIHRoZSBCSVAzMjIgcmVxdWlyZW1lbnRzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIHRoZSBtZXNzYWdlIGFuZCBhZGRyZXNzIGZvciBlYWNoIGlucHV0LFxuICogICAgICAgICAgb3IgdW5kZWZpbmVkIGlmIG5vIEJJUDMyMiBtZXNzYWdlcyBhcmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIGdldEJpcDMyMk1lc3NhZ2VJbmZvQW5kVmVyaWZ5KHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiBCaXAzMjJNZXNzYWdlW10gfCB1bmRlZmluZWQge1xuICBjb25zdCBiaXAzMjJNZXNzYWdlczogeyBtZXNzYWdlOiBzdHJpbmc7IGFkZHJlc3M6IHN0cmluZyB9W10gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGJpcDMyMi5nZXRCaXAzMjJQcm9vZk1lc3NhZ2VBdEluZGV4KHBzYnQsIGkpO1xuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IHBzYnQuZGF0YS5pbnB1dHNbaV07XG4gICAgICBpZiAoIWlucHV0LndpdG5lc3NVdHhvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB3aXRuZXNzVXR4byBmb3IgaW5wdXQgaW5kZXggJHtpfWApO1xuICAgICAgfVxuICAgICAgaWYgKCFpbnB1dC5ub25XaXRuZXNzVXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgbm9uV2l0bmVzc1V0eG8gZm9yIGlucHV0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNjcmlwdFB1YktleSA9IGlucHV0LndpdG5lc3NVdHhvLnNjcmlwdDtcblxuICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHRvU3BlbmQgdHJhbnNhY3Rpb24gY2FuIGJlIHJlY3JlYXRlZCBpbiB0aGUgUFNCVCBhbmQgaXMgZW5jb2RlZCBjb3JyZWN0bHkgaW4gdGhlIG5vbldpdG5lc3NVdHhvXG4gICAgICBjb25zdCB0b1NwZW5kID0gYmlwMzIyLmJ1aWxkVG9TcGVuZFRyYW5zYWN0aW9uKHNjcmlwdFB1YktleSwgbWVzc2FnZSk7XG4gICAgICBjb25zdCB0b1NwZW5kQjY0ID0gdG9TcGVuZC50b0J1ZmZlcigpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIGlmIChpbnB1dC5ub25XaXRuZXNzVXR4by50b1N0cmluZygnYmFzZTY0JykgIT09IHRvU3BlbmRCNjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb24td2l0bmVzcyBVVFhPIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RlZCB0b1NwZW5kIHRyYW5zYWN0aW9uIGF0IGlucHV0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHRvU3BlbmQgdHJhbnNhY3Rpb24gSUQgbWF0Y2hlcyB0aGUgaW5wdXQncyByZWZlcmVuY2VkIHRyYW5zYWN0aW9uIElEXG4gICAgICBpZiAodG9TcGVuZC5nZXRJZCgpICE9PSB1dHhvbGliLmJpdGdvLmdldE91dHB1dElkRm9ySW5wdXQocHNidC50eElucHV0c1tpXSkudHhpZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvU3BlbmQgdHJhbnNhY3Rpb24gSUQgZG9lcyBub3QgbWF0Y2ggdGhlIGlucHV0IGF0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IHRoZSBpbnB1dCBzcGVjaWZpY3NcbiAgICAgIGlmIChwc2J0LnR4SW5wdXRzW2ldLnNlcXVlbmNlICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIgYXQgaW5wdXQgaW5kZXggJHtpfTogJHtwc2J0LnR4SW5wdXRzW2ldLnNlcXVlbmNlfS4gRXhwZWN0ZWQgMC5gKTtcbiAgICAgIH1cbiAgICAgIGlmIChwc2J0LnR4SW5wdXRzW2ldLmluZGV4ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBpbnB1dCBpbmRleCBhdCBwb3NpdGlvbiAke2l9OiAke3BzYnQudHhJbnB1dHNbaV0uaW5kZXh9LiBFeHBlY3RlZCAwLmApO1xuICAgICAgfVxuXG4gICAgICBiaXAzMjJNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZS50b1N0cmluZygndXRmOCcpLFxuICAgICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChzY3JpcHRQdWJLZXksIG5ldHdvcmspLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGJpcDMyMk1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBhIEJJUDMyMiBtZXNzYWdlIGluIGFueSBpbnB1dCwgYWxsIGlucHV0cyBtdXN0IGhhdmUgb25lLlxuICAgIGlmIChiaXAzMjJNZXNzYWdlcy5sZW5ndGggIT09IHBzYnQuZGF0YS5pbnB1dHMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBCSVAzMjIgbWVzc2FnZXMgYWNyb3NzIGlucHV0cy4nKTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgdGhlIHRyYW5zYWN0aW9uIHNwZWNpZmljcyBmb3IgQklQMzIyXG4gICAgaWYgKHBzYnQudmVyc2lvbiAhPT0gMCAmJiBwc2J0LnZlcnNpb24gIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgUFNCVCB2ZXJzaW9uIGZvciBCSVAzMjI6ICR7cHNidC52ZXJzaW9ufS4gRXhwZWN0ZWQgMCBgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoICE9PSAxIHx8XG4gICAgICBwc2J0LnR4T3V0cHV0c1swXS5zY3JpcHQudG9TdHJpbmcoJ2hleCcpICE9PSAnNmEnIHx8XG4gICAgICBwc2J0LnR4T3V0cHV0c1swXS52YWx1ZSAhPT0gMG5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBQU0JUIG91dHB1dHMgZm9yIEJJUDMyMi4gRXhwZWN0ZWQgZXhhY3RseSBvbmUgT1BfUkVUVVJOIG91dHB1dCB3aXRoIHplcm8gdmFsdWUuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpcDMyMk1lc3NhZ2VzO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBEZWNvbXBvc2UgYSByYXcgcHNidCBpbnRvIHVzZWZ1bCBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgdG90YWwgYW1vdW50cyxcbiAqIGNoYW5nZSBhbW91bnRzLCBhbmQgdHJhbnNhY3Rpb24gb3V0cHV0cy5cbiAqXG4gKiBAcGFyYW0gcHNidCB7Yml0Z28uVXR4b1BzYnR9IFRoZSBQU0JUIHRvIGV4cGxhaW5cbiAqIEBwYXJhbSBwdWJzIHtiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdfSBUaGUgcHVibGljIGtleXMgdG8gdXNlIGZvciB0aGUgZXhwbGFuYXRpb25cbiAqIEBwYXJhbSBuZXR3b3JrIHt1dHhvbGliLk5ldHdvcmt9IFRoZSBuZXR3b3JrIHRvIHVzZSBmb3IgdGhlIGV4cGxhbmF0aW9uXG4gKiBAcGFyYW0gc3RyaWN0IHtib29sZWFufSBXaGV0aGVyIHRvIHRocm93IGFuIGVycm9yIGlmIHRoZSBQYXlHbyBhZGRyZXNzIHByb29mIGlzIGludmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cGxhaW5Qc2J0KFxuICBwc2J0OiBiaXRnby5VdHhvUHNidCxcbiAgcGFyYW1zOiB7XG4gICAgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW107XG4gICAgY3VzdG9tQ2hhbmdlUHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW107XG4gIH0sXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgeyBzdHJpY3QgPSB0cnVlIH06IHsgc3RyaWN0PzogYm9vbGVhbiB9ID0ge31cbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliUHNidCB7XG4gIGNvbnN0IHBheUdvVmVyaWZpY2F0aW9uSW5mbyA9IGdldFBheUdvVmVyaWZpY2F0aW9uSW5mbyhwc2J0LCBuZXR3b3JrKTtcbiAgaWYgKHBheUdvVmVyaWZpY2F0aW9uSW5mbykge1xuICAgIHRyeSB7XG4gICAgICB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZihcbiAgICAgICAgcHNidCxcbiAgICAgICAgcGF5R29WZXJpZmljYXRpb25JbmZvLm91dHB1dEluZGV4LFxuICAgICAgICBiaXAzMi5mcm9tQmFzZTU4KHBheUdvVmVyaWZpY2F0aW9uSW5mby52ZXJpZmljYXRpb25QdWJrZXksIHV0eG9saWIubmV0d29ya3MuYml0Y29pbikucHVibGljS2V5XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmIChzdHJpY3QpIHtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXMgPSBnZXRCaXAzMjJNZXNzYWdlSW5mb0FuZFZlcmlmeShwc2J0LCBuZXR3b3JrKTtcbiAgY29uc3QgY2hhbmdlSW5mbyA9IGdldENoYW5nZUluZm8ocHNidCk7XG4gIGNvbnN0IGN1c3RvbUNoYW5nZUluZm8gPSBwYXJhbXMuY3VzdG9tQ2hhbmdlUHVic1xuICAgID8gZ2V0Q2hhbmdlSW5mbyhwc2J0LCB0b0JpcDMyVHJpcGxlKHBhcmFtcy5jdXN0b21DaGFuZ2VQdWJzKSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdHggPSBwc2J0LmdldFVuc2lnbmVkVHgoKTtcbiAgY29uc3QgY29tbW9uID0gZXhwbGFpbkNvbW1vbih0eCwgeyAuLi5wYXJhbXMsIGNoYW5nZUluZm8sIGN1c3RvbUNoYW5nZUluZm8gfSwgbmV0d29yayk7XG4gIGNvbnN0IGlucHV0U2lnbmF0dXJlc0NvdW50ID0gZ2V0UHNidElucHV0U2lnbmF0dXJlc0NvdW50KHBzYnQsIHBhcmFtcyk7XG5cbiAgLy8gU2V0IGZlZSBmcm9tIHN1YnRyYWN0aW5nIGlucHV0cyBmcm9tIG91dHB1dHNcbiAgY29uc3Qgb3V0cHV0QW1vdW50ID0gcHNidC50eE91dHB1dHMucmVkdWNlKChjdW11bGF0aXZlLCBjdXJyKSA9PiBjdW11bGF0aXZlICsgQmlnSW50KGN1cnIudmFsdWUpLCBCaWdJbnQoMCkpO1xuICBjb25zdCBpbnB1dEFtb3VudCA9IHBzYnQudHhJbnB1dHMucmVkdWNlKChjdW11bGF0aXZlLCB0eElucHV0LCBpKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IHBzYnQuZGF0YS5pbnB1dHNbaV07XG4gICAgaWYgKGRhdGEud2l0bmVzc1V0eG8pIHtcbiAgICAgIHJldHVybiBjdW11bGF0aXZlICsgQmlnSW50KGRhdGEud2l0bmVzc1V0eG8udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5ub25XaXRuZXNzVXR4bykge1xuICAgICAgY29uc3QgdHggPSBiaXRnby5jcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXI8YmlnaW50PihkYXRhLm5vbldpdG5lc3NVdHhvLCBuZXR3b3JrLCB7IGFtb3VudFR5cGU6ICdiaWdpbnQnIH0pO1xuICAgICAgcmV0dXJuIGN1bXVsYXRpdmUgKyBCaWdJbnQodHgub3V0c1t0eElucHV0LmluZGV4XS52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgdmFsdWUgb24gaW5wdXQnKTtcbiAgICB9XG4gIH0sIEJpZ0ludCgwKSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb21tb24sXG4gICAgZmVlOiAoaW5wdXRBbW91bnQgLSBvdXRwdXRBbW91bnQpLnRvU3RyaW5nKCksXG4gICAgaW5wdXRTaWduYXR1cmVzOiBpbnB1dFNpZ25hdHVyZXNDb3VudCxcbiAgICBzaWduYXR1cmVzOiBpbnB1dFNpZ25hdHVyZXNDb3VudC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2KSwgMCksXG4gICAgbWVzc2FnZXMsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluTGVnYWN5VHg8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiBiaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHBhcmFtczoge1xuICAgIHB1YnM/OiBzdHJpbmdbXTtcbiAgICB0eEluZm8/OiB7IHVuc3BlbnRzPzogYml0Z28uVW5zcGVudDxUTnVtYmVyPltdIH07XG4gICAgY2hhbmdlSW5mbz86IHsgYWRkcmVzczogc3RyaW5nOyBjaGFpbjogbnVtYmVyOyBpbmRleDogbnVtYmVyIH1bXTtcbiAgfSxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uVXR4b2xpYkxlZ2FjeSB7XG4gIGNvbnN0IGNvbW1vbiA9IGV4cGxhaW5Db21tb24odHgsIHBhcmFtcywgbmV0d29yayk7XG4gIGNvbnN0IGlucHV0U2lnbmF0dXJlc0NvdW50ID0gZ2V0VHhJbnB1dFNpZ25hdHVyZXNDb3VudCh0eCwgcGFyYW1zLCBuZXR3b3JrKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5jb21tb24sXG4gICAgaW5wdXRTaWduYXR1cmVzOiBpbnB1dFNpZ25hdHVyZXNDb3VudCxcbiAgICBzaWduYXR1cmVzOiBpbnB1dFNpZ25hdHVyZXNDb3VudC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IChjdXJyID4gcHJldiA/IGN1cnIgOiBwcmV2KSwgMCksXG4gIH07XG59XG4iXX0=
349
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2ZpeGVkU2NyaXB0L2V4cGxhaW5UcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdZQSxrQ0F3REM7QUFFRCwwQ0FnQkM7QUExY0QseURBQTJDO0FBQzNDLGdEQUEwQztBQUMxQyxnREFBeUQ7QUFDekQsOENBQXdDO0FBRXhDLDJEQUE2QztBQUk3Qyw0Q0FBdUQ7QUFDdkQsOEVBQTJFO0FBQzNFLCtDQUFnRDtBQUNoRCx1Q0FBbUU7QUE0RG5FLFNBQVMsY0FBYyxDQUNyQixRQUEyQyxFQUMzQyxRQUFzQixFQUN0QixVQUEyQztJQUUzQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLElBQUEsbUNBQXVCLEVBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTztRQUNQLE1BQU0sRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ25CLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsT0FBc0M7SUFDdkQsT0FBTyxPQUFP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LEVBQUUsQ0FBQyxDQUFDO0tBQ3hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgYmlwMzIyIH0gZnJvbSAnQGJpdGdvL3V0eG8tY29yZSc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSwgYmlwMzIgfSBmcm9tICdAYml0Z28vc2VjcDI1NmsxJztcbmltcG9ydCB7IGJpdGdvIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2NvcmUgZnJvbSAnQGJpdGdvL3V0eG8tY29yZSc7XG5cbmltcG9ydCB0eXBlIHsgQmlwMzIyTWVzc2FnZSB9IGZyb20gJy4uLy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHR5cGUgeyBPdXRwdXQsIEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXkgfSBmcm9tICcuLi9nZXRQYXlHb1ZlcmlmaWNhdGlvblB1YmtleSc7XG5pbXBvcnQgeyB0b0JpcDMyVHJpcGxlIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUsIFV0eG9Db2luTmFtZSB9IGZyb20gJy4uLy4uL25hbWVzJztcblxuLy8gPT09PT0gVHJhbnNhY3Rpb24gRXhwbGFuYXRpb24gVHlwZSBEZWZpbml0aW9ucyA9PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEFic3RyYWN0VXR4b1RyYW5zYWN0aW9uRXhwbGFuYXRpb248VEZlZSA9IHN0cmluZywgVENoYW5nZU91dHB1dCBleHRlbmRzIE91dHB1dCA9IE91dHB1dD5cbiAgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBzdHJpbmc+IHtcbiAgLyoqIE5PVEU6IHRoaXMgYWN0dWFsbHkgb25seSBjYXB0dXJlcyBleHRlcm5hbCBvdXRwdXRzICovXG4gIG91dHB1dHM6IE91dHB1dFtdO1xuICBjaGFuZ2VPdXRwdXRzOiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZU91dHB1dHM/OiBUQ2hhbmdlT3V0cHV0W107XG4gIGN1c3RvbUNoYW5nZUFtb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogQklQMzIyIG1lc3NhZ2VzIGV4dHJhY3RlZCBmcm9tIHRoZSB0cmFuc2FjdGlvbiBpbnB1dHMuXG4gICAqIFRoZXNlIG1lc3NhZ2VzIGFyZSB1c2VkIGZvciB2ZXJpZnlpbmcgdGhlIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIEJJUDMyMiBzdGFuZGFyZC5cbiAgICovXG4gIG1lc3NhZ2VzPzogQmlwMzIyTWVzc2FnZVtdO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgLSB0aGUgc2lnbmF0dXJlIGZpZWxkcyBhcmUgbm90IHZlcnkgdXNlZnVsICovXG5pbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldpdGhTaWduYXR1cmVzPFRGZWUgPSBzdHJpbmcsIFRDaGFuZ2VPdXRwdXQgZXh0ZW5kcyBPdXRwdXQgPSBPdXRwdXQ+XG4gIGV4dGVuZHMgQWJzdHJhY3RVdHhvVHJhbnNhY3Rpb25FeHBsYW5hdGlvbjxURmVlLCBUQ2hhbmdlT3V0cHV0PiB7XG4gIC8qKiBAZGVwcmVjYXRlZCAtIHVudXNlZCBvdXRzaWRlIG9mIHRlc3RzICovXG4gIGxvY2t0aW1lPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgaW5wdXQgc2lnbmF0dXJlcyBwZXIgaW5wdXQuXG4gICAqIEBkZXByZWNhdGVkIC0gdGhpcyBpcyBub3QgdmVyeSB1c2VmdWwgd2l0aG91dCBrbm93aW5nIHdobyBzaWduZWQgZWFjaCBpbnB1dC5cbiAgICovXG4gIGlucHV0U2lnbmF0dXJlczogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEhpZ2hlc3QgaW5wdXQgc2lnbmF0dXJlIGNvdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICogQGRlcHJlY2F0ZWQgLSB0aGlzIGlzIG5vdCB2ZXJ5IHVzZWZ1bCB3aXRob3V0IGtub3dpbmcgd2hvIHNpZ25lZCBlYWNoIGlucHV0LlxuICAgKi9cbiAgc2lnbmF0dXJlczogbnVtYmVyO1xufVxuXG4vKiogRm9yIG91ciB3YXNtIGJhY2tlbmQsIHdlIGRvIG5vdCByZXR1cm4gdGhlIGRlcHJlY2F0ZWQgZmllbGRzLiBXZSBzZXQgVEZlZSB0byBzdHJpbmcgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc20gPSBBYnN0cmFjdFV0eG9UcmFuc2FjdGlvbkV4cGxhbmF0aW9uPHN0cmluZywgRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQ+O1xuXG4vKiogV2hlbiBwYXJzaW5nIHRoZSBsZWdhY3kgdHJhbnNhY3Rpb24gZm9ybWF0LCB3ZSBjYW5ub3QgYWx3YXlzIGluZmVyIHRoZSBmZWUgc28gd2Ugc2V0IGl0IHRvIHN0cmluZyB8IHVuZGVmaW5lZCAqL1xuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJMZWdhY3kgPSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uV2l0aFNpZ25hdHVyZXM8c3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuLyoqIFdoZW4gcGFyc2luZyBhIFBTQlQsIHdlIGNhbiBpbmZlciB0aGUgZmVlIHNvIHdlIHNldCBURmVlIHRvIHN0cmluZy4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliUHNidCA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmc+O1xuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uRGVzY3JpcHRvciA9IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25XaXRoU2lnbmF0dXJlczxzdHJpbmcsIE91dHB1dD47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPVxuICB8IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0XG4gIHwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbldhc207XG5cbmV4cG9ydCB0eXBlIENoYW5nZUFkZHJlc3NJbmZvID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiB0b0NoYW5nZU91dHB1dChcbiAgdHhPdXRwdXQ6IHV0eG9saWIuVHhPdXRwdXQ8bnVtYmVyIHwgYmlnaW50PixcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZSxcbiAgY2hhbmdlSW5mbzogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZFxuKTogRml4ZWRTY3JpcHRXYWxsZXRPdXRwdXQgfCB1bmRlZmluZWQge1xuICBpZiAoIWNoYW5nZUluZm8pIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGFkZHJlc3MgPSB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdCh0eE91dHB1dC5zY3JpcHQsIGNvaW5OYW1lKTtcbiAgY29uc3QgY2hhbmdlID0gY2hhbmdlSW5mby5maW5kKChjaGFuZ2UpID0+IGNoYW5nZS5hZGRyZXNzID09PSBhZGRyZXNzKTtcbiAgaWYgKCFjaGFuZ2UpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiB7XG4gICAgYWRkcmVzcyxcbiAgICBhbW91bnQ6IHR4T3V0cHV0LnZhbHVlLnRvU3RyaW5nKCksXG4gICAgY2hhaW46IGNoYW5nZS5jaGFpbixcbiAgICBpbmRleDogY2hhbmdlLmluZGV4LFxuICAgIGV4dGVybmFsOiBmYWxzZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gb3V0cHV0U3VtKG91dHB1dHM6IHsgYW1vdW50OiBzdHJpbmcgfCBudW1iZXIgfVtdKTogYmlnaW50IHtcbiAgcmV0dXJuIG91dHB1dHMucmVkdWNlKChzdW0sIG91dHB1dCkgPT4gc3VtICsgQmlnSW50KG91dHB1dC5hbW91bnQpLCBCaWdJbnQoMCkpO1xufVxuXG5mdW5jdGlvbiBleHBsYWluQ29tbW9uPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwYXJhbXM6IHtcbiAgICBjaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBjdXN0b21DaGFuZ2VJbmZvPzogQ2hhbmdlQWRkcmVzc0luZm9bXTtcbiAgICBmZWVJbmZvPzogc3RyaW5nO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pIHtcbiAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlQW1vdW50JywgJ291dHB1dHMnLCAnY2hhbmdlT3V0cHV0cyddO1xuICBjb25zdCBjaGFuZ2VPdXRwdXRzOiBGaXhlZFNjcmlwdFdhbGxldE91dHB1dFtdID0gW107XG4gIGNvbnN0IGN1c3RvbUNoYW5nZU91dHB1dHM6IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0W10gPSBbXTtcbiAgY29uc3QgZXh0ZXJuYWxPdXRwdXRzOiBPdXRwdXRbXSA9IFtdO1xuXG4gIGNvbnN0IHsgY2hhbmdlSW5mbywgY3VzdG9tQ2hhbmdlSW5mbyB9ID0gcGFyYW1zO1xuXG4gIHR4Lm91dHMuZm9yRWFjaCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgIC8vIFRyeSB0byBlbmNvZGUgdGhlIHNjcmlwdCBwdWJrZXkgd2l0aCBhbiBhZGRyZXNzLiBJZiBpdCBmYWlscywgdHJ5IHRvIHBhcnNlIGl0IGFzIGFuIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB0aGUgcHJlZml4LlxuICAgIC8vIElmIHRoYXQgZmFpbHMsIHRoZW4gaXQgaXMgYW4gdW5yZWNvZ25pemVkIHNjcmlwdFB1YmtleSBhbmQgc2hvdWxkIGZhaWxcbiAgICBjb25zdCBjdXJyZW50QWRkcmVzcyA9IHRvRXh0ZW5kZWRBZGRyZXNzRm9ybWF0KGN1cnJlbnRPdXRwdXQuc2NyaXB0LCBjb2luTmFtZSk7XG4gICAgY29uc3QgY3VycmVudEFtb3VudCA9IEJpZ0ludChjdXJyZW50T3V0cHV0LnZhbHVlKTtcblxuICAgIGNvbnN0IGNoYW5nZU91dHB1dCA9IHRvQ2hhbmdlT3V0cHV0KGN1cnJlbnRPdXRwdXQsIGNvaW5OYW1lLCBjaGFuZ2VJbmZvKTtcbiAgICBpZiAoY2hhbmdlT3V0cHV0KSB7XG4gICAgICBjaGFuZ2VPdXRwdXRzLnB1c2goY2hhbmdlT3V0cHV0KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VPdXRwdXQgPSB0b0NoYW5nZU91dHB1dChjdXJyZW50T3V0cHV0LCBjb2luTmFtZSwgY3VzdG9tQ2hhbmdlSW5mbyk7XG4gICAgaWYgKGN1c3RvbUNoYW5nZU91dHB1dCkge1xuICAgICAgY3VzdG9tQ2hhbmdlT3V0cHV0cy5wdXNoKGN1c3RvbUNoYW5nZU91dHB1dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXh0ZXJuYWxPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzczogY3VycmVudEFkZHJlc3MsXG4gICAgICBhbW91bnQ6IGN1cnJlbnRBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIC8vIElmIGNoYW5nZUluZm8gaGFzIGEgbGVuZ3RoIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCBpdCBtZWFucyB0aGF0IHRoZSBjaGFuZ2UgaW5mb3JtYXRpb25cbiAgICAgIC8vIHdhcyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYnV0IHRoZSBvdXRwdXQgd2FzIG5vdCBpZGVudGlmaWVkIGFzIGNoYW5nZS4gSW4gdGhpcyBjYXNlLFxuICAgICAgLy8gdGhlIG91dHB1dCBpcyBleHRlcm5hbCwgYW5kIHdlIGNhbiBzZXQgaXQgYXMgc28uIElmIGNoYW5nZUluZm8gaXMgdW5kZWZpbmVkLCBpdCBtZWFucyB3ZSB3ZXJlXG4gICAgICAvLyBnaXZlbiBubyBpbmZvcm1hdGlvbiBhYm91dCBjaGFuZ2Ugb3V0cHV0cywgc28gd2UgY2FuJ3QgZGV0ZXJtaW5lIGFueXRoaW5nIGFib3V0IHRoZSBvdXRwdXQsXG4gICAgICAvLyBzbyB3ZSBsZWF2ZSBpdCB1bmRlZmluZWQuXG4gICAgICBleHRlcm5hbDogY2hhbmdlSW5mbyA/IHRydWUgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IG91dHB1dERldGFpbHMgPSB7XG4gICAgb3V0cHV0czogZXh0ZXJuYWxPdXRwdXRzLFxuICAgIG91dHB1dEFtb3VudDogb3V0cHV0U3VtKGV4dGVybmFsT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGNoYW5nZU91dHB1dHMsXG4gICAgY2hhbmdlQW1vdW50OiBvdXRwdXRTdW0oY2hhbmdlT3V0cHV0cykudG9TdHJpbmcoKSxcblxuICAgIGN1c3RvbUNoYW5nZUFtb3VudDogb3V0cHV0U3VtKGN1c3RvbUNoYW5nZU91dHB1dHMpLnRvU3RyaW5nKCksXG4gICAgY3VzdG9tQ2hhbmdlT3V0cHV0cyxcbiAgfTtcblxuICBsZXQgZmVlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGxldCBsb2NrdGltZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChwYXJhbXMuZmVlSW5mbykge1xuICAgIGRpc3BsYXlPcmRlci5wdXNoKCdmZWUnKTtcbiAgICBmZWUgPSBwYXJhbXMuZmVlSW5mbztcbiAgfVxuXG4gIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHR4LmxvY2t0aW1lKSAmJiB0eC5sb2NrdGltZSA+IDApIHtcbiAgICBkaXNwbGF5T3JkZXIucHVzaCgnbG9ja3RpbWUnKTtcbiAgICBsb2NrdGltZSA9IHR4LmxvY2t0aW1lO1xuICB9XG5cbiAgcmV0dXJuIHsgZGlzcGxheU9yZGVyLCBpZDogdHguZ2V0SWQoKSwgLi4ub3V0cHV0RGV0YWlscywgZmVlLCBsb2NrdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRSb290V2FsbGV0S2V5cyhwYXJhbXM6IHsgcHVicz86IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgc3RyaW5nW10gfSk6IGJpdGdvLlJvb3RXYWxsZXRLZXlzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHBhcmFtcy5wdWJzIGluc3RhbmNlb2YgYml0Z28uUm9vdFdhbGxldEtleXMpIHtcbiAgICByZXR1cm4gcGFyYW1zLnB1YnM7XG4gIH1cbiAgY29uc3Qga2V5cyA9IHBhcmFtcy5wdWJzPy5tYXAoKHhwdWIpID0+IGJpcDMyLmZyb21CYXNlNTgoeHB1YikpO1xuICByZXR1cm4ga2V5cyAmJiBrZXlzLmxlbmd0aCA9PT0gMyA/IG5ldyBiaXRnby5Sb290V2FsbGV0S2V5cyhrZXlzIGFzIFRyaXBsZTxCSVAzMkludGVyZmFjZT4pIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRQc2J0SW5wdXRTaWduYXR1cmVzQ291bnQoXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfVxuKSB7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgcmV0dXJuIHJvb3RXYWxsZXRLZXlzXG4gICAgPyBiaXRnby5nZXRTaWduYXR1cmVWYWxpZGF0aW9uQXJyYXlQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKS5tYXAoKHN2KSA9PiBzdlsxXS5maWx0ZXIoKHYpID0+IHYpLmxlbmd0aClcbiAgICA6IChBcnJheShwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkgYXMgbnVtYmVyW10pLmZpbGwoMCk7XG59XG5cbmZ1bmN0aW9uIGdldFR4SW5wdXRTaWduYXR1cmVzQ291bnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHR4OiBiaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4sXG4gIHBhcmFtczoge1xuICAgIHR4SW5mbz86IHsgdW5zcGVudHM/OiBiaXRnby5VbnNwZW50PFROdW1iZXI+W10gfTtcbiAgICBwdWJzPzogYml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXTtcbiAgfSxcbiAgY29pbk5hbWU6IFV0eG9Db2luTmFtZVxuKSB7XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3QgcHJldk91dHB1dHMgPSBwYXJhbXMudHhJbmZvPy51bnNwZW50cz8ubWFwKCh1KSA9PiBiaXRnby50b091dHB1dDxUTnVtYmVyPih1LCBuZXR3b3JrKSk7XG4gIGNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0Um9vdFdhbGxldEtleXMocGFyYW1zKTtcbiAgY29uc3QgeyB1bnNwZW50cyA9IFtdIH0gPSBwYXJhbXMudHhJbmZvID8/IHt9O1xuXG4gIC8vIGdldCB0aGUgbnVtYmVyIG9mIHNpZ25hdHVyZXMgcGVyIGlucHV0XG4gIHJldHVybiB0eC5pbnMubWFwKChpbnB1dCwgaWR4KTogbnVtYmVyID0+IHtcbiAgICBpZiAodW5zcGVudHMubGVuZ3RoICE9PSB0eC5pbnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKCFwcmV2T3V0cHV0cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gICAgfVxuICAgIGlmICghcm9vdFdhbGxldEtleXMpIHtcbiAgICAgIC8vIG5vIHB1YiBrZXlzIG9yIGluY29ycmVjdCBudW1iZXIgb2YgcHViIGtleXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGJpdGdvLnZlcmlmeVNpZ25hdHVyZVdpdGhVbnNwZW50PFROdW1iZXI+KHR4LCBpZHgsIHVuc3BlbnRzLCByb290V2FsbGV0S2V5cykuZmlsdGVyKCh2KSA9PiB2KS5sZW5ndGg7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCBhbmQgd2UgY2FuJ3QgdmFsaWRhdGUgdGhlIHNpZ25hdHVyZXNcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhvdXRwdXQ6IGJpdGdvLlBzYnRPdXRwdXQpIHtcbiAgY29uc3QgZGVyaXZhdGlvbnMgPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uID8/IG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24gPz8gdW5kZWZpbmVkO1xuICBpZiAoIWRlcml2YXRpb25zKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBwYXRocyA9IGRlcml2YXRpb25zLm1hcCgoZCkgPT4gZC5wYXRoKTtcbiAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggIT09IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIDMgcGF0aHMgaW4gYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmICghcGF0aHMuZXZlcnkoKHApID0+IHBhdGhzWzBdID09PSBwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgYWxsIHBhdGhzIHRvIGJlIHRoZSBzYW1lJyk7XG4gIH1cblxuICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgaWYgKHBhdGhzWzBdICE9PSBwYXRoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gZ2V0IGEgc2luZ2xlIGNoYWluIGFuZCBpbmRleCBvbiB0aGUgb3V0cHV0IGJlY2F1c2UgdGhlcmUgYXJlIGRpZmZlcmVudCBwYXRocyBmb3IgZGlmZmVyZW50IGtleXMnXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmdldENoYWluQW5kSW5kZXhGcm9tUGF0aChwYXRoc1swXSk7XG59XG5cbmZ1bmN0aW9uIGdldENoYW5nZUluZm8ocHNidDogYml0Z28uVXR4b1BzYnQsIHdhbGxldEtleXM/OiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogQ2hhbmdlQWRkcmVzc0luZm9bXSB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgd2FsbGV0S2V5cyA9IHdhbGxldEtleXMgPz8gdXR4b2xpYi5iaXRnby5nZXRTb3J0ZWRSb290Tm9kZXMocHNidCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uRXJyb3JOb011bHRpU2lnSW5wdXRGb3VuZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIHJldHVybiB1dHhvbGliLmJpdGdvLmZpbmRXYWxsZXRPdXRwdXRJbmRpY2VzKHBzYnQsIHdhbGxldEtleXMpLm1hcCgoaSkgPT4ge1xuICAgIGNvbnN0IGRlcml2YXRpb25JbmZvcm1hdGlvbiA9IGdldENoYWluQW5kSW5kZXhGcm9tQmlwMzJEZXJpdmF0aW9ucyhwc2J0LmRhdGEub3V0cHV0c1tpXSk7XG4gICAgaWYgKCFkZXJpdmF0aW9uSW5mb3JtYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgZGVyaXZhdGlvbiBpbmZvcm1hdGlvbiBvbiBiaXAzMkRlcml2YXRpb24gb3IgdGFwQmlwMzJEZXJpdmF0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhZGRyZXNzOiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChwc2J0LnR4T3V0cHV0c1tpXS5zY3JpcHQsIHBzYnQubmV0d29yayksXG4gICAgICBleHRlcm5hbDogZmFsc2UsXG4gICAgICAuLi5kZXJpdmF0aW9uSW5mb3JtYXRpb24sXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogRXh0cmFjdCBQYXlHbyBhZGRyZXNzIHByb29mIGluZm9ybWF0aW9uIGZyb20gdGhlIFBTQlQgaWYgcHJlc2VudFxuICogQHJldHVybnMgSW5mb3JtYXRpb24gYWJvdXQgdGhlIFBheUdvIHByb29mLCBpbmNsdWRpbmcgdGhlIG91dHB1dCBpbmRleCBhbmQgYWRkcmVzc1xuICovXG5mdW5jdGlvbiBnZXRQYXlHb1ZlcmlmaWNhdGlvbkluZm8oXG4gIHBzYnQ6IGJpdGdvLlV0eG9Qc2J0LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lXG4pOiB7IG91dHB1dEluZGV4OiBudW1iZXI7IHZlcmlmaWNhdGlvblB1YmtleTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBsZXQgb3V0cHV0SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgbGV0IGFkZHJlc3M6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLy8gQ2hlY2sgaWYgdGhpcyBQU0JUIGhhcyBhbnkgUGF5R28gYWRkcmVzcyBwcm9vZnNcbiAgaWYgKCF1dHhvY29yZS5wYXlnby5wc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0KSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBUaGlzIHB1bGxzIHRoZSBwdWJrZXkgZGVwZW5kaW5nIG9uIGdpdmVuIG5ldHdvcmtcbiAgY29uc3QgdmVyaWZpY2F0aW9uUHVia2V5ID0gZ2V0UGF5R29WZXJpZmljYXRpb25QdWJrZXkoY29pbk5hbWUpO1xuICAvLyBmaW5kIHdoaWNoIG91dHB1dCBpbmRleCB0aGF0IGNvbnRhaW5zIHRoZSBQYXlHbyBwcm9vZlxuICBvdXRwdXRJbmRleCA9IHV0eG9jb3JlLnBheWdvLmdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidCk7XG4gIGlmIChvdXRwdXRJbmRleCA9PT0gdW5kZWZpbmVkIHx8ICF2ZXJpZmljYXRpb25QdWJrZXkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3Qgb3V0cHV0ID0gcHNidC50eE91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgbmV0d29yayk7XG4gIGlmICghYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2FuIG5vdCBkZXJpdmUgYWRkcmVzcyAke2FkZHJlc3N9IFBheSBHbyBBdHRlc3RhdGlvbi5gKTtcbiAgfVxuXG4gIHJldHVybiB7IG91dHB1dEluZGV4LCB2ZXJpZmljYXRpb25QdWJrZXkgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IHRoZSBCSVAzMjIgbWVzc2FnZXMgYW5kIGFkZHJlc3NlcyBmcm9tIHRoZSBQU0JUIGlucHV0cyBhbmQgcGVyZm9ybVxuICogdmVyaWZpY2F0aW9uIG9uIHRoZSB0cmFuc2FjdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBtZWV0cyB0aGUgQklQMzIyIHJlcXVpcmVtZW50cy5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyB0aGUgbWVzc2FnZSBhbmQgYWRkcmVzcyBmb3IgZWFjaCBpbnB1dCxcbiAqICAgICAgICAgIG9yIHVuZGVmaW5lZCBpZiBubyBCSVAzMjIgbWVzc2FnZXMgYXJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiBnZXRCaXAzMjJNZXNzYWdlSW5mb0FuZFZlcmlmeShwc2J0OiBiaXRnby5VdHhvUHNidCwgY29pbk5hbWU6IFV0eG9Db2luTmFtZSk6IEJpcDMyMk1lc3NhZ2VbXSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5ldHdvcmsgPSBnZXROZXR3b3JrRnJvbUNvaW5OYW1lKGNvaW5OYW1lKTtcbiAgY29uc3QgYmlwMzIyTWVzc2FnZXM6IHsgbWVzc2FnZTogc3RyaW5nOyBhZGRyZXNzOiBzdHJpbmcgfVtdID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBiaXAzMjIuZ2V0QmlwMzIyUHJvb2ZNZXNzYWdlQXRJbmRleChwc2J0LCBpKTtcbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgY29uc3QgaW5wdXQgPSBwc2J0LmRhdGEuaW5wdXRzW2ldO1xuICAgICAgaWYgKCFpbnB1dC53aXRuZXNzVXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3Npbmcgd2l0bmVzc1V0eG8gZm9yIGlucHV0IGluZGV4ICR7aX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICghaW5wdXQubm9uV2l0bmVzc1V0eG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIG5vbldpdG5lc3NVdHhvIGZvciBpbnB1dCBpbmRleCAke2l9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzY3JpcHRQdWJLZXkgPSBpbnB1dC53aXRuZXNzVXR4by5zY3JpcHQ7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB0b1NwZW5kIHRyYW5zYWN0aW9uIGNhbiBiZSByZWNyZWF0ZWQgaW4gdGhlIFBTQlQgYW5kIGlzIGVuY29kZWQgY29ycmVjdGx5IGluIHRoZSBub25XaXRuZXNzVXR4b1xuICAgICAgY29uc3QgdG9TcGVuZCA9IGJpcDMyMi5idWlsZFRvU3BlbmRUcmFuc2FjdGlvbihzY3JpcHRQdWJLZXksIG1lc3NhZ2UpO1xuICAgICAgY29uc3QgdG9TcGVuZEI2NCA9IHRvU3BlbmQudG9CdWZmZXIoKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICBpZiAoaW5wdXQubm9uV2l0bmVzc1V0eG8udG9TdHJpbmcoJ2Jhc2U2NCcpICE9PSB0b1NwZW5kQjY0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9uLXdpdG5lc3MgVVRYTyBkb2VzIG5vdCBtYXRjaCB0aGUgZXhwZWN0ZWQgdG9TcGVuZCB0cmFuc2FjdGlvbiBhdCBpbnB1dCBpbmRleCAke2l9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmeSB0aGF0IHRoZSB0b1NwZW5kIHRyYW5zYWN0aW9uIElEIG1hdGNoZXMgdGhlIGlucHV0J3MgcmVmZXJlbmNlZCB0cmFuc2FjdGlvbiBJRFxuICAgICAgaWYgKHRvU3BlbmQuZ2V0SWQoKSAhPT0gdXR4b2xpYi5iaXRnby5nZXRPdXRwdXRJZEZvcklucHV0KHBzYnQudHhJbnB1dHNbaV0pLnR4aWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb1NwZW5kIHRyYW5zYWN0aW9uIElEIGRvZXMgbm90IG1hdGNoIHRoZSBpbnB1dCBhdCBpbmRleCAke2l9YCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgaW5wdXQgc3BlY2lmaWNzXG4gICAgICBpZiAocHNidC50eElucHV0c1tpXS5zZXF1ZW5jZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyIGF0IGlucHV0IGluZGV4ICR7aX06ICR7cHNidC50eElucHV0c1tpXS5zZXF1ZW5jZX0uIEV4cGVjdGVkIDAuYCk7XG4gICAgICB9XG4gICAgICBpZiAocHNidC50eElucHV0c1tpXS5pbmRleCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgaW5wdXQgaW5kZXggYXQgcG9zaXRpb24gJHtpfTogJHtwc2J0LnR4SW5wdXRzW2ldLmluZGV4fS4gRXhwZWN0ZWQgMC5gKTtcbiAgICAgIH1cblxuICAgICAgYmlwMzIyTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UudG9TdHJpbmcoJ3V0ZjgnKSxcbiAgICAgICAgYWRkcmVzczogdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0UHViS2V5LCBuZXR3b3JrKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChiaXAzMjJNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgLy8gSWYgdGhlcmUgaXMgYSBCSVAzMjIgbWVzc2FnZSBpbiBhbnkgaW5wdXQsIGFsbCBpbnB1dHMgbXVzdCBoYXZlIG9uZS5cbiAgICBpZiAoYmlwMzIyTWVzc2FnZXMubGVuZ3RoICE9PSBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgQklQMzIyIG1lc3NhZ2VzIGFjcm9zcyBpbnB1dHMuJyk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBzcGVjaWZpY3MgZm9yIEJJUDMyMlxuICAgIGlmIChwc2J0LnZlcnNpb24gIT09IDAgJiYgcHNidC52ZXJzaW9uICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIFBTQlQgdmVyc2lvbiBmb3IgQklQMzIyOiAke3BzYnQudmVyc2lvbn0uIEV4cGVjdGVkIDAgYCk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCAhPT0gMSB8fFxuICAgICAgcHNidC50eE91dHB1dHNbMF0uc2NyaXB0LnRvU3RyaW5nKCdoZXgnKSAhPT0gJzZhJyB8fFxuICAgICAgcHNidC50eE91dHB1dHNbMF0udmFsdWUgIT09IDBuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgUFNCVCBvdXRwdXRzIGZvciBCSVAzMjIuIEV4cGVjdGVkIGV4YWN0bHkgb25lIE9QX1JFVFVSTiBvdXRwdXQgd2l0aCB6ZXJvIHZhbHVlLmApO1xuICAgIH1cblxuICAgIHJldHVybiBiaXAzMjJNZXNzYWdlcztcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogRGVjb21wb3NlIGEgcmF3IHBzYnQgaW50byB1c2VmdWwgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIHRvdGFsIGFtb3VudHMsXG4gKiBjaGFuZ2UgYW1vdW50cywgYW5kIHRyYW5zYWN0aW9uIG91dHB1dHMuXG4gKlxuICogQHBhcmFtIHBzYnQge2JpdGdvLlV0eG9Qc2J0fSBUaGUgUFNCVCB0byBleHBsYWluXG4gKiBAcGFyYW0gcHVicyB7Yml0Z28uUm9vdFdhbGxldEtleXMgfCBzdHJpbmdbXX0gVGhlIHB1YmxpYyBrZXlzIHRvIHVzZSBmb3IgdGhlIGV4cGxhbmF0aW9uXG4gKiBAcGFyYW0gY29pbk5hbWUge1V0eG9Db2luTmFtZX0gVGhlIGNvaW4gbmFtZSB0byB1c2UgZm9yIHRoZSBleHBsYW5hdGlvblxuICogQHBhcmFtIHN0cmljdCB7Ym9vbGVhbn0gV2hldGhlciB0byB0aHJvdyBhbiBlcnJvciBpZiB0aGUgUGF5R28gYWRkcmVzcyBwcm9vZiBpcyBpbnZhbGlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBsYWluUHNidChcbiAgcHNidDogYml0Z28uVXR4b1BzYnQsXG4gIHBhcmFtczoge1xuICAgIHB1YnM/OiBiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdO1xuICAgIGN1c3RvbUNoYW5nZVB1YnM/OiBiaXRnby5Sb290V2FsbGV0S2V5cyB8IHN0cmluZ1tdO1xuICB9LFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICB7IHN0cmljdCA9IHRydWUgfTogeyBzdHJpY3Q/OiBib29sZWFuIH0gPSB7fVxuKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvblV0eG9saWJQc2J0IHtcbiAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUoY29pbk5hbWUpO1xuICBjb25zdCBwYXlHb1ZlcmlmaWNhdGlvbkluZm8gPSBnZXRQYXlHb1ZlcmlmaWNhdGlvbkluZm8ocHNidCwgY29pbk5hbWUpO1xuICBpZiAocGF5R29WZXJpZmljYXRpb25JbmZvKSB7XG4gICAgdHJ5IHtcbiAgICAgIHV0eG9jb3JlLnBheWdvLnZlcmlmeVBheUdvQWRkcmVzc1Byb29mKFxuICAgICAgICBwc2J0LFxuICAgICAgICBwYXlHb1ZlcmlmaWNhdGlvbkluZm8ub3V0cHV0SW5kZXgsXG4gICAgICAgIGJpcDMyLmZyb21CYXNlNTgocGF5R29WZXJpZmljYXRpb25JbmZvLnZlcmlmaWNhdGlvblB1YmtleSwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKS5wdWJsaWNLZXlcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZXNzYWdlcyA9IGdldEJpcDMyMk1lc3NhZ2VJbmZvQW5kVmVyaWZ5KHBzYnQsIGNvaW5OYW1lKTtcbiAgY29uc3QgY2hhbmdlSW5mbyA9IGdldENoYW5nZUluZm8ocHNidCk7XG4gIGNvbnN0IGN1c3RvbUNoYW5nZUluZm8gPSBwYXJhbXMuY3VzdG9tQ2hhbmdlUHVic1xuICAgID8gZ2V0Q2hhbmdlSW5mbyhwc2J0LCB0b0JpcDMyVHJpcGxlKHBhcmFtcy5jdXN0b21DaGFuZ2VQdWJzKSlcbiAgICA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdHggPSBwc2J0LmdldFVuc2lnbmVkVHgoKTtcbiAgY29uc3QgY29tbW9uID0gZXhwbGFpbkNvbW1vbih0eCwgeyAuLi5wYXJhbXMsIGNoYW5nZUluZm8sIGN1c3RvbUNoYW5nZUluZm8gfSwgY29pbk5hbWUpO1xuICBjb25zdCBpbnB1dFNpZ25hdHVyZXNDb3VudCA9IGdldFBzYnRJbnB1dFNpZ25hdHVyZXNDb3VudChwc2J0LCBwYXJhbXMpO1xuXG4gIC8vIFNldCBmZWUgZnJvbSBzdWJ0cmFjdGluZyBpbnB1dHMgZnJvbSBvdXRwdXRzXG4gIGNvbnN0IG91dHB1dEFtb3VudCA9IHBzYnQudHhPdXRwdXRzLnJlZHVjZSgoY3VtdWxhdGl2ZSwgY3VycikgPT4gY3VtdWxhdGl2ZSArIEJpZ0ludChjdXJyLnZhbHVlKSwgQmlnSW50KDApKTtcbiAgY29uc3QgaW5wdXRBbW91bnQgPSBwc2J0LnR4SW5wdXRzLnJlZHVjZSgoY3VtdWxhdGl2ZSwgdHhJbnB1dCwgaSkgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBwc2J0LmRhdGEuaW5wdXRzW2ldO1xuICAgIGlmIChkYXRhLndpdG5lc3NVdHhvKSB7XG4gICAgICByZXR1cm4gY3VtdWxhdGl2ZSArIEJpZ0ludChkYXRhLndpdG5lc3NVdHhvLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubm9uV2l0bmVzc1V0eG8pIHtcbiAgICAgIGNvbnN0IHR4ID0gYml0Z28uY3JlYXRlVHJhbnNhY3Rpb25Gcm9tQnVmZmVyPGJpZ2ludD4oZGF0YS5ub25XaXRuZXNzVXR4bywgbmV0d29yaywgeyBhbW91bnRUeXBlOiAnYmlnaW50JyB9KTtcbiAgICAgIHJldHVybiBjdW11bGF0aXZlICsgQmlnSW50KHR4Lm91dHNbdHhJbnB1dC5pbmRleF0udmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIHZhbHVlIG9uIGlucHV0Jyk7XG4gICAgfVxuICB9LCBCaWdJbnQoMCkpO1xuXG4gIHJldHVybiB7XG4gICAgLi4uY29tbW9uLFxuICAgIGZlZTogKGlucHV0QW1vdW50IC0gb3V0cHV0QW1vdW50KS50b1N0cmluZygpLFxuICAgIGlucHV0U2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQsXG4gICAgc2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApLFxuICAgIG1lc3NhZ2VzLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwbGFpbkxlZ2FjeVR4PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICB0eDogYml0Z28uVXR4b1RyYW5zYWN0aW9uPFROdW1iZXI+LFxuICBwYXJhbXM6IHtcbiAgICBwdWJzPzogc3RyaW5nW107XG4gICAgdHhJbmZvPzogeyB1bnNwZW50cz86IGJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB9O1xuICAgIGNoYW5nZUluZm8/OiB7IGFkZHJlc3M6IHN0cmluZzsgY2hhaW46IG51bWJlcjsgaW5kZXg6IG51bWJlciB9W107XG4gIH0sXG4gIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWVcbik6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb25VdHhvbGliTGVnYWN5IHtcbiAgY29uc3QgY29tbW9uID0gZXhwbGFpbkNvbW1vbih0eCwgcGFyYW1zLCBjb2luTmFtZSk7XG4gIGNvbnN0IGlucHV0U2lnbmF0dXJlc0NvdW50ID0gZ2V0VHhJbnB1dFNpZ25hdHVyZXNDb3VudCh0eCwgcGFyYW1zLCBjb2luTmFtZSk7XG4gIHJldHVybiB7XG4gICAgLi4uY29tbW9uLFxuICAgIGlucHV0U2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQsXG4gICAgc2lnbmF0dXJlczogaW5wdXRTaWduYXR1cmVzQ291bnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldiksIDApLFxuICB9O1xufVxuIl19
@@ -165,7 +165,7 @@ async function parseTransaction(coin, params) {
165
165
  const changeOutputs = lodash_1.default.filter(allOutputDetails, { external: false });
166
166
  function toComparableOutputsWithExternal(outputs) {
167
167
  return outputs.map((output) => ({
168
- script: (0, recipient_1.fromExtendedAddressFormatToScript)(output.address, coin.network),
168
+ script: (0, recipient_1.fromExtendedAddressFormatToScript)(output.address, coin.name),
169
169
  value: output.amount === 'max' ? 'max' : BigInt(output.amount),
170
170
  external: output.external,
171
171
  }));
@@ -193,7 +193,7 @@ async function parseTransaction(coin, params) {
193
193
  const implicitExternalSpendAmount = utxolib.bitgo.toTNumber(implicitExternalOutputs.reduce((sum, o) => sum + BigInt(o.value), BigInt(0)), coin.amountType);
194
194
  function toOutputs(outputs) {
195
195
  return outputs.map((output) => ({
196
- address: (0, recipient_1.toExtendedAddressFormat)(output.script, coin.network),
196
+ address: (0, recipient_1.toExtendedAddressFormat)(output.script, coin.name),
197
197
  amount: output.value.toString(),
198
198
  external: output.external,
199
199
  }));
@@ -212,4 +212,4 @@ async function parseTransaction(coin, params) {
212
212
  customChange,
213
213
  };
214
214
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEVBLDRDQTBLQztBQXRQRCxvREFBNEI7QUFFNUIsb0RBQXVCO0FBRXZCLHlEQUEyQztBQUkzQywrQ0FBdUg7QUFDdkgsMERBQXlFO0FBQ3pFLDRDQUEwRjtBQUcxRiwrQ0FBaUU7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxJQUFBLGdCQUFNLEVBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLElBQUEsZ0JBQU0sRUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUNGLENBQUM7SUFFRixp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QUEyQjtRQUMzQiwyQkFBMkI7UUFDM0IseUNBQXlDO1FBQ3pDLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJpcGxlLCBWZXJpZmljYXRpb25PcHRpb25zLCBXYWxsZXQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgIH1cbiAgKTtcblxuICAvLyBSZWN1cnNlIGludG8gcGFyc2VUcmFuc2FjdGlvbiB3aXRoIHRoZSBkZXJpdmVkIHJlY2lwaWVudHMgYW5kIHdpdGhvdXQgcmJmVHhJZHNcbiAgcmV0dXJuIHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgIC4uLnBhcmFtcyxcbiAgICB0eFBhcmFtczoge1xuICAgICAgLi4udHhQYXJhbXMsXG4gICAgICByZWNpcGllbnRzLFxuICAgICAgcmJmVHhJZHM6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9FeHBlY3RlZE91dHB1dHMoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbb3V0cHV0XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgLy8gYWRkcmVzcyBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0cyAocmVnYXJkbGVzcyBvZiB0aGUgb3V0cHV0IGFtb3VudClcbiAgICBleHBlY3RlZE91dHB1dHMucHVzaCh7IGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSwgYW1vdW50OiAnbWF4JyB9KTtcbiAgfVxuICByZXR1cm4gZXhwZWN0ZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIC8vIEJyYW5jaCBvZmYgZWFybHkgZm9yIFJCRiB0cmFuc2FjdGlvbnNcbiAgaWYgKHR4UGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgcmV0dXJuIHBhcnNlUmJmVHJhbnNhY3Rpb24oY29pbiwgcGFyYW1zKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkLnR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhjb2luLCB0eFBhcmFtcyk7XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICAvKipcbiAgICogTG9vcCB0aHJvdWdoIGFsbCB0aGUgb3V0cHV0cyBhbmQgY2xhc3NpZnkgZWFjaCBvZiB0aGVtIGFzIGVpdGhlciBpbnRlcm5hbCBzcGVuZHNcbiAgICogb3IgZXh0ZXJuYWwgc3BlbmRzIGJ5IHNldHRpbmcgdGhlIFwiZXh0ZXJuYWxcIiBwcm9wZXJ0eSB0byB0cnVlIG9yIGZhbHNlIG9uIHRoZSBvdXRwdXQgb2JqZWN0LlxuICAgKi9cbiAgY29uc3QgYWxsT3V0cHV0RGV0YWlsczogT3V0cHV0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxPdXRwdXRzLm1hcCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT3V0cHV0KHtcbiAgICAgICAgY3VycmVudE91dHB1dCxcbiAgICAgICAgY29pbixcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICBrZXljaGFpbkFycmF5OiB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyksXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBleHBlY3RlZE91dHB1dHMsXG4gICAgICAgICAgY2hhbmdlQWRkcmVzczogdHhQYXJhbXMuY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VzdG9tQ2hhbmdlLFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24gPSBhbGxPdXRwdXREZXRhaWxzLnNvbWUoXG4gICAgKG91dHB1dCkgPT4gKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCk/Lm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uXG4gICk7XG5cbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IF8uZmlsdGVyKGFsbE91dHB1dERldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuXG4gIGZ1bmN0aW9uIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwob3V0cHV0czogT3V0cHV0W10pOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5ldHdvcmspLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpXG4gICk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKVxuICApO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBwZXJ0YWlucyB0byB2ZXJpZnlpbmcgdGhlIHBheS1hcy15b3UtZ28tZmVlIEJpdEdvXG4gICAqIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byB0cmFuc2FjdGlvbnMgc2VuZGluZyBtb25leSBvdXQgb2YgdGhlIHdhbGxldC4gVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmRcbiAgICogaW4gdGhhdCB3ZSBjb21wYXJlIHRoZSBleHRlcm5hbCBzcGVuZCBhbW91bnQgdGhhdCB3YXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgdG8gdGhlIHBvcnRpb25cbiAgICogdGhhdCB3YXMgc3BlY2lmaWVkIGltcGxpY2l0bHkuIFRvIHByb3RlY3QgY3VzdG9tZXJzIGZyb20gcGVvcGxlIHRhbXBlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzLCB3ZVxuICAgKiBkZWZpbmUgYSB0aHJlc2hvbGQgZm9yIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGluIHJlbGF0aW9uIHRvIHRoZSBleHBsaWNpdFxuICAgKiBleHRlcm5hbCBzcGVuZC5cbiAgICpcbiAgICogVGhpcyBoYXMgYmVjb21lIG9ic29sZXRlIHdpdGggdGhlIGludG9kdWN0aW9uIG9mIGB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZigpYC5cbiAgICovXG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBleHRyYSBhZGRyZXNzZXMgYXJlIGNoYW5nZSBhZGRyZXNzZXNcbiAgLy8gZ2V0IGFsbCB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIHRoZSBzZXJ2ZXIgYWRkZWQgYW5kIGNhbGN1bGF0ZSB0aGVpciB2YWx1ZXNcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMgPSBpbXBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSBhcyBiaWdpbnQsXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICk7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10pOiBPdXRwdXRbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBjb2luLm5ldHdvcmspLFxuICAgICAgYW1vdW50OiBvdXRwdXQudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXljaGFpbnMsXG4gICAga2V5U2lnbmF0dXJlczogZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQpID8/IHt9LFxuICAgIG91dHB1dHM6IGFsbE91dHB1dERldGFpbHMsXG4gICAgbWlzc2luZ091dHB1dHM6IHRvT3V0cHV0cyhtaXNzaW5nT3V0cHV0cyksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQsXG4gICAgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uLFxuICAgIGN1c3RvbUNoYW5nZSxcbiAgfTtcbn1cbiJdfQ==
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9wYXJzZVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEVBLDRDQTBLQztBQXRQRCxvREFBNEI7QUFFNUIsb0RBQXVCO0FBRXZCLHlEQUEyQztBQUkzQywrQ0FBdUg7QUFDdkgsMERBQXlFO0FBQ3pFLDRDQUEwRjtBQUcxRiwrQ0FBaUU7QUFNakUsS0FBSyxVQUFVLG1CQUFtQixDQUNoQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVwQyxJQUFBLGdCQUFNLEVBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCLElBQUEsZ0JBQU0sRUFBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RyxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDL0MsQ0FBQyxNQUFrRSxFQUFFLEVBQUU7UUFDckUsbUVBQW1FO1FBQ25FLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQyxDQUNGLENBQUM7SUFFRixpRkFBaUY7SUFDakYsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7UUFDNUIsR0FBRyxNQUFNO1FBQ1QsUUFBUSxFQUFFO1lBQ1IsR0FBRyxRQUFRO1lBQ1gsVUFBVTtZQUNWLFFBQVEsRUFBRSxTQUFTO1NBQ3BCO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQ3hCLElBQXNCLEVBQ3RCLFFBSUM7SUFFRCxnRUFBZ0U7SUFDaEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ3JFLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNqQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDM0YsQ0FBQztZQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxRQUFRLENBQUMsMEJBQTBCLElBQUksUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2xFLGdHQUFnRztRQUNoRyxvRUFBb0U7UUFDcEUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBRU0sS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxJQUFzQixFQUN0QixNQUF3QztJQUV4QyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFMUUsd0NBQXdDO0lBQ3hDLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLENBQUMsZ0JBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ25HLE1BQU0sSUFBSSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUM7SUFFekQsMENBQTBDO0lBQzFDLElBQUksU0FBUyxHQUFzRSxZQUFZLENBQUMsU0FBUyxDQUFDO0lBQzFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELFNBQVMsR0FBRyxNQUFNLElBQUEsMEJBQWMsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLENBQUMsOEJBQWtCLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBeUIsSUFBQSw0QkFBZ0IsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUV4RSxJQUFJLGdCQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTFELDREQUE0RDtJQUM1RCxJQUFJLFlBQTZDLENBQUM7SUFDbEQsTUFBTSxFQUFFLG9CQUFvQixHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDekUsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pCLG9FQUFvRTtRQUNwRSxvRkFBb0Y7UUFDcEYsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDO1FBQzNFLE1BQU0sa0JBQWtCLEdBQVcsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztRQUMxRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBQSwwQkFBYyxFQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNyRyxNQUFNLHFCQUFxQixHQUF5QjtnQkFDbEQsZ0JBQWdCLENBQUMsSUFBSTtnQkFDckIsZ0JBQWdCLENBQUMsTUFBTTtnQkFDdkIsZ0JBQWdCLENBQUMsS0FBSzthQUN2QixDQUFDO1lBRUYsWUFBWSxHQUFHO2dCQUNiLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLFVBQVUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsS0FBSyxDQUFDO2FBQ2hILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtJQUNyQixNQUFNLFdBQVcsR0FBMkIsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQVU7UUFDakYsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtRQUN6QixJQUFJLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBbUI7S0FDeEQsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFMUU7OztPQUdHO0lBQ0gsTUFBTSxnQkFBZ0IsR0FBYSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2xELFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRTtRQUMvQixPQUFPLElBQUEseUJBQVcsRUFBQztZQUNqQixhQUFhO1lBQ2IsSUFBSTtZQUNKLFVBQVU7WUFDVixZQUFZO1lBQ1osYUFBYSxFQUFFLElBQUEsNEJBQWdCLEVBQUMsU0FBUyxDQUFDO1lBQzFDLE1BQU07WUFDTixRQUFRLEVBQUU7Z0JBQ1IsVUFBVSxFQUFFLGVBQWU7Z0JBQzNCLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYTthQUN0QztZQUNELFlBQVk7WUFDWixLQUFLO1NBQ04sQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE1BQU0seUNBQXlDLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUNyRSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUUsTUFBa0MsRUFBRSx5Q0FBeUMsQ0FDM0YsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLGdCQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFFdEUsU0FBUywrQkFBK0IsQ0FBQyxPQUFpQjtRQUN4RCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUIsTUFBTSxFQUFFLElBQUEsNkNBQWlDLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3BFLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBb0I7WUFDbEYsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLElBQUEsbUNBQWdCLEVBQ3JDLCtCQUErQixDQUFDLGVBQWUsQ0FBQyxFQUNoRCwrQkFBK0IsQ0FBQyxVQUFVLENBQUMsQ0FDNUMsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLElBQUEsbUNBQWdCLEVBQ3RDLCtCQUErQixDQUFDLGdCQUFnQixDQUFDLEVBQ2pELCtCQUErQixDQUFDLGVBQWUsQ0FBQyxDQUNqRCxDQUFDO0lBQ0YsTUFBTSxlQUFlLEdBQUcsSUFBQSxtQ0FBZ0IsRUFBQywrQkFBK0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBRTdHLG1HQUFtRztJQUNuRyxNQUFNLHVCQUF1QixHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRixzRkFBc0Y7SUFDdEYsTUFBTSwyQkFBMkIsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDekQsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFXLEVBQzlGLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7SUFFRjs7Ozs7Ozs7O09BU0c7SUFFSCw4REFBOEQ7SUFDOUQsc0ZBQXNGO0lBQ3RGLE1BQU0sdUJBQXVCLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sMkJBQTJCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ3pELHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBVyxFQUM5RixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBRUYsU0FBUyxTQUFTLENBQUMsT0FBdUQ7UUFDeEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxJQUFBLG1DQUF1QixFQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDL0IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDTCxTQUFTO1FBQ1QsYUFBYSxFQUFFLElBQUEsNEJBQWdCLEVBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtRQUM3QyxPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ3pDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCx1QkFBdUIsRUFBRSxTQUFTLENBQUMsdUJBQXVCLENBQUM7UUFDM0QsYUFBYTtRQUNiLDJCQUEyQjtRQUMzQiwyQkFBMkI7UUFDM0IseUNBQXlDO1FBQ3pDLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IElUcmFuc2FjdGlvblJlY2lwaWVudCwgVHJpcGxlLCBWZXJpZmljYXRpb25PcHRpb25zLCBXYWxsZXQgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0VXR4b0NvaW4sIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgdHlwZSB7IEZpeGVkU2NyaXB0V2FsbGV0T3V0cHV0LCBPdXRwdXQsIFBhcnNlZFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmV0Y2hLZXljaGFpbnMsIGdldEtleVNpZ25hdHVyZXMsIHRvS2V5Y2hhaW5UcmlwbGUsIFV0eG9LZXljaGFpbiwgVXR4b05hbWVkS2V5Y2hhaW5zIH0gZnJvbSAnLi4vLi4va2V5Y2hhaW5zJztcbmltcG9ydCB7IENvbXBhcmFibGVPdXRwdXQsIG91dHB1dERpZmZlcmVuY2UgfSBmcm9tICcuLi9vdXRwdXREaWZmZXJlbmNlJztcbmltcG9ydCB7IGZyb21FeHRlbmRlZEFkZHJlc3NGb3JtYXRUb1NjcmlwdCwgdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQgfSBmcm9tICcuLi9yZWNpcGllbnQnO1xuXG5pbXBvcnQgdHlwZSB7IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gfSBmcm9tICcuL2V4cGxhaW5UcmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDdXN0b21DaGFuZ2VPcHRpb25zLCBwYXJzZU91dHB1dCB9IGZyb20gJy4vcGFyc2VPdXRwdXQnO1xuXG5leHBvcnQgdHlwZSBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPFRWYWx1ZT4gPSBDb21wYXJhYmxlT3V0cHV0PFRWYWx1ZT4gJiB7XG4gIGV4dGVybmFsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gcGFyc2VSYmZUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB3YWxsZXQgfSA9IHBhcmFtcztcblxuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMpO1xuICBhc3NlcnQodHhQYXJhbXMucmJmVHhJZHMubGVuZ3RoID09PSAxKTtcblxuICBjb25zdCB0eFRvQmVSZXBsYWNlZCA9IGF3YWl0IHdhbGxldC5nZXRUcmFuc2FjdGlvbih7IHR4SGFzaDogdHhQYXJhbXMucmJmVHhJZHNbMF0sIGluY2x1ZGVSYmY6IHRydWUgfSk7XG4gIGNvbnN0IHJlY2lwaWVudHMgPSB0eFRvQmVSZXBsYWNlZC5vdXRwdXRzLmZsYXRNYXAoXG4gICAgKG91dHB1dDogeyB2YWx1ZVN0cmluZzogc3RyaW5nOyBhZGRyZXNzPzogc3RyaW5nOyB3YWxsZXQ/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgLy8gRm9yIHNlbGYtc2VuZHMsIHRoZSB3YWxsZXRJZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSB3YWxsZXQncyBpZFxuICAgICAgaWYgKG91dHB1dC53YWxsZXQgPT09IHdhbGxldC5pZCgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbY29pbi50b0Nhbm9uaWNhbFRyYW5zYWN0aW9uUmVjaXBpZW50KG91dHB1dCldO1xuICAgIH1cbiAgKTtcblxuICAvLyBSZWN1cnNlIGludG8gcGFyc2VUcmFuc2FjdGlvbiB3aXRoIHRoZSBkZXJpdmVkIHJlY2lwaWVudHMgYW5kIHdpdGhvdXQgcmJmVHhJZHNcbiAgcmV0dXJuIHBhcnNlVHJhbnNhY3Rpb24oY29pbiwge1xuICAgIC4uLnBhcmFtcyxcbiAgICB0eFBhcmFtczoge1xuICAgICAgLi4udHhQYXJhbXMsXG4gICAgICByZWNpcGllbnRzLFxuICAgICAgcmJmVHhJZHM6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gdG9FeHBlY3RlZE91dHB1dHMoXG4gIGNvaW46IEFic3RyYWN0VXR4b0NvaW4sXG4gIHR4UGFyYW1zOiB7XG4gICAgcmVjaXBpZW50cz86IElUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICAgIGFsbG93RXh0ZXJuYWxDaGFuZ2VBZGRyZXNzPzogYm9vbGVhbjtcbiAgICBjaGFuZ2VBZGRyZXNzPzogc3RyaW5nO1xuICB9XG4pOiBPdXRwdXRbXSB7XG4gIC8vIHZlcmlmeSB0aGF0IGVhY2ggcmVjaXBpZW50IGZyb20gdHhQYXJhbXMgaGFzIHRoZWlyIG93biBvdXRwdXRcbiAgY29uc3QgZXhwZWN0ZWRPdXRwdXRzID0gKHR4UGFyYW1zLnJlY2lwaWVudHMgPz8gW10pLmZsYXRNYXAoKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuYWRkcmVzcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAob3V0cHV0LmFtb3VudC50b1N0cmluZygpICE9PSAnMCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBPbmx5IHplcm8gYW1vdW50cyBhbGxvd2VkIGZvciBub24tZW5jb2RlYWJsZSBzY3JpcHRQdWJrZXlzOiAke291dHB1dH1gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbb3V0cHV0XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7IC4uLm91dHB1dCwgYWRkcmVzczogY29pbi5jYW5vbmljYWxBZGRyZXNzKG91dHB1dC5hZGRyZXNzKSB9XTtcbiAgfSk7XG4gIGlmICh0eFBhcmFtcy5hbGxvd0V4dGVybmFsQ2hhbmdlQWRkcmVzcyAmJiB0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSB7XG4gICAgLy8gd2hlbiBhbiBleHRlcm5hbCBjaGFuZ2UgYWRkcmVzcyBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY291bnQgYWxsIG91dHB1dHMgZ29pbmcgdG93YXJkcyB0aGF0XG4gICAgLy8gYWRkcmVzcyBpbiB0aGUgZXhwZWN0ZWQgb3V0cHV0cyAocmVnYXJkbGVzcyBvZiB0aGUgb3V0cHV0IGFtb3VudClcbiAgICBleHBlY3RlZE91dHB1dHMucHVzaCh7IGFkZHJlc3M6IGNvaW4uY2Fub25pY2FsQWRkcmVzcyh0eFBhcmFtcy5jaGFuZ2VBZGRyZXNzKSwgYW1vdW50OiAnbWF4JyB9KTtcbiAgfVxuICByZXR1cm4gZXhwZWN0ZWRPdXRwdXRzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcGFyc2VUcmFuc2FjdGlvbjxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgcGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9uczxUTnVtYmVyPlxuKTogUHJvbWlzZTxQYXJzZWRUcmFuc2FjdGlvbjxUTnVtYmVyPj4ge1xuICBjb25zdCB7IHR4UGFyYW1zLCB0eFByZWJ1aWxkLCB3YWxsZXQsIHZlcmlmaWNhdGlvbiA9IHt9LCByZXFJZCB9ID0gcGFyYW1zO1xuXG4gIC8vIEJyYW5jaCBvZmYgZWFybHkgZm9yIFJCRiB0cmFuc2FjdGlvbnNcbiAgaWYgKHR4UGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgcmV0dXJuIHBhcnNlUmJmVHJhbnNhY3Rpb24oY29pbiwgcGFyYW1zKTtcbiAgfVxuXG4gIGlmICghXy5pc1VuZGVmaW5lZCh2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpICYmICFfLmlzQm9vbGVhbih2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd2ZXJpZmljYXRpb24uZGlzYWJsZU5ldHdvcmtpbmcgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgfVxuICBjb25zdCBkaXNhYmxlTmV0d29ya2luZyA9IHZlcmlmaWNhdGlvbi5kaXNhYmxlTmV0d29ya2luZztcblxuICAvLyBvYnRhaW4gdGhlIGtleWNoYWlucyBhbmQga2V5IHNpZ25hdHVyZXNcbiAgbGV0IGtleWNoYWluczogVXR4b05hbWVkS2V5Y2hhaW5zIHwgVmVyaWZpY2F0aW9uT3B0aW9uc1sna2V5Y2hhaW5zJ10gfCB1bmRlZmluZWQgPSB2ZXJpZmljYXRpb24ua2V5Y2hhaW5zO1xuICBpZiAoIWtleWNoYWlucykge1xuICAgIGlmIChkaXNhYmxlTmV0d29ya2luZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3QgZmV0Y2gga2V5Y2hhaW5zIHdpdGhvdXQgbmV0d29ya2luZycpO1xuICAgIH1cbiAgICBrZXljaGFpbnMgPSBhd2FpdCBmZXRjaEtleWNoYWlucyhjb2luLCB3YWxsZXQsIHJlcUlkKTtcbiAgfVxuXG4gIGlmICghVXR4b05hbWVkS2V5Y2hhaW5zLmlzKGtleWNoYWlucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQga2V5Y2hhaW5zJyk7XG4gIH1cblxuICBjb25zdCBrZXljaGFpbkFycmF5OiBUcmlwbGU8VXR4b0tleWNoYWluPiA9IHRvS2V5Y2hhaW5UcmlwbGUoa2V5Y2hhaW5zKTtcblxuICBpZiAoXy5pc1VuZGVmaW5lZCh0eFByZWJ1aWxkLnR4SGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCB0eFByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gIH1cblxuICBjb25zdCBleHBlY3RlZE91dHB1dHMgPSB0b0V4cGVjdGVkT3V0cHV0cyhjb2luLCB0eFBhcmFtcyk7XG5cbiAgLy8gZ2V0IHRoZSBrZXljaGFpbnMgZnJvbSB0aGUgY3VzdG9tIGNoYW5nZSB3YWxsZXQgaWYgbmVlZGVkXG4gIGxldCBjdXN0b21DaGFuZ2U6IEN1c3RvbUNoYW5nZU9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHsgY3VzdG9tQ2hhbmdlV2FsbGV0SWQgPSB1bmRlZmluZWQgfSA9IHdhbGxldC5jb2luU3BlY2lmaWMoKSB8fCB7fTtcbiAgaWYgKGN1c3RvbUNoYW5nZVdhbGxldElkKSB7XG4gICAgLy8gZmV0Y2gga2V5Y2hhaW5zIGZyb20gY3VzdG9tIGNoYW5nZSB3YWxsZXQgZm9yIGRlcml2aW5nIGFkZHJlc3Nlcy5cbiAgICAvLyBUaGVzZSBrZXljaGFpbnMgc2hvdWxkIGJlIHNpZ25lZCBhbmQgdGhpcyBzaG91bGQgYmUgdmVyaWZpZWQgaW4gdmVyaWZ5VHJhbnNhY3Rpb25cbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzID0gd2FsbGV0Ll93YWxsZXQuY3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlcztcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VXYWxsZXQ6IFdhbGxldCA9IGF3YWl0IGNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiBjdXN0b21DaGFuZ2VXYWxsZXRJZCB9KTtcbiAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXlzID0gYXdhaXQgZmV0Y2hLZXljaGFpbnMoY29pbiwgY3VzdG9tQ2hhbmdlV2FsbGV0LCByZXFJZCk7XG5cbiAgICBpZiAoIWN1c3RvbUNoYW5nZUtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGZldGNoIGtleWNoYWlucyBmb3IgY3VzdG9tIGNoYW5nZSB3YWxsZXQnKTtcbiAgICB9XG5cbiAgICBpZiAoY3VzdG9tQ2hhbmdlS2V5cy51c2VyICYmIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwICYmIGN1c3RvbUNoYW5nZUtleXMuYml0Z28gJiYgY3VzdG9tQ2hhbmdlV2FsbGV0KSB7XG4gICAgICBjb25zdCBjdXN0b21DaGFuZ2VLZXljaGFpbnM6IFRyaXBsZTxVdHhvS2V5Y2hhaW4+ID0gW1xuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLnVzZXIsXG4gICAgICAgIGN1c3RvbUNoYW5nZUtleXMuYmFja3VwLFxuICAgICAgICBjdXN0b21DaGFuZ2VLZXlzLmJpdGdvLFxuICAgICAgXTtcblxuICAgICAgY3VzdG9tQ2hhbmdlID0ge1xuICAgICAgICBrZXlzOiBjdXN0b21DaGFuZ2VLZXljaGFpbnMsXG4gICAgICAgIHNpZ25hdHVyZXM6IFtjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLnVzZXIsIGN1c3RvbUNoYW5nZUtleVNpZ25hdHVyZXMuYmFja3VwLCBjdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVzLmJpdGdvXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gb2J0YWluIGFsbCBvdXRwdXRzXG4gIGNvbnN0IGV4cGxhbmF0aW9uOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgIHR4SGV4OiB0eFByZWJ1aWxkLnR4SGV4LFxuICAgIHR4SW5mbzogdHhQcmVidWlsZC50eEluZm8sXG4gICAgcHViczoga2V5Y2hhaW5BcnJheS5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgfSk7XG5cbiAgY29uc3QgYWxsT3V0cHV0cyA9IFsuLi5leHBsYW5hdGlvbi5vdXRwdXRzLCAuLi5leHBsYW5hdGlvbi5jaGFuZ2VPdXRwdXRzXTtcblxuICAvKipcbiAgICogTG9vcCB0aHJvdWdoIGFsbCB0aGUgb3V0cHV0cyBhbmQgY2xhc3NpZnkgZWFjaCBvZiB0aGVtIGFzIGVpdGhlciBpbnRlcm5hbCBzcGVuZHNcbiAgICogb3IgZXh0ZXJuYWwgc3BlbmRzIGJ5IHNldHRpbmcgdGhlIFwiZXh0ZXJuYWxcIiBwcm9wZXJ0eSB0byB0cnVlIG9yIGZhbHNlIG9uIHRoZSBvdXRwdXQgb2JqZWN0LlxuICAgKi9cbiAgY29uc3QgYWxsT3V0cHV0RGV0YWlsczogT3V0cHV0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxPdXRwdXRzLm1hcCgoY3VycmVudE91dHB1dCkgPT4ge1xuICAgICAgcmV0dXJuIHBhcnNlT3V0cHV0KHtcbiAgICAgICAgY3VycmVudE91dHB1dCxcbiAgICAgICAgY29pbixcbiAgICAgICAgdHhQcmVidWlsZCxcbiAgICAgICAgdmVyaWZpY2F0aW9uLFxuICAgICAgICBrZXljaGFpbkFycmF5OiB0b0tleWNoYWluVHJpcGxlKGtleWNoYWlucyksXG4gICAgICAgIHdhbGxldCxcbiAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICByZWNpcGllbnRzOiBleHBlY3RlZE91dHB1dHMsXG4gICAgICAgICAgY2hhbmdlQWRkcmVzczogdHhQYXJhbXMuY2hhbmdlQWRkcmVzcyxcbiAgICAgICAgfSxcbiAgICAgICAgY3VzdG9tQ2hhbmdlLFxuICAgICAgICByZXFJZCxcbiAgICAgIH0pO1xuICAgIH0pXG4gICk7XG5cbiAgY29uc3QgbmVlZHNDdXN0b21DaGFuZ2VLZXlTaWduYXR1cmVWZXJpZmljYXRpb24gPSBhbGxPdXRwdXREZXRhaWxzLnNvbWUoXG4gICAgKG91dHB1dCkgPT4gKG91dHB1dCBhcyBGaXhlZFNjcmlwdFdhbGxldE91dHB1dCk/Lm5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uXG4gICk7XG5cbiAgY29uc3QgY2hhbmdlT3V0cHV0cyA9IF8uZmlsdGVyKGFsbE91dHB1dERldGFpbHMsIHsgZXh0ZXJuYWw6IGZhbHNlIH0pO1xuXG4gIGZ1bmN0aW9uIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwob3V0cHV0czogT3V0cHV0W10pOiBDb21wYXJhYmxlT3V0cHV0V2l0aEV4dGVybmFsPGJpZ2ludCB8ICdtYXgnPltdIHtcbiAgICByZXR1cm4gb3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgIHNjcmlwdDogZnJvbUV4dGVuZGVkQWRkcmVzc0Zvcm1hdFRvU2NyaXB0KG91dHB1dC5hZGRyZXNzLCBjb2luLm5hbWUpLFxuICAgICAgdmFsdWU6IG91dHB1dC5hbW91bnQgPT09ICdtYXgnID8gJ21heCcgOiAoQmlnSW50KG91dHB1dC5hbW91bnQpIGFzIGJpZ2ludCB8ICdtYXgnKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgY29uc3QgbWlzc2luZ091dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKSxcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dHMpXG4gICk7XG5cbiAgY29uc3QgaW1wbGljaXRPdXRwdXRzID0gb3V0cHV0RGlmZmVyZW5jZShcbiAgICB0b0NvbXBhcmFibGVPdXRwdXRzV2l0aEV4dGVybmFsKGFsbE91dHB1dERldGFpbHMpLFxuICAgIHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoZXhwZWN0ZWRPdXRwdXRzKVxuICApO1xuICBjb25zdCBleHBsaWNpdE91dHB1dHMgPSBvdXRwdXREaWZmZXJlbmNlKHRvQ29tcGFyYWJsZU91dHB1dHNXaXRoRXh0ZXJuYWwoYWxsT3V0cHV0RGV0YWlscyksIGltcGxpY2l0T3V0cHV0cyk7XG5cbiAgLy8gdGhlc2UgYXJlIGFsbCB0aGUgbm9uLXdhbGxldCBvdXRwdXRzIHRoYXQgaGFkIGJlZW4gb3JpZ2luYWxseSBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiByZWNpcGllbnRzXG4gIGNvbnN0IGV4cGxpY2l0RXh0ZXJuYWxPdXRwdXRzID0gZXhwbGljaXRPdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiBvdXRwdXQuZXh0ZXJuYWwpO1xuICAvLyB0aGlzIGlzIHRoZSBzdW0gb2YgYWxsIHRoZSBvcmlnaW5hbGx5IGV4cGxpY2l0bHkgc3BlY2lmaWVkIG5vbi13YWxsZXQgb3V0cHV0IHZhbHVlc1xuICBjb25zdCBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQgPSB1dHhvbGliLmJpdGdvLnRvVE51bWJlcjxUTnVtYmVyPihcbiAgICBleHBsaWNpdEV4dGVybmFsT3V0cHV0cy5yZWR1Y2UoKHN1bTogYmlnaW50LCBvKSA9PiBzdW0gKyBCaWdJbnQoby52YWx1ZSksIEJpZ0ludCgwKSkgYXMgYmlnaW50LFxuICAgIGNvaW4uYW1vdW50VHlwZVxuICApO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FsY3VsYXRpb24gb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGFtb3VudCBwZXJ0YWlucyB0byB2ZXJpZnlpbmcgdGhlIHBheS1hcy15b3UtZ28tZmVlIEJpdEdvXG4gICAqIGF1dG9tYXRpY2FsbHkgYXBwbGllZCB0byB0cmFuc2FjdGlvbnMgc2VuZGluZyBtb25leSBvdXQgb2YgdGhlIHdhbGxldC4gVGhlIGxvZ2ljIGlzIGZhaXJseSBzdHJhaWdodGZvcndhcmRcbiAgICogaW4gdGhhdCB3ZSBjb21wYXJlIHRoZSBleHRlcm5hbCBzcGVuZCBhbW91bnQgdGhhdCB3YXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkgYnkgdGhlIHVzZXIgdG8gdGhlIHBvcnRpb25cbiAgICogdGhhdCB3YXMgc3BlY2lmaWVkIGltcGxpY2l0bHkuIFRvIHByb3RlY3QgY3VzdG9tZXJzIGZyb20gcGVvcGxlIHRhbXBlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzLCB3ZVxuICAgKiBkZWZpbmUgYSB0aHJlc2hvbGQgZm9yIHRoZSBtYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdGhlIGltcGxpY2l0IGV4dGVybmFsIHNwZW5kIGluIHJlbGF0aW9uIHRvIHRoZSBleHBsaWNpdFxuICAgKiBleHRlcm5hbCBzcGVuZC5cbiAgICpcbiAgICogVGhpcyBoYXMgYmVjb21lIG9ic29sZXRlIHdpdGggdGhlIGludG9kdWN0aW9uIG9mIGB1dHhvY29yZS5wYXlnby52ZXJpZnlQYXlHb0FkZHJlc3NQcm9vZigpYC5cbiAgICovXG5cbiAgLy8gbWFrZSBzdXJlIHRoYXQgYWxsIHRoZSBleHRyYSBhZGRyZXNzZXMgYXJlIGNoYW5nZSBhZGRyZXNzZXNcbiAgLy8gZ2V0IGFsbCB0aGUgYWRkaXRpb25hbCBleHRlcm5hbCBvdXRwdXRzIHRoZSBzZXJ2ZXIgYWRkZWQgYW5kIGNhbGN1bGF0ZSB0aGVpciB2YWx1ZXNcbiAgY29uc3QgaW1wbGljaXRFeHRlcm5hbE91dHB1dHMgPSBpbXBsaWNpdE91dHB1dHMuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC5leHRlcm5hbCk7XG4gIGNvbnN0IGltcGxpY2l0RXh0ZXJuYWxTcGVuZEFtb3VudCA9IHV0eG9saWIuYml0Z28udG9UTnVtYmVyPFROdW1iZXI+KFxuICAgIGltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLnJlZHVjZSgoc3VtOiBiaWdpbnQsIG8pID0+IHN1bSArIEJpZ0ludChvLnZhbHVlKSwgQmlnSW50KDApKSBhcyBiaWdpbnQsXG4gICAgY29pbi5hbW91bnRUeXBlXG4gICk7XG5cbiAgZnVuY3Rpb24gdG9PdXRwdXRzKG91dHB1dHM6IENvbXBhcmFibGVPdXRwdXRXaXRoRXh0ZXJuYWw8YmlnaW50IHwgJ21heCc+W10pOiBPdXRwdXRbXSB7XG4gICAgcmV0dXJuIG91dHB1dHMubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICBhZGRyZXNzOiB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChvdXRwdXQuc2NyaXB0LCBjb2luLm5hbWUpLFxuICAgICAgYW1vdW50OiBvdXRwdXQudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIGV4dGVybmFsOiBvdXRwdXQuZXh0ZXJuYWwsXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBrZXljaGFpbnMsXG4gICAga2V5U2lnbmF0dXJlczogZ2V0S2V5U2lnbmF0dXJlcyh3YWxsZXQpID8/IHt9LFxuICAgIG91dHB1dHM6IGFsbE91dHB1dERldGFpbHMsXG4gICAgbWlzc2luZ091dHB1dHM6IHRvT3V0cHV0cyhtaXNzaW5nT3V0cHV0cyksXG4gICAgZXhwbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhleHBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgaW1wbGljaXRFeHRlcm5hbE91dHB1dHM6IHRvT3V0cHV0cyhpbXBsaWNpdEV4dGVybmFsT3V0cHV0cyksXG4gICAgY2hhbmdlT3V0cHV0cyxcbiAgICBleHBsaWNpdEV4dGVybmFsU3BlbmRBbW91bnQsXG4gICAgaW1wbGljaXRFeHRlcm5hbFNwZW5kQW1vdW50LFxuICAgIG5lZWRzQ3VzdG9tQ2hhbmdlS2V5U2lnbmF0dXJlVmVyaWZpY2F0aW9uLFxuICAgIGN1c3RvbUNoYW5nZSxcbiAgfTtcbn1cbiJdfQ==
@@ -1,7 +1,9 @@
1
- import * as utxolib from '@bitgo/utxo-lib';
1
+ import { UtxoCoinName } from '../../names';
2
2
  export declare const pubkeyProd: Buffer<ArrayBuffer>;
3
3
  export declare const pubkeyTestnet: Buffer<ArrayBuffer>;
4
- export declare function getReplayProtectionPubkeys(network: utxolib.Network): Buffer[];
5
- export declare function getReplayProtectionAddresses(network: utxolib.Network, format?: 'default' | 'cashaddr'): string[];
6
- export declare function isReplayProtectionUnspent<TNumber extends number | bigint>(u: utxolib.bitgo.Unspent<TNumber>, network: utxolib.Network): boolean;
4
+ export declare function getReplayProtectionPubkeys(coinName: UtxoCoinName): Buffer[];
5
+ export declare function getReplayProtectionAddresses(coinName: UtxoCoinName, format?: 'default' | 'cashaddr'): string[];
6
+ export declare function isReplayProtectionUnspent(u: {
7
+ address: string;
8
+ }, coinName: UtxoCoinName): boolean;
7
9
  //# sourceMappingURL=replayProtection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAG3C,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,EAAE,CAU7E;AAWD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,GAAE,SAAS,GAAG,UAAsB,GACzC,MAAM,EAAE,CAWV;AAED,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACjC,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,OAAO,CAET"}
1
+ {"version":3,"file":"replayProtection.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/replayProtection.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnE,eAAO,MAAM,UAAU,qBAA2F,CAAC;AAEnH,eAAO,MAAM,aAAa,qBAA2F,CAAC;AAEtH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,EAAE,CAU3E;AAWD,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,GAAE,SAAS,GAAG,UAAsB,GACzC,MAAM,EAAE,CAYV;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAEjG"}
@@ -1,53 +1,20 @@
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 __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
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.pubkeyTestnet = exports.pubkeyProd = void 0;
37
4
  exports.getReplayProtectionPubkeys = getReplayProtectionPubkeys;
38
5
  exports.getReplayProtectionAddresses = getReplayProtectionAddresses;
39
6
  exports.isReplayProtectionUnspent = isReplayProtectionUnspent;
40
- const utxolib = __importStar(require("@bitgo/utxo-lib"));
41
7
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
8
+ const names_1 = require("../../names");
42
9
  exports.pubkeyProd = Buffer.from('0255b9f71ac2c78fffd83e3e37b9e17ae70d5437b7f56d0ed2e93b7de08015aa59', 'hex');
43
10
  exports.pubkeyTestnet = Buffer.from('0219da48412c2268865fe8c126327d1b12eee350a3b69eb09e3323cc9a11828945', 'hex');
44
- function getReplayProtectionPubkeys(network) {
45
- switch (network) {
46
- case utxolib.networks.bitcoincash:
47
- case utxolib.networks.bitcoinsv:
11
+ function getReplayProtectionPubkeys(coinName) {
12
+ switch (coinName) {
13
+ case 'bch':
14
+ case 'bsv':
48
15
  return [exports.pubkeyProd];
49
- case utxolib.networks.bitcoinsvTestnet:
50
- case utxolib.networks.bitcoincashTestnet:
16
+ case 'tbsv':
17
+ case 'tbch':
51
18
  return [exports.pubkeyTestnet];
52
19
  }
53
20
  return [];
@@ -60,19 +27,20 @@ const replayProtectionScriptsProd = [Buffer.from('a914174315cfde84f4c45395ac6f15
60
27
  // 2MuMnPoSDgWEpNWH28X2nLtYMXQJCyT61eY
61
28
  // bchtest:pqtjmnzwqffkrk2349g3cecfwwjwxusvnq87n07cal
62
29
  const replayProtectionScriptsTestnet = [Buffer.from('a914172dcc4e025361d951a9511c670973a4e3720c9887', 'hex')];
63
- function getReplayProtectionAddresses(network, format = 'default') {
64
- switch (network) {
65
- case utxolib.networks.bitcoincash:
66
- case utxolib.networks.bitcoinsv:
30
+ function getReplayProtectionAddresses(coinName, format = 'default') {
31
+ const network = (0, names_1.getNetworkFromCoinName)(coinName);
32
+ switch (coinName) {
33
+ case 'bch':
34
+ case 'bsv':
67
35
  return replayProtectionScriptsProd.map((script) => wasm_utxo_1.utxolibCompat.fromOutputScript(script, network, format));
68
- case utxolib.networks.bitcoinsvTestnet:
69
- case utxolib.networks.bitcoincashTestnet:
36
+ case 'tbsv':
37
+ case 'tbch':
70
38
  return replayProtectionScriptsTestnet.map((script) => wasm_utxo_1.utxolibCompat.fromOutputScript(script, network, format));
71
39
  default:
72
40
  return [];
73
41
  }
74
42
  }
75
- function isReplayProtectionUnspent(u, network) {
76
- return getReplayProtectionAddresses(network).includes(u.address);
43
+ function isReplayProtectionUnspent(u, coinName) {
44
+ return getReplayProtectionAddresses(coinName).includes(u.address);
77
45
  }
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLGdFQVVDO0FBV0Qsb0VBY0M7QUFFRCw4REFLQztBQWpERCx5REFBMkM7QUFDM0MsZ0RBQWlEO0FBRXBDLFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdEcsUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV0SCxTQUFnQiwwQkFBMEIsQ0FBQyxPQUF3QjtJQUNqRSxRQUFRLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDbEMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDN0IsT0FBTyxDQUFDLGtCQUFVLENBQUMsQ0FBQztRQUN0QixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtZQUN0QyxPQUFPLENBQUMscUJBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxxQkFBcUI7QUFDckIscUNBQXFDO0FBQ3JDLHlEQUF5RDtBQUN6RCxNQUFNLDJCQUEyQixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNHLHdCQUF3QjtBQUN4QixzQ0FBc0M7QUFDdEMscURBQXFEO0FBQ3JELE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFFOUcsU0FBZ0IsNEJBQTRCLENBQzFDLE9BQXdCLEVBQ3hCLFNBQWlDLFNBQVM7SUFFMUMsUUFBUSxPQUFPLEVBQUUsQ0FBQztRQUNoQixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ2xDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTO1lBQzdCLE9BQU8sMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyx5QkFBYSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM5RyxLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQjtZQUN0QyxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMseUJBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakg7WUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQ3ZDLENBQWlDLEVBQ2pDLE9BQXdCO0lBRXhCLE9BQU8sNEJBQTRCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgdXR4b2xpYkNvbXBhdCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5leHBvcnQgY29uc3QgcHVia2V5UHJvZCA9IEJ1ZmZlci5mcm9tKCcwMjU1YjlmNzFhYzJjNzhmZmZkODNlM2UzN2I5ZTE3YWU3MGQ1NDM3YjdmNTZkMGVkMmU5M2I3ZGUwODAxNWFhNTknLCAnaGV4Jyk7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlUZXN0bmV0ID0gQnVmZmVyLmZyb20oJzAyMTlkYTQ4NDEyYzIyNjg4NjVmZThjMTI2MzI3ZDFiMTJlZWUzNTBhM2I2OWViMDllMzMyM2NjOWExMTgyODk0NScsICdoZXgnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzKG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IEJ1ZmZlcltdIHtcbiAgc3dpdGNoIChuZXR3b3JrKSB7XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICByZXR1cm4gW3B1YmtleVByb2RdO1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3ZUZXN0bmV0OlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaFRlc3RuZXQ6XG4gICAgICByZXR1cm4gW3B1YmtleVRlc3RuZXRdO1xuICB9XG4gIHJldHVybiBbXTtcbn1cblxuLy8gc2gocGsocHVia2V5UHJvZCkpXG4vLyAzM3AxcTdtVEd5ZU01VW5aRVJHaU1jVlVrWTEyU0NzYXRBXG4vLyBiaXRjb2luY2FzaDpwcXQ1eDl3MG02ejBmM3puamtreDc5d2wzbDd5d3JzemVzZW1wOHhncGZcbmNvbnN0IHJlcGxheVByb3RlY3Rpb25TY3JpcHRzUHJvZCA9IFtCdWZmZXIuZnJvbSgnYTkxNDE3NDMxNWNmZGU4NGY0YzQ1Mzk1YWM2ZjE1ZGY4ZmZjNDcwZTAyY2M4NycsICdoZXgnKV07XG4vLyBzaChwayhwdWJrZXlUZXN0bmV0KSlcbi8vIDJNdU1uUG9TRGdXRXBOV0gyOFgybkx0WU1YUUpDeVQ2MWVZXG4vLyBiY2h0ZXN0OnBxdGptbnp3cWZma3JrMjM0OWczY2VjZnd3and4dXN2bnE4N24wN2NhbFxuY29uc3QgcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNUZXN0bmV0ID0gW0J1ZmZlci5mcm9tKCdhOTE0MTcyZGNjNGUwMjUzNjFkOTUxYTk1MTFjNjcwOTczYTRlMzcyMGM5ODg3JywgJ2hleCcpXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgZm9ybWF0OiAnZGVmYXVsdCcgfCAnY2FzaGFkZHInID0gJ2RlZmF1bHQnXG4pOiBzdHJpbmdbXSB7XG4gIHN3aXRjaCAobmV0d29yaykge1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2OlxuICAgICAgcmV0dXJuIHJlcGxheVByb3RlY3Rpb25TY3JpcHRzUHJvZC5tYXAoKHNjcmlwdCkgPT4gdXR4b2xpYkNvbXBhdC5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgbmV0d29yaywgZm9ybWF0KSk7XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5zdlRlc3RuZXQ6XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5jYXNoVGVzdG5ldDpcbiAgICAgIHJldHVybiByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Rlc3RuZXQubWFwKChzY3JpcHQpID0+IHV0eG9saWJDb21wYXQuZnJvbU91dHB1dFNjcmlwdChzY3JpcHQsIG5ldHdvcmssIGZvcm1hdCkpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHU6IHV0eG9saWIuYml0Z28uVW5zcGVudDxUTnVtYmVyPixcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMobmV0d29yaykuaW5jbHVkZXModS5hZGRyZXNzKTtcbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGF5UHJvdGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9maXhlZFNjcmlwdC9yZXBsYXlQcm90ZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLGdFQVVDO0FBV0Qsb0VBZUM7QUFFRCw4REFFQztBQWhERCxnREFBaUQ7QUFFakQsdUNBQW1FO0FBRXRELFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFdEcsUUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUV0SCxTQUFnQiwwQkFBMEIsQ0FBQyxRQUFzQjtJQUMvRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxDQUFDLGtCQUFVLENBQUMsQ0FBQztRQUN0QixLQUFLLE1BQU0sQ0FBQztRQUNaLEtBQUssTUFBTTtZQUNULE9BQU8sQ0FBQyxxQkFBYSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELHFCQUFxQjtBQUNyQixxQ0FBcUM7QUFDckMseURBQXlEO0FBQ3pELE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDM0csd0JBQXdCO0FBQ3hCLHNDQUFzQztBQUN0QyxxREFBcUQ7QUFDckQsTUFBTSw4QkFBOEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUU5RyxTQUFnQiw0QkFBNEIsQ0FDMUMsUUFBc0IsRUFDdEIsU0FBaUMsU0FBUztJQUUxQyxNQUFNLE9BQU8sR0FBRyxJQUFBLDhCQUFzQixFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDakIsS0FBSyxLQUFLLENBQUM7UUFDWCxLQUFLLEtBQUs7WUFDUixPQUFPLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMseUJBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUcsS0FBSyxNQUFNLENBQUM7UUFDWixLQUFLLE1BQU07WUFDVCxPQUFPLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMseUJBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakg7WUFDRSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsQ0FBc0IsRUFBRSxRQUFzQjtJQUN0RixPQUFPLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDcEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0eG9saWJDb21wYXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgZ2V0TmV0d29ya0Zyb21Db2luTmFtZSwgVXR4b0NvaW5OYW1lIH0gZnJvbSAnLi4vLi4vbmFtZXMnO1xuXG5leHBvcnQgY29uc3QgcHVia2V5UHJvZCA9IEJ1ZmZlci5mcm9tKCcwMjU1YjlmNzFhYzJjNzhmZmZkODNlM2UzN2I5ZTE3YWU3MGQ1NDM3YjdmNTZkMGVkMmU5M2I3ZGUwODAxNWFhNTknLCAnaGV4Jyk7XG5cbmV4cG9ydCBjb25zdCBwdWJrZXlUZXN0bmV0ID0gQnVmZmVyLmZyb20oJzAyMTlkYTQ4NDEyYzIyNjg4NjVmZThjMTI2MzI3ZDFiMTJlZWUzNTBhM2I2OWViMDllMzMyM2NjOWExMTgyODk0NScsICdoZXgnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcGxheVByb3RlY3Rpb25QdWJrZXlzKGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBCdWZmZXJbXSB7XG4gIHN3aXRjaCAoY29pbk5hbWUpIHtcbiAgICBjYXNlICdiY2gnOlxuICAgIGNhc2UgJ2Jzdic6XG4gICAgICByZXR1cm4gW3B1YmtleVByb2RdO1xuICAgIGNhc2UgJ3Ric3YnOlxuICAgIGNhc2UgJ3RiY2gnOlxuICAgICAgcmV0dXJuIFtwdWJrZXlUZXN0bmV0XTtcbiAgfVxuICByZXR1cm4gW107XG59XG5cbi8vIHNoKHBrKHB1YmtleVByb2QpKVxuLy8gMzNwMXE3bVRHeWVNNVVuWkVSR2lNY1ZVa1kxMlNDc2F0QVxuLy8gYml0Y29pbmNhc2g6cHF0NXg5dzBtNnowZjN6bmpra3g3OXdsM2w3eXdyc3plc2VtcDh4Z3BmXG5jb25zdCByZXBsYXlQcm90ZWN0aW9uU2NyaXB0c1Byb2QgPSBbQnVmZmVyLmZyb20oJ2E5MTQxNzQzMTVjZmRlODRmNGM0NTM5NWFjNmYxNWRmOGZmYzQ3MGUwMmNjODcnLCAnaGV4JyldO1xuLy8gc2gocGsocHVia2V5VGVzdG5ldCkpXG4vLyAyTXVNblBvU0RnV0VwTldIMjhYMm5MdFlNWFFKQ3lUNjFlWVxuLy8gYmNodGVzdDpwcXRqbW56d3FmZmtyazIzNDlnM2NlY2Z3d2p3eHVzdm5xODduMDdjYWxcbmNvbnN0IHJlcGxheVByb3RlY3Rpb25TY3JpcHRzVGVzdG5ldCA9IFtCdWZmZXIuZnJvbSgnYTkxNDE3MmRjYzRlMDI1MzYxZDk1MWE5NTExYzY3MDk3M2E0ZTM3MjBjOTg4NycsICdoZXgnKV07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXBsYXlQcm90ZWN0aW9uQWRkcmVzc2VzKFxuICBjb2luTmFtZTogVXR4b0NvaW5OYW1lLFxuICBmb3JtYXQ6ICdkZWZhdWx0JyB8ICdjYXNoYWRkcicgPSAnZGVmYXVsdCdcbik6IHN0cmluZ1tdIHtcbiAgY29uc3QgbmV0d29yayA9IGdldE5ldHdvcmtGcm9tQ29pbk5hbWUoY29pbk5hbWUpO1xuICBzd2l0Y2ggKGNvaW5OYW1lKSB7XG4gICAgY2FzZSAnYmNoJzpcbiAgICBjYXNlICdic3YnOlxuICAgICAgcmV0dXJuIHJlcGxheVByb3RlY3Rpb25TY3JpcHRzUHJvZC5tYXAoKHNjcmlwdCkgPT4gdXR4b2xpYkNvbXBhdC5mcm9tT3V0cHV0U2NyaXB0KHNjcmlwdCwgbmV0d29yaywgZm9ybWF0KSk7XG4gICAgY2FzZSAndGJzdic6XG4gICAgY2FzZSAndGJjaCc6XG4gICAgICByZXR1cm4gcmVwbGF5UHJvdGVjdGlvblNjcmlwdHNUZXN0bmV0Lm1hcCgoc2NyaXB0KSA9PiB1dHhvbGliQ29tcGF0LmZyb21PdXRwdXRTY3JpcHQoc2NyaXB0LCBuZXR3b3JrLCBmb3JtYXQpKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcGxheVByb3RlY3Rpb25VbnNwZW50KHU6IHsgYWRkcmVzczogc3RyaW5nIH0sIGNvaW5OYW1lOiBVdHhvQ29pbk5hbWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbk5hbWUpLmluY2x1ZGVzKHUuYWRkcmVzcyk7XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import * as utxolib from '@bitgo/utxo-lib';
2
2
  import { BIP32Interface } from '@bitgo/secp256k1';
3
+ import { UtxoCoinName } from '../../names';
3
4
  type Unspent<TNumber extends number | bigint = number> = utxolib.bitgo.Unspent<TNumber>;
4
5
  type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
5
6
  /**
@@ -10,14 +11,15 @@ type RootWalletKeys = utxolib.bitgo.RootWalletKeys;
10
11
  * @param transaction - wallet transaction (builder) to be signed
11
12
  * @param unspents - transaction unspents
12
13
  * @param walletSigner - signing parameters
14
+ * @param coinName - coin name for network-specific logic
13
15
  * @param isLastSignature - Returns full-signed transaction when true. Builds half-signed when false.
14
16
  * @param replayProtectionAddresses - List of replay protection addresses to skip signing
15
17
  */
16
- export declare function signAndVerifyWalletTransaction<TNumber extends number | bigint>(transaction: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoTransactionBuilder<TNumber>, unspents: Unspent<TNumber>[], walletSigner: utxolib.bitgo.WalletUnspentSigner<RootWalletKeys>, { isLastSignature, replayProtectionAddresses, }: {
18
+ export declare function signAndVerifyWalletTransaction<TNumber extends number | bigint>(transaction: utxolib.bitgo.UtxoTransaction<TNumber> | utxolib.bitgo.UtxoTransactionBuilder<TNumber>, unspents: Unspent<TNumber>[], walletSigner: utxolib.bitgo.WalletUnspentSigner<RootWalletKeys>, coinName: UtxoCoinName, { isLastSignature, replayProtectionAddresses, }: {
17
19
  isLastSignature: boolean;
18
20
  replayProtectionAddresses?: string[];
19
21
  }): utxolib.bitgo.UtxoTransaction<TNumber>;
20
- export declare function signLegacyTransaction<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>, signerKeychain: BIP32Interface | undefined, params: {
22
+ export declare function signLegacyTransaction<TNumber extends number | bigint>(tx: utxolib.bitgo.UtxoTransaction<TNumber>, signerKeychain: BIP32Interface | undefined, coinName: UtxoCoinName, params: {
21
23
  isLastSignature: boolean;
22
24
  signingStep: 'signerNonce' | 'cosignerNonce' | 'signerSignature' | undefined;
23
25
  txInfo: {
@@ -1 +1 @@
1
- {"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAS,MAAM,kBAAkB,CAAC;AAYzD,KAAK,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAExF,KAAK,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC5E,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,EACnG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAC5B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC/D,EACE,eAAe,EACf,yBAAyB,GAC1B,EAAE;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAwExC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAC1C,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,MAAM,EAAE;IACN,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACpE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CA4BxC"}
1
+ {"version":3,"file":"signLegacyTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/transaction/fixedScript/signLegacyTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAS,MAAM,kBAAkB,CAAC;AAKzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,KAAK,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAExF,KAAK,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC5E,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,OAAO,CAAC,EACnG,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAC5B,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAC/D,QAAQ,EAAE,YAAY,EACtB,EACE,eAAe,EACf,yBAAyB,GAC1B,EAAE;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAwExC;AAED,wBAAgB,qBAAqB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACnE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAC1C,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE;IACN,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC7E,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACpE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,GACA,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CA4BxC"}