@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
@@ -262,9 +262,9 @@ util_1.utxoCoins
262
262
  return;
263
263
  }
264
264
  run(coin, [inputScript, inputScript], 'psbt');
265
- if ((0, src_1.getReplayProtectionAddresses)(coin.network).length) {
265
+ if ((0, src_1.getReplayProtectionAddresses)(coin.name).length) {
266
266
  run(coin, ['p2shP2pk', inputScript], 'psbt');
267
267
  }
268
268
  });
269
269
  });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyx5REFBMkM7QUFDM0MsNkJBQThCO0FBQzlCLDhDQUE0RTtBQUM1RSw4Q0FBMEM7QUFFMUMsbUNBQTJFO0FBRTNFLGlDQUF3SDtBQUV4SCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQVUsQ0FBQztBQVc5QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBRXJELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFRakgsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQTBCLEVBQUUsT0FBd0I7SUFDM0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLDJEQUEyRDtJQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDL0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUs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dCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBjb21tb24sIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb24sIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGRlZmF1bHRCaXRHbywgZW5jcnlwdEtleWNoYWluLCBnZXREZWZhdWx0V2FsbGV0S2V5cywgZ2V0VXR4b1dhbGxldCwga2V5Y2hhaW5zQmFzZTU4LCB1dHhvQ29pbnMgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB0eEZvcm1hdHMgPSBbJ2xlZ2FjeScsICdwc2J0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUeEZvcm1hdCA9ICh0eXBlb2YgdHhGb3JtYXRzKVtudW1iZXJdO1xuXG50eXBlIEtleURvYyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBhbnk7XG59O1xuXG5jb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2dhYmFnb29sJztcbmNvbnN0IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA9ICdqdXN0IHRoZSBnYWJhZ29vbCc7XG5cbmNvbnN0IHNjcmlwdFR5cGVzID0gWy4uLnV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjMsICd0YXByb290S2V5UGF0aFNwZW5kJywgJ3Ayc2hQMnBrJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlID0gKHR5cGVvZiBzY3JpcHRUeXBlcylbbnVtYmVyXTtcblxudHlwZSBJbnB1dCA9IHtcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTtcbiAgdmFsdWU6IGJpZ2ludDtcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFNpZ25hYmxlKHBzYnRIZXg6IHN0cmluZywgaW5wdXRTY3JpcHRzOiBTY3JpcHRUeXBlW10sIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHZvaWQge1xuICBjb25zdCBwc2J0ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVQc2J0RnJvbUhleChwc2J0SGV4LCBuZXR3b3JrKTtcbiAgLy8gTWFrZSBzdXJlIHRoYXQgeW91IGNhbiBzaWduIHdpdGggYml0Z28ga2V5IGFuZCBleHRyYWN0IHRoZSB0cmFuc2FjdGlvblxuICAvLyBObyBzaWduYXR1cmVzIHNob3VsZCBiZSBwcmVzZW50IGlmIGl0J3MgYSBwMnNoUDJwayBpbnB1dFxuICBpZiAoIWlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJzaFAycGsnKSkge1xuICAgIGNvbnN0IGtleSA9IGlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJ0ck11c2lnMicpID8gcm9vdFdhbGxldEtleXMuYmFja3VwIDogcm9vdFdhbGxldEtleXMuYml0Z287XG4gICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5LCB7IGRldGVybWluaXN0aWM6IHRydWUgfSk7XG4gICAgcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICAgIHBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICBjb25zdCB0eCA9IHBzYnQuZXh0cmFjdFRyYW5zYWN0aW9uKCk7XG4gICAgYXNzZXJ0Lm9rKHR4KTtcbiAgfVxufVxuXG4vLyBCdWlsZCB0aGUga2V5IG9iamVjdHNcbmNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbmNvbnN0IGtleURvY3VtZW50T2JqZWN0cyA9IHJvb3RXYWxsZXRLZXlzLnRyaXBsZS5tYXAoKGJpcDMyLCBrZXlJZHgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogZ2V0U2VlZChrZXljaGFpbnNCYXNlNThba2V5SWR4XS5wdWIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICBwdWI6IGJpcDMyLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICBzb3VyY2U6IFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtrZXlJZHhdLFxuICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdhbGxldFBhc3NwaHJhc2UsIGtleWNoYWluc0Jhc2U1OFtrZXlJZHhdKSxcbiAgICB3ZWJhdXRobkRldmljZXM6IFtcbiAgICAgIHtcbiAgICAgICAgb3RwRGV2aWNlSWQ6ICcxMjMnLFxuICAgICAgICBhdXRoZW50aWNhdG9ySW5mbzoge1xuICAgICAgICAgIGNyZWRJRDogJ2NyZWRJRCcsXG4gICAgICAgICAgZm10OiAncGFja2VkJyxcbiAgICAgICAgICBwdWJsaWNLZXk6ICdzb21lIHZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJmU2FsdDogJzQ1NicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSwga2V5Y2hhaW5zQmFzZTU4W2tleUlkeF0pLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvaW5TcGVjaWZpYzoge30sXG4gIH07XG59KTtcblxuZnVuY3Rpb24gcnVuKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIGlucHV0U2NyaXB0czogU2NyaXB0VHlwZVtdLCB0eEZvcm1hdDogVHhGb3JtYXQpOiB2b2lkIHtcbiAgZnVuY3Rpb24gY3JlYXRlUHJlYnVpbGRQc2J0KGlucHV0czogSW5wdXRbXSwgb3V0cHV0czogeyBzY3JpcHRUeXBlOiAncDJzaCc7IHZhbHVlOiBiaWdpbnQgfVtdKSB7XG4gICAgY29uc3QgcHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgIGlucHV0cyBhcyB1dHhvbGliLnRlc3R1dGlsLklucHV0W10sXG4gICAgICBvdXRwdXRzLFxuICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAndW5zaWduZWQnXG4gICAgKTtcbiAgICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKTtcbiAgICByZXR1cm4gcHNidDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vY2tzKHBhcmFtczoge1xuICAgIGJnVXJsOiBzdHJpbmc7XG4gICAgd2FsbGV0OiBXYWxsZXQ7XG4gICAga2V5RG9jdW1lbnRzOiBLZXlEb2NbXTtcbiAgICBwcmVidWlsZDogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbiAgICByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xuICAgIGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHJiZlR4SWRzPzogc3RyaW5nW107XG4gICAgZmVlTXVsdGlwbGllcj86IG51bWJlcjtcbiAgICBzZWxmU2VuZD86IGJvb2xlYW47XG4gICAgbm9ja091dHB1dEFkZHJlc3Nlcz86IGJvb2xlYW47XG4gICAgdHhGb3JtYXQ/OiBzdHJpbmc7XG4gIH0pOiBub2NrLlNjb3BlW10ge1xuICAgIGNvbnN0IG5vY2tzOiBub2NrLlNjb3BlW10gPSBbXTtcblxuICAgIC8vIE5vY2sgdGhlIHByZWJ1aWxkIHJvdXRlICgvdHgvYnVpbGQsIGJsb2NraGVpZ2h0KVxuICAgIGNvbnN0IGV4cGVjdGVkX3BhcmFtcyA9IHtcbiAgICAgIHJlY2lwaWVudHM6IFtwYXJhbXMucmVjaXBpZW50XSxcbiAgICAgIHJiZlR4SWRzOiBwYXJhbXMucmJmVHhJZHMsXG4gICAgICBmZWVNdWx0aXBsaWVyOiBwYXJhbXMuZmVlTXVsdGlwbGllcixcbiAgICAgIGNoYW5nZUFkZHJlc3NUeXBlOiBbJ3AydHJNdXNpZzInLCAncDJ3c2gnLCAncDJzaFAyd3NoJywgJ3Ayc2gnLCAncDJ0ciddLFxuICAgIH07XG4gICAgaWYgKHBhcmFtcy50eEZvcm1hdCkge1xuICAgICAgZXhwZWN0ZWRfcGFyYW1zWyd0eEZvcm1hdCddID0gcGFyYW1zLnR4Rm9ybWF0O1xuICAgIH1cbiAgICBub2Nrcy5wdXNoKFxuICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4L2J1aWxkYCwgZXhwZWN0ZWRfcGFyYW1zKVxuICAgICAgICAucmVwbHkoMjAwLCB7IHR4SGV4OiBwYXJhbXMucHJlYnVpbGQudG9IZXgoKSwgdHhJbmZvOiB7fSB9KVxuICAgICk7XG4gICAgbm9ja3MucHVzaChub2NrKHBhcmFtcy5iZ1VybCkuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS9wdWJsaWMvYmxvY2svbGF0ZXN0YCkucmVwbHkoMjAwLCB7IGhlaWdodDogMTAwMCB9KSk7XG5cbiAgICAvLyBub2NrIHRoZSBrZXljaGFpbiBmZXRjaCAtIDMgdGltZXMgKHByZWJ1aWxkQW5kU2lnbiwgdmVyaWZ5VHJhbnNhY3Rpb24sIGFuZCBzaWduVHJhbnNhY3Rpb24pXG4gICAgcGFyYW1zLmtleURvY3VtZW50cy5mb3JFYWNoKChrZXlEb2N1bWVudCkgPT4ge1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7a2V5RG9jdW1lbnQuaWR9YCkudGltZXMoMykucmVwbHkoMjAwLCBrZXlEb2N1bWVudClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBub2NrIHRoZSBhZGRyZXNzIGluZm8gZmV0Y2hcbiAgICBpZiAocGFyYW1zLm5vY2tPdXRwdXRBZGRyZXNzZXMpIHtcbiAgICAgIG5vY2tzLnB1c2goXG4gICAgICAgIG5vY2socGFyYW1zLmJnVXJsKVxuICAgICAgICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3BhcmFtcy53YWxsZXQuaWQoKX0vYWRkcmVzcy8ke3BhcmFtcy5hZGRyZXNzSW5mby5hZGRyZXNzfWApXG4gICAgICAgICAgLnJlcGx5KDIwMCwgcGFyYW1zLmFkZHJlc3NJbmZvKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4LyR7cGFyYW1zLnJiZlR4SWRzWzBdfT9pbmNsdWRlUmJmPXRydWVgKVxuICAgICAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogTnVtYmVyKHBhcmFtcy5yZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogcGFyYW1zLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICAgICAgd2FsbGV0OiBwYXJhbXMuc2VsZlNlbmQgPyBwYXJhbXMud2FsbGV0LmlkKCkgOiAnc29tZS1vdGhlci13YWxsZXQtaWQnLCAvLyBleHRlcm5hbCBvdXRwdXQgaWYgbm90IGEgc2VsZiBzZW5kXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8vIER1bW15IGNoYW5nZSBvdXRwdXQgdG8gdGVzdCB0cmFuc2ZlciBlbnRyaWVzIGZpbHRlcmluZ1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcGFyYW1zLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBOdW1iZXIocGFyYW1zLnJlY2lwaWVudC5hbW91bnQpLFxuICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiBwYXJhbXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgICAgICAgICAgICB3YWxsZXQ6IHBhcmFtcy53YWxsZXQuaWQoKSwgLy8gaW50ZXJuYWwgb3V0cHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vY2sgdGhlIGRldGVybWluaXN0aWMgbm9uY2UgcmVzcG9uc2VcbiAgICBpZiAoaW5wdXRTY3JpcHRzLmluY2x1ZGVzKCd0YXByb290S2V5UGF0aFNwZW5kJykpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSBwYXJhbXMucHJlYnVpbGQuY2xvbmUoKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy51c2VyKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy5iaXRnbyk7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC9zaWducHNidGAsIChib2R5KSA9PiBib2R5LnBzYnQpXG4gICAgICAgICAgLnJlcGx5KDIwMCwgeyBwc2J0OiBwc2J0LnRvSGV4KCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vY2tzO1xuICB9XG5cbiAgZGVzY3JpYmUoYCR7Y29pbi5nZXRGdWxsTmFtZSgpfS1wcmVidWlsZEFuZFNpZ24tdHhGb3JtYXQ9JHt0eEZvcm1hdH0taW5wdXRTY3JpcHRzPSR7aW5wdXRTY3JpcHRzLmpvaW4oXG4gICAgJywnXG4gICl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldCA9IGdldFV0eG9XYWxsZXQoY29pbiwge1xuICAgICAgY29pblNwZWNpZmljOiB7IGFkZHJlc3NWZXJzaW9uOiAnYmFzZTU4JyB9LFxuICAgICAga2V5czoga2V5RG9jdW1lbnRPYmplY3RzLm1hcCgoaykgPT4gay5pZCksXG4gICAgICBpZDogJ3dhbGxldElkJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tkZWZhdWx0Qml0R28uZ2V0RW52KCldLnVyaTtcbiAgICBsZXQgcHJlYnVpbGQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgbGV0IHJlY2lwaWVudDogeyBhZGRyZXNzOiBzdHJpbmc7IGFtb3VudDogc3RyaW5nIH07XG4gICAgbGV0IGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IGZlZSA9IEJpZ0ludCgxMDAwMCk7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gTWFrZSBvdXRwdXQgYWRkcmVzcyBpbmZvcm1hdGlvblxuICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gQmlnSW50KGlucHV0U2NyaXB0cy5sZW5ndGgpICogQmlnSW50KDFlOCkgLSBmZWU7XG4gICAgICBjb25zdCBvdXRwdXRTY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZSA9ICdwMnNoJztcbiAgICAgIGNvbnN0IG91dHB1dENoYWluID0gdXR4b2xpYi5iaXRnby5nZXRFeHRlcm5hbENoYWluQ29kZShvdXRwdXRTY3JpcHRUeXBlKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3MgPSB1dHhvbGliLmJpdGdvLmdldFdhbGxldEFkZHJlc3Mocm9vdFdhbGxldEtleXMsIG91dHB1dENoYWluLCAwLCBjb2luLm5ldHdvcmspO1xuXG4gICAgICByZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgYWRkcmVzc0luZm8gPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGNoYWluOiBvdXRwdXRDaGFpbixcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIGNvaW46IGNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQuaWQoKSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIHByZWJ1aWxkID0gY3JlYXRlUHJlYnVpbGRQc2J0KFxuICAgICAgICBpbnB1dFNjcmlwdHMubWFwKChzKSA9PiAoeyBzY3JpcHRUeXBlOiBzLCB2YWx1ZTogQmlnSW50KDFlOCkgfSkpLFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiBvdXRwdXRTY3JpcHRUeXBlLCB2YWx1ZTogb3V0cHV0QW1vdW50IH1dXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKG5vY2suY2xlYW5BbGwpO1xuXG4gICAgW3RydWUsIGZhbHNlXS5mb3JFYWNoKCh1c2VXZWJhdXRobikgPT4ge1xuICAgICAgaXQoYHNob3VsZCBzdWNjZWVkIHdpdGggJHt1c2VXZWJhdXRobiA/ICd3ZWJhdXRobiBlbmNyeXB0ZWRQcnYnIDogJ2VuY3J5cHRlZFBydid9YCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhbGxldC9jb2luIGNvbWJpbmF0aW9uIGRlZmF1bHRzIHRvIHBzYnRcbiAgICAgICAgY29uc3QgZGVmYXVsdFR4Rm9ybWF0ID0gY29pbi5nZXREZWZhdWx0VHhGb3JtYXQod2FsbGV0KTtcbiAgICAgICAgY29uc3Qgbm9ja3MgPSBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICBub2NrT3V0cHV0QWRkcmVzc2VzOiB0eEZvcm1hdCAhPT0gJ3BzYnQnLFxuICAgICAgICAgIHR4Rm9ybWF0OiBkZWZhdWx0VHhGb3JtYXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbGwgcHJlYnVpbGQgYW5kIHNpZ24sIG5vY2tzIHNob3VsZCBiZSBjb25zdW1lZFxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgd2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB1c2VXZWJhdXRobiA/IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA6IHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pKSBhcyBIYWxmU2lnbmVkVXR4b1RyYW5zYWN0aW9uO1xuXG4gICAgICAgIG5vY2tzLmZvckVhY2goKG5vY2spID0+IGFzc2VydC5vayhub2NrLmlzRG9uZSgpKSk7XG5cbiAgICAgICAgYXNzZXJ0U2lnbmFibGUocmVzLnR4SGV4LCBpbnB1dFNjcmlwdHMsIGNvaW4ubmV0d29yayk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGlmIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBpcyBpbmNvcnJlY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM6IHR4Rm9ybWF0ICE9PSAncHNidCcsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgIC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBbdHJ1ZSwgZmFsc2VdLmZvckVhY2goKHNlbGZTZW5kKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQsIHNpZ24sICYgdmVyaWZ5IGEgcmVwbGFjZW1lbnQgdHJhbnNhY3Rpb24gd2l0aCBzZWxmU2VuZDogJHtzZWxmU2VuZH1gLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJiZlR4SWRzID0gWyd0eC10by1iZS1yZXBsYWNlZCddLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIgPSAxLjU7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgd2FsbGV0L2NvaW4gY29tYmluYXRpb24gZGVmYXVsdHMgdG8gcHNidFxuICAgICAgICBjb25zdCBkZWZhdWx0VHhGb3JtYXQgPSBjb2luLmdldERlZmF1bHRUeEZvcm1hdCh3YWxsZXQpO1xuICAgICAgICBjb25zdCBub2NrcyA9IGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIHJiZlR4SWRzLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIsXG4gICAgICAgICAgc2VsZlNlbmQsXG4gICAgICAgICAgbm9ja091dHB1dEFkZHJlc3NlczogdHhGb3JtYXQgIT09ICdwc2J0JyxcbiAgICAgICAgICB0eEZvcm1hdDogZGVmYXVsdFR4Rm9ybWF0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBjYWxsIHByZWJ1aWxkIGFuZCBzaWduLCBub2NrcyBzaG91bGQgYmUgY29uc3VtZWRcbiAgICAgICAgY29uc3QgcmVzID0gKGF3YWl0IHdhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICByYmZUeElkcyxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyLFxuICAgICAgICB9KSkgYXMgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbjtcblxuICAgICAgICBub2Nrcy5mb3JFYWNoKChub2NrKSA9PiBhc3NlcnQub2sobm9jay5pc0RvbmUoKSkpO1xuXG4gICAgICAgIGFzc2VydFNpZ25hYmxlKHJlcy50eEhleCwgaW5wdXRTY3JpcHRzLCBjb2luLm5ldHdvcmspO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG51dHhvQ29pbnNcbiAgLmZpbHRlcigoY29pbikgPT4gdXR4b2xpYi5nZXRNYWlubmV0KGNvaW4ubmV0d29yaykgIT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2KVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIHNjcmlwdFR5cGVzXG4gICAgICAvLyBEb24ndCBpdGVyYXRlIG92ZXIgcDJzaFAycGsgLSBpbiBubyBzY2VuYXJpbyB3b3VsZCBhIHdhbGxldCBzcGVuZCB0d28gcDJzaFAycGsgaW5wdXRzIGFzIHRoZXNlXG4gICAgICAvLyBhcmUgc2luZ2xlIHNpZ25hdHVyZSBpbnB1dHMgdGhhdCBhcmUgdXNlZCBmb3IgcmVwbGF5IHByb3RlY3Rpb24gYW5kIGFyZSBhZGRlZCB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIGJ5IG91ciBzeXN0ZW0gZnJvbSBhIHNlcGFyYXRlIHdhbGxldC4gV2UgZG8gcnVuIHRlc3RzIGJlbG93IHdoZXJlIG9uZSBvZiB0aGUgaW5wdXRzIGlzIGEgcDJzaFAycGsgYW5kXG4gICAgICAvLyB0aGUgb3RoZXIgaXMgYW4gaW5wdXQgc3BlbnQgYnkgdGhlIHVzZXIuXG4gICAgICAuZmlsdGVyKChzY3JpcHRUeXBlKSA9PiBzY3JpcHRUeXBlICE9PSAncDJzaFAycGsnKVxuICAgICAgLmZvckVhY2goKGlucHV0U2NyaXB0KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0U2NyaXB0Q2xlYW5lZCA9IChcbiAgICAgICAgICBpbnB1dFNjcmlwdCA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnID8gJ3AydHJNdXNpZzInIDogaW5wdXRTY3JpcHRcbiAgICAgICAgKSBhcyB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbiAgICAgICAgaWYgKCFjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUoaW5wdXRTY3JpcHRDbGVhbmVkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bihjb2luLCBbaW5wdXRTY3JpcHQsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgaWYgKGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbi5uZXR3b3JrKS5sZW5ndGgpIHtcbiAgICAgICAgICBydW4oY29pbiwgWydwMnNoUDJwaycsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuIl19
270
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyx5REFBMkM7QUFDM0MsNkJBQThCO0FBQzlCLDhDQUE0RTtBQUM1RSw4Q0FBMEM7QUFFMUMsbUNBQTJFO0FBRTNFLGlDQUF3SDtBQUV4SCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQVUsQ0FBQztBQVc5QyxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLG1CQUFtQixDQUFDO0FBRXJELE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFRakgsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQTBCLEVBQUUsT0FBd0I7SUFDM0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLDJEQUEyRDtJQUMzRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFDL0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsNkJBQTZCLEVBQUUs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dCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBjb21tb24sIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb24sIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgZ2V0UmVwbGF5UHJvdGVjdGlvbkFkZHJlc3NlcyB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGRlZmF1bHRCaXRHbywgZW5jcnlwdEtleWNoYWluLCBnZXREZWZhdWx0V2FsbGV0S2V5cywgZ2V0VXR4b1dhbGxldCwga2V5Y2hhaW5zQmFzZTU4LCB1dHhvQ29pbnMgfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB0eEZvcm1hdHMgPSBbJ2xlZ2FjeScsICdwc2J0J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBUeEZvcm1hdCA9ICh0eXBlb2YgdHhGb3JtYXRzKVtudW1iZXJdO1xuXG50eXBlIEtleURvYyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBhbnk7XG59O1xuXG5jb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2dhYmFnb29sJztcbmNvbnN0IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA9ICdqdXN0IHRoZSBnYWJhZ29vbCc7XG5cbmNvbnN0IHNjcmlwdFR5cGVzID0gWy4uLnV0eG9saWIuYml0Z28ub3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlczJPZjMsICd0YXByb290S2V5UGF0aFNwZW5kJywgJ3Ayc2hQMnBrJ10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBTY3JpcHRUeXBlID0gKHR5cGVvZiBzY3JpcHRUeXBlcylbbnVtYmVyXTtcblxudHlwZSBJbnB1dCA9IHtcbiAgc2NyaXB0VHlwZTogU2NyaXB0VHlwZTtcbiAgdmFsdWU6IGJpZ2ludDtcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFNpZ25hYmxlKHBzYnRIZXg6IHN0cmluZywgaW5wdXRTY3JpcHRzOiBTY3JpcHRUeXBlW10sIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IHZvaWQge1xuICBjb25zdCBwc2J0ID0gdXR4b2xpYi5iaXRnby5jcmVhdGVQc2J0RnJvbUhleChwc2J0SGV4LCBuZXR3b3JrKTtcbiAgLy8gTWFrZSBzdXJlIHRoYXQgeW91IGNhbiBzaWduIHdpdGggYml0Z28ga2V5IGFuZCBleHRyYWN0IHRoZSB0cmFuc2FjdGlvblxuICAvLyBObyBzaWduYXR1cmVzIHNob3VsZCBiZSBwcmVzZW50IGlmIGl0J3MgYSBwMnNoUDJwayBpbnB1dFxuICBpZiAoIWlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJzaFAycGsnKSkge1xuICAgIGNvbnN0IGtleSA9IGlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJ0ck11c2lnMicpID8gcm9vdFdhbGxldEtleXMuYmFja3VwIDogcm9vdFdhbGxldEtleXMuYml0Z287XG4gICAgcHNidC5zaWduQWxsSW5wdXRzSEQoa2V5LCB7IGRldGVybWluaXN0aWM6IHRydWUgfSk7XG4gICAgcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICAgIHBzYnQuZmluYWxpemVBbGxJbnB1dHMoKTtcbiAgICBjb25zdCB0eCA9IHBzYnQuZXh0cmFjdFRyYW5zYWN0aW9uKCk7XG4gICAgYXNzZXJ0Lm9rKHR4KTtcbiAgfVxufVxuXG4vLyBCdWlsZCB0aGUga2V5IG9iamVjdHNcbmNvbnN0IHJvb3RXYWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbmNvbnN0IGtleURvY3VtZW50T2JqZWN0cyA9IHJvb3RXYWxsZXRLZXlzLnRyaXBsZS5tYXAoKGJpcDMyLCBrZXlJZHgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogZ2V0U2VlZChrZXljaGFpbnNCYXNlNThba2V5SWR4XS5wdWIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICBwdWI6IGJpcDMyLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgICBzb3VyY2U6IFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVtrZXlJZHhdLFxuICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdhbGxldFBhc3NwaHJhc2UsIGtleWNoYWluc0Jhc2U1OFtrZXlJZHhdKSxcbiAgICB3ZWJhdXRobkRldmljZXM6IFtcbiAgICAgIHtcbiAgICAgICAgb3RwRGV2aWNlSWQ6ICcxMjMnLFxuICAgICAgICBhdXRoZW50aWNhdG9ySW5mbzoge1xuICAgICAgICAgIGNyZWRJRDogJ2NyZWRJRCcsXG4gICAgICAgICAgZm10OiAncGFja2VkJyxcbiAgICAgICAgICBwdWJsaWNLZXk6ICdzb21lIHZhbHVlJyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJmU2FsdDogJzQ1NicsXG4gICAgICAgIGVuY3J5cHRlZFBydjogZW5jcnlwdEtleWNoYWluKHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSwga2V5Y2hhaW5zQmFzZTU4W2tleUlkeF0pLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGNvaW5TcGVjaWZpYzoge30sXG4gIH07XG59KTtcblxuZnVuY3Rpb24gcnVuKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIGlucHV0U2NyaXB0czogU2NyaXB0VHlwZVtdLCB0eEZvcm1hdDogVHhGb3JtYXQpOiB2b2lkIHtcbiAgZnVuY3Rpb24gY3JlYXRlUHJlYnVpbGRQc2J0KGlucHV0czogSW5wdXRbXSwgb3V0cHV0czogeyBzY3JpcHRUeXBlOiAncDJzaCc7IHZhbHVlOiBiaWdpbnQgfVtdKSB7XG4gICAgY29uc3QgcHNidCA9IHV0eG9saWIudGVzdHV0aWwuY29uc3RydWN0UHNidChcbiAgICAgIGlucHV0cyBhcyB1dHhvbGliLnRlc3R1dGlsLklucHV0W10sXG4gICAgICBvdXRwdXRzLFxuICAgICAgY29pbi5uZXR3b3JrLFxuICAgICAgcm9vdFdhbGxldEtleXMsXG4gICAgICAndW5zaWduZWQnXG4gICAgKTtcbiAgICB1dHhvbGliLmJpdGdvLmFkZFhwdWJzVG9Qc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzKTtcbiAgICByZXR1cm4gcHNidDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU5vY2tzKHBhcmFtczoge1xuICAgIGJnVXJsOiBzdHJpbmc7XG4gICAgd2FsbGV0OiBXYWxsZXQ7XG4gICAga2V5RG9jdW1lbnRzOiBLZXlEb2NbXTtcbiAgICBwcmVidWlsZDogdXR4b2xpYi5iaXRnby5VdHhvUHNidDtcbiAgICByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xuICAgIGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIHJiZlR4SWRzPzogc3RyaW5nW107XG4gICAgZmVlTXVsdGlwbGllcj86IG51bWJlcjtcbiAgICBzZWxmU2VuZD86IGJvb2xlYW47XG4gICAgbm9ja091dHB1dEFkZHJlc3Nlcz86IGJvb2xlYW47XG4gICAgdHhGb3JtYXQ/OiBzdHJpbmc7XG4gIH0pOiBub2NrLlNjb3BlW10ge1xuICAgIGNvbnN0IG5vY2tzOiBub2NrLlNjb3BlW10gPSBbXTtcblxuICAgIC8vIE5vY2sgdGhlIHByZWJ1aWxkIHJvdXRlICgvdHgvYnVpbGQsIGJsb2NraGVpZ2h0KVxuICAgIGNvbnN0IGV4cGVjdGVkX3BhcmFtcyA9IHtcbiAgICAgIHJlY2lwaWVudHM6IFtwYXJhbXMucmVjaXBpZW50XSxcbiAgICAgIHJiZlR4SWRzOiBwYXJhbXMucmJmVHhJZHMsXG4gICAgICBmZWVNdWx0aXBsaWVyOiBwYXJhbXMuZmVlTXVsdGlwbGllcixcbiAgICAgIGNoYW5nZUFkZHJlc3NUeXBlOiBbJ3AydHJNdXNpZzInLCAncDJ3c2gnLCAncDJzaFAyd3NoJywgJ3Ayc2gnLCAncDJ0ciddLFxuICAgIH07XG4gICAgaWYgKHBhcmFtcy50eEZvcm1hdCkge1xuICAgICAgZXhwZWN0ZWRfcGFyYW1zWyd0eEZvcm1hdCddID0gcGFyYW1zLnR4Rm9ybWF0O1xuICAgIH1cbiAgICBub2Nrcy5wdXNoKFxuICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgIC5wb3N0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4L2J1aWxkYCwgZXhwZWN0ZWRfcGFyYW1zKVxuICAgICAgICAucmVwbHkoMjAwLCB7IHR4SGV4OiBwYXJhbXMucHJlYnVpbGQudG9IZXgoKSwgdHhJbmZvOiB7fSB9KVxuICAgICk7XG4gICAgbm9ja3MucHVzaChub2NrKHBhcmFtcy5iZ1VybCkuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS9wdWJsaWMvYmxvY2svbGF0ZXN0YCkucmVwbHkoMjAwLCB7IGhlaWdodDogMTAwMCB9KSk7XG5cbiAgICAvLyBub2NrIHRoZSBrZXljaGFpbiBmZXRjaCAtIDMgdGltZXMgKHByZWJ1aWxkQW5kU2lnbiwgdmVyaWZ5VHJhbnNhY3Rpb24sIGFuZCBzaWduVHJhbnNhY3Rpb24pXG4gICAgcGFyYW1zLmtleURvY3VtZW50cy5mb3JFYWNoKChrZXlEb2N1bWVudCkgPT4ge1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7a2V5RG9jdW1lbnQuaWR9YCkudGltZXMoMykucmVwbHkoMjAwLCBrZXlEb2N1bWVudClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvLyBub2NrIHRoZSBhZGRyZXNzIGluZm8gZmV0Y2hcbiAgICBpZiAocGFyYW1zLm5vY2tPdXRwdXRBZGRyZXNzZXMpIHtcbiAgICAgIG5vY2tzLnB1c2goXG4gICAgICAgIG5vY2socGFyYW1zLmJnVXJsKVxuICAgICAgICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3BhcmFtcy53YWxsZXQuaWQoKX0vYWRkcmVzcy8ke3BhcmFtcy5hZGRyZXNzSW5mby5hZGRyZXNzfWApXG4gICAgICAgICAgLnJlcGx5KDIwMCwgcGFyYW1zLmFkZHJlc3NJbmZvKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnJiZlR4SWRzKSB7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L3R4LyR7cGFyYW1zLnJiZlR4SWRzWzBdfT9pbmNsdWRlUmJmPXRydWVgKVxuICAgICAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogTnVtYmVyKHBhcmFtcy5yZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogcGFyYW1zLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICAgICAgd2FsbGV0OiBwYXJhbXMuc2VsZlNlbmQgPyBwYXJhbXMud2FsbGV0LmlkKCkgOiAnc29tZS1vdGhlci13YWxsZXQtaWQnLCAvLyBleHRlcm5hbCBvdXRwdXQgaWYgbm90IGEgc2VsZiBzZW5kXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIC8vIER1bW15IGNoYW5nZSBvdXRwdXQgdG8gdGVzdCB0cmFuc2ZlciBlbnRyaWVzIGZpbHRlcmluZ1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgYWRkcmVzczogcGFyYW1zLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBOdW1iZXIocGFyYW1zLnJlY2lwaWVudC5hbW91bnQpLFxuICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nOiBwYXJhbXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgICAgICAgICAgICB3YWxsZXQ6IHBhcmFtcy53YWxsZXQuaWQoKSwgLy8gaW50ZXJuYWwgb3V0cHV0XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIG5vY2sgdGhlIGRldGVybWluaXN0aWMgbm9uY2UgcmVzcG9uc2VcbiAgICBpZiAoaW5wdXRTY3JpcHRzLmluY2x1ZGVzKCd0YXByb290S2V5UGF0aFNwZW5kJykpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSBwYXJhbXMucHJlYnVpbGQuY2xvbmUoKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy51c2VyKTtcbiAgICAgIHBzYnQuc2V0QWxsSW5wdXRzTXVzaWcyTm9uY2VIRChyb290V2FsbGV0S2V5cy5iaXRnbyk7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAucG9zdChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC9zaWducHNidGAsIChib2R5KSA9PiBib2R5LnBzYnQpXG4gICAgICAgICAgLnJlcGx5KDIwMCwgeyBwc2J0OiBwc2J0LnRvSGV4KCkgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vY2tzO1xuICB9XG5cbiAgZGVzY3JpYmUoYCR7Y29pbi5nZXRGdWxsTmFtZSgpfS1wcmVidWlsZEFuZFNpZ24tdHhGb3JtYXQ9JHt0eEZvcm1hdH0taW5wdXRTY3JpcHRzPSR7aW5wdXRTY3JpcHRzLmpvaW4oXG4gICAgJywnXG4gICl9YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldCA9IGdldFV0eG9XYWxsZXQoY29pbiwge1xuICAgICAgY29pblNwZWNpZmljOiB7IGFkZHJlc3NWZXJzaW9uOiAnYmFzZTU4JyB9LFxuICAgICAga2V5czoga2V5RG9jdW1lbnRPYmplY3RzLm1hcCgoaykgPT4gay5pZCksXG4gICAgICBpZDogJ3dhbGxldElkJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGJnVXJsID0gY29tbW9uLkVudmlyb25tZW50c1tkZWZhdWx0Qml0R28uZ2V0RW52KCldLnVyaTtcbiAgICBsZXQgcHJlYnVpbGQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgbGV0IHJlY2lwaWVudDogeyBhZGRyZXNzOiBzdHJpbmc7IGFtb3VudDogc3RyaW5nIH07XG4gICAgbGV0IGFkZHJlc3NJbmZvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGNvbnN0IGZlZSA9IEJpZ0ludCgxMDAwMCk7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gTWFrZSBvdXRwdXQgYWRkcmVzcyBpbmZvcm1hdGlvblxuICAgICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gQmlnSW50KGlucHV0U2NyaXB0cy5sZW5ndGgpICogQmlnSW50KDFlOCkgLSBmZWU7XG4gICAgICBjb25zdCBvdXRwdXRTY3JpcHRUeXBlOiB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZSA9ICdwMnNoJztcbiAgICAgIGNvbnN0IG91dHB1dENoYWluID0gdXR4b2xpYi5iaXRnby5nZXRFeHRlcm5hbENoYWluQ29kZShvdXRwdXRTY3JpcHRUeXBlKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3MgPSB1dHhvbGliLmJpdGdvLmdldFdhbGxldEFkZHJlc3Mocm9vdFdhbGxldEtleXMsIG91dHB1dENoYWluLCAwLCBjb2luLm5ldHdvcmspO1xuXG4gICAgICByZWNpcGllbnQgPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgYWRkcmVzc0luZm8gPSB7XG4gICAgICAgIGFkZHJlc3M6IG91dHB1dEFkZHJlc3MsXG4gICAgICAgIGNoYWluOiBvdXRwdXRDaGFpbixcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIGNvaW46IGNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgICAgd2FsbGV0OiB3YWxsZXQuaWQoKSxcbiAgICAgICAgY29pblNwZWNpZmljOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIHByZWJ1aWxkID0gY3JlYXRlUHJlYnVpbGRQc2J0KFxuICAgICAgICBpbnB1dFNjcmlwdHMubWFwKChzKSA9PiAoeyBzY3JpcHRUeXBlOiBzLCB2YWx1ZTogQmlnSW50KDFlOCkgfSkpLFxuICAgICAgICBbeyBzY3JpcHRUeXBlOiBvdXRwdXRTY3JpcHRUeXBlLCB2YWx1ZTogb3V0cHV0QW1vdW50IH1dXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKG5vY2suY2xlYW5BbGwpO1xuXG4gICAgW3RydWUsIGZhbHNlXS5mb3JFYWNoKCh1c2VXZWJhdXRobikgPT4ge1xuICAgICAgaXQoYHNob3VsZCBzdWNjZWVkIHdpdGggJHt1c2VXZWJhdXRobiA/ICd3ZWJhdXRobiBlbmNyeXB0ZWRQcnYnIDogJ2VuY3J5cHRlZFBydid9YCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhbGxldC9jb2luIGNvbWJpbmF0aW9uIGRlZmF1bHRzIHRvIHBzYnRcbiAgICAgICAgY29uc3QgZGVmYXVsdFR4Rm9ybWF0ID0gY29pbi5nZXREZWZhdWx0VHhGb3JtYXQod2FsbGV0KTtcbiAgICAgICAgY29uc3Qgbm9ja3MgPSBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICBub2NrT3V0cHV0QWRkcmVzc2VzOiB0eEZvcm1hdCAhPT0gJ3BzYnQnLFxuICAgICAgICAgIHR4Rm9ybWF0OiBkZWZhdWx0VHhGb3JtYXQsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbGwgcHJlYnVpbGQgYW5kIHNpZ24sIG5vY2tzIHNob3VsZCBiZSBjb25zdW1lZFxuICAgICAgICBjb25zdCByZXMgPSAoYXdhaXQgd2FsbGV0LnByZWJ1aWxkQW5kU2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiB1c2VXZWJhdXRobiA/IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA6IHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIH0pKSBhcyBIYWxmU2lnbmVkVXR4b1RyYW5zYWN0aW9uO1xuXG4gICAgICAgIG5vY2tzLmZvckVhY2goKG5vY2spID0+IGFzc2VydC5vayhub2NrLmlzRG9uZSgpKSk7XG5cbiAgICAgICAgYXNzZXJ0U2lnbmFibGUocmVzLnR4SGV4LCBpbnB1dFNjcmlwdHMsIGNvaW4ubmV0d29yayk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIGlmIHRoZSB3YWxsZXQgcGFzc3BocmFzZSBpcyBpbmNvcnJlY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM6IHR4Rm9ybWF0ICE9PSAncHNidCcsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHdhbGxldFxuICAgICAgICAgIC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgICByZWNpcGllbnRzOiBbcmVjaXBpZW50XSxcbiAgICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2U6IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCd1bmFibGUgdG8gZGVjcnlwdCBrZXljaGFpbiB3aXRoIHRoZSBnaXZlbiB3YWxsZXQgcGFzc3BocmFzZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBbdHJ1ZSwgZmFsc2VdLmZvckVhY2goKHNlbGZTZW5kKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQsIHNpZ24sICYgdmVyaWZ5IGEgcmVwbGFjZW1lbnQgdHJhbnNhY3Rpb24gd2l0aCBzZWxmU2VuZDogJHtzZWxmU2VuZH1gLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHJiZlR4SWRzID0gWyd0eC10by1iZS1yZXBsYWNlZCddLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIgPSAxLjU7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgd2FsbGV0L2NvaW4gY29tYmluYXRpb24gZGVmYXVsdHMgdG8gcHNidFxuICAgICAgICBjb25zdCBkZWZhdWx0VHhGb3JtYXQgPSBjb2luLmdldERlZmF1bHRUeEZvcm1hdCh3YWxsZXQpO1xuICAgICAgICBjb25zdCBub2NrcyA9IGNyZWF0ZU5vY2tzKHtcbiAgICAgICAgICBiZ1VybCxcbiAgICAgICAgICB3YWxsZXQsXG4gICAgICAgICAga2V5RG9jdW1lbnRzOiBrZXlEb2N1bWVudE9iamVjdHMsXG4gICAgICAgICAgcHJlYnVpbGQsXG4gICAgICAgICAgcmVjaXBpZW50LFxuICAgICAgICAgIGFkZHJlc3NJbmZvLFxuICAgICAgICAgIHJiZlR4SWRzLFxuICAgICAgICAgIGZlZU11bHRpcGxpZXIsXG4gICAgICAgICAgc2VsZlNlbmQsXG4gICAgICAgICAgbm9ja091dHB1dEFkZHJlc3NlczogdHhGb3JtYXQgIT09ICdwc2J0JyxcbiAgICAgICAgICB0eEZvcm1hdDogZGVmYXVsdFR4Rm9ybWF0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBjYWxsIHByZWJ1aWxkIGFuZCBzaWduLCBub2NrcyBzaG91bGQgYmUgY29uc3VtZWRcbiAgICAgICAgY29uc3QgcmVzID0gKGF3YWl0IHdhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgICByYmZUeElkcyxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyLFxuICAgICAgICB9KSkgYXMgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbjtcblxuICAgICAgICBub2Nrcy5mb3JFYWNoKChub2NrKSA9PiBhc3NlcnQub2sobm9jay5pc0RvbmUoKSkpO1xuXG4gICAgICAgIGFzc2VydFNpZ25hYmxlKHJlcy50eEhleCwgaW5wdXRTY3JpcHRzLCBjb2luLm5ldHdvcmspO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG51dHhvQ29pbnNcbiAgLmZpbHRlcigoY29pbikgPT4gdXR4b2xpYi5nZXRNYWlubmV0KGNvaW4ubmV0d29yaykgIT09IHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2KVxuICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgIHNjcmlwdFR5cGVzXG4gICAgICAvLyBEb24ndCBpdGVyYXRlIG92ZXIgcDJzaFAycGsgLSBpbiBubyBzY2VuYXJpbyB3b3VsZCBhIHdhbGxldCBzcGVuZCB0d28gcDJzaFAycGsgaW5wdXRzIGFzIHRoZXNlXG4gICAgICAvLyBhcmUgc2luZ2xlIHNpZ25hdHVyZSBpbnB1dHMgdGhhdCBhcmUgdXNlZCBmb3IgcmVwbGF5IHByb3RlY3Rpb24gYW5kIGFyZSBhZGRlZCB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIGJ5IG91ciBzeXN0ZW0gZnJvbSBhIHNlcGFyYXRlIHdhbGxldC4gV2UgZG8gcnVuIHRlc3RzIGJlbG93IHdoZXJlIG9uZSBvZiB0aGUgaW5wdXRzIGlzIGEgcDJzaFAycGsgYW5kXG4gICAgICAvLyB0aGUgb3RoZXIgaXMgYW4gaW5wdXQgc3BlbnQgYnkgdGhlIHVzZXIuXG4gICAgICAuZmlsdGVyKChzY3JpcHRUeXBlKSA9PiBzY3JpcHRUeXBlICE9PSAncDJzaFAycGsnKVxuICAgICAgLmZvckVhY2goKGlucHV0U2NyaXB0KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0U2NyaXB0Q2xlYW5lZCA9IChcbiAgICAgICAgICBpbnB1dFNjcmlwdCA9PT0gJ3RhcHJvb3RLZXlQYXRoU3BlbmQnID8gJ3AydHJNdXNpZzInIDogaW5wdXRTY3JpcHRcbiAgICAgICAgKSBhcyB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbiAgICAgICAgaWYgKCFjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUoaW5wdXRTY3JpcHRDbGVhbmVkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bihjb2luLCBbaW5wdXRTY3JpcHQsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgaWYgKGdldFJlcGxheVByb3RlY3Rpb25BZGRyZXNzZXMoY29pbi5uYW1lKS5sZW5ndGgpIHtcbiAgICAgICAgICBydW4oY29pbiwgWydwMnNoUDJwaycsIGlucHV0U2NyaXB0XSwgJ3BzYnQnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH0pO1xuIl19
@@ -43,6 +43,7 @@ const nock = require("nock");
43
43
  const utxolib = __importStar(require("@bitgo/utxo-lib"));
44
44
  const sdk_core_1 = require("@bitgo/sdk-core");
45
45
  const unspents_1 = require("@bitgo/unspents");
46
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
46
47
  const src_1 = require("../../../src");
47
48
  const util_1 = require("../util");
48
49
  const mock_1 = require("./mock");
@@ -161,7 +162,19 @@ function run(coin, scriptTypes, walletKeys, params, tags = []) {
161
162
  const inputSum = utxolib.bitgo.unspentSum(recoverUnspents, 'bigint');
162
163
  const outputSum = recoveryTx.txOutputs.reduce((sum, o) => sum + o.value, BigInt(0));
163
164
  const fee = inputSum - outputSum;
164
- const vsize = unspents_1.Dimensions.fromPsbt(recoveryTx).getVSize();
165
+ // Use wasm-utxo Dimensions for testnet (matches how fee was calculated), utxolib Dimensions for mainnet
166
+ let vsize;
167
+ if (utxolib.isTestnet(coin.network)) {
168
+ const networkName = utxolib.getNetworkName(coin.network);
169
+ if (!networkName) {
170
+ throw new Error('Invalid network');
171
+ }
172
+ const wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(new Uint8Array(recoveryTx.toBuffer()), networkName);
173
+ vsize = wasm_utxo_1.fixedScriptWallet.Dimensions.fromPsbt(wasmPsbt).getVSize();
174
+ }
175
+ else {
176
+ vsize = unspents_1.Dimensions.fromPsbt(recoveryTx).getVSize();
177
+ }
165
178
  const feeRateSatB = Number(fee) / vsize;
166
179
  const diff = Math.abs(feeRateSatB - defaultFeeRateSatB) / defaultFeeRateSatB;
167
180
  // within 1%
@@ -293,4 +306,4 @@ describe('Backup Key Recovery', function () {
293
306
  // taproot compatible coins
294
307
  runWithScriptTypes(['p2tr', 'p2trMusig2'], { runKeyProviderTests: false });
295
308
  });
296
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsa0JBQWdCO0FBRWhCLDZDQUErQjtBQUMvQiw2QkFBOEI7QUFFOUIseURBQTJDO0FBQzNDLDhDQUErRDtBQUMvRCw4Q0FBNkM7QUFFN0Msc0NBTXNCO0FBQ3RCLGtDQVlpQjtBQUVqQixpQ0FBOEM7QUFFOUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7QUFLbkMsTUFBTSxNQUFNLEdBQUcsRUFBRSxZQUFZLEVBQVosdUJBQVksRUFBRSxDQUFDO0FBRWhDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBRXpCLFNBQVMsY0FBYyxDQUFDLENBQTJCO0lBQ2pELE1BQU0sTUFBTSxHQUFHLEVBQUUsR0FBRyx1QkFBWSxFQUFFLENBQUM7SUFDbkMsTUFBTSxDQUFDO1FBQ0wsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBQUM7SUFDSCxLQUFLLENBQUM7UUFDSixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0FBUS9CLFNBQVMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQXlCLEVBQUUsUUFBZ0I7SUFDNUYsU0FB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b0IsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUM1RCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsUUFBUSxDQUFDLHFCQUFxQixFQUFFO0lBQzlCLDRCQUE0QjtJQUM1QixrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFN0IsMEJBQTBCO0lBQzFCLGtCQUFrQixDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFFM0MsMkJBQTJCO0lBQzNCLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUM3RSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgbW9jaGEgZnJvbSAnbW9jaGEnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5pbXBvcnQgeyBDb25maWcsIGtyc1Byb3ZpZGVycywgVHJpcGxlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IERpbWVuc2lvbnMgfSBmcm9tICdAYml0Z28vdW5zcGVudHMnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdFV0eG9Db2luLFxuICBiYWNrdXBLZXlSZWNvdmVyeSxcbiAgQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbixcbiAgQ29pbmdlY2tvQXBpLFxuICBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8sXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQge1xuICBkZWZhdWx0Qml0R28sXG4gIGVuY3J5cHRLZXljaGFpbixcbiAgZ2V0RGVmYXVsdFdhbGxldEtleXMsXG4gIGdldEZpeHR1cmUsXG4gIGdldE5vcm1hbFRlc3RuZXRDb2luLFxuICBnZXRXYWxsZXRBZGRyZXNzLFxuICBnZXRXYWxsZXRLZXlzLFxuICBrZXljaGFpbnMsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdG9LZXljaGFpbkJhc2U1OCxcbiAgdXR4b0NvaW5zLFxufSBmcm9tICcuLi91dGlsJztcblxuaW1wb3J0IHsgTW9ja1JlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG5jb25zdCB7IHRvT3V0cHV0IH0gPSB1dHhvbGliLmJpdGdvO1xudHlwZSBXYWxsZXRVbnNwZW50ID0gdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50PGJpZ2ludD47XG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbmNvbnN0IGNvbmZpZyA9IHsga3JzUHJvdmlkZXJzIH07XG5cbm5vY2suZGlzYWJsZU5ldENvbm5lY3QoKTtcblxuZnVuY3Rpb24gY29uZmlnT3ZlcnJpZGUoZjogKGNvbmZpZzogQ29uZmlnKSA9PiB2b2lkKSB7XG4gIGNvbnN0IGJhY2t1cCA9IHsgLi4ua3JzUHJvdmlkZXJzIH07XG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgZihjb25maWcpO1xuICB9KTtcbiAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5lbnRyaWVzKGJhY2t1cCkuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICBjb25maWdba10gPSB2O1xuICAgIH0pO1xuICB9KTtcbn1cblxuY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdsb2wnO1xuXG50eXBlIE5hbWVkS2V5cyA9IHtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldE5hbWVkS2V5cyhbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV06IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sIHBhc3N3b3JkOiBzdHJpbmcpOiBOYW1lZEtleXMge1xuICBmdW5jdGlvbiBlbmNvZGUoazogQklQMzJJbnRlcmZhY2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBrLmlzTmV1dGVyZWQoKSA/IGsudG9CYXNlNTgoKSA6IGVuY3J5cHRLZXljaGFpbihwYXNzd29yZCwgdG9LZXljaGFpbkJhc2U1OChrKSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB1c2VyS2V5OiBlbmNvZGUodXNlcktleSksXG4gICAgYmFja3VwS2V5OiBlbmNvZGUoYmFja3VwS2V5KSxcbiAgICBiaXRnb0tleTogZW5jb2RlKGJpdGdvS2V5KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvclVuc2lnbmVkU3dlZXAoW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LCBwYXNzd29yZDogc3RyaW5nKTogTmFtZWRLZXlzIHtcbiAgcmV0dXJuIGdldE5hbWVkS2V5cyhbdXNlcktleS5uZXV0ZXJlZCgpLCBiYWNrdXBLZXkubmV1dGVyZWQoKSwgYml0Z29LZXkubmV1dGVyZWQoKV0sIHBhc3N3b3JkKTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvcktleVJlY292ZXJ5U2VydmljZShcbiAgW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBOYW1lZEtleXMge1xuICByZXR1cm4gZ2V0TmFtZWRLZXlzKFt1c2VyS2V5LCBiYWNrdXBLZXkubmV1dGVyZWQoKSwgYml0Z29LZXkubmV1dGVyZWQoKV0sIHBhc3N3b3JkKTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeShcbiAgW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBOYW1lZEtleXMge1xuICByZXR1cm4gZ2V0TmFtZWRLZXlzKFt1c2VyS2V5LCBiYWNrdXBLZXksIGJpdGdvS2V5Lm5ldXRlcmVkKCldLCBwYXNzd29yZCk7XG59XG5cbmNvbnN0IHdhbGxldEtleXMgPSBnZXREZWZhdWx0V2FsbGV0S2V5cygpO1xuY29uc3Qga2V5c1Vuc2lnbmVkU3dlZXAgPSBnZXRLZXlzRm9yVW5zaWduZWRTd2VlcCh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5jb25zdCBrZXlzS2V5UmVjb3ZlcnlTZXJ2aWNlID0gZ2V0S2V5c0ZvcktleVJlY292ZXJ5U2VydmljZSh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5jb25zdCBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5ID0gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeSh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5cbmNvbnN0IGV4b3RpY1VzZXJLZXlQYXRoID0gJzk5Lzk5JztcbmNvbnN0IGV4b3RpY1dhbGxldEtleXMgPSBuZXcgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyhrZXljaGFpbnMsIFtcbiAgZXhvdGljVXNlcktleVBhdGgsXG4gIHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuXSk7XG5jb25zdCBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5RXhvdGljID0gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeShleG90aWNXYWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5cbmZ1bmN0aW9uIHJ1bihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgc2NyaXB0VHlwZXM6IFNjcmlwdFR5cGUyT2YzW10sXG4gIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBwYXJhbXM6IHtcbiAgICBrZXlzOiBOYW1lZEtleXM7XG4gICAgdXNlcktleVBhdGg/OiBzdHJpbmc7XG4gICAga3JzUHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgaGFzVXNlclNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBoYXNCYWNrdXBTaWduYXR1cmU6IGJvb2xlYW47XG4gICAgaGFzS3JzT3V0cHV0PzogYm9vbGVhbjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGNvbnN0IGRlZmF1bHRGZWVSYXRlU2F0QiA9IDEwMDtcblxuICBkZXNjcmliZShgQmFja3VwIEtleSBSZWNvdmVyeSBbJHtbY29pbi5nZXRDaGFpbigpLCAuLi50YWdzLCBwYXJhbXMua3JzUHJvdmlkZXJdLmpvaW4oJywnKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGV4dGVybmFsV2FsbGV0ID0gZ2V0V2FsbGV0S2V5cygnZXh0ZXJuYWwnKTtcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gZ2V0V2FsbGV0QWRkcmVzcyhjb2luLm5ldHdvcmssIGV4dGVybmFsV2FsbGV0KTtcblxuICAgIGxldCBrZXlSZWNvdmVyeVNlcnZpY2VBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IHJlY292ZXJ5OiAoQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbiB8IEZvcm1hdHRlZE9mZmxpbmVWYXVsdFR4SW5mbykgJiB7IHR4aWQ/OiBzdHJpbmcgfTtcbiAgICBsZXQgcmVjb3ZlcnlUeDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248bnVtYmVyIHwgYmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG5cbiAgICAvLyAxZTggKiA5ZTcgPCA5LjAwN2UxNSBidXQgMmU4ICogOWU3ID4gOS4wMDdlMTUgdG8gdGVzdCBib3RoIGNvZGUgcGF0aHMgaW4gcXVlcnlCbG9ja2NoYWluVW5zcGVudHNQYXRoXG4gICAgY29uc3QgdmFsdWVNdWwgPSBjb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnID8gQmlnSW50KDllNykgOiBCaWdJbnQoMSk7XG4gICAgYmVmb3JlKCdtb2NrJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2lub24uc3R1YihDb2luZ2Vja29BcGkucHJvdG90eXBlLCAnZ2V0VVNEUHJpY2UnKS5yZXNvbHZlcyg2OV80MjApO1xuICAgIH0pO1xuXG4gICAgY29uZmlnT3ZlcnJpZGUoZnVuY3Rpb24gKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgICBjb25zdCBjb25maWdLcnNQcm92aWRlcnMgPSB7IC4uLmNvbmZpZy5rcnNQcm92aWRlcnMgfTtcbiAgICAgIGNvbmZpZ0tyc1Byb3ZpZGVycy5kYWkuc3VwcG9ydGVkQ29pbnMgPSBbY29pbi5nZXRGYW1pbHkoKV07XG4gICAgICBjb25maWdLcnNQcm92aWRlcnMua2V5dGVybmFsLnN1cHBvcnRlZENvaW5zID0gW2NvaW4uZ2V0RmFtaWx5KCldO1xuICAgICAga2V5UmVjb3ZlcnlTZXJ2aWNlQWRkcmVzcyA9IGdldFdhbGxldEFkZHJlc3MoY29pbi5uZXR3b3JrLCBleHRlcm5hbFdhbGxldCwgMCwgMTAwKTtcbiAgICAgIGNvbmZpZ0tyc1Byb3ZpZGVycy5rZXl0ZXJuYWwuZmVlQWRkcmVzc2VzID0geyBbY29pbi5nZXRDaGFpbigpXToga2V5UmVjb3ZlcnlTZXJ2aWNlQWRkcmVzcyB9O1xuICAgICAgY29uZmlnLmtyc1Byb3ZpZGVycyA9IGNvbmZpZ0tyc1Byb3ZpZGVycztcbiAgICB9KTtcblxuICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGxldCByZWNvdmVyVW5zcGVudHM6IHV0eG9saWIuYml0Z28uVW5zcGVudDxiaWdpbnQ+W107XG4gICAgbGV0IG1vY2tlZEFwaVVuc3BlbnRzOiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8YmlnaW50PltdO1xuXG4gICAgYmVmb3JlKCdjcmVhdGUgcmVjb3ZlcnkgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMudGltZW91dCgxMF8wMDApO1xuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDFlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDNlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBJZiB0aGUgY29pbiBpcyBiY2gsIGNvbnZlcnQgdGhlIG1vY2tlZCB1bnNwZW50IGFkZHJlc3MgdG8gY2FzaGFkZHIgZm9ybWF0IHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdCB0aGF0IGJsb2NrY2hhaXJcbiAgICAgIC8vIHJldHVybnMgb24gdGhlIC9kYXNoYm9hcmRzL2FkZHJlc3NlcyByZXNwb25zZVxuICAgICAgbW9ja2VkQXBpVW5zcGVudHMgPVxuICAgICAgICBjb2luLmdldENoYWluKCkgPT09ICdiY2gnIHx8IGNvaW4uZ2V0Q2hhaW4oKSA9PT0gJ2JjaGEnXG4gICAgICAgICAgPyByZWNvdmVyVW5zcGVudHMubWFwKCh1KSA9PiAoeyAuLi51LCBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3ModS5hZGRyZXNzLCAnY2FzaGFkZHInKS5zcGxpdCgnOicpWzFdIH0pKVxuICAgICAgICAgIDogcmVjb3ZlclVuc3BlbnRzO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9ja2VkQXBpVW5zcGVudHMubGVuZ3RoLCByZWNvdmVyVW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIHJlY292ZXJ5ID0gYXdhaXQgYmFja3VwS2V5UmVjb3ZlcnkoY29pbiwgZGVmYXVsdEJpdEdvLCB7XG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHNjYW46IDUsXG4gICAgICAgIGlnbm9yZUFkZHJlc3NUeXBlczogW10sXG4gICAgICAgIHVzZXJLZXlQYXRoOiBwYXJhbXMudXNlcktleVBhdGgsXG4gICAgICAgIGtyc1Byb3ZpZGVyOiBwYXJhbXMua3JzUHJvdmlkZXIsXG4gICAgICAgIC4uLnBhcmFtcy5rZXlzLFxuICAgICAgICByZWNvdmVyeVByb3ZpZGVyOiBuZXcgTW9ja1JlY292ZXJ5UHJvdmlkZXIobW9ja2VkQXBpVW5zcGVudHMpLFxuICAgICAgICBmZWVSYXRlOiBkZWZhdWx0RmVlUmF0ZVNhdEIsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4SGV4ID1cbiAgICAgICAgKHJlY292ZXJ5IGFzIEJhY2t1cEtleVJlY292ZXJ5VHJhbnNhbnNhY3Rpb24pLnRyYW5zYWN0aW9uSGV4ID8/IChyZWNvdmVyeSBhcyBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8pLnR4SGV4O1xuICAgICAgY29uc3QgaXNQc2J0ID0gdXR4b2xpYi5iaXRnby5pc1BzYnQodHhIZXgpO1xuICAgICAgcmVjb3ZlcnlUeCA9IGlzUHNidFxuICAgICAgICA/IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21IZXgodHhIZXgsIGNvaW4ubmV0d29yaylcbiAgICAgICAgOiB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleCh0eEhleCBhcyBzdHJpbmcsIGNvaW4ubmV0d29yaywgY29pbi5hbW91bnRUeXBlKTtcbiAgICAgIHJlY292ZXJ5LnR4aWQgPVxuICAgICAgICByZWNvdmVyeVR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCA/IHJlY292ZXJ5VHguZ2V0VW5zaWduZWRUeCgpLmdldElkKCkgOiByZWNvdmVyeVR4LmdldElkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgcmVjb3ZlcnkgcHJvdmlkZXIgbW9ja3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNvdmVyeVByb3ZpZGVyID0gbmV3IE1vY2tSZWNvdmVyeVByb3ZpZGVyKG1vY2tlZEFwaVVuc3BlbnRzKTtcbiAgICAgIChhd2FpdCByZWNvdmVyeVByb3ZpZGVyLmdldFVuc3BlbnRzRm9yQWRkcmVzc2VzKG1vY2tlZEFwaVVuc3BlbnRzLm1hcCgodSkgPT4gdS5hZGRyZXNzKSkpLmxlbmd0aC5zaG91bGQuZXFsKFxuICAgICAgICBtb2NrZWRBcGlVbnNwZW50cy5sZW5ndGhcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGV4cGVjdGVkIGZlZSByYXRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCEocmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRoaXMuc2tpcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5wdXRTdW0gPSB1dHhvbGliLmJpdGdvLnVuc3BlbnRTdW0ocmVjb3ZlclVuc3BlbnRzLCAnYmlnaW50Jyk7XG4gICAgICBjb25zdCBvdXRwdXRTdW0gPSByZWNvdmVyeVR4LnR4T3V0cHV0cy5yZWR1Y2UoKHN1bSwgbykgPT4gc3VtICsgby52YWx1ZSwgQmlnSW50KDApKTtcbiAgICAgIGNvbnN0IGZlZSA9IGlucHV0U3VtIC0gb3V0cHV0U3VtO1xuICAgICAgY29uc3QgdnNpemUgPSBEaW1lbnNpb25zLmZyb21Qc2J0KHJlY292ZXJ5VHgpLmdldFZTaXplKCk7XG4gICAgICBjb25zdCBmZWVSYXRlU2F0QiA9IE51bWJlcihmZWUpIC8gdnNpemU7XG4gICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoZmVlUmF0ZVNhdEIgLSBkZWZhdWx0RmVlUmF0ZVNhdEIpIC8gZGVmYXVsdEZlZVJhdGVTYXRCO1xuICAgICAgLy8gd2l0aGluIDElXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZGlmZiA8IDAuMDEsIHRydWUsIGBleHBlY3RlZCBmZWUgcmF0ZSAke2RlZmF1bHRGZWVSYXRlU2F0Qn0gYnV0IGdvdCAke2ZlZVJhdGVTYXRCfWApO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hdGNoZXMgZml4dHVyZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZpeHR1cmVDb2luID0gZ2V0Tm9ybWFsVGVzdG5ldENvaW4oY29pbik7XG4gICAgICBjb25zdCBmaXh0dXJlUmVjb3ZlcnkgPSB7IC4uLnJlY292ZXJ5IH07XG4gICAgICBpZiAoZml4dHVyZVJlY292ZXJ5LmNvaW4pIHtcbiAgICAgICAgZml4dHVyZVJlY292ZXJ5LmNvaW4gPSBmaXh0dXJlQ29pbi5nZXRDaGFpbigpO1xuICAgICAgfVxuXG4gICAgICBzaG91bGRFcXVhbEpTT04oXG4gICAgICAgIGZpeHR1cmVSZWNvdmVyeSxcbiAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZShcbiAgICAgICAgICBmaXh0dXJlQ29pbixcbiAgICAgICAgICBgcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnktJHsocGFyYW1zLmtyc1Byb3ZpZGVyID8gdGFncy5jb25jYXQoW3BhcmFtcy5rcnNQcm92aWRlcl0pIDogdGFncykuam9pbignLScpfWAsXG4gICAgICAgICAgcmVjb3ZlcnlcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgaW5wdXQgY291bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAocmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyByZWNvdmVyeVR4LmRhdGEuaW5wdXRzIDogcmVjb3ZlcnlUeC5pbnMpLmxlbmd0aC5zaG91bGQuZXFsKFxuICAgICAgICByZWNvdmVyVW5zcGVudHMubGVuZ3RoXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY2hlY2tJbnB1dHNTaWduZWRCeShcbiAgICAgIHR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxudW1iZXIgfCBiaWdpbnQ+IHwgdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgICAgIHJvb3RLZXk6IEJJUDMySW50ZXJmYWNlLFxuICAgICAgZXhwZWN0Q291bnQ6IG51bWJlclxuICAgICkge1xuICAgICAgaWYgKHR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCkge1xuICAgICAgICBmdW5jdGlvbiB2YWxpZGF0ZSh0eDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgaW5wdXRJbmRleDogbnVtYmVyKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiB0eC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaW5wdXRJbmRleCwgcm9vdEtleSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKGUubWVzc2FnZSA9PT0gJ05vIHNpZ25hdHVyZXMgdG8gdmFsaWRhdGUnKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHR4LmRhdGEuaW5wdXRzLmZvckVhY2goKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGUodHgsIGlucHV0SW5kZXgpLnNob3VsZC5lcWwoISFleHBlY3RDb3VudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJldk91dHB1dHMgPSByZWNvdmVyVW5zcGVudHNcbiAgICAgICAgICAubWFwKCh1KSA9PiB0b091dHB1dCh1LCBjb2luLm5ldHdvcmspKVxuICAgICAgICAgIC5tYXAoKHYpID0+ICh7IC4uLnYsIHZhbHVlOiB1dHhvbGliLmJpdGdvLnRvVE51bWJlcih2LnZhbHVlLCBjb2luLmFtb3VudFR5cGUpIH0pKTtcbiAgICAgICAgdHguaW5zLmZvckVhY2goKGlucHV0LCBpbnB1dEluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3QgdW5zcGVudCA9IHJlY292ZXJVbnNwZW50c1tpbnB1dEluZGV4XSBhcyBXYWxsZXRVbnNwZW50O1xuICAgICAgICAgIGNvbnN0IHsgcHVibGljS2V5IH0gPSByb290S2V5LmRlcml2ZVBhdGgod2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aChyb290S2V5LCB1bnNwZW50LmNoYWluLCB1bnNwZW50LmluZGV4KSk7XG4gICAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IHV0eG9saWIuYml0Z29cbiAgICAgICAgICAgIC5nZXRTaWduYXR1cmVWZXJpZmljYXRpb25zKFxuICAgICAgICAgICAgICB0eCxcbiAgICAgICAgICAgICAgaW5wdXRJbmRleCxcbiAgICAgICAgICAgICAgdXR4b2xpYi5iaXRnby50b1ROdW1iZXIodW5zcGVudC52YWx1ZSwgY29pbi5hbW91bnRUeXBlKSxcbiAgICAgICAgICAgICAgeyBwdWJsaWNLZXkgfSxcbiAgICAgICAgICAgICAgcHJldk91dHB1dHNcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoKHMpID0+IHMuc2lnbmVkQnkgIT09IHVuZGVmaW5lZCk7XG4gICAgICAgICAgc2lnbmF0dXJlcy5sZW5ndGguc2hvdWxkLmVxbChleHBlY3RDb3VudCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGl0KChwYXJhbXMuaGFzVXNlclNpZ25hdHVyZSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyB1c2VyIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkocmVjb3ZlcnlUeCwgd2FsbGV0S2V5cy51c2VyLCBwYXJhbXMuaGFzVXNlclNpZ25hdHVyZSA/IDEgOiAwKTtcbiAgICB9KTtcblxuICAgIGl0KChwYXJhbXMuaGFzQmFja3VwU2lnbmF0dXJlID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIGJhY2t1cCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KHJlY292ZXJ5VHgsIHdhbGxldEtleXMuYmFja3VwLCBwYXJhbXMuaGFzQmFja3VwU2lnbmF0dXJlID8gMSA6IDApO1xuICAgIH0pO1xuXG4gICAgaWYgKHBhcmFtcy5oYXNVc2VyU2lnbmF0dXJlICYmIHBhcmFtcy5oYXNCYWNrdXBTaWduYXR1cmUpIHtcbiAgICAgIGl0KCdoYXMgbm8gcGxhY2Vob2xkZXIgc2lnbmF0dXJlcycsIGZ1bmN0aW9uICh0aGlzOiBtb2NoYS5Db250ZXh0KSB7XG4gICAgICAgIGlmIChyZWNvdmVyeVR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICByZWNvdmVyeVR4Lmlucy5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gdXR4b2xpYi5iaXRnby5wYXJzZVNpZ25hdHVyZVNjcmlwdChpbnB1dCk7XG4gICAgICAgICAgICBzd2l0Y2ggKHBhcnNlZC5zY3JpcHRUeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3Ayc2gnOlxuICAgICAgICAgICAgICBjYXNlICdwMnNoUDJ3c2gnOlxuICAgICAgICAgICAgICBjYXNlICdwMndzaCc6XG4gICAgICAgICAgICAgIGNhc2UgJ3RhcHJvb3RTY3JpcHRQYXRoU3BlbmQnOlxuICAgICAgICAgICAgICAgIHBhcnNlZC5zaWduYXR1cmVzLmZvckVhY2goKHNpZ25hdHVyZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHV0eG9saWIuYml0Z28uaXNQbGFjZWhvbGRlclNpZ25hdHVyZShzaWduYXR1cmUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGxhY2Vob2xkZXIgc2lnbmF0dXJlIGF0IGluZGV4ICR7aX1gKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVuZXhwZWN0ZWQgc2NyaXB0VHlwZSAke3BhcnNlZC5zY3JpcHRUeXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2tpcCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgocGFyYW1zLmhhc0tyc091dHB1dCA/ICdoYXMnIDogJ2hhcyBubycpICsgJyBrZXkgcmVjb3Zlcnkgc2VydmljZSBvdXRwdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBvdXRzID0gcmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQgPyByZWNvdmVyeVR4LmdldFVuc2lnbmVkVHgoKS5vdXRzIDogcmVjb3ZlcnlUeC5vdXRzO1xuICAgICAgb3V0cy5sZW5ndGguc2hvdWxkLmVxbCgxKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3NlcyA9IG91dHMubWFwKChvKSA9PiB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChvLnNjcmlwdCwgcmVjb3ZlcnlUeC5uZXR3b3JrKSk7XG4gICAgICBvdXRwdXRBZGRyZXNzZXNcbiAgICAgICAgLmluY2x1ZGVzKGtleVJlY292ZXJ5U2VydmljZUFkZHJlc3MpXG4gICAgICAgIC5zaG91bGQuZXFsKCEhcGFyYW1zLmhhc0tyc091dHB1dCAmJiBwYXJhbXMua3JzUHJvdmlkZXIgPT09ICdrZXl0ZXJuYWwnKTtcbiAgICAgIG91dHB1dEFkZHJlc3Nlcy5pbmNsdWRlcyhyZWNvdmVyeURlc3RpbmF0aW9uKS5zaG91bGQuZXFsKHRydWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuV2l0aFNjcmlwdFR5cGVzKFxuICBzY3JpcHRUeXBlczogU2NyaXB0VHlwZTJPZjNbXSxcbiAgeyBydW5LZXlQcm92aWRlclRlc3RzID0gdHJ1ZSB9OiB7IHJ1bktleVByb3ZpZGVyVGVzdHM/OiBib29sZWFuIH0gPSB7fVxuKSB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IHNjcmlwdFR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodHlwZSkpKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICBydW4oXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHNjcmlwdFR5cGVzLFxuICAgICAgICB3YWxsZXRLZXlzLFxuICAgICAgICB7XG4gICAgICAgICAga2V5czoga2V5c1Vuc2lnbmVkU3dlZXAsXG4gICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogZmFsc2UsXG4gICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgWyd1bnNpZ25lZFJlY292ZXJ5JywgLi4uc2NyaXB0VHlwZXNdXG4gICAgICApO1xuXG4gICAgICBpZiAocnVuS2V5UHJvdmlkZXJUZXN0cykge1xuICAgICAgICBbJ2RhaScsICdrZXl0ZXJuYWwnXS5mb3JFYWNoKChrcnNQcm92aWRlcikgPT4ge1xuICAgICAgICAgIHJ1bihcbiAgICAgICAgICAgIGNvaW4sXG4gICAgICAgICAgICBzY3JpcHRUeXBlcyxcbiAgICAgICAgICAgIHdhbGxldEtleXMsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleXM6IGtleXNLZXlSZWNvdmVyeVNlcnZpY2UsXG4gICAgICAgICAgICAgIGtyc1Byb3ZpZGVyOiBrcnNQcm92aWRlcixcbiAgICAgICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgaGFzQmFja3VwU2lnbmF0dXJlOiBmYWxzZSxcbiAgICAgICAgICAgICAgaGFzS3JzT3V0cHV0OiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbJ2tleVJlY292ZXJ5U2VydmljZScsIC4uLnNjcmlwdFR5cGVzXVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydW4oXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHNjcmlwdFR5cGVzLFxuICAgICAgICB3YWxsZXRLZXlzLFxuICAgICAgICB7XG4gICAgICAgICAga2V5czoga2V5c0Z1bGxTaWduZWRSZWNvdmVyeSxcbiAgICAgICAgICBoYXNVc2VyU2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICAgIGhhc0JhY2t1cFNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgWydmdWxsU2lnbmVkUmVjb3ZlcnknLCAuLi5zY3JpcHRUeXBlc11cbiAgICAgICk7XG5cbiAgICAgIHJ1bihcbiAgICAgICAgY29pbixcbiAgICAgICAgc2NyaXB0VHlwZXMsXG4gICAgICAgIGV4b3RpY1dhbGxldEtleXMsXG4gICAgICAgIHtcbiAgICAgICAgICBrZXlzOiBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5RXhvdGljLFxuICAgICAgICAgIHVzZXJLZXlQYXRoOiBleG90aWNVc2VyS2V5UGF0aCxcbiAgICAgICAgICBoYXNVc2VyU2lnbmF0dXJlOiB0cnVlLFxuICAgICAgICAgIGhhc0JhY2t1cFNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgWydmdWxsU2lnbmVkUmVjb3ZlcnknLCAnY3VzdG9tVXNlcktleVBhdGgnLCAuLi5zY3JpcHRUeXBlc11cbiAgICAgICk7XG4gICAgfSk7XG59XG5cbmRlc2NyaWJlKCdCYWNrdXAgS2V5IFJlY292ZXJ5JywgZnVuY3Rpb24gKCkge1xuICAvLyBjb21wYXRpYmxlIHdpdGggYWxsIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2gnXSk7XG5cbiAgLy8gc2Vnd2l0IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJzaFAyd3NoJywgJ3Ayd3NoJ10pO1xuXG4gIC8vIHRhcHJvb3QgY29tcGF0aWJsZSBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnRyJywgJ3AydHJNdXNpZzInXSwgeyBydW5LZXlQcm92aWRlclRlc3RzOiBmYWxzZSB9KTtcbn0pO1xuIl19
309
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsa0JBQWdCO0FBRWhCLDZDQUErQjtBQUMvQiw2QkFBOEI7QUFFOUIseURBQTJDO0FBQzNDLDhDQUErRDtBQUMvRCw4Q0FBNkM7QUFDN0MsZ0RBQXFEO0FBRXJELHNDQU1zQjtBQUN0QixrQ0FZaUI7QUFFakIsaUNBQThDO0FBRTlDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBS25DLE1BQU0sTUFBTSxHQUFHLEVBQUUsWUFBWSxFQUFaLHVCQUFZLEVBQUUsQ0FBQztBQUVoQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixTQUFTLGNBQWMsQ0FBQyxDQUEyQjtJQUNqRCxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsdUJBQVksRUFBRSxDQUFDO0lBQ25DLE1BQU0sQ0FBQztRQUNMLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0lBQ0gsS0FBSyxDQUFDO1FBQ0osTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQVEvQixTQUFTLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUF5QixFQUFFLFFB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O29CQUN4QixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixrQkFBa0IsRUFBRSxLQUFLO29CQUN6QixZQUFZLEVBQUUsS0FBSztpQkFDcEIsRUFDRCxDQUFDLG9CQUFvQixFQUFFLEdBQUcsV0FBVyxDQUFDLENBQ3ZDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxHQUFHLENBQ0QsSUFBSSxFQUNKLFdBQVcsRUFDWCxVQUFVLEVBQ1Y7WUFDRSxJQUFJLEVBQUUsc0JBQXNCO1lBQzVCLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsa0JBQWtCLEVBQUUsSUFBSTtTQUN6QixFQUNELENBQUMsb0JBQW9CLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FDdkMsQ0FBQztRQUVGLEdBQUcsQ0FDRCxJQUFJLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixFQUNoQjtZQUNFLElBQUksRUFBRSw0QkFBNEI7WUFDbEMsV0FBVyxFQUFFLGlCQUFpQjtZQUM5QixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGtCQUFrQixFQUFFLElBQUk7U0FDekIsRUFDRCxDQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLEdBQUcsV0FBVyxDQUFDLENBQzVELENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxRQUFRLENBQUMscUJBQXFCLEVBQUU7SUFDOUIsNEJBQTRCO0lBQzVCLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUU3QiwwQkFBMEI7SUFDMUIsa0JBQWtCLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUzQywyQkFBMkI7SUFDM0Isa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzdFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyBtb2NoYSBmcm9tICdtb2NoYSc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IEJJUDMySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IENvbmZpZywga3JzUHJvdmlkZXJzLCBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRGltZW5zaW9ucyB9IGZyb20gJ0BiaXRnby91bnNwZW50cyc7XG5pbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdFV0eG9Db2luLFxuICBiYWNrdXBLZXlSZWNvdmVyeSxcbiAgQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbixcbiAgQ29pbmdlY2tvQXBpLFxuICBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8sXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQge1xuICBkZWZhdWx0Qml0R28sXG4gIGVuY3J5cHRLZXljaGFpbixcbiAgZ2V0RGVmYXVsdFdhbGxldEtleXMsXG4gIGdldEZpeHR1cmUsXG4gIGdldE5vcm1hbFRlc3RuZXRDb2luLFxuICBnZXRXYWxsZXRBZGRyZXNzLFxuICBnZXRXYWxsZXRLZXlzLFxuICBrZXljaGFpbnMsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdG9LZXljaGFpbkJhc2U1OCxcbiAgdXR4b0NvaW5zLFxufSBmcm9tICcuLi91dGlsJztcblxuaW1wb3J0IHsgTW9ja1JlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG5jb25zdCB7IHRvT3V0cHV0IH0gPSB1dHhvbGliLmJpdGdvO1xudHlwZSBXYWxsZXRVbnNwZW50ID0gdXR4b2xpYi5iaXRnby5XYWxsZXRVbnNwZW50PGJpZ2ludD47XG50eXBlIFJvb3RXYWxsZXRLZXlzID0gdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cztcbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSB1dHhvbGliLmJpdGdvLm91dHB1dFNjcmlwdHMuU2NyaXB0VHlwZTJPZjM7XG5cbmNvbnN0IGNvbmZpZyA9IHsga3JzUHJvdmlkZXJzIH07XG5cbm5vY2suZGlzYWJsZU5ldENvbm5lY3QoKTtcblxuZnVuY3Rpb24gY29uZmlnT3ZlcnJpZGUoZjogKGNvbmZpZzogQ29uZmlnKSA9PiB2b2lkKSB7XG4gIGNvbnN0IGJhY2t1cCA9IHsgLi4ua3JzUHJvdmlkZXJzIH07XG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgZihjb25maWcpO1xuICB9KTtcbiAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgIE9iamVjdC5lbnRyaWVzKGJhY2t1cCkuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICBjb25maWdba10gPSB2O1xuICAgIH0pO1xuICB9KTtcbn1cblxuY29uc3Qgd2FsbGV0UGFzc3BocmFzZSA9ICdsb2wnO1xuXG50eXBlIE5hbWVkS2V5cyA9IHtcbiAgdXNlcktleTogc3RyaW5nO1xuICBiYWNrdXBLZXk6IHN0cmluZztcbiAgYml0Z29LZXk6IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIGdldE5hbWVkS2V5cyhbdXNlcktleSwgYmFja3VwS2V5LCBiaXRnb0tleV06IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sIHBhc3N3b3JkOiBzdHJpbmcpOiBOYW1lZEtleXMge1xuICBmdW5jdGlvbiBlbmNvZGUoazogQklQMzJJbnRlcmZhY2UpOiBzdHJpbmcge1xuICAgIHJldHVybiBrLmlzTmV1dGVyZWQoKSA/IGsudG9CYXNlNTgoKSA6IGVuY3J5cHRLZXljaGFpbihwYXNzd29yZCwgdG9LZXljaGFpbkJhc2U1OChrKSk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB1c2VyS2V5OiBlbmNvZGUodXNlcktleSksXG4gICAgYmFja3VwS2V5OiBlbmNvZGUoYmFja3VwS2V5KSxcbiAgICBiaXRnb0tleTogZW5jb2RlKGJpdGdvS2V5KSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvclVuc2lnbmVkU3dlZXAoW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LCBwYXNzd29yZDogc3RyaW5nKTogTmFtZWRLZXlzIHtcbiAgcmV0dXJuIGdldE5hbWVkS2V5cyhbdXNlcktleS5uZXV0ZXJlZCgpLCBiYWNrdXBLZXkubmV1dGVyZWQoKSwgYml0Z29LZXkubmV1dGVyZWQoKV0sIHBhc3N3b3JkKTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvcktleVJlY292ZXJ5U2VydmljZShcbiAgW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBOYW1lZEtleXMge1xuICByZXR1cm4gZ2V0TmFtZWRLZXlzKFt1c2VyS2V5LCBiYWNrdXBLZXkubmV1dGVyZWQoKSwgYml0Z29LZXkubmV1dGVyZWQoKV0sIHBhc3N3b3JkKTtcbn1cblxuZnVuY3Rpb24gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeShcbiAgW3VzZXJLZXksIGJhY2t1cEtleSwgYml0Z29LZXldOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICBwYXNzd29yZDogc3RyaW5nXG4pOiBOYW1lZEtleXMge1xuICByZXR1cm4gZ2V0TmFtZWRLZXlzKFt1c2VyS2V5LCBiYWNrdXBLZXksIGJpdGdvS2V5Lm5ldXRlcmVkKCldLCBwYXNzd29yZCk7XG59XG5cbmNvbnN0IHdhbGxldEtleXMgPSBnZXREZWZhdWx0V2FsbGV0S2V5cygpO1xuY29uc3Qga2V5c1Vuc2lnbmVkU3dlZXAgPSBnZXRLZXlzRm9yVW5zaWduZWRTd2VlcCh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5jb25zdCBrZXlzS2V5UmVjb3ZlcnlTZXJ2aWNlID0gZ2V0S2V5c0ZvcktleVJlY292ZXJ5U2VydmljZSh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5jb25zdCBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5ID0gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeSh3YWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5cbmNvbnN0IGV4b3RpY1VzZXJLZXlQYXRoID0gJzk5Lzk5JztcbmNvbnN0IGV4b3RpY1dhbGxldEtleXMgPSBuZXcgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cyhrZXljaGFpbnMsIFtcbiAgZXhvdGljVXNlcktleVBhdGgsXG4gIHV0eG9saWIuYml0Z28uUm9vdFdhbGxldEtleXMuZGVmYXVsdFByZWZpeCxcbiAgdXR4b2xpYi5iaXRnby5Sb290V2FsbGV0S2V5cy5kZWZhdWx0UHJlZml4LFxuXSk7XG5jb25zdCBrZXlzRnVsbFNpZ25lZFJlY292ZXJ5RXhvdGljID0gZ2V0S2V5c0ZvckZ1bGxTaWduZWRSZWNvdmVyeShleG90aWNXYWxsZXRLZXlzLnRyaXBsZSwgd2FsbGV0UGFzc3BocmFzZSk7XG5cbmZ1bmN0aW9uIHJ1bihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgc2NyaXB0VHlwZXM6IFNjcmlwdFR5cGUyT2YzW10sXG4gIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBwYXJhbXM6IHtcbiAgICBrZXlzOiBOYW1lZEtleXM7XG4gICAgdXNlcktleVBhdGg/OiBzdHJpbmc7XG4gICAga3JzUHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgaGFzVXNlclNpZ25hdHVyZTogYm9vbGVhbjtcbiAgICBoYXNCYWNrdXBTaWduYXR1cmU6IGJvb2xlYW47XG4gICAgaGFzS3JzT3V0cHV0PzogYm9vbGVhbjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGNvbnN0IGRlZmF1bHRGZWVSYXRlU2F0QiA9IDEwMDtcblxuICBkZXNjcmliZShgQmFja3VwIEtleSBSZWNvdmVyeSBbJHtbY29pbi5nZXRDaGFpbigpLCAuLi50YWdzLCBwYXJhbXMua3JzUHJvdmlkZXJdLmpvaW4oJywnKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGV4dGVybmFsV2FsbGV0ID0gZ2V0V2FsbGV0S2V5cygnZXh0ZXJuYWwnKTtcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gZ2V0V2FsbGV0QWRkcmVzcyhjb2luLm5ldHdvcmssIGV4dGVybmFsV2FsbGV0KTtcblxuICAgIGxldCBrZXlSZWNvdmVyeVNlcnZpY2VBZGRyZXNzOiBzdHJpbmc7XG4gICAgbGV0IHJlY292ZXJ5OiAoQmFja3VwS2V5UmVjb3ZlcnlUcmFuc2Fuc2FjdGlvbiB8IEZvcm1hdHRlZE9mZmxpbmVWYXVsdFR4SW5mbykgJiB7IHR4aWQ/OiBzdHJpbmcgfTtcbiAgICBsZXQgcmVjb3ZlcnlUeDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248bnVtYmVyIHwgYmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG5cbiAgICAvLyAxZTggKiA5ZTcgPCA5LjAwN2UxNSBidXQgMmU4ICogOWU3ID4gOS4wMDdlMTUgdG8gdGVzdCBib3RoIGNvZGUgcGF0aHMgaW4gcXVlcnlCbG9ja2NoYWluVW5zcGVudHNQYXRoXG4gICAgY29uc3QgdmFsdWVNdWwgPSBjb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnID8gQmlnSW50KDllNykgOiBCaWdJbnQoMSk7XG4gICAgYmVmb3JlKCdtb2NrJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2lub24uc3R1YihDb2luZ2Vja29BcGkucHJvdG90eXBlLCAnZ2V0VVNEUHJpY2UnKS5yZXNvbHZlcyg2OV80MjApO1xuICAgIH0pO1xuXG4gICAgY29uZmlnT3ZlcnJpZGUoZnVuY3Rpb24gKGNvbmZpZzogQ29uZmlnKSB7XG4gICAgICBjb25zdCBjb25maWdLcnNQcm92aWRlcnMgPSB7IC4uLmNvbmZpZy5rcnNQcm92aWRlcnMgfTtcbiAgICAgIGNvbmZpZ0tyc1Byb3ZpZGVycy5kYWkuc3VwcG9ydGVkQ29pbnMgPSBbY29pbi5nZXRGYW1pbHkoKV07XG4gICAgICBjb25maWdLcnNQcm92aWRlcnMua2V5dGVybmFsLnN1cHBvcnRlZENvaW5zID0gW2NvaW4uZ2V0RmFtaWx5KCldO1xuICAgICAga2V5UmVjb3ZlcnlTZXJ2aWNlQWRkcmVzcyA9IGdldFdhbGxldEFkZHJlc3MoY29pbi5uZXR3b3JrLCBleHRlcm5hbFdhbGxldCwgMCwgMTAwKTtcbiAgICAgIGNvbmZpZ0tyc1Byb3ZpZGVycy5rZXl0ZXJuYWwuZmVlQWRkcmVzc2VzID0geyBbY29pbi5nZXRDaGFpbigpXToga2V5UmVjb3ZlcnlTZXJ2aWNlQWRkcmVzcyB9O1xuICAgICAgY29uZmlnLmtyc1Byb3ZpZGVycyA9IGNvbmZpZ0tyc1Byb3ZpZGVycztcbiAgICB9KTtcblxuICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGxldCByZWNvdmVyVW5zcGVudHM6IHV0eG9saWIuYml0Z28uVW5zcGVudDxiaWdpbnQ+W107XG4gICAgbGV0IG1vY2tlZEFwaVVuc3BlbnRzOiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8YmlnaW50PltdO1xuXG4gICAgYmVmb3JlKCdjcmVhdGUgcmVjb3ZlcnkgZGF0YScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMudGltZW91dCgxMF8wMDApO1xuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDFlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgICAgdXR4b2xpYi50ZXN0dXRpbC50b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDNlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uZXR3b3JrLCB3YWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBJZiB0aGUgY29pbiBpcyBiY2gsIGNvbnZlcnQgdGhlIG1vY2tlZCB1bnNwZW50IGFkZHJlc3MgdG8gY2FzaGFkZHIgZm9ybWF0IHNpbmNlIHRoYXQgaXMgdGhlIGZvcm1hdCB0aGF0IGJsb2NrY2hhaXJcbiAgICAgIC8vIHJldHVybnMgb24gdGhlIC9kYXNoYm9hcmRzL2FkZHJlc3NlcyByZXNwb25zZVxuICAgICAgbW9ja2VkQXBpVW5zcGVudHMgPVxuICAgICAgICBjb2luLmdldENoYWluKCkgPT09ICdiY2gnIHx8IGNvaW4uZ2V0Q2hhaW4oKSA9PT0gJ2JjaGEnXG4gICAgICAgICAgPyByZWNvdmVyVW5zcGVudHMubWFwKCh1KSA9PiAoeyAuLi51LCBhZGRyZXNzOiBjb2luLmNhbm9uaWNhbEFkZHJlc3ModS5hZGRyZXNzLCAnY2FzaGFkZHInKS5zcGxpdCgnOicpWzFdIH0pKVxuICAgICAgICAgIDogcmVjb3ZlclVuc3BlbnRzO1xuXG4gICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobW9ja2VkQXBpVW5zcGVudHMubGVuZ3RoLCByZWNvdmVyVW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIHJlY292ZXJ5ID0gYXdhaXQgYmFja3VwS2V5UmVjb3ZlcnkoY29pbiwgZGVmYXVsdEJpdEdvLCB7XG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgIHNjYW46IDUsXG4gICAgICAgIGlnbm9yZUFkZHJlc3NUeXBlczogW10sXG4gICAgICAgIHVzZXJLZXlQYXRoOiBwYXJhbXMudXNlcktleVBhdGgsXG4gICAgICAgIGtyc1Byb3ZpZGVyOiBwYXJhbXMua3JzUHJvdmlkZXIsXG4gICAgICAgIC4uLnBhcmFtcy5rZXlzLFxuICAgICAgICByZWNvdmVyeVByb3ZpZGVyOiBuZXcgTW9ja1JlY292ZXJ5UHJvdmlkZXIobW9ja2VkQXBpVW5zcGVudHMpLFxuICAgICAgICBmZWVSYXRlOiBkZWZhdWx0RmVlUmF0ZVNhdEIsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4SGV4ID1cbiAgICAgICAgKHJlY292ZXJ5IGFzIEJhY2t1cEtleVJlY292ZXJ5VHJhbnNhbnNhY3Rpb24pLnRyYW5zYWN0aW9uSGV4ID8/IChyZWNvdmVyeSBhcyBGb3JtYXR0ZWRPZmZsaW5lVmF1bHRUeEluZm8pLnR4SGV4O1xuICAgICAgY29uc3QgaXNQc2J0ID0gdXR4b2xpYi5iaXRnby5pc1BzYnQodHhIZXgpO1xuICAgICAgcmVjb3ZlcnlUeCA9IGlzUHNidFxuICAgICAgICA/IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21IZXgodHhIZXgsIGNvaW4ubmV0d29yaylcbiAgICAgICAgOiB1dHhvbGliLmJpdGdvLmNyZWF0ZVRyYW5zYWN0aW9uRnJvbUhleCh0eEhleCBhcyBzdHJpbmcsIGNvaW4ubmV0d29yaywgY29pbi5hbW91bnRUeXBlKTtcbiAgICAgIHJlY292ZXJ5LnR4aWQgPVxuICAgICAgICByZWNvdmVyeVR4IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCA/IHJlY292ZXJ5VHguZ2V0VW5zaWduZWRUeCgpLmdldElkKCkgOiByZWNvdmVyeVR4LmdldElkKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGNvcnJlY3QgcmVjb3ZlcnkgcHJvdmlkZXIgbW9ja3MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNvdmVyeVByb3ZpZGVyID0gbmV3IE1vY2tSZWNvdmVyeVByb3ZpZGVyKG1vY2tlZEFwaVVuc3BlbnRzKTtcbiAgICAgIChhd2FpdCByZWNvdmVyeVByb3ZpZGVyLmdldFVuc3BlbnRzRm9yQWRkcmVzc2VzKG1vY2tlZEFwaVVuc3BlbnRzLm1hcCgodSkgPT4gdS5hZGRyZXNzKSkpLmxlbmd0aC5zaG91bGQuZXFsKFxuICAgICAgICBtb2NrZWRBcGlVbnNwZW50cy5sZW5ndGhcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGV4cGVjdGVkIGZlZSByYXRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCEocmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpKSB7XG4gICAgICAgIHRoaXMuc2tpcCgpO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5wdXRTdW0gPSB1dHhvbGliLmJpdGdvLnVuc3BlbnRTdW0ocmVjb3ZlclVuc3BlbnRzLCAnYmlnaW50Jyk7XG4gICAgICBjb25zdCBvdXRwdXRTdW0gPSByZWNvdmVyeVR4LnR4T3V0cHV0cy5yZWR1Y2UoKHN1bSwgbykgPT4gc3VtICsgby52YWx1ZSwgQmlnSW50KDApKTtcbiAgICAgIGNvbnN0IGZlZSA9IGlucHV0U3VtIC0gb3V0cHV0U3VtO1xuICAgICAgLy8gVXNlIHdhc20tdXR4byBEaW1lbnNpb25zIGZvciB0ZXN0bmV0IChtYXRjaGVzIGhvdyBmZWUgd2FzIGNhbGN1bGF0ZWQpLCB1dHhvbGliIERpbWVuc2lvbnMgZm9yIG1haW5uZXRcbiAgICAgIGxldCB2c2l6ZTogbnVtYmVyO1xuICAgICAgaWYgKHV0eG9saWIuaXNUZXN0bmV0KGNvaW4ubmV0d29yaykpIHtcbiAgICAgICAgY29uc3QgbmV0d29ya05hbWUgPSB1dHhvbGliLmdldE5ldHdvcmtOYW1lKGNvaW4ubmV0d29yayk7XG4gICAgICAgIGlmICghbmV0d29ya05hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbmV0d29yaycpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdhc21Qc2J0ID0gZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LmZyb21CeXRlcyhuZXcgVWludDhBcnJheShyZWNvdmVyeVR4LnRvQnVmZmVyKCkpLCBuZXR3b3JrTmFtZSk7XG4gICAgICAgIHZzaXplID0gZml4ZWRTY3JpcHRXYWxsZXQuRGltZW5zaW9ucy5mcm9tUHNidCh3YXNtUHNidCkuZ2V0VlNpemUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZzaXplID0gRGltZW5zaW9ucy5mcm9tUHNidChyZWNvdmVyeVR4KS5nZXRWU2l6ZSgpO1xuICAgICAgfVxuICAgICAgY29uc3QgZmVlUmF0ZVNhdEIgPSBOdW1iZXIoZmVlKSAvIHZzaXplO1xuICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGZlZVJhdGVTYXRCIC0gZGVmYXVsdEZlZVJhdGVTYXRCKSAvIGRlZmF1bHRGZWVSYXRlU2F0QjtcbiAgICAgIC8vIHdpdGhpbiAxJVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRpZmYgPCAwLjAxLCB0cnVlLCBgZXhwZWN0ZWQgZmVlIHJhdGUgJHtkZWZhdWx0RmVlUmF0ZVNhdEJ9IGJ1dCBnb3QgJHtmZWVSYXRlU2F0Qn1gKTtcbiAgICB9KTtcblxuICAgIGl0KCdtYXRjaGVzIGZpeHR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBmaXh0dXJlQ29pbiA9IGdldE5vcm1hbFRlc3RuZXRDb2luKGNvaW4pO1xuICAgICAgY29uc3QgZml4dHVyZVJlY292ZXJ5ID0geyAuLi5yZWNvdmVyeSB9O1xuICAgICAgaWYgKGZpeHR1cmVSZWNvdmVyeS5jb2luKSB7XG4gICAgICAgIGZpeHR1cmVSZWNvdmVyeS5jb2luID0gZml4dHVyZUNvaW4uZ2V0Q2hhaW4oKTtcbiAgICAgIH1cblxuICAgICAgc2hvdWxkRXF1YWxKU09OKFxuICAgICAgICBmaXh0dXJlUmVjb3ZlcnksXG4gICAgICAgIGF3YWl0IGdldEZpeHR1cmUoXG4gICAgICAgICAgZml4dHVyZUNvaW4sXG4gICAgICAgICAgYHJlY292ZXJ5L2JhY2t1cEtleVJlY292ZXJ5LSR7KHBhcmFtcy5rcnNQcm92aWRlciA/IHRhZ3MuY29uY2F0KFtwYXJhbXMua3JzUHJvdmlkZXJdKSA6IHRhZ3MpLmpvaW4oJy0nKX1gLFxuICAgICAgICAgIHJlY292ZXJ5XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIGV4cGVjdGVkIGlucHV0IGNvdW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgKHJlY292ZXJ5VHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0ID8gcmVjb3ZlcnlUeC5kYXRhLmlucHV0cyA6IHJlY292ZXJ5VHguaW5zKS5sZW5ndGguc2hvdWxkLmVxbChcbiAgICAgICAgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5wdXRzU2lnbmVkQnkoXG4gICAgICB0eDogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248bnVtYmVyIHwgYmlnaW50PiB8IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gICAgICByb290S2V5OiBCSVAzMkludGVyZmFjZSxcbiAgICAgIGV4cGVjdENvdW50OiBudW1iZXJcbiAgICApIHtcbiAgICAgIGlmICh0eCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1BzYnQpIHtcbiAgICAgICAgZnVuY3Rpb24gdmFsaWRhdGUodHg6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGlucHV0SW5kZXg6IG51bWJlcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gdHgudmFsaWRhdGVTaWduYXR1cmVzT2ZJbnB1dEhEKGlucHV0SW5kZXgsIHJvb3RLZXkpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChlLm1lc3NhZ2UgPT09ICdObyBzaWduYXR1cmVzIHRvIHZhbGlkYXRlJykge1xuICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0eC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgICAgICAgIHZhbGlkYXRlKHR4LCBpbnB1dEluZGV4KS5zaG91bGQuZXFsKCEhZXhwZWN0Q291bnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByZXZPdXRwdXRzID0gcmVjb3ZlclVuc3BlbnRzXG4gICAgICAgICAgLm1hcCgodSkgPT4gdG9PdXRwdXQodSwgY29pbi5uZXR3b3JrKSlcbiAgICAgICAgICAubWFwKCh2KSA9PiAoeyAuLi52LCB2YWx1ZTogdXR4b2xpYi5iaXRnby50b1ROdW1iZXIodi52YWx1ZSwgY29pbi5hbW91bnRUeXBlKSB9KSk7XG4gICAgICAgIHR4Lmlucy5mb3JFYWNoKChpbnB1dCwgaW5wdXRJbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHVuc3BlbnQgPSByZWNvdmVyVW5zcGVudHNbaW5wdXRJbmRleF0gYXMgV2FsbGV0VW5zcGVudDtcbiAgICAgICAgICBjb25zdCB7IHB1YmxpY0tleSB9ID0gcm9vdEtleS5kZXJpdmVQYXRoKHdhbGxldEtleXMuZ2V0RGVyaXZhdGlvblBhdGgocm9vdEtleSwgdW5zcGVudC5jaGFpbiwgdW5zcGVudC5pbmRleCkpO1xuICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSB1dHhvbGliLmJpdGdvXG4gICAgICAgICAgICAuZ2V0U2lnbmF0dXJlVmVyaWZpY2F0aW9ucyhcbiAgICAgICAgICAgICAgdHgsXG4gICAgICAgICAgICAgIGlucHV0SW5kZXgsXG4gICAgICAgICAgICAgIHV0eG9saWIuYml0Z28udG9UTnVtYmVyKHVuc3BlbnQudmFsdWUsIGNvaW4uYW1vdW50VHlwZSksXG4gICAgICAgICAgICAgIHsgcHVibGljS2V5IH0sXG4gICAgICAgICAgICAgIHByZXZPdXRwdXRzXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmlsdGVyKChzKSA9PiBzLnNpZ25lZEJ5ICE9PSB1bmRlZmluZWQpO1xuICAgICAgICAgIHNpZ25hdHVyZXMubGVuZ3RoLnNob3VsZC5lcWwoZXhwZWN0Q291bnQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpdCgocGFyYW1zLmhhc1VzZXJTaWduYXR1cmUgPyAnaGFzJyA6ICdoYXMgbm8nKSArICcgdXNlciBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KHJlY292ZXJ5VHgsIHdhbGxldEtleXMudXNlciwgcGFyYW1zLmhhc1VzZXJTaWduYXR1cmUgPyAxIDogMCk7XG4gICAgfSk7XG5cbiAgICBpdCgocGFyYW1zLmhhc0JhY2t1cFNpZ25hdHVyZSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyBiYWNrdXAgc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2hlY2tJbnB1dHNTaWduZWRCeShyZWNvdmVyeVR4LCB3YWxsZXRLZXlzLmJhY2t1cCwgcGFyYW1zLmhhc0JhY2t1cFNpZ25hdHVyZSA/IDEgOiAwKTtcbiAgICB9KTtcblxuICAgIGlmIChwYXJhbXMuaGFzVXNlclNpZ25hdHVyZSAmJiBwYXJhbXMuaGFzQmFja3VwU2lnbmF0dXJlKSB7XG4gICAgICBpdCgnaGFzIG5vIHBsYWNlaG9sZGVyIHNpZ25hdHVyZXMnLCBmdW5jdGlvbiAodGhpczogbW9jaGEuQ29udGV4dCkge1xuICAgICAgICBpZiAocmVjb3ZlcnlUeCBpbnN0YW5jZW9mIHV0eG9saWIuYml0Z28uVXR4b1RyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgcmVjb3ZlcnlUeC5pbnMuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHV0eG9saWIuYml0Z28ucGFyc2VTaWduYXR1cmVTY3JpcHQoaW5wdXQpO1xuICAgICAgICAgICAgc3dpdGNoIChwYXJzZWQuc2NyaXB0VHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdwMnNoJzpcbiAgICAgICAgICAgICAgY2FzZSAncDJzaFAyd3NoJzpcbiAgICAgICAgICAgICAgY2FzZSAncDJ3c2gnOlxuICAgICAgICAgICAgICBjYXNlICd0YXByb290U2NyaXB0UGF0aFNwZW5kJzpcbiAgICAgICAgICAgICAgICBwYXJzZWQuc2lnbmF0dXJlcy5mb3JFYWNoKChzaWduYXR1cmUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh1dHhvbGliLmJpdGdvLmlzUGxhY2Vob2xkZXJTaWduYXR1cmUoc2lnbmF0dXJlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHBsYWNlaG9sZGVyIHNpZ25hdHVyZSBhdCBpbmRleCAke2l9YCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIHNjcmlwdFR5cGUgJHtwYXJzZWQuc2NyaXB0VHlwZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNraXAoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaXQoKHBhcmFtcy5oYXNLcnNPdXRwdXQgPyAnaGFzJyA6ICdoYXMgbm8nKSArICcga2V5IHJlY292ZXJ5IHNlcnZpY2Ugb3V0cHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgb3V0cyA9IHJlY292ZXJ5VHggaW5zdGFuY2VvZiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0ID8gcmVjb3ZlcnlUeC5nZXRVbnNpZ25lZFR4KCkub3V0cyA6IHJlY292ZXJ5VHgub3V0cztcbiAgICAgIG91dHMubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzZXMgPSBvdXRzLm1hcCgobykgPT4gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoby5zY3JpcHQsIHJlY292ZXJ5VHgubmV0d29yaykpO1xuICAgICAgb3V0cHV0QWRkcmVzc2VzXG4gICAgICAgIC5pbmNsdWRlcyhrZXlSZWNvdmVyeVNlcnZpY2VBZGRyZXNzKVxuICAgICAgICAuc2hvdWxkLmVxbCghIXBhcmFtcy5oYXNLcnNPdXRwdXQgJiYgcGFyYW1zLmtyc1Byb3ZpZGVyID09PSAna2V5dGVybmFsJyk7XG4gICAgICBvdXRwdXRBZGRyZXNzZXMuaW5jbHVkZXMocmVjb3ZlcnlEZXN0aW5hdGlvbikuc2hvdWxkLmVxbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bldpdGhTY3JpcHRUeXBlcyhcbiAgc2NyaXB0VHlwZXM6IFNjcmlwdFR5cGUyT2YzW10sXG4gIHsgcnVuS2V5UHJvdmlkZXJUZXN0cyA9IHRydWUgfTogeyBydW5LZXlQcm92aWRlclRlc3RzPzogYm9vbGVhbiB9ID0ge31cbikge1xuICB1dHhvQ29pbnNcbiAgICAuZmlsdGVyKChjb2luKSA9PiBzY3JpcHRUeXBlcy5ldmVyeSgodHlwZSkgPT4gY29pbi5zdXBwb3J0c0FkZHJlc3NUeXBlKHR5cGUpKSlcbiAgICAuZm9yRWFjaCgoY29pbikgPT4ge1xuICAgICAgcnVuKFxuICAgICAgICBjb2luLFxuICAgICAgICBzY3JpcHRUeXBlcyxcbiAgICAgICAgd2FsbGV0S2V5cyxcbiAgICAgICAge1xuICAgICAgICAgIGtleXM6IGtleXNVbnNpZ25lZFN3ZWVwLFxuICAgICAgICAgIGhhc1VzZXJTaWduYXR1cmU6IGZhbHNlLFxuICAgICAgICAgIGhhc0JhY2t1cFNpZ25hdHVyZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIFsndW5zaWduZWRSZWNvdmVyeScsIC4uLnNjcmlwdFR5cGVzXVxuICAgICAgKTtcblxuICAgICAgaWYgKHJ1bktleVByb3ZpZGVyVGVzdHMpIHtcbiAgICAgICAgWydkYWknLCAna2V5dGVybmFsJ10uZm9yRWFjaCgoa3JzUHJvdmlkZXIpID0+IHtcbiAgICAgICAgICBydW4oXG4gICAgICAgICAgICBjb2luLFxuICAgICAgICAgICAgc2NyaXB0VHlwZXMsXG4gICAgICAgICAgICB3YWxsZXRLZXlzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBrZXlzOiBrZXlzS2V5UmVjb3ZlcnlTZXJ2aWNlLFxuICAgICAgICAgICAgICBrcnNQcm92aWRlcjoga3JzUHJvdmlkZXIsXG4gICAgICAgICAgICAgIGhhc1VzZXJTaWduYXR1cmU6IHRydWUsXG4gICAgICAgICAgICAgIGhhc0JhY2t1cFNpZ25hdHVyZTogZmFsc2UsXG4gICAgICAgICAgICAgIGhhc0tyc091dHB1dDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgWydrZXlSZWNvdmVyeVNlcnZpY2UnLCAuLi5zY3JpcHRUeXBlc11cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcnVuKFxuICAgICAgICBjb2luLFxuICAgICAgICBzY3JpcHRUeXBlcyxcbiAgICAgICAgd2FsbGV0S2V5cyxcbiAgICAgICAge1xuICAgICAgICAgIGtleXM6IGtleXNGdWxsU2lnbmVkUmVjb3ZlcnksXG4gICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgICBoYXNCYWNrdXBTaWduYXR1cmU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIFsnZnVsbFNpZ25lZFJlY292ZXJ5JywgLi4uc2NyaXB0VHlwZXNdXG4gICAgICApO1xuXG4gICAgICBydW4oXG4gICAgICAgIGNvaW4sXG4gICAgICAgIHNjcmlwdFR5cGVzLFxuICAgICAgICBleG90aWNXYWxsZXRLZXlzLFxuICAgICAgICB7XG4gICAgICAgICAga2V5czoga2V5c0Z1bGxTaWduZWRSZWNvdmVyeUV4b3RpYyxcbiAgICAgICAgICB1c2VyS2V5UGF0aDogZXhvdGljVXNlcktleVBhdGgsXG4gICAgICAgICAgaGFzVXNlclNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgICBoYXNCYWNrdXBTaWduYXR1cmU6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIFsnZnVsbFNpZ25lZFJlY292ZXJ5JywgJ2N1c3RvbVVzZXJLZXlQYXRoJywgLi4uc2NyaXB0VHlwZXNdXG4gICAgICApO1xuICAgIH0pO1xufVxuXG5kZXNjcmliZSgnQmFja3VwIEtleSBSZWNvdmVyeScsIGZ1bmN0aW9uICgpIHtcbiAgLy8gY29tcGF0aWJsZSB3aXRoIGFsbCBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnNoJ10pO1xuXG4gIC8vIHNlZ3dpdCBjb21wYXRpYmxlIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2hQMndzaCcsICdwMndzaCddKTtcblxuICAvLyB0YXByb290IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJ0cicsICdwMnRyTXVzaWcyJ10sIHsgcnVuS2V5UHJvdmlkZXJUZXN0czogZmFsc2UgfSk7XG59KTtcbiJdfQ==
@@ -98,14 +98,14 @@ function run(sourceCoin, recoveryCoin) {
98
98
  const recoveryWalletId = '5abacebe28d72fbd07e0b8cbba0ff39e';
99
99
  // the address the accidental deposit went to, in both sourceCoin and addressCoin formats
100
100
  const [depositAddressSourceCoin, depositAddressRecoveryCoin] = [sourceCoin, recoveryCoin].map((coin) => ({
101
- address: (0, src_1.generateAddress)(coin.network, { keychains: util_1.keychainsBase58, chain: 0, index: 0 }),
101
+ address: (0, src_1.generateAddress)(coin.name, { keychains: util_1.keychainsBase58, chain: 0, index: 0 }),
102
102
  chain: 0,
103
103
  index: 0,
104
104
  }));
105
105
  const chain = 0;
106
106
  const index = 1;
107
107
  // the address where we want to recover our funds to
108
- const recoveryAddress = (0, src_1.generateAddress)(sourceCoin.network, {
108
+ const recoveryAddress = (0, src_1.generateAddress)(sourceCoin.name, {
109
109
  keychains: util_1.keychainsBase58,
110
110
  chain,
111
111
  index,
@@ -270,26 +270,25 @@ describe(`Cross-Chain Recovery getWallet`, async function () {
270
270
  });
271
271
  });
272
272
  describe('convertLtcAddressToLegacyFormat', function () {
273
- const ltcNetwork = utxolib.networks.litecoin;
274
273
  it('should convert M... P2SH address to 3... legacy format', function () {
275
274
  // These two addresses represent the same underlying script hash:
276
275
  // - MNQ7zkgMsaV67rsjA3JuP59RC5wxRXpwgE is the LTC format (scriptHash 0x32)
277
276
  // - 3GBygsGPvTdfKMbq4AKZZRu1sPMWPEsBfd is the BTC format (scriptHash 0x05)
278
277
  const ltcAddress = 'MNQ7zkgMsaV67rsjA3JuP59RC5wxRXpwgE';
279
278
  const expectedLegacyAddress = '3GBygsGPvTdfKMbq4AKZZRu1sPMWPEsBfd';
280
- const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(ltcAddress, ltcNetwork);
279
+ const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(ltcAddress, 'ltc');
281
280
  assert.strictEqual(legacyAddress, expectedLegacyAddress);
282
281
  });
283
282
  it('should convert MD68PsdheKxcYsrVLyZRXgoSDLnB1MdVtE to legacy format', function () {
284
283
  const address = 'MD68PsdheKxcYsrVLyZRXgoSDLnB1MdVtE';
285
- const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(address, ltcNetwork);
284
+ const legacyAddress = (0, src_1.convertLtcAddressToLegacyFormat)(address, 'ltc');
286
285
  // Should start with '3' (legacy BTC P2SH format)
287
286
  assert.ok(legacyAddress.startsWith('3'), `Expected address to start with '3', got: ${legacyAddress}`);
288
287
  });
289
288
  it('should not modify bech32 addresses', function () {
290
289
  const bech32Address = 'ltc1qgrl8zpndsklaa9swgd5vevyxmx5x63vcrl7dk4';
291
- const result = (0, src_1.convertLtcAddressToLegacyFormat)(bech32Address, ltcNetwork);
290
+ const result = (0, src_1.convertLtcAddressToLegacyFormat)(bech32Address, 'ltc');
292
291
  assert.strictEqual(result, bech32Address);
293
292
  });
294
293
  });
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBQzlCLHlEQUEyQztBQUUzQyw4Q0FBMEM7QUFDMUMsNkNBQStCO0FBRS9CLHNDQVFzQjtBQUN0QixrQ0FVaUI7QUFDakIsaURBQThDO0FBQzlDLHFEQUFrRTtBQUNsRSxpREFBa0U7QUFFbEUsaUNBQXdEO0FBSXhELFNBQVMsUUFBUSxDQUFDLENBQWlCO0lBQ2pDLE9BQU8sSUFBQSxrQkFBTyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQXNCLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQztJQUM5RixPQUFPO1FBQ0wsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLFFBQVEsRUFBRSxDQUFDO2FBQ3BELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixFQUFFLEVBQUUsUUFBUTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QyxDQUFDO2FBQ0QsT0FBTyxFQUFFO1FBQ1osR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEIsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFD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QXdELEVBQUU7UUFDM0QsaUVBQWlFO1FBQ2pFLDJFQUEyRTtRQUMzRSwyRUFBMkU7UUFDM0UsTUFBTSxVQUFVLEdBQUcsb0NBQW9DLENBQUM7UUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxvQ0FBb0MsQ0FBQztRQUVuRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHFDQUErQixFQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5RSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLG9DQUFvQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUEscUNBQStCLEVBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTNFLGlEQUFpRDtRQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsNENBQTRDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsTUFBTSxhQUFhLEdBQUcsNkNBQTZDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBK0IsRUFBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgc2hvdWxkID0gcmVxdWlyZSgnc2hvdWxkJyk7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RVdHhvQ29pbixcbiAgQ3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkLFxuICBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZCxcbiAgZ2V0V2FsbGV0LFxuICBzdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3ZlcmllcyxcbiAgZ2VuZXJhdGVBZGRyZXNzLFxuICBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0LFxufSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZ2V0Rml4dHVyZSxcbiAga2V5Y2hhaW5zQmFzZTU4LFxuICBLZXljaGFpbkJhc2U1OCxcbiAgbW9ja1Vuc3BlbnQsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdXR4b0NvaW5zLFxuICBnZXREZWZhdWx0V2FsbGV0S2V5cyxcbiAgZGVmYXVsdEJpdEdvLFxuICBnZXRVdHhvQ29pbixcbn0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBub2NrQml0R28gfSBmcm9tICcuLi91dGlsL25vY2tCaXRHbyc7XG5pbXBvcnQgeyBjcmVhdGVGdWxsU2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi91dGlsL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyIH0gZnJvbSAnLi4vdXRpbC9rZXljaGFpbnMnO1xuXG5pbXBvcnQgeyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG50eXBlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQ8VE51bWJlcj47XG5cbmZ1bmN0aW9uIGdldEtleUlkKGs6IEtleWNoYWluQmFzZTU4KTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFNlZWQoay5wdWIpLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuZnVuY3Rpb24gbm9ja1dhbGxldChjb2luOiBBYnN0cmFjdFV0eG9Db2luLCB3YWxsZXRJZDogc3RyaW5nLCB3YWxsZXRLZXlzOiBUcmlwbGU8S2V5Y2hhaW5CYXNlNTg+KTogbm9jay5TY29wZVtdIHtcbiAgcmV0dXJuIFtcbiAgICBub2NrQml0R28oKVxuICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7d2FsbGV0SWR9YClcbiAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgaWQ6IHdhbGxldElkLFxuICAgICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICAgIGxhYmVsOiAnY3Jvc3NDaGFpblJlY292ZXJ5JyxcbiAgICAgICAga2V5czogd2FsbGV0S2V5cy5tYXAoKGspID0+IGdldEtleUlkKGspKSxcbiAgICAgIH0pXG4gICAgICAucGVyc2lzdCgpLFxuICAgIC4uLndhbGxldEtleXMubWFwKChrKSA9PlxuICAgICAgbm9ja0JpdEdvKClcbiAgICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7Z2V0S2V5SWQoayl9YClcbiAgICAgICAgLnJlcGx5KDIwMCwgaylcbiAgICAgICAgLnBlcnNpc3QoKVxuICAgICksXG4gIF07XG59XG5cbnR5cGUgQWRkcmVzcyA9IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gbm9ja1dhbGxldEFkZHJlc3MoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgd2FsbGV0SWQ6IHN0cmluZywgYWRkcmVzczogQWRkcmVzcyk6IG5vY2suU2NvcGUge1xuICByZXR1cm4gbm9ja0JpdEdvKClcbiAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHt3YWxsZXRJZH0vYWRkcmVzcy8ke2FkZHJlc3MuYWRkcmVzc31gKVxuICAgIC5yZXBseSgyMDAsIHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgIGNoYWluOiBhZGRyZXNzLmNoYWluLFxuICAgICAgaW5kZXg6IGFkZHJlc3MuaW5kZXgsXG4gICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICB3YWxsZXQ6IHdhbGxldElkLFxuICAgIH0pXG4gICAgLnBlcnNpc3QoKTtcbn1cblxuLyoqXG4gKiBTZXR1cCB0ZXN0IGZvciBjcm9zcy1jaGFpbiByZWNvdmVyeS5cbiAqXG4gKiBVc2VycyBjYW4gcmVjZWl2ZSBkZXBvc2l0cyBvbiB3YWxsZXQgYWRkcmVzc2VzIHRoYXQgYXJlIG9uIGEgZGlmZmVyZW50IGNoYWluLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYSB1c2VyIGNhbiByZWNlaXZlIGxpdGVjb2luIG9uIGEgYml0Y29pbiB3YWxsZXQuXG4gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGxpdGVjb2luIGJsb2NrY2hhaW4gaGFzIGEgdHJhbnNhY3Rpb24gd2l0aCBvdXRwdXRzIHRoYXQgYXJlIHNwZW5kYWJsZVxuICogd2l0aCBrZXlzIHRoYXQgd2VyZSBvcmlnaW5hbGx5IGNyZWF0ZWQgZm9yIGEgQml0R28gQlRDIHdhbGxldC5cbiAqIEluIHRoaXMgZXhhbXBsZSwgTFRDIGlzIHRoZSBcInNvdXJjZSBjb2luXCIgYW5kIEJUQyBpcyB0aGUgXCJyZWNvdmVyeSBjb2luXCJcbiAqIEluIGNhc2VzIGxpa2UgdGhlc2Ugd2UgbXVzdCB1c2UgY29uc3RydWN0IGEgdHJhbnNhY3Rpb24gZm9yIGxpdGVjb2luIG5ldHdvcmsgdXNpbmcga2V5cyBvZiB0aGVcbiAqIGJpdGNvaW4gd2FsbGV0LlxuICpcbiAqIEBwYXJhbSBzb3VyY2VDb2luIC0gdGhlIGNvaW4gdG8gY29uc3RydWN0IHRoZSB0cmFuc2FjdGlvbiBmb3JcbiAqIEBwYXJhbSByZWNvdmVyeUNvaW4gLSB0aGUgY29pbiB0aGUgcmVjZWl2aW5nIHdhbGxldCB3YXMgc2V0IHVwIGZvclxuICovXG5mdW5jdGlvbiBydW48VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbiwgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luKSB7XG4gIGRlc2NyaWJlKGBDcm9zcy1DaGFpbiBSZWNvdmVyeSBbc291cmNlQ29pbj0ke3NvdXJjZUNvaW4uZ2V0Q2hhaW4oKX0gcmVjb3ZlcnlDb2luPSR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICBjb25zdCByZWNvdmVyeVdhbGxldElkID0gJzVhYmFjZWJlMjhkNzJmYmQwN2UwYjhjYmJhMGZmMzllJztcbiAgICAvLyB0aGUgYWRkcmVzcyB0aGUgYWNjaWRlbnRhbCBkZXBvc2l0IHdlbnQgdG8sIGluIGJvdGggc291cmNlQ29pbiBhbmQgYWRkcmVzc0NvaW4gZm9ybWF0c1xuICAgIGNvbnN0IFtkZXBvc2l0QWRkcmVzc1NvdXJjZUNvaW4sIGRlcG9zaXRBZGRyZXNzUmVjb3ZlcnlDb2luXSA9IFtzb3VyY2VDb2luLCByZWNvdmVyeUNvaW5dLm1hcCgoY29pbikgPT4gKHtcbiAgICAgIGFkZHJlc3M6IGdlbmVyYXRlQWRkcmVzcyhjb2luLm5ldHdvcmssIHsga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsIGNoYWluOiAwLCBpbmRleDogMCB9KSxcbiAgICAgIGNoYWluOiAwLFxuICAgICAgaW5kZXg6IDAsXG4gICAgfSkpO1xuICAgIGNvbnN0IGNoYWluID0gMDtcbiAgICBjb25zdCBpbmRleCA9IDE7XG4gICAgLy8gdGhlIGFkZHJlc3Mgd2hlcmUgd2Ugd2FudCB0byByZWNvdmVyIG91ciBmdW5kcyB0b1xuICAgIGNvbnN0IHJlY292ZXJ5QWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcyhzb3VyY2VDb2luLm5ldHdvcmssIHtcbiAgICAgIGtleWNoYWluczoga2V5Y2hhaW5zQmFzZTU4LFxuICAgICAgY2hhaW4sXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICBsZXQgZGVwb3NpdFR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcblxuICAgIGZ1bmN0aW9uIGdldERlcG9zaXRVbnNwZW50cygpOiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBtb2NrVW5zcGVudDxUTnVtYmVyPihcbiAgICAgICAgICBzb3VyY2VDb2luLm5ldHdvcmssXG4gICAgICAgICAgd2FsbGV0S2V5cyxcbiAgICAgICAgICAncDJzaCcsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAoc291cmNlQ29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCgnMTA5OTk5OTk4MDAwMDAwMDEnKSA6IDFlOCkgYXMgVE51bWJlclxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgICAgcmV0dXJuIGNyZWF0ZUZ1bGxTaWduZWRUcmFuc2FjdGlvbjxUTnVtYmVyPihcbiAgICAgICAgc291cmNlQ29pbi5uZXR3b3JrLFxuICAgICAgICBnZXREZXBvc2l0VW5zcGVudHMoKSxcbiAgICAgICAgZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgIGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYmVmb3JlKCdwcmVwYXJlIGRlcG9zaXQgdHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXBvc2l0VHggPSBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldFJlY292ZXJ5VW5zcGVudHMoKTogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgICAgYWRkcmVzczogZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgICAgY2hhaW46IGNoYWluLFxuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICB2YWx1ZTogZGVwb3NpdFR4Lm91dHNbMF0udmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGJlZm9yZSgnc2V0dXAgbm9ja3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub2Nrcy5wdXNoKC4uLm5vY2tXYWxsZXQocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBrZXljaGFpbnNCYXNlNTgpKTtcbiAgICAgIG5vY2tzLnB1c2gobm9ja1dhbGxldEFkZHJlc3MocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBkZXBvc2l0QWRkcmVzc1JlY292ZXJ5Q29pbikpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja3MuZm9yRWFjaCgobikgPT4gbi5kb25lKCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIG1hdGNoRml4dHVyZShcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIHJlY292ZXJ5OiBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj4gfCBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZDxUTnVtYmVyPlxuICAgICkge1xuICAgICAgbGV0IHJlY292ZXJ5T2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4ucmVjb3ZlcnkgfTtcbiAgICAgIGlmIChzb3VyY2VDb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIHJlY292ZXJ5T2JqID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZWNvdmVyeU9iaiwgKGssIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzaG91bGRFcXVhbEpTT04oXG4gICAgICAgIHJlY292ZXJ5T2JqLFxuICAgICAgICBhd2FpdCBnZXRGaXh0dXJlKHNvdXJjZUNvaW4sIGByZWNvdmVyeS9jcm9zc0NoYWluUmVjb3ZlcnktJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0tJHtuYW1lfWAsIHJlY292ZXJ5T2JqKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZShwc2J0SGV4OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tSGV4KHBzYnRIZXgsIHNvdXJjZUNvaW4ubmV0d29yayk7XG4gICAgICBjb25zdCB1bnNwZW50cyA9IGdldFJlY292ZXJ5VW5zcGVudHMoKTtcbiAgICAgIHNob3VsZC5lcXVhbChwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIC8vIFZlcmlmeSB1c2VyIGtleSBoYXMgc2lnbmVkIGVhY2ggaW5wdXQgKHNhbWUgcGF0dGVybiBhcyBiYWNrdXBLZXlSZWNvdmVyeSB0ZXN0KVxuICAgICAgcHNidC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyU2lnbmVkID0gcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaSwgd2FsbGV0S2V5cy51c2VyKTtcbiAgICAgICAgdXNlclNpZ25lZC5zaG91bGQuZXFsKHRydWUsIGBJbnB1dCAke2l9IHNob3VsZCBiZSBzaWduZWQgYnkgdXNlciBrZXlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGVzdCBzaWduZWQgY3Jvc3MgY2hhaW4gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBnZXRSZWNvdmVyeVByb3ZpZGVyU3R1YiA9IHNpbm9uXG4gICAgICAgIC5zdHViKEFic3RyYWN0VXR4b0NvaW4ucHJvdG90eXBlLCAnZ2V0UmVjb3ZlcnlQcm92aWRlcicpXG4gICAgICAgIC5yZXR1cm5zKG5ldyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXI8VE51bWJlcj4oc291cmNlQ29pbiwgZ2V0RGVwb3NpdFVuc3BlbnRzKCksIGRlcG9zaXRUeCkpO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICByZWNvdmVyeUNvaW4sXG4gICAgICAgIHR4aWQ6IGRlcG9zaXRUeC5nZXRJZCgpLFxuICAgICAgICByZWNvdmVyeUFkZHJlc3MsXG4gICAgICAgIHdhbGxldDogcmVjb3ZlcnlXYWxsZXRJZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWduZWRSZWNvdmVyeSA9IChhd2FpdCBzb3VyY2VDb2luLnJlY292ZXJGcm9tV3JvbmdDaGFpbjxUTnVtYmVyPih7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgeHBydjoga2V5Y2hhaW5zQmFzZTU4WzBdLnBydixcbiAgICAgIH0pKSBhcyBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgnc2lnbmVkJywgc2lnbmVkUmVjb3ZlcnkpO1xuXG4gICAgICAvLyBWZXJpZnkgUFNCVCBoYXMgdmFsaWQgc2lnbmF0dXJlcyAodXNlciBrZXkgc2lnbmVkKVxuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoc2lnbmVkUmVjb3ZlcnkudHhIZXggYXMgc3RyaW5nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCB1bnNpZ25lZCBjcm9zcyBjaGFpbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGdldFJlY292ZXJ5UHJvdmlkZXJTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIoQWJzdHJhY3RVdHhvQ29pbi5wcm90b3R5cGUsICdnZXRSZWNvdmVyeVByb3ZpZGVyJylcbiAgICAgICAgLnJldHVybnMobmV3IE1vY2tDcm9zc0NoYWluUmVjb3ZlcnlQcm92aWRlcjxUTnVtYmVyPihzb3VyY2VDb2luLCBnZXREZXBvc2l0VW5zcGVudHMoKSwgZGVwb3NpdFR4KSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHJlY292ZXJ5Q29pbixcbiAgICAgICAgdHhpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgIHJlY292ZXJ5QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0OiByZWNvdmVyeVdhbGxldElkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkUmVjb3ZlcnkgPSAoYXdhaXQgc291cmNlQ29pbi5yZWNvdmVyRnJvbVdyb25nQ2hhaW48VE51bWJlcj4oe1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgICB9KSkgYXMgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgndW5zaWduZWQnLCB1bnNpZ25lZFJlY292ZXJ5KTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB1bnNpZ25lZCBQU0JUIGNhbiBiZSBzaWduZWRcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgc291cmNlQ29pbi5zaWduVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgICAgICB0eFByZWJ1aWxkOiB1bnNpZ25lZFJlY292ZXJ5LFxuICAgICAgICBwcnY6IGtleWNoYWluc0Jhc2U1OFswXS5wcnYsXG4gICAgICAgIHB1YnM6IGtleWNoYWluc0Jhc2U1OC5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgICAgIH0pO1xuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoKHNpZ25lZFR4IGFzIHsgdHhIZXg6IHN0cmluZyB9KS50eEhleCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyeShzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luLCByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyaWVzW3NvdXJjZUNvaW4uZ2V0RmFtaWx5KCldPy5pbmNsdWRlcyhyZWNvdmVyeUNvaW4uZ2V0RmFtaWx5KCkpO1xufVxuXG51dHhvQ29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICB1dHhvQ29pbnNcbiAgICAuZmlsdGVyKFxuICAgICAgKG90aGVyQ29pbikgPT5cbiAgICAgICAgY29pbiAhPT0gb3RoZXJDb2luICYmXG4gICAgICAgIGlzU3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJ5KGNvaW4sIG90aGVyQ29pbikgJiZcbiAgICAgICAgKCh1dHhvbGliLmlzTWFpbm5ldChjb2luLm5ldHdvcmspICYmIHV0eG9saWIuaXNNYWlubmV0KG90aGVyQ29pbi5uZXR3b3JrKSkgfHxcbiAgICAgICAgICAodXR4b2xpYi5pc1Rlc3RuZXQoY29pbi5uZXR3b3JrKSAmJiB1dHhvbGliLmlzVGVzdG5ldChvdGhlckNvaW4ubmV0d29yaykpKVxuICAgIClcbiAgICAuZm9yRWFjaCgob3RoZXJDb2luKSA9PiB7XG4gICAgICBpZiAoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICBydW48YmlnaW50Pihjb2luLCBvdGhlckNvaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKGNvaW4sIG90aGVyQ29pbik7XG4gICAgICB9XG4gICAgfSk7XG59KTtcblxuZGVzY3JpYmUoYENyb3NzLUNoYWluIFJlY292ZXJ5IGdldFdhbGxldGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBkZWZhdWx0Qml0R287XG4gIGNvbnN0IHJlY292ZXJ5Q29pbiA9IGdldFV0eG9Db2luKCdidGMnKTtcbiAgY29uc3QgcmVjb3ZlcnlXYWxsZXRJZCA9ICc1YWJhY2ViZTI4ZDcyZmJkMDdlMGI4Y2JiYTBmZjM5ZSc7XG5cbiAgaXQoJ3Nob3VsZCBzZWFyY2ggdjEgd2FsbGV0cyBpZiB0aGUgdjIgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBhIDR4eCBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBlcnJvclJlc3BvbnNlcyA9IFs0MDAsIDQwNF07XG5cbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9yUmVzcG9uc2VzKSB7XG4gICAgICBjb25zdCBub2NrVjJXYWxsZXQgPSBub2NrQml0R28oYml0Z28pXG4gICAgICAgIC5nZXQoYC9hcGkvdjIvJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKVxuICAgICAgICAucmVwbHkoZXJyb3IpO1xuICAgICAgY29uc3Qgbm9ja1YxV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKS5nZXQoYC9hcGkvdjEvd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKS5yZXBseShlcnJvcik7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT4gZ2V0V2FsbGV0KGJpdGdvLCByZWNvdmVyeUNvaW4sIHJlY292ZXJ5V2FsbGV0SWQpLFxuICAgICAgICBFcnJvcihgY291bGQgbm90IGdldCB3YWxsZXQgJHtyZWNvdmVyeVdhbGxldElkfSBmcm9tIHYxIG9yIHYyOiBBcGlSZXNwb25zZUVycm9yOiAke2Vycm9yfWApXG4gICAgICApO1xuICAgICAgbm9ja1YyV2FsbGV0LmRvbmUoKTtcbiAgICAgIG5vY2tWMVdhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRoZSB2MiBlbmRwb2ludCByZXNwb25kcyB3aXRoIGEgNXh4IGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGVycm9yUmVzcG9uc2VzID0gWzUwMF07XG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvclJlc3BvbnNlcykge1xuICAgICAgY29uc3Qgbm9ja1YyV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9L3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YClcbiAgICAgICAgLnJlcGx5KGVycm9yKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGdldFdhbGxldChiaXRnbywgcmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkKSwge1xuICAgICAgICBuYW1lOiAnQXBpUmVzcG9uc2VFcnJvcicsXG4gICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgICByZXN1bHQ6IHt9LFxuICAgICAgICBpbnZhbGlkVG9rZW46IGZhbHNlLFxuICAgICAgICBuZWVkc09UUDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIG5vY2tWMldhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgbHRjTmV0d29yayA9IHV0eG9saWIubmV0d29ya3MubGl0ZWNvaW47XG5cbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IE0uLi4gUDJTSCBhZGRyZXNzIHRvIDMuLi4gbGVnYWN5IGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUaGVzZSB0d28gYWRkcmVzc2VzIHJlcHJlc2VudCB0aGUgc2FtZSB1bmRlcmx5aW5nIHNjcmlwdCBoYXNoOlxuICAgIC8vIC0gTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSBpcyB0aGUgTFRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDMyKVxuICAgIC8vIC0gM0dCeWdzR1B2VGRmS01icTRBS1paUnUxc1BNV1BFc0JmZCBpcyB0aGUgQlRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDA1KVxuICAgIGNvbnN0IGx0Y0FkZHJlc3MgPSAnTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSc7XG4gICAgY29uc3QgZXhwZWN0ZWRMZWdhY3lBZGRyZXNzID0gJzNHQnlnc0dQdlRkZktNYnE0QUtaWlJ1MXNQTVdQRXNCZmQnO1xuXG4gICAgY29uc3QgbGVnYWN5QWRkcmVzcyA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQobHRjQWRkcmVzcywgbHRjTmV0d29yayk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGxlZ2FjeUFkZHJlc3MsIGV4cGVjdGVkTGVnYWN5QWRkcmVzcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29udmVydCBNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFIHRvIGxlZ2FjeSBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYWRkcmVzcyA9ICdNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFJztcbiAgICBjb25zdCBsZWdhY3lBZGRyZXNzID0gY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdChhZGRyZXNzLCBsdGNOZXR3b3JrKTtcblxuICAgIC8vIFNob3VsZCBzdGFydCB3aXRoICczJyAobGVnYWN5IEJUQyBQMlNIIGZvcm1hdClcbiAgICBhc3NlcnQub2sobGVnYWN5QWRkcmVzcy5zdGFydHNXaXRoKCczJyksIGBFeHBlY3RlZCBhZGRyZXNzIHRvIHN0YXJ0IHdpdGggJzMnLCBnb3Q6ICR7bGVnYWN5QWRkcmVzc31gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGJlY2gzMiBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmVjaDMyQWRkcmVzcyA9ICdsdGMxcWdybDh6cG5kc2tsYWE5c3dnZDV2ZXZ5eG14NXg2M3Zjcmw3ZGs0JztcbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KGJlY2gzMkFkZHJlc3MsIGx0Y05ldHdvcmspO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIGJlY2gzMkFkZHJlc3MpO1xuICB9KTtcbn0pO1xuIl19
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBQzlCLHlEQUEyQztBQUUzQyw4Q0FBMEM7QUFDMUMsNkNBQStCO0FBRS9CLHNDQVFzQjtBQUN0QixrQ0FVaUI7QUFDakIsaURBQThDO0FBQzlDLHFEQUFrRTtBQUNsRSxpREFBa0U7QUFFbEUsaUNBQXdEO0FBSXhELFNBQVMsUUFBUSxDQUFDLENBQWlCO0lBQ2pDLE9BQU8sSUFBQSxrQkFBTyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQXNCLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQztJQUM5RixPQUFPO1FBQ0wsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLFFBQVEsRUFBRSxDQUFDO2FBQ3BELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixFQUFFLEVBQUUsUUFBUTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3JCLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QyxDQUFDO2FBQ0QsT0FBTyxFQUFFO1FBQ1osR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEIsSUFBQSxxQkFBUyxHQUFFO2FBQ1IsR0FBRyxDQUFD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M0UsTUFBTSxVQUFVLEdBQUcsb0NBQW9DLENBQUM7UUFDeEQsTUFBTSxxQkFBcUIsR0FBRyxvQ0FBb0MsQ0FBQztRQUVuRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHFDQUErQixFQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RSxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLG9DQUFvQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUEscUNBQStCLEVBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXRFLGlEQUFpRDtRQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsNENBQTRDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsTUFBTSxhQUFhLEdBQUcsNkNBQTZDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBK0IsRUFBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgc2hvdWxkID0gcmVxdWlyZSgnc2hvdWxkJyk7XG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RVdHhvQ29pbixcbiAgQ3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkLFxuICBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZCxcbiAgZ2V0V2FsbGV0LFxuICBzdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3ZlcmllcyxcbiAgZ2VuZXJhdGVBZGRyZXNzLFxuICBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0LFxufSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHtcbiAgZ2V0Rml4dHVyZSxcbiAga2V5Y2hhaW5zQmFzZTU4LFxuICBLZXljaGFpbkJhc2U1OCxcbiAgbW9ja1Vuc3BlbnQsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdXR4b0NvaW5zLFxuICBnZXREZWZhdWx0V2FsbGV0S2V5cyxcbiAgZGVmYXVsdEJpdEdvLFxuICBnZXRVdHhvQ29pbixcbn0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQgeyBub2NrQml0R28gfSBmcm9tICcuLi91dGlsL25vY2tCaXRHbyc7XG5pbXBvcnQgeyBjcmVhdGVGdWxsU2lnbmVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi91dGlsL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyIH0gZnJvbSAnLi4vdXRpbC9rZXljaGFpbnMnO1xuXG5pbXBvcnQgeyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG50eXBlIFdhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4gPSB1dHhvbGliLmJpdGdvLldhbGxldFVuc3BlbnQ8VE51bWJlcj47XG5cbmZ1bmN0aW9uIGdldEtleUlkKGs6IEtleWNoYWluQmFzZTU4KTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFNlZWQoay5wdWIpLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuZnVuY3Rpb24gbm9ja1dhbGxldChjb2luOiBBYnN0cmFjdFV0eG9Db2luLCB3YWxsZXRJZDogc3RyaW5nLCB3YWxsZXRLZXlzOiBUcmlwbGU8S2V5Y2hhaW5CYXNlNTg+KTogbm9jay5TY29wZVtdIHtcbiAgcmV0dXJuIFtcbiAgICBub2NrQml0R28oKVxuICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7d2FsbGV0SWR9YClcbiAgICAgIC5yZXBseSgyMDAsIHtcbiAgICAgICAgaWQ6IHdhbGxldElkLFxuICAgICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICAgIGxhYmVsOiAnY3Jvc3NDaGFpblJlY292ZXJ5JyxcbiAgICAgICAga2V5czogd2FsbGV0S2V5cy5tYXAoKGspID0+IGdldEtleUlkKGspKSxcbiAgICAgIH0pXG4gICAgICAucGVyc2lzdCgpLFxuICAgIC4uLndhbGxldEtleXMubWFwKChrKSA9PlxuICAgICAgbm9ja0JpdEdvKClcbiAgICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0va2V5LyR7Z2V0S2V5SWQoayl9YClcbiAgICAgICAgLnJlcGx5KDIwMCwgaylcbiAgICAgICAgLnBlcnNpc3QoKVxuICAgICksXG4gIF07XG59XG5cbnR5cGUgQWRkcmVzcyA9IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBjaGFpbjogbnVtYmVyO1xuICBpbmRleDogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gbm9ja1dhbGxldEFkZHJlc3MoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgd2FsbGV0SWQ6IHN0cmluZywgYWRkcmVzczogQWRkcmVzcyk6IG5vY2suU2NvcGUge1xuICByZXR1cm4gbm9ja0JpdEdvKClcbiAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHt3YWxsZXRJZH0vYWRkcmVzcy8ke2FkZHJlc3MuYWRkcmVzc31gKVxuICAgIC5yZXBseSgyMDAsIHtcbiAgICAgIGFkZHJlc3M6IGFkZHJlc3MuYWRkcmVzcyxcbiAgICAgIGNoYWluOiBhZGRyZXNzLmNoYWluLFxuICAgICAgaW5kZXg6IGFkZHJlc3MuaW5kZXgsXG4gICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICB3YWxsZXQ6IHdhbGxldElkLFxuICAgIH0pXG4gICAgLnBlcnNpc3QoKTtcbn1cblxuLyoqXG4gKiBTZXR1cCB0ZXN0IGZvciBjcm9zcy1jaGFpbiByZWNvdmVyeS5cbiAqXG4gKiBVc2VycyBjYW4gcmVjZWl2ZSBkZXBvc2l0cyBvbiB3YWxsZXQgYWRkcmVzc2VzIHRoYXQgYXJlIG9uIGEgZGlmZmVyZW50IGNoYWluLlxuICpcbiAqIEZvciBpbnN0YW5jZSwgYSB1c2VyIGNhbiByZWNlaXZlIGxpdGVjb2luIG9uIGEgYml0Y29pbiB3YWxsZXQuXG4gKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGxpdGVjb2luIGJsb2NrY2hhaW4gaGFzIGEgdHJhbnNhY3Rpb24gd2l0aCBvdXRwdXRzIHRoYXQgYXJlIHNwZW5kYWJsZVxuICogd2l0aCBrZXlzIHRoYXQgd2VyZSBvcmlnaW5hbGx5IGNyZWF0ZWQgZm9yIGEgQml0R28gQlRDIHdhbGxldC5cbiAqIEluIHRoaXMgZXhhbXBsZSwgTFRDIGlzIHRoZSBcInNvdXJjZSBjb2luXCIgYW5kIEJUQyBpcyB0aGUgXCJyZWNvdmVyeSBjb2luXCJcbiAqIEluIGNhc2VzIGxpa2UgdGhlc2Ugd2UgbXVzdCB1c2UgY29uc3RydWN0IGEgdHJhbnNhY3Rpb24gZm9yIGxpdGVjb2luIG5ldHdvcmsgdXNpbmcga2V5cyBvZiB0aGVcbiAqIGJpdGNvaW4gd2FsbGV0LlxuICpcbiAqIEBwYXJhbSBzb3VyY2VDb2luIC0gdGhlIGNvaW4gdG8gY29uc3RydWN0IHRoZSB0cmFuc2FjdGlvbiBmb3JcbiAqIEBwYXJhbSByZWNvdmVyeUNvaW4gLSB0aGUgY29pbiB0aGUgcmVjZWl2aW5nIHdhbGxldCB3YXMgc2V0IHVwIGZvclxuICovXG5mdW5jdGlvbiBydW48VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbiwgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luKSB7XG4gIGRlc2NyaWJlKGBDcm9zcy1DaGFpbiBSZWNvdmVyeSBbc291cmNlQ29pbj0ke3NvdXJjZUNvaW4uZ2V0Q2hhaW4oKX0gcmVjb3ZlcnlDb2luPSR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXRLZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICBjb25zdCByZWNvdmVyeVdhbGxldElkID0gJzVhYmFjZWJlMjhkNzJmYmQwN2UwYjhjYmJhMGZmMzllJztcbiAgICAvLyB0aGUgYWRkcmVzcyB0aGUgYWNjaWRlbnRhbCBkZXBvc2l0IHdlbnQgdG8sIGluIGJvdGggc291cmNlQ29pbiBhbmQgYWRkcmVzc0NvaW4gZm9ybWF0c1xuICAgIGNvbnN0IFtkZXBvc2l0QWRkcmVzc1NvdXJjZUNvaW4sIGRlcG9zaXRBZGRyZXNzUmVjb3ZlcnlDb2luXSA9IFtzb3VyY2VDb2luLCByZWNvdmVyeUNvaW5dLm1hcCgoY29pbikgPT4gKHtcbiAgICAgIGFkZHJlc3M6IGdlbmVyYXRlQWRkcmVzcyhjb2luLm5hbWUsIHsga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsIGNoYWluOiAwLCBpbmRleDogMCB9KSxcbiAgICAgIGNoYWluOiAwLFxuICAgICAgaW5kZXg6IDAsXG4gICAgfSkpO1xuICAgIGNvbnN0IGNoYWluID0gMDtcbiAgICBjb25zdCBpbmRleCA9IDE7XG4gICAgLy8gdGhlIGFkZHJlc3Mgd2hlcmUgd2Ugd2FudCB0byByZWNvdmVyIG91ciBmdW5kcyB0b1xuICAgIGNvbnN0IHJlY292ZXJ5QWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcyhzb3VyY2VDb2luLm5hbWUsIHtcbiAgICAgIGtleWNoYWluczoga2V5Y2hhaW5zQmFzZTU4LFxuICAgICAgY2hhaW4sXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICBsZXQgZGVwb3NpdFR4OiB1dHhvbGliLmJpdGdvLlV0eG9UcmFuc2FjdGlvbjxUTnVtYmVyPjtcblxuICAgIGZ1bmN0aW9uIGdldERlcG9zaXRVbnNwZW50cygpOiB1dHhvbGliLmJpdGdvLlVuc3BlbnQ8VE51bWJlcj5bXSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBtb2NrVW5zcGVudDxUTnVtYmVyPihcbiAgICAgICAgICBzb3VyY2VDb2luLm5ldHdvcmssXG4gICAgICAgICAgd2FsbGV0S2V5cyxcbiAgICAgICAgICAncDJzaCcsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAoc291cmNlQ29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCgnMTA5OTk5OTk4MDAwMDAwMDEnKSA6IDFlOCkgYXMgVE51bWJlclxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTogdXR4b2xpYi5iaXRnby5VdHhvVHJhbnNhY3Rpb248VE51bWJlcj4ge1xuICAgICAgcmV0dXJuIGNyZWF0ZUZ1bGxTaWduZWRUcmFuc2FjdGlvbjxUTnVtYmVyPihcbiAgICAgICAgc291cmNlQ29pbi5uZXR3b3JrLFxuICAgICAgICBnZXREZXBvc2l0VW5zcGVudHMoKSxcbiAgICAgICAgZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgIGdldERlZmF1bHRXYWxsZXRVbnNwZW50U2lnbmVyKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYmVmb3JlKCdwcmVwYXJlIGRlcG9zaXQgdHgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkZXBvc2l0VHggPSBnZXREZXBvc2l0VHJhbnNhY3Rpb24oKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldFJlY292ZXJ5VW5zcGVudHMoKTogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgICAgYWRkcmVzczogZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsXG4gICAgICAgICAgY2hhaW46IGNoYWluLFxuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICB2YWx1ZTogZGVwb3NpdFR4Lm91dHNbMF0udmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH1cblxuICAgIGJlZm9yZSgnc2V0dXAgbm9ja3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub2Nrcy5wdXNoKC4uLm5vY2tXYWxsZXQocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBrZXljaGFpbnNCYXNlNTgpKTtcbiAgICAgIG5vY2tzLnB1c2gobm9ja1dhbGxldEFkZHJlc3MocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBkZXBvc2l0QWRkcmVzc1JlY292ZXJ5Q29pbikpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja3MuZm9yRWFjaCgobikgPT4gbi5kb25lKCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIG1hdGNoRml4dHVyZShcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIHJlY292ZXJ5OiBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj4gfCBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZDxUTnVtYmVyPlxuICAgICkge1xuICAgICAgbGV0IHJlY292ZXJ5T2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4ucmVjb3ZlcnkgfTtcbiAgICAgIGlmIChzb3VyY2VDb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIHJlY292ZXJ5T2JqID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZWNvdmVyeU9iaiwgKGssIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzaG91bGRFcXVhbEpTT04oXG4gICAgICAgIHJlY292ZXJ5T2JqLFxuICAgICAgICBhd2FpdCBnZXRGaXh0dXJlKHNvdXJjZUNvaW4sIGByZWNvdmVyeS9jcm9zc0NoYWluUmVjb3ZlcnktJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0tJHtuYW1lfWAsIHJlY292ZXJ5T2JqKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZShwc2J0SGV4OiBzdHJpbmcpIHtcbiAgICAgIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLmNyZWF0ZVBzYnRGcm9tSGV4KHBzYnRIZXgsIHNvdXJjZUNvaW4ubmV0d29yayk7XG4gICAgICBjb25zdCB1bnNwZW50cyA9IGdldFJlY292ZXJ5VW5zcGVudHMoKTtcbiAgICAgIHNob3VsZC5lcXVhbChwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aCwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIC8vIFZlcmlmeSB1c2VyIGtleSBoYXMgc2lnbmVkIGVhY2ggaW5wdXQgKHNhbWUgcGF0dGVybiBhcyBiYWNrdXBLZXlSZWNvdmVyeSB0ZXN0KVxuICAgICAgcHNidC5kYXRhLmlucHV0cy5mb3JFYWNoKChpbnB1dCwgaSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyU2lnbmVkID0gcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZklucHV0SEQoaSwgd2FsbGV0S2V5cy51c2VyKTtcbiAgICAgICAgdXNlclNpZ25lZC5zaG91bGQuZXFsKHRydWUsIGBJbnB1dCAke2l9IHNob3VsZCBiZSBzaWduZWQgYnkgdXNlciBrZXlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGVzdCBzaWduZWQgY3Jvc3MgY2hhaW4gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBnZXRSZWNvdmVyeVByb3ZpZGVyU3R1YiA9IHNpbm9uXG4gICAgICAgIC5zdHViKEFic3RyYWN0VXR4b0NvaW4ucHJvdG90eXBlLCAnZ2V0UmVjb3ZlcnlQcm92aWRlcicpXG4gICAgICAgIC5yZXR1cm5zKG5ldyBNb2NrQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXI8VE51bWJlcj4oc291cmNlQ29pbiwgZ2V0RGVwb3NpdFVuc3BlbnRzKCksIGRlcG9zaXRUeCkpO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICByZWNvdmVyeUNvaW4sXG4gICAgICAgIHR4aWQ6IGRlcG9zaXRUeC5nZXRJZCgpLFxuICAgICAgICByZWNvdmVyeUFkZHJlc3MsXG4gICAgICAgIHdhbGxldDogcmVjb3ZlcnlXYWxsZXRJZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWduZWRSZWNvdmVyeSA9IChhd2FpdCBzb3VyY2VDb2luLnJlY292ZXJGcm9tV3JvbmdDaGFpbjxUTnVtYmVyPih7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgeHBydjoga2V5Y2hhaW5zQmFzZTU4WzBdLnBydixcbiAgICAgIH0pKSBhcyBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgnc2lnbmVkJywgc2lnbmVkUmVjb3ZlcnkpO1xuXG4gICAgICAvLyBWZXJpZnkgUFNCVCBoYXMgdmFsaWQgc2lnbmF0dXJlcyAodXNlciBrZXkgc2lnbmVkKVxuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoc2lnbmVkUmVjb3ZlcnkudHhIZXggYXMgc3RyaW5nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCB1bnNpZ25lZCBjcm9zcyBjaGFpbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGdldFJlY292ZXJ5UHJvdmlkZXJTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIoQWJzdHJhY3RVdHhvQ29pbi5wcm90b3R5cGUsICdnZXRSZWNvdmVyeVByb3ZpZGVyJylcbiAgICAgICAgLnJldHVybnMobmV3IE1vY2tDcm9zc0NoYWluUmVjb3ZlcnlQcm92aWRlcjxUTnVtYmVyPihzb3VyY2VDb2luLCBnZXREZXBvc2l0VW5zcGVudHMoKSwgZGVwb3NpdFR4KSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHJlY292ZXJ5Q29pbixcbiAgICAgICAgdHhpZDogZGVwb3NpdFR4LmdldElkKCksXG4gICAgICAgIHJlY292ZXJ5QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0OiByZWNvdmVyeVdhbGxldElkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHVuc2lnbmVkUmVjb3ZlcnkgPSAoYXdhaXQgc291cmNlQ29pbi5yZWNvdmVyRnJvbVdyb25nQ2hhaW48VE51bWJlcj4oe1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgIHNpZ25lZDogZmFsc2UsXG4gICAgICB9KSkgYXMgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgndW5zaWduZWQnLCB1bnNpZ25lZFJlY292ZXJ5KTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB1bnNpZ25lZCBQU0JUIGNhbiBiZSBzaWduZWRcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgc291cmNlQ29pbi5zaWduVHJhbnNhY3Rpb248VE51bWJlcj4oe1xuICAgICAgICB0eFByZWJ1aWxkOiB1bnNpZ25lZFJlY292ZXJ5LFxuICAgICAgICBwcnY6IGtleWNoYWluc0Jhc2U1OFswXS5wcnYsXG4gICAgICAgIHB1YnM6IGtleWNoYWluc0Jhc2U1OC5tYXAoKGspID0+IGsucHViKSBhcyBUcmlwbGU8c3RyaW5nPixcbiAgICAgIH0pO1xuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoKHNpZ25lZFR4IGFzIHsgdHhIZXg6IHN0cmluZyB9KS50eEhleCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpc1N1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyeShzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luLCByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHN1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyaWVzW3NvdXJjZUNvaW4uZ2V0RmFtaWx5KCldPy5pbmNsdWRlcyhyZWNvdmVyeUNvaW4uZ2V0RmFtaWx5KCkpO1xufVxuXG51dHhvQ29pbnMuZm9yRWFjaCgoY29pbikgPT4ge1xuICB1dHhvQ29pbnNcbiAgICAuZmlsdGVyKFxuICAgICAgKG90aGVyQ29pbikgPT5cbiAgICAgICAgY29pbiAhPT0gb3RoZXJDb2luICYmXG4gICAgICAgIGlzU3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJ5KGNvaW4sIG90aGVyQ29pbikgJiZcbiAgICAgICAgKCh1dHhvbGliLmlzTWFpbm5ldChjb2luLm5ldHdvcmspICYmIHV0eG9saWIuaXNNYWlubmV0KG90aGVyQ29pbi5uZXR3b3JrKSkgfHxcbiAgICAgICAgICAodXR4b2xpYi5pc1Rlc3RuZXQoY29pbi5uZXR3b3JrKSAmJiB1dHhvbGliLmlzVGVzdG5ldChvdGhlckNvaW4ubmV0d29yaykpKVxuICAgIClcbiAgICAuZm9yRWFjaCgob3RoZXJDb2luKSA9PiB7XG4gICAgICBpZiAoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICBydW48YmlnaW50Pihjb2luLCBvdGhlckNvaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKGNvaW4sIG90aGVyQ29pbik7XG4gICAgICB9XG4gICAgfSk7XG59KTtcblxuZGVzY3JpYmUoYENyb3NzLUNoYWluIFJlY292ZXJ5IGdldFdhbGxldGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBkZWZhdWx0Qml0R287XG4gIGNvbnN0IHJlY292ZXJ5Q29pbiA9IGdldFV0eG9Db2luKCdidGMnKTtcbiAgY29uc3QgcmVjb3ZlcnlXYWxsZXRJZCA9ICc1YWJhY2ViZTI4ZDcyZmJkMDdlMGI4Y2JiYTBmZjM5ZSc7XG5cbiAgaXQoJ3Nob3VsZCBzZWFyY2ggdjEgd2FsbGV0cyBpZiB0aGUgdjIgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBhIDR4eCBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBlcnJvclJlc3BvbnNlcyA9IFs0MDAsIDQwNF07XG5cbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9yUmVzcG9uc2VzKSB7XG4gICAgICBjb25zdCBub2NrVjJXYWxsZXQgPSBub2NrQml0R28oYml0Z28pXG4gICAgICAgIC5nZXQoYC9hcGkvdjIvJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKVxuICAgICAgICAucmVwbHkoZXJyb3IpO1xuICAgICAgY29uc3Qgbm9ja1YxV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKS5nZXQoYC9hcGkvdjEvd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKS5yZXBseShlcnJvcik7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT4gZ2V0V2FsbGV0KGJpdGdvLCByZWNvdmVyeUNvaW4sIHJlY292ZXJ5V2FsbGV0SWQpLFxuICAgICAgICBFcnJvcihgY291bGQgbm90IGdldCB3YWxsZXQgJHtyZWNvdmVyeVdhbGxldElkfSBmcm9tIHYxIG9yIHYyOiBBcGlSZXNwb25zZUVycm9yOiAke2Vycm9yfWApXG4gICAgICApO1xuICAgICAgbm9ja1YyV2FsbGV0LmRvbmUoKTtcbiAgICAgIG5vY2tWMVdhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRoZSB2MiBlbmRwb2ludCByZXNwb25kcyB3aXRoIGEgNXh4IGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGVycm9yUmVzcG9uc2VzID0gWzUwMF07XG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvclJlc3BvbnNlcykge1xuICAgICAgY29uc3Qgbm9ja1YyV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9L3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YClcbiAgICAgICAgLnJlcGx5KGVycm9yKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGdldFdhbGxldChiaXRnbywgcmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkKSwge1xuICAgICAgICBuYW1lOiAnQXBpUmVzcG9uc2VFcnJvcicsXG4gICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgICByZXN1bHQ6IHt9LFxuICAgICAgICBpbnZhbGlkVG9rZW46IGZhbHNlLFxuICAgICAgICBuZWVkc09UUDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIG5vY2tWMldhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IE0uLi4gUDJTSCBhZGRyZXNzIHRvIDMuLi4gbGVnYWN5IGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAvLyBUaGVzZSB0d28gYWRkcmVzc2VzIHJlcHJlc2VudCB0aGUgc2FtZSB1bmRlcmx5aW5nIHNjcmlwdCBoYXNoOlxuICAgIC8vIC0gTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSBpcyB0aGUgTFRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDMyKVxuICAgIC8vIC0gM0dCeWdzR1B2VGRmS01icTRBS1paUnUxc1BNV1BFc0JmZCBpcyB0aGUgQlRDIGZvcm1hdCAoc2NyaXB0SGFzaCAweDA1KVxuICAgIGNvbnN0IGx0Y0FkZHJlc3MgPSAnTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRSc7XG4gICAgY29uc3QgZXhwZWN0ZWRMZWdhY3lBZGRyZXNzID0gJzNHQnlnc0dQdlRkZktNYnE0QUtaWlJ1MXNQTVdQRXNCZmQnO1xuXG4gICAgY29uc3QgbGVnYWN5QWRkcmVzcyA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQobHRjQWRkcmVzcywgJ2x0YycpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChsZWdhY3lBZGRyZXNzLCBleHBlY3RlZExlZ2FjeUFkZHJlc3MpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbnZlcnQgTUQ2OFBzZGhlS3hjWXNyVkx5WlJYZ29TRExuQjFNZFZ0RSB0byBsZWdhY3kgZm9ybWF0JywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFkZHJlc3MgPSAnTUQ2OFBzZGhlS3hjWXNyVkx5WlJYZ29TRExuQjFNZFZ0RSc7XG4gICAgY29uc3QgbGVnYWN5QWRkcmVzcyA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQoYWRkcmVzcywgJ2x0YycpO1xuXG4gICAgLy8gU2hvdWxkIHN0YXJ0IHdpdGggJzMnIChsZWdhY3kgQlRDIFAyU0ggZm9ybWF0KVxuICAgIGFzc2VydC5vayhsZWdhY3lBZGRyZXNzLnN0YXJ0c1dpdGgoJzMnKSwgYEV4cGVjdGVkIGFkZHJlc3MgdG8gc3RhcnQgd2l0aCAnMycsIGdvdDogJHtsZWdhY3lBZGRyZXNzfWApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBtb2RpZnkgYmVjaDMyIGFkZHJlc3NlcycsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBiZWNoMzJBZGRyZXNzID0gJ2x0YzFxZ3JsOHpwbmRza2xhYTlzd2dkNXZldnl4bXg1eDYzdmNybDdkazQnO1xuICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQoYmVjaDMyQWRkcmVzcywgJ2x0YycpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIGJlY2gzMkFkZHJlc3MpO1xuICB9KTtcbn0pO1xuIl19
@@ -79,7 +79,7 @@ describe('parse', function () {
79
79
  return recipient(descriptorOther, index, value);
80
80
  }
81
81
  function getBaseParsedTransaction(psbt, recipients) {
82
- return (0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, (0, descriptor_1.getDescriptorMap)('Wsh2Of3', (0, descriptor_1.getDefaultXPubs)('a')), recipients.map(toBaseOutputString), psbt.network);
82
+ return (0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, (0, descriptor_1.getDescriptorMap)('Wsh2Of3', (0, descriptor_1.getDefaultXPubs)('a')), recipients.map(toBaseOutputString), 'btc');
83
83
  }
84
84
  describe('toBase', function () {
85
85
  it('should return the correct BaseParsedTransactionOutputs', async function () {
@@ -132,4 +132,4 @@ describe('parse', function () {
132
132
  });
133
133
  });
134
134
  });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qix5REFBMkM7QUFFM0MscUVBSzhDO0FBQzlDLHdEQUEwRDtBQUMxRCw0REFBMEU7QUFFMUUsd0VBR3NEO0FBQ3RELGdHQUtrRTtBQUNsRSxnR0FBd0Y7QUFHeEYscURBQWtEO0FBRWxELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUEsK0JBQWMsRUFBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFPdkUsU0FBUyxZQUFZLENBQVUsTUFBdUIsRUFBRSxVQUErQjtJQUNyRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsTUFBTSxFQUFFLElBQUEsZ0NBQVksRUFBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBWTtLQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBdUI7SUFDakQsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCO0lBQ2pELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBdUI7SUFDMUMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFO0lBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUEsMEJBQWEs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QixFQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFDakYsSUFBSSw0Q0FBd0IsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCB7XG4gIGdldERlZmF1bHRYUHVicyxcbiAgZ2V0RGVzY3JpcHRvcixcbiAgZ2V0RGVzY3JpcHRvck1hcCxcbiAgbW9ja1BzYnREZWZhdWx0LFxufSBmcm9tICdAYml0Z28vdXR4by1jb3JlL3Rlc3R1dGlsL2Rlc2NyaXB0b3InO1xuaW1wb3J0IHsgdG9QbGFpbk9iamVjdCB9IGZyb20gJ0BiaXRnby91dHhvLWNvcmUvdGVzdHV0aWwnO1xuaW1wb3J0IHsgY3JlYXRlQWRkcmVzc0Zyb21EZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3V0eG8tY29yZS9kZXNjcmlwdG9yJztcblxuaW1wb3J0IHtcbiAgUGFyc2VkT3V0cHV0c0JpZ0ludCxcbiAgdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3BhcnNlJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcixcbiAgYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlLFxuICBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLFxuICBFcnJvck1pc3NpbmdPdXRwdXRzLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci92ZXJpZnlUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyB0b0Ftb3VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZVRvQW1vdW50VHlwZSc7XG5pbXBvcnQgeyBCYXNlT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3R5cGVzJztcblxuaW1wb3J0IHsgZ2V0Rml4dHVyZVJvb3QgfSBmcm9tICcuL2ZpeHR1cmVzLnV0aWxzJztcblxuY29uc3QgeyBhc3NlcnRFcXVhbEZpeHR1cmUgfSA9IGdldEZpeHR1cmVSb290KF9fZGlybmFtZSArICcvZml4dHVyZXMnKTtcblxudHlwZSBPdXRwdXRXaXRoVmFsdWU8VCA9IG51bWJlciB8IGJpZ2ludCB8IHN0cmluZz4gPSB7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHZhbHVlOiBUO1xufTtcblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0PFROdW1iZXI+KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlLCBhbW91bnRUeXBlOiAnYmlnaW50JyB8ICdzdHJpbmcnKTogQmFzZU91dHB1dDxUTnVtYmVyPiB7XG4gIGFzc2VydChvdXRwdXQuYWRkcmVzcyk7XG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogb3V0cHV0LmFkZHJlc3MsXG4gICAgYW1vdW50OiB0b0Ftb3VudFR5cGUob3V0cHV0LnZhbHVlLCBhbW91bnRUeXBlKSBhcyBUTnVtYmVyLFxuICB9O1xufVxuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXRCaWdJbnQob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBCYXNlT3V0cHV0PGJpZ2ludD4ge1xuICByZXR1cm4gdG9CYXNlT3V0cHV0KG91dHB1dCwgJ2JpZ2ludCcpO1xufVxuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXRTdHJpbmcob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBCYXNlT3V0cHV0PHN0cmluZz4ge1xuICByZXR1cm4gdG9CYXNlT3V0cHV0KG91dHB1dCwgJ3N0cmluZycpO1xufVxuXG5mdW5jdGlvbiB0b01heE91dHB1dChvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IE91dHB1dFdpdGhWYWx1ZTwnbWF4Jz4ge1xuICByZXR1cm4ge1xuICAgIC4uLm91dHB1dCxcbiAgICB2YWx1ZTogJ21heCcsXG4gIH07XG59XG5cbmRlc2NyaWJlKCdwYXJzZScsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdhJykpO1xuICBjb25zdCBkZXNjcmlwdG9yT3RoZXIgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdiJykpO1xuICBjb25zdCBwc2J0ID0gbW9ja1BzYnREZWZhdWx0KHsgZGVzY3JpcHRvclNlbGYsIGRlc2NyaXB0b3JPdGhlciB9KTtcblxuICBmdW5jdGlvbiByZWNpcGllbnQoZGVzY3JpcHRvcjogRGVzY3JpcHRvciwgaW5kZXg6IG51bWJlciwgdmFsdWUgPSAxMDAwKSB7XG4gICAgcmV0dXJuIHsgdmFsdWUsIGFkZHJlc3M6IGNyZWF0ZUFkZHJlc3NGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBpbmRleCwgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luKSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaW50ZXJuYWxSZWNpcGllbnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiBPdXRwdXRXaXRoVmFsdWUge1xuICAgIHJldHVybiByZWNpcGllbnQoZGVzY3JpcHRvclNlbGYsIGluZGV4LCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlcm5hbFJlY2lwaWVudChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IE91dHB1dFdpdGhWYWx1ZSB7XG4gICAgcmV0dXJuIHJlY2lwaWVudChkZXNjcmlwdG9yT3RoZXIsIGluZGV4LCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgcmVjaXBpZW50czogT3V0cHV0V2l0aFZhbHVlW10pOiBQYXJzZWRPdXRwdXRzQmlnSW50IHtcbiAgICByZXR1cm4gdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQoXG4gICAgICBwc2J0LFxuICAgICAgZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYScpKSxcbiAgICAgIHJlY2lwaWVudHMubWFwKHRvQmFzZU91dHB1dFN0cmluZyksXG4gICAgICBwc2J0Lm5ldHdvcmtcbiAgICApO1xuICB9XG5cbiAgZGVzY3JpYmUoJ3RvQmFzZScsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgY29ycmVjdCBCYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKCdwYXJzZVdpdGhvdXRSZWNpcGllbnRzLmpzb24nLCB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbXSkpKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgJ3BhcnNlV2l0aEV4dGVybmFsUmVjaXBpZW50Lmpzb24nLFxuICAgICAgICB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcHNidC50eE91dHB1dHNbMF1dKSlcbiAgICAgICk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoXG4gICAgICAgICdwYXJzZVdpdGhJbnRlcm5hbFJlY2lwaWVudC5qc29uJyxcbiAgICAgICAgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3BzYnQudHhPdXRwdXRzWzFdXSkpXG4gICAgICApO1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKFxuICAgICAgICAncGFyc2VXaXRoRXh0ZXJuYWxSZWNpcGllbnQuanNvbicsXG4gICAgICAgIC8vIG1heCByZWNpcGllbnQ6IGlnbm9yZSBhY3R1YWwgdmFsdWVcbiAgICAgICAgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3RvTWF4T3V0cHV0KHBzYnQudHhPdXRwdXRzWzBdKV0pKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGFzc2VydEVxdWFsVmFsaWRhdGlvbkVycm9yKGFjdHVhbDogdW5rbm93biwgZXhwZWN0ZWQ6IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgZnVuY3Rpb24gbm9ybUVycm9ycyhlOiBFcnJvcltdKTogRXJyb3JbXSB7XG4gICAgICAgIHJldHVybiBlLm1hcCgoZSkgPT4gKHsgLi4uZSwgc3RhY2s6IHVuZGVmaW5lZCB9KSk7XG4gICAgICB9XG4gICAgICBpZiAoYWN0dWFsIGluc3RhbmNlb2YgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwobm9ybUVycm9ycyhhY3R1YWwuZXJyb3JzKSwgbm9ybUVycm9ycyhleHBlY3RlZC5lcnJvcnMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlcnJvciB0eXBlOiAnICsgYWN0dWFsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoZjogKCkgPT4gdm9pZCwgZXhwZWN0ZWQ6IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgYXNzZXJ0LnRocm93cyhmLCAoZXJyKSA9PiB7XG4gICAgICAgIGFzc2VydEVxdWFsVmFsaWRhdGlvbkVycm9yKGVyciwgZXhwZWN0ZWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGltcGxpY2l0T3V0cHV0RXJyb3Iob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUsIHsgZXh0ZXJuYWwgPSB0cnVlIH0gPSB7fSk6IEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludChvdXRwdXQpLCBleHRlcm5hbCB9XSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWlzc2luZ091dHB1dEVycm9yKG91dHB1dDogT3V0cHV0V2l0aFZhbHVlLCB7IGV4dGVybmFsID0gdHJ1ZSB9ID0ge30pOiBFcnJvck1pc3NpbmdPdXRwdXRzIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3JNaXNzaW5nT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQob3V0cHV0KSwgZXh0ZXJuYWwgfV0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3I6IG5vIHJlY2lwaWVudCByZXF1ZXN0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW10pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0LnR4T3V0cHV0c1swXSldKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3I6IG9ubHkgaW50ZXJuYWwgcmVjaXBpZW50IHJlcXVlc3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcHNidC50eE91dHB1dHNbMV1dKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW2ltcGxpY2l0T3V0cHV0RXJyb3IocHNidC50eE91dHB1dHNbMF0pXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBvbmx5IGludGVybmFsIG1heCByZWNpcGllbnQgcmVxdWVzdGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFt0b01heE91dHB1dChwc2J0LnR4T3V0cHV0c1sxXSldKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW2ltcGxpY2l0T3V0cHV0RXJyb3IocHNidC50eE91dHB1dHNbMF0pXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBzd2FwcGVkIHJlY2lwaWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IGV4dGVybmFsUmVjaXBpZW50KDk5KTtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcmVjaXBpZW50XSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFttaXNzaW5nT3V0cHV0RXJyb3IocmVjaXBpZW50KSwgaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0LnR4T3V0cHV0c1swXSldKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3I6IG1pc3NpbmcgaW50ZXJuYWwgcmVjaXBpZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gaW50ZXJuYWxSZWNpcGllbnQoOTkpO1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtyZWNpcGllbnRdKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW21pc3NpbmdPdXRwdXRFcnJvcihyZWNpcGllbnQpLCBpbXBsaWNpdE91dHB1dEVycm9yKHBzYnQudHhPdXRwdXRzWzBdKV0pXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qix5REFBMkM7QUFFM0MscUVBSzhDO0FBQzlDLHdEQUEwRDtBQUMxRCw0REFBMEU7QUFFMUUsd0VBR3NEO0FBQ3RELGdHQUtrRTtBQUNsRSxnR0FBd0Y7QUFHeEYscURBQWtEO0FBRWxELE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLElBQUEsK0JBQWMsRUFBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFPdkUsU0FBUyxZQUFZLENBQVUsTUFBdUIsRUFBRSxVQUErQjtJQUNyRixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZCLE9BQU87UUFDTCxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsTUFBTSxFQUFFLElBQUEsZ0NBQVksRUFBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBWTtLQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBdUI7SUFDakQsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCO0lBQ2pELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsTUFBdUI7SUFDMUMsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULEtBQUssRUFBRSxLQUFLO0tBQ2IsQ0FBQztBQUNKLENBQUM7QUFFRCxRQUFRLENBQUMsT0FBTyxFQUFFO0lBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUEsMEJBQWEs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QXdCLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNqRixJQUFJLDRDQUF3QixDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0IHtcbiAgZ2V0RGVmYXVsdFhQdWJzLFxuICBnZXREZXNjcmlwdG9yLFxuICBnZXREZXNjcmlwdG9yTWFwLFxuICBtb2NrUHNidERlZmF1bHQsXG59IGZyb20gJ0BiaXRnby91dHhvLWNvcmUvdGVzdHV0aWwvZGVzY3JpcHRvcic7XG5pbXBvcnQgeyB0b1BsYWluT2JqZWN0IH0gZnJvbSAnQGJpdGdvL3V0eG8tY29yZS90ZXN0dXRpbCc7XG5pbXBvcnQgeyBjcmVhdGVBZGRyZXNzRnJvbURlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vdXR4by1jb3JlL2Rlc2NyaXB0b3InO1xuXG5pbXBvcnQge1xuICBQYXJzZWRPdXRwdXRzQmlnSW50LFxuICB0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvcGFyc2UnO1xuaW1wb3J0IHtcbiAgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yLFxuICBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UsXG4gIEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMsXG4gIEVycm9yTWlzc2luZ091dHB1dHMsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3ZlcmlmeVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IHRvQW1vdW50VHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3BhcnNlVG9BbW91bnRUeXBlJztcbmltcG9ydCB7IEJhc2VPdXRwdXQgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBnZXRGaXh0dXJlUm9vdCB9IGZyb20gJy4vZml4dHVyZXMudXRpbHMnO1xuXG5jb25zdCB7IGFzc2VydEVxdWFsRml4dHVyZSB9ID0gZ2V0Rml4dHVyZVJvb3QoX19kaXJuYW1lICsgJy9maXh0dXJlcycpO1xuXG50eXBlIE91dHB1dFdpdGhWYWx1ZTxUID0gbnVtYmVyIHwgYmlnaW50IHwgc3RyaW5nPiA9IHtcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgdmFsdWU6IFQ7XG59O1xuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXQ8VE51bWJlcj4ob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUsIGFtb3VudFR5cGU6ICdiaWdpbnQnIHwgJ3N0cmluZycpOiBCYXNlT3V0cHV0PFROdW1iZXI+IHtcbiAgYXNzZXJ0KG91dHB1dC5hZGRyZXNzKTtcbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICBhbW91bnQ6IHRvQW1vdW50VHlwZShvdXRwdXQudmFsdWUsIGFtb3VudFR5cGUpIGFzIFROdW1iZXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dEJpZ0ludChvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IEJhc2VPdXRwdXQ8YmlnaW50PiB7XG4gIHJldHVybiB0b0Jhc2VPdXRwdXQob3V0cHV0LCAnYmlnaW50Jyk7XG59XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dFN0cmluZyhvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IEJhc2VPdXRwdXQ8c3RyaW5nPiB7XG4gIHJldHVybiB0b0Jhc2VPdXRwdXQob3V0cHV0LCAnc3RyaW5nJyk7XG59XG5cbmZ1bmN0aW9uIHRvTWF4T3V0cHV0KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogT3V0cHV0V2l0aFZhbHVlPCdtYXgnPiB7XG4gIHJldHVybiB7XG4gICAgLi4ub3V0cHV0LFxuICAgIHZhbHVlOiAnbWF4JyxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ3BhcnNlJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkZXNjcmlwdG9yU2VsZiA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JPdGhlciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuXG4gIGZ1bmN0aW9uIHJlY2lwaWVudChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyLCB2YWx1ZSA9IDEwMDApIHtcbiAgICByZXR1cm4geyB2YWx1ZSwgYWRkcmVzczogY3JlYXRlQWRkcmVzc0Zyb21EZXNjcmlwdG9yKGRlc2NyaXB0b3IsIGluZGV4LCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pIH07XG4gIH1cblxuICBmdW5jdGlvbiBpbnRlcm5hbFJlY2lwaWVudChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IE91dHB1dFdpdGhWYWx1ZSB7XG4gICAgcmV0dXJuIHJlY2lwaWVudChkZXNjcmlwdG9yU2VsZiwgaW5kZXgsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVybmFsUmVjaXBpZW50KGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogT3V0cHV0V2l0aFZhbHVlIHtcbiAgICByZXR1cm4gcmVjaXBpZW50KGRlc2NyaXB0b3JPdGhlciwgaW5kZXgsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCByZWNpcGllbnRzOiBPdXRwdXRXaXRoVmFsdWVbXSk6IFBhcnNlZE91dHB1dHNCaWdJbnQge1xuICAgIHJldHVybiB0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidChcbiAgICAgIHBzYnQsXG4gICAgICBnZXREZXNjcmlwdG9yTWFwKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdhJykpLFxuICAgICAgcmVjaXBpZW50cy5tYXAodG9CYXNlT3V0cHV0U3RyaW5nKSxcbiAgICAgICdidGMnXG4gICAgKTtcbiAgfVxuXG4gIGRlc2NyaWJlKCd0b0Jhc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZSgncGFyc2VXaXRob3V0UmVjaXBpZW50cy5qc29uJywgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW10pKSk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoXG4gICAgICAgICdwYXJzZVdpdGhFeHRlcm5hbFJlY2lwaWVudC5qc29uJyxcbiAgICAgICAgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3BzYnQudHhPdXRwdXRzWzBdXSkpXG4gICAgICApO1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKFxuICAgICAgICAncGFyc2VXaXRoSW50ZXJuYWxSZWNpcGllbnQuanNvbicsXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtwc2J0LnR4T3V0cHV0c1sxXV0pKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgJ3BhcnNlV2l0aEV4dGVybmFsUmVjaXBpZW50Lmpzb24nLFxuICAgICAgICAvLyBtYXggcmVjaXBpZW50OiBpZ25vcmUgYWN0dWFsIHZhbHVlXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFt0b01heE91dHB1dChwc2J0LnR4T3V0cHV0c1swXSldKSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihhY3R1YWw6IHVua25vd24sIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGZ1bmN0aW9uIG5vcm1FcnJvcnMoZTogRXJyb3JbXSk6IEVycm9yW10ge1xuICAgICAgICByZXR1cm4gZS5tYXAoKGUpID0+ICh7IC4uLmUsIHN0YWNrOiB1bmRlZmluZWQgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG5vcm1FcnJvcnMoYWN0dWFsLmVycm9ycyksIG5vcm1FcnJvcnMoZXhwZWN0ZWQuZXJyb3JzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3IgdHlwZTogJyArIGFjdHVhbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0VmFsaWRhdGlvbkVycm9yKGY6ICgpID0+IHZvaWQsIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoZiwgKGVycikgPT4ge1xuICAgICAgICBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihlcnIsIGV4cGVjdGVkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbXBsaWNpdE91dHB1dEVycm9yKG91dHB1dDogT3V0cHV0V2l0aFZhbHVlLCB7IGV4dGVybmFsID0gdHJ1ZSB9ID0ge30pOiBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQob3V0cHV0KSwgZXh0ZXJuYWwgfV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1pc3NpbmdPdXRwdXRFcnJvcihvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSwgeyBleHRlcm5hbCA9IHRydWUgfSA9IHt9KTogRXJyb3JNaXNzaW5nT3V0cHV0cyB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yTWlzc2luZ091dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KG91dHB1dCksIGV4dGVybmFsIH1dKTtcbiAgICB9XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBubyByZWNpcGllbnQgcmVxdWVzdGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtdKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW2ltcGxpY2l0T3V0cHV0RXJyb3IocHNidC50eE91dHB1dHNbMF0pXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBvbmx5IGludGVybmFsIHJlY2lwaWVudCByZXF1ZXN0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3BzYnQudHhPdXRwdXRzWzFdXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtpbXBsaWNpdE91dHB1dEVycm9yKHBzYnQudHhPdXRwdXRzWzBdKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogb25seSBpbnRlcm5hbCBtYXggcmVjaXBpZW50IHJlcXVlc3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbdG9NYXhPdXRwdXQocHNidC50eE91dHB1dHNbMV0pXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtpbXBsaWNpdE91dHB1dEVycm9yKHBzYnQudHhPdXRwdXRzWzBdKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogc3dhcHBlZCByZWNpcGllbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSBleHRlcm5hbFJlY2lwaWVudCg5OSk7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3JlY2lwaWVudF0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbbWlzc2luZ091dHB1dEVycm9yKHJlY2lwaWVudCksIGltcGxpY2l0T3V0cHV0RXJyb3IocHNidC50eE91dHB1dHNbMF0pXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBtaXNzaW5nIGludGVybmFsIHJlY2lwaWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IGludGVybmFsUmVjaXBpZW50KDk5KTtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcmVjaXBpZW50XSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFttaXNzaW5nT3V0cHV0RXJyb3IocmVjaXBpZW50KSwgaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0LnR4T3V0cHV0c1swXSldKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==