@bitgo/abstract-utxo 12.4.3 → 12.6.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 (106) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +3 -0
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +13 -6
  4. package/dist/cjs/src/impl/bch/bch.js +2 -2
  5. package/dist/cjs/src/impl/zec/address.d.ts +28 -0
  6. package/dist/cjs/src/impl/zec/address.d.ts.map +1 -0
  7. package/dist/cjs/src/impl/zec/address.js +55 -0
  8. package/dist/cjs/src/impl/zec/index.d.ts +3 -0
  9. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -1
  10. package/dist/cjs/src/impl/zec/index.js +4 -1
  11. package/dist/cjs/src/impl/zec/recipients.d.ts +84 -0
  12. package/dist/cjs/src/impl/zec/recipients.d.ts.map +1 -0
  13. package/dist/cjs/src/impl/zec/recipients.js +94 -0
  14. package/dist/cjs/src/impl/zec/types.d.ts +5 -0
  15. package/dist/cjs/src/impl/zec/types.d.ts.map +1 -0
  16. package/dist/cjs/src/impl/zec/types.js +3 -0
  17. package/dist/cjs/src/impl/zec/zec.d.ts +12 -1
  18. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -1
  19. package/dist/cjs/src/impl/zec/zec.js +14 -1
  20. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts +4 -0
  21. package/dist/cjs/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  22. package/dist/cjs/src/recovery/backupKeyRecovery.js +3 -1
  23. package/dist/cjs/src/transaction/descriptor/parse.d.ts +3 -3
  24. package/dist/cjs/src/transaction/descriptor/parse.d.ts.map +1 -1
  25. package/dist/cjs/src/transaction/descriptor/parse.js +17 -17
  26. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts +2 -1
  27. package/dist/cjs/src/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
  28. package/dist/cjs/src/transaction/descriptor/parseToAmountType.js +4 -3
  29. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts +3 -3
  30. package/dist/cjs/src/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  31. package/dist/cjs/src/transaction/descriptor/verifyTransaction.js +7 -6
  32. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts +3 -1
  33. package/dist/cjs/src/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  34. package/dist/cjs/src/transaction/fixedScript/parseOutput.js +5 -4
  35. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts +2 -1
  36. package/dist/cjs/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  37. package/dist/cjs/src/transaction/fixedScript/parseTransaction.js +15 -14
  38. package/dist/cjs/src/transaction/parseTransaction.d.ts +2 -1
  39. package/dist/cjs/src/transaction/parseTransaction.d.ts.map +1 -1
  40. package/dist/cjs/src/transaction/parseTransaction.js +5 -4
  41. package/dist/cjs/src/transaction/recipient.d.ts +31 -15
  42. package/dist/cjs/src/transaction/recipient.d.ts.map +1 -1
  43. package/dist/cjs/src/transaction/recipient.js +69 -47
  44. package/dist/cjs/src/transaction/verifyTransaction.d.ts +2 -1
  45. package/dist/cjs/src/transaction/verifyTransaction.d.ts.map +1 -1
  46. package/dist/cjs/src/transaction/verifyTransaction.js +4 -3
  47. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts +2 -0
  48. package/dist/cjs/test/unit/impl/zec/unit/address.d.ts.map +1 -0
  49. package/dist/cjs/test/unit/impl/zec/unit/address.js +66 -0
  50. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts +2 -0
  51. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.d.ts.map +1 -0
  52. package/dist/cjs/test/unit/impl/zec/unit/resolvePsbtRecipients.js +89 -0
  53. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts +2 -0
  54. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.d.ts.map +1 -0
  55. package/dist/cjs/test/unit/impl/zec/unit/unifiedRecipientPreference.js +57 -0
  56. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +14 -1
  57. package/dist/cjs/test/unit/transaction/descriptor/parse.js +4 -2
  58. package/dist/cjs/test/unit/transaction/descriptor/verifyTransactionQr.js +6 -5
  59. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  60. package/dist/esm/abstractUtxoCoin.d.ts +3 -0
  61. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  62. package/dist/esm/abstractUtxoCoin.js +14 -7
  63. package/dist/esm/impl/bch/bch.js +3 -3
  64. package/dist/esm/impl/zec/address.d.ts +28 -0
  65. package/dist/esm/impl/zec/address.d.ts.map +1 -0
  66. package/dist/esm/impl/zec/address.js +50 -0
  67. package/dist/esm/impl/zec/index.d.ts +3 -0
  68. package/dist/esm/impl/zec/index.d.ts.map +1 -1
  69. package/dist/esm/impl/zec/index.js +4 -1
  70. package/dist/esm/impl/zec/recipients.d.ts +84 -0
  71. package/dist/esm/impl/zec/recipients.d.ts.map +1 -0
  72. package/dist/esm/impl/zec/recipients.js +90 -0
  73. package/dist/esm/impl/zec/types.d.ts +5 -0
  74. package/dist/esm/impl/zec/types.d.ts.map +1 -0
  75. package/dist/esm/impl/zec/types.js +2 -0
  76. package/dist/esm/impl/zec/zec.d.ts +12 -1
  77. package/dist/esm/impl/zec/zec.d.ts.map +1 -1
  78. package/dist/esm/impl/zec/zec.js +14 -1
  79. package/dist/esm/recovery/backupKeyRecovery.d.ts +4 -0
  80. package/dist/esm/recovery/backupKeyRecovery.d.ts.map +1 -1
  81. package/dist/esm/recovery/backupKeyRecovery.js +3 -1
  82. package/dist/esm/transaction/descriptor/parse.d.ts +3 -3
  83. package/dist/esm/transaction/descriptor/parse.d.ts.map +1 -1
  84. package/dist/esm/transaction/descriptor/parse.js +18 -18
  85. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts +2 -1
  86. package/dist/esm/transaction/descriptor/parseToAmountType.d.ts.map +1 -1
  87. package/dist/esm/transaction/descriptor/parseToAmountType.js +4 -3
  88. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts +3 -3
  89. package/dist/esm/transaction/descriptor/verifyTransaction.d.ts.map +1 -1
  90. package/dist/esm/transaction/descriptor/verifyTransaction.js +7 -6
  91. package/dist/esm/transaction/fixedScript/parseOutput.d.ts +3 -1
  92. package/dist/esm/transaction/fixedScript/parseOutput.d.ts.map +1 -1
  93. package/dist/esm/transaction/fixedScript/parseOutput.js +5 -4
  94. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts +2 -1
  95. package/dist/esm/transaction/fixedScript/parseTransaction.d.ts.map +1 -1
  96. package/dist/esm/transaction/fixedScript/parseTransaction.js +16 -15
  97. package/dist/esm/transaction/parseTransaction.d.ts +2 -1
  98. package/dist/esm/transaction/parseTransaction.d.ts.map +1 -1
  99. package/dist/esm/transaction/parseTransaction.js +5 -4
  100. package/dist/esm/transaction/recipient.d.ts +31 -15
  101. package/dist/esm/transaction/recipient.d.ts.map +1 -1
  102. package/dist/esm/transaction/recipient.js +68 -48
  103. package/dist/esm/transaction/verifyTransaction.d.ts +2 -1
  104. package/dist/esm/transaction/verifyTransaction.d.ts.map +1 -1
  105. package/dist/esm/transaction/verifyTransaction.js +4 -3
  106. package/package.json +9 -9
@@ -126,6 +126,19 @@ function runWithScriptTypes(scriptTypes) {
126
126
  });
127
127
  }
128
128
  describe('Backup Key Recovery PSBT', function () {
129
+ it('uses the supplied post-NU6.2 block height for Zcash', function () {
130
+ const { walletKeys: externalWallet } = (0, util_1.createWasmWalletKeys)('external');
131
+ const recoveryDestination = (0, util_1.getWalletAddress)('zec', externalWallet);
132
+ const unspent = (0, util_1.toUnspent)({ scriptType: 'p2sh', value: BigInt(1e8) }, 0, 'zec', wasmWalletKeys);
133
+ const psbt = (0, src_1.backupKeyRecoveryWithWalletUnspents)('zec', {
134
+ walletKeys: wasmWalletKeys,
135
+ keys: [userPrivkey, backupPrivkey, wasmWalletKeys.bitgoKey()],
136
+ recoveryDestination,
137
+ feeRateSatVB: 1,
138
+ blockHeight: 3364600,
139
+ }, [unspent]);
140
+ assert_1.default.strictEqual(psbt.consensusBranchId, 0x5437f330);
141
+ });
129
142
  // compatible with all coins
130
143
  runWithScriptTypes(['p2sh']);
131
144
  // segwit compatible coins
@@ -133,4 +146,4 @@ describe('Backup Key Recovery PSBT', function () {
133
146
  // taproot compatible coins
134
147
  runWithScriptTypes(['p2tr', 'p2trMusig2']);
135
148
  });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNkJBQThCO0FBRTlCLGdEQUFvRTtBQUVwRSxzQ0FBcUY7QUFFckYsa0NBUWlCO0FBR2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBRXpCLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRWxDLHVFQUF1RTtBQUN2RSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixHQUFFLENBQUM7QUFDMUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLElBQUEsK0JBQXdCLEVBQUM7SUFDcEUsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDeEIsQ0FBQyxDQUFDO0FBRUgsMkJBQTJCO0FBQzNCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFaEMsU0FBUyxHQUFHLENBQ1YsSUFBc0IsRUFDdEIsV0FBNkIsRUFDN0IsY0FBZ0QsRUFDaEQsTUFHQyxFQUNELE9BQWlCLEVBQUU7SUFFbkIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7SUFFL0IsUUFBUSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQzdFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSwyQkFBb0IsRUFBQyxVQUFV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RUFBRSxjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXhHLHlDQUF5QztRQUN6QyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsRUFBRTtZQUMzRSxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLEdBQUcsV0FBVztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtJQUNuQyw0QkFBNEI7SUFDNUIsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTdCLDBCQUEwQjtJQUMxQixrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNDLDJCQUEyQjtJQUMzQixrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiwgRUNQYWlyLCBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBiYWNrdXBLZXlSZWNvdmVyeVdpdGhXYWxsZXRVbnNwZW50cyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldFVuc3BlbnQgfSBmcm9tICcuLi8uLi8uLi9zcmMvdW5zcGVudCc7XG5pbXBvcnQge1xuICBjcmVhdGVXYXNtV2FsbGV0S2V5cyxcbiAgZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzLFxuICBnZXRGaXh0dXJlLFxuICBnZXROb3JtYWxUZXN0bmV0Q29pbixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgdG9VbnNwZW50LFxuICB1dHhvQ29pbnMsXG59IGZyb20gJy4uL3V0aWwnO1xudHlwZSBTY3JpcHRUeXBlMk9mMyA9ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB8ICdwMnRyJyB8ICdwMnRyTXVzaWcyJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCA9ICdtLzAvMCc7XG5jb25zdCBleG90aWNVc2VyS2V5UGF0aCA9ICc5OS85OSc7XG5cbi8vIENyZWF0ZSB3YWxsZXQga2V5cyB1c2luZyB3YXNtLXV0eG8gcHJpbWl0aXZlcyBmcm9tIGRlZmF1bHQga2V5Y2hhaW5zXG5jb25zdCB7IHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLCB4cHJpdnMgfSA9IGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cygpO1xuY29uc3QgeyB3YWxsZXRLZXlzOiB3YXNtRXhvdGljV2FsbGV0S2V5cyB9ID0gZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzKFtcbiAgZXhvdGljVXNlcktleVBhdGgsXG4gIGRlZmF1bHREZXJpdmF0aW9uUHJlZml4LFxuICBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCxcbl0pO1xuXG4vLyBQcml2YXRlIGtleXMgZm9yIHNpZ25pbmdcbmNvbnN0IHVzZXJQcml2a2V5ID0geHByaXZzWzBdO1xuY29uc3QgYmFja3VwUHJpdmtleSA9IHhwcml2c1sxXTtcblxuZnVuY3Rpb24gcnVuKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBzY3JpcHRUeXBlczogU2NyaXB0VHlwZTJPZjNbXSxcbiAgd2FzbVdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICBwYXJhbXM6IHtcbiAgICB1c2VyUHJpdmtleT86IEJJUDMyO1xuICAgIGJhY2t1cFByaXZrZXk/OiBCSVAzMjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGNvbnN0IGRlZmF1bHRGZWVSYXRlU2F0QiA9IDEwMDtcblxuICBkZXNjcmliZShgQmFja3VwIEtleSBSZWNvdmVyeSBQU0JUIFske1tjb2luLmdldENoYWluKCksIC4uLnRhZ3NdLmpvaW4oJywnKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHsgd2FsbGV0S2V5czogZXh0ZXJuYWxXYWxsZXQgfSA9IGNyZWF0ZVdhc21XYWxsZXRLZXlzKCdleHRlcm5hbCcpO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSBnZXRXYWxsZXRBZGRyZXNzKGNvaW4ubmFtZSwgZXh0ZXJuYWxXYWxsZXQpO1xuICAgIGNvbnN0IGZpeHR1cmVDb2luID0gZ2V0Tm9ybWFsVGVzdG5ldENvaW4oY29pbik7XG4gICAgLy8gR2V0IHhwdWJzIGZyb20gd2FsbGV0IGtleXNcbiAgICBjb25zdCB1c2VyS2V5ID0gd2FzbVdhbGxldEtleXMudXNlcktleSgpO1xuICAgIGNvbnN0IGJhY2t1cEtleSA9IHdhc21XYWxsZXRLZXlzLmJhY2t1cEtleSgpO1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gd2FzbVdhbGxldEtleXMuYml0Z29LZXkoKTtcbiAgICBjb25zdCByZXBsYXlQcm90ZWN0aW9uID0gW0VDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHVzZXJLZXkucHVibGljS2V5KSldO1xuXG4gICAgLy8gMWU4ICogOWU3IDwgOS4wMDdlMTUgYnV0IDJlOCAqIDllNyA+IDkuMDA3ZTE1IHRvIHRlc3QgYm90aCBjb2RlIHBhdGhzIGluIHF1ZXJ5QmxvY2tjaGFpblVuc3BlbnRzUGF0aFxuICAgIGNvbnN0IHZhbHVlTXVsID0gY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCg5ZTcpIDogQmlnSW50KDEpO1xuXG4gICAgbGV0IHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidDtcbiAgICBsZXQgcmVjb3ZlclVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PGJpZ2ludD5bXTtcbiAgICBsZXQgcGFyc2VkOiBmaXhlZFNjcmlwdFdhbGxldC5QYXJzZWRUcmFuc2FjdGlvbjtcbiAgICBsZXQgZml4dHVyZVBhcnNlZDogZml4ZWRTY3JpcHRXYWxsZXQuUGFyc2VkVHJhbnNhY3Rpb247XG5cbiAgICBiZWZvcmUoJ2NyZWF0ZSByZWNvdmVyeSBkYXRhIGFuZCBsb2FkIGZpeHR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoMTBfMDAwKTtcblxuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdG9VbnNwZW50KHsgc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCgxZTgpICogdmFsdWVNdWwgfSwgaW5kZXgsIGNvaW4ubmFtZSwgd2FzbVdhbGxldEtleXMpLFxuICAgICAgICB0b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uYW1lLCB3YXNtV2FsbGV0S2V5cyksXG4gICAgICAgIHRvVW5zcGVudCh7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoM2U4KSAqIHZhbHVlTXVsIH0sIGluZGV4LCBjb2luLm5hbWUsIHdhc21XYWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBCdWlsZCBzaWduaW5nIGtleXMgdHJpcGxlOiBwcml2a2V5IGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgeHB1YiBmcm9tIHdhbGxldCBrZXlzXG4gICAgICBjb25zdCBzaWduaW5nS2V5czogVHJpcGxlPEJJUDMyPiA9IFtcbiAgICAgICAgcGFyYW1zLnVzZXJQcml2a2V5IHx8IHVzZXJLZXksXG4gICAgICAgIHBhcmFtcy5iYWNrdXBQcml2a2V5IHx8IGJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXksIC8vIGJpdGdvIGlzIGFsd2F5cyB4cHViXG4gICAgICBdO1xuXG4gICAgICBwc2J0ID0gYmFja3VwS2V5UmVjb3ZlcnlXaXRoV2FsbGV0VW5zcGVudHMoXG4gICAgICAgIGNvaW4ubmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLFxuICAgICAgICAgIGtleXM6IHNpZ25pbmdLZXlzLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgZmVlUmF0ZVNhdFZCOiBkZWZhdWx0RmVlUmF0ZVNhdEIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlY292ZXJVbnNwZW50c1xuICAgICAgKTtcblxuICAgICAgLy8gUGFyc2UgZ2VuZXJhdGVkIFBTQlRcbiAgICAgIHBhcnNlZCA9IHBzYnQucGFyc2VUcmFuc2FjdGlvbldpdGhXYWxsZXRLZXlzKHdhc21XYWxsZXRLZXlzLCB7XG4gICAgICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogcmVwbGF5UHJvdGVjdGlvbiB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvYWQgYW5kIHBhcnNlIGZpeHR1cmUgUFNCVFxuICAgICAgY29uc3QgcHNidEhleCA9IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHN0b3JlZEZpeHR1cmUgPSBhd2FpdCBnZXRGaXh0dXJlKGZpeHR1cmVDb2luLCBgcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnlQc2J0LSR7dGFncy5qb2luKCctJyl9YCwge1xuICAgICAgICBwc2J0SGV4LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBmaXh0dXJlUHNidCA9IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidC5mcm9tQnl0ZXMoXG4gICAgICAgIEJ1ZmZlci5mcm9tKHN0b3JlZEZpeHR1cmUucHNidEhleCwgJ2hleCcpLFxuICAgICAgICBmaXh0dXJlQ29pbi5uYW1lXG4gICAgICApO1xuICAgICAgZml4dHVyZVBhcnNlZCA9IGZpeHR1cmVQc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YXNtV2FsbGV0S2V5cywge1xuICAgICAgICByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IHJlcGxheVByb3RlY3Rpb24gfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBleHBlY3RlZCBpbnB1dCBjb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQuaW5wdXRzLmxlbmd0aCwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHJlY292ZXJ5IGRlc3RpbmF0aW9uIG91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhwYXJzZWQub3V0cHV0cy5sZW5ndGggPj0gMSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzZXMgPSBwYXJzZWQub3V0cHV0cy5tYXAoKG8pID0+IG8uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQub2sob3V0cHV0QWRkcmVzc2VzLmluY2x1ZGVzKHJlY292ZXJ5RGVzdGluYXRpb24pKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgZmVlIHJhdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnB1dFN1bSA9IHJlY292ZXJVbnNwZW50cy5yZWR1Y2UoKHN1bSwgdSkgPT4gc3VtICsgdS52YWx1ZSwgQmlnSW50KDApKTtcbiAgICAgIGNvbnN0IG91dHB1dFN1bSA9IHBhcnNlZC5vdXRwdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCBCaWdJbnQoMCkpO1xuICAgICAgY29uc3QgZmVlID0gaW5wdXRTdW0gLSBvdXRwdXRTdW07XG4gICAgICBjb25zdCB2c2l6ZSA9IGZpeGVkU2NyaXB0V2FsbGV0LkRpbWVuc2lvbnMuZnJvbVBzYnQocHNidCkuZ2V0VlNpemUoKTtcbiAgICAgIGNvbnN0IGZlZVJhdGVTYXRCID0gTnVtYmVyKGZlZSkgLyB2c2l6ZTtcbiAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhmZWVSYXRlU2F0QiAtIGRlZmF1bHRGZWVSYXRlU2F0QikgLyBkZWZhdWx0RmVlUmF0ZVNhdEI7XG4gICAgICAvLyB3aXRoaW4gMSVcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaWZmIDwgMC4wMSwgdHJ1ZSwgYGV4cGVjdGVkIGZlZSByYXRlICR7ZGVmYXVsdEZlZVJhdGVTYXRCfSBidXQgZ290ICR7ZmVlUmF0ZVNhdEJ9YCk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjaGVja0lucHV0c1NpZ25lZEJ5KHNpZ25lckluZGV4OiAwIHwgMSB8IDIsIGV4cGVjdFNpZ25lZDogYm9vbGVhbikge1xuICAgICAgY29uc3Qgc2lnbmVyS2V5ID0geHByaXZzW3NpZ25lckluZGV4XTtcbiAgICAgIGZvciAobGV0IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aDsgaW5wdXRJbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGhhc1NpZyA9IHBzYnQudmVyaWZ5U2lnbmF0dXJlKGlucHV0SW5kZXgsIHNpZ25lcktleSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChoYXNTaWcsIGV4cGVjdFNpZ25lZCwgYGlucHV0ICR7aW5wdXRJbmRleH0gc2lnbmVyICR7c2lnbmVySW5kZXh9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXQoKHBhcmFtcy51c2VyUHJpdmtleSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyB1c2VyIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkoMCwgISFwYXJhbXMudXNlclByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoKHBhcmFtcy5iYWNrdXBQcml2a2V5ID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIGJhY2t1cCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KDEsICEhcGFyYW1zLmJhY2t1cFByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hdGNoZXMgUFNCVCBmaXh0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZWQsIGZpeHR1cmVQYXJzZWQpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuV2l0aFNjcmlwdFR5cGVzKHNjcmlwdFR5cGVzOiBTY3JpcHRUeXBlMk9mM1tdKSB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IHNjcmlwdFR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodHlwZSkpKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICAvLyBVbnNpZ25lZCBzd2VlcCAtIG5vIHNpZ25hdHVyZXNcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHt9LCBbJ3Vuc2lnbmVkJywgLi4uc2NyaXB0VHlwZXNdKTtcblxuICAgICAgLy8gVXNlciBzaWduZWQgb25seSAoS1JTIHNjZW5hcmlvKVxuICAgICAgcnVuKGNvaW4sIHNjcmlwdFR5cGVzLCB3YXNtV2FsbGV0S2V5cywgeyB1c2VyUHJpdmtleSB9LCBbJ3VzZXJTaWduZWQnLCAuLi5zY3JpcHRUeXBlc10pO1xuXG4gICAgICAvLyBGdWxseSBzaWduZWQgcmVjb3ZlcnlcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHsgdXNlclByaXZrZXksIGJhY2t1cFByaXZrZXkgfSwgWydmdWxseVNpZ25lZCcsIC4uLnNjcmlwdFR5cGVzXSk7XG5cbiAgICAgIC8vIEZ1bGx5IHNpZ25lZCB3aXRoIGN1c3RvbSB1c2VyIGtleSBwYXRoXG4gICAgICBydW4oY29pbiwgc2NyaXB0VHlwZXMsIHdhc21FeG90aWNXYWxsZXRLZXlzLCB7IHVzZXJQcml2a2V5LCBiYWNrdXBQcml2a2V5IH0sIFtcbiAgICAgICAgJ2Z1bGx5U2lnbmVkJyxcbiAgICAgICAgJ2N1c3RvbVVzZXJLZXlQYXRoJyxcbiAgICAgICAgLi4uc2NyaXB0VHlwZXMsXG4gICAgICBdKTtcbiAgICB9KTtcbn1cblxuZGVzY3JpYmUoJ0JhY2t1cCBLZXkgUmVjb3ZlcnkgUFNCVCcsIGZ1bmN0aW9uICgpIHtcbiAgLy8gY29tcGF0aWJsZSB3aXRoIGFsbCBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnNoJ10pO1xuXG4gIC8vIHNlZ3dpdCBjb21wYXRpYmxlIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2hQMndzaCcsICdwMndzaCddKTtcblxuICAvLyB0YXByb290IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJ0cicsICdwMnRyTXVzaWcyJ10pO1xufSk7XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNkJBQThCO0FBRTlCLGdEQUFvRTtBQUVwRSxzQ0FBcUY7QUFFckYsa0NBUWlCO0FBR2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBRXpCLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRWxDLHVFQUF1RTtBQUN2RSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixHQUFFLENBQUM7QUFDMUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLElBQUEsK0JBQXdCLEVBQUM7SUFDcEUsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDeEIsQ0FBQyxDQUFDO0FBRUgsMkJBQTJCO0FBQzNCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFaEMsU0FBUyxHQUFHLENBQ1YsSUFBc0IsRUFDdEIsV0FBNkIsRUFDN0IsY0FBZ0QsRUFDaEQsTUFHQyxFQUNELE9BQWlCLEVBQUU7SUFFbkIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7SUFFL0IsUUFBUSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQzdFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSwyQkFBb0IsRUFBQyxVQUFV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SUFFSCw0QkFBNEI7SUFDNUIsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTdCLDBCQUEwQjtJQUMxQixrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNDLDJCQUEyQjtJQUMzQixrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiwgRUNQYWlyLCBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBiYWNrdXBLZXlSZWNvdmVyeVdpdGhXYWxsZXRVbnNwZW50cyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldFVuc3BlbnQgfSBmcm9tICcuLi8uLi8uLi9zcmMvdW5zcGVudCc7XG5pbXBvcnQge1xuICBjcmVhdGVXYXNtV2FsbGV0S2V5cyxcbiAgZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzLFxuICBnZXRGaXh0dXJlLFxuICBnZXROb3JtYWxUZXN0bmV0Q29pbixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgdG9VbnNwZW50LFxuICB1dHhvQ29pbnMsXG59IGZyb20gJy4uL3V0aWwnO1xudHlwZSBTY3JpcHRUeXBlMk9mMyA9ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB8ICdwMnRyJyB8ICdwMnRyTXVzaWcyJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCA9ICdtLzAvMCc7XG5jb25zdCBleG90aWNVc2VyS2V5UGF0aCA9ICc5OS85OSc7XG5cbi8vIENyZWF0ZSB3YWxsZXQga2V5cyB1c2luZyB3YXNtLXV0eG8gcHJpbWl0aXZlcyBmcm9tIGRlZmF1bHQga2V5Y2hhaW5zXG5jb25zdCB7IHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLCB4cHJpdnMgfSA9IGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cygpO1xuY29uc3QgeyB3YWxsZXRLZXlzOiB3YXNtRXhvdGljV2FsbGV0S2V5cyB9ID0gZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzKFtcbiAgZXhvdGljVXNlcktleVBhdGgsXG4gIGRlZmF1bHREZXJpdmF0aW9uUHJlZml4LFxuICBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCxcbl0pO1xuXG4vLyBQcml2YXRlIGtleXMgZm9yIHNpZ25pbmdcbmNvbnN0IHVzZXJQcml2a2V5ID0geHByaXZzWzBdO1xuY29uc3QgYmFja3VwUHJpdmtleSA9IHhwcml2c1sxXTtcblxuZnVuY3Rpb24gcnVuKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBzY3JpcHRUeXBlczogU2NyaXB0VHlwZTJPZjNbXSxcbiAgd2FzbVdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICBwYXJhbXM6IHtcbiAgICB1c2VyUHJpdmtleT86IEJJUDMyO1xuICAgIGJhY2t1cFByaXZrZXk/OiBCSVAzMjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGNvbnN0IGRlZmF1bHRGZWVSYXRlU2F0QiA9IDEwMDtcblxuICBkZXNjcmliZShgQmFja3VwIEtleSBSZWNvdmVyeSBQU0JUIFske1tjb2luLmdldENoYWluKCksIC4uLnRhZ3NdLmpvaW4oJywnKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHsgd2FsbGV0S2V5czogZXh0ZXJuYWxXYWxsZXQgfSA9IGNyZWF0ZVdhc21XYWxsZXRLZXlzKCdleHRlcm5hbCcpO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSBnZXRXYWxsZXRBZGRyZXNzKGNvaW4ubmFtZSwgZXh0ZXJuYWxXYWxsZXQpO1xuICAgIGNvbnN0IGZpeHR1cmVDb2luID0gZ2V0Tm9ybWFsVGVzdG5ldENvaW4oY29pbik7XG4gICAgLy8gR2V0IHhwdWJzIGZyb20gd2FsbGV0IGtleXNcbiAgICBjb25zdCB1c2VyS2V5ID0gd2FzbVdhbGxldEtleXMudXNlcktleSgpO1xuICAgIGNvbnN0IGJhY2t1cEtleSA9IHdhc21XYWxsZXRLZXlzLmJhY2t1cEtleSgpO1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gd2FzbVdhbGxldEtleXMuYml0Z29LZXkoKTtcbiAgICBjb25zdCByZXBsYXlQcm90ZWN0aW9uID0gW0VDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHVzZXJLZXkucHVibGljS2V5KSldO1xuXG4gICAgLy8gMWU4ICogOWU3IDwgOS4wMDdlMTUgYnV0IDJlOCAqIDllNyA+IDkuMDA3ZTE1IHRvIHRlc3QgYm90aCBjb2RlIHBhdGhzIGluIHF1ZXJ5QmxvY2tjaGFpblVuc3BlbnRzUGF0aFxuICAgIGNvbnN0IHZhbHVlTXVsID0gY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCg5ZTcpIDogQmlnSW50KDEpO1xuXG4gICAgbGV0IHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidDtcbiAgICBsZXQgcmVjb3ZlclVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PGJpZ2ludD5bXTtcbiAgICBsZXQgcGFyc2VkOiBmaXhlZFNjcmlwdFdhbGxldC5QYXJzZWRUcmFuc2FjdGlvbjtcbiAgICBsZXQgZml4dHVyZVBhcnNlZDogZml4ZWRTY3JpcHRXYWxsZXQuUGFyc2VkVHJhbnNhY3Rpb247XG5cbiAgICBiZWZvcmUoJ2NyZWF0ZSByZWNvdmVyeSBkYXRhIGFuZCBsb2FkIGZpeHR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoMTBfMDAwKTtcblxuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdG9VbnNwZW50KHsgc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCgxZTgpICogdmFsdWVNdWwgfSwgaW5kZXgsIGNvaW4ubmFtZSwgd2FzbVdhbGxldEtleXMpLFxuICAgICAgICB0b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uYW1lLCB3YXNtV2FsbGV0S2V5cyksXG4gICAgICAgIHRvVW5zcGVudCh7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoM2U4KSAqIHZhbHVlTXVsIH0sIGluZGV4LCBjb2luLm5hbWUsIHdhc21XYWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBCdWlsZCBzaWduaW5nIGtleXMgdHJpcGxlOiBwcml2a2V5IGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgeHB1YiBmcm9tIHdhbGxldCBrZXlzXG4gICAgICBjb25zdCBzaWduaW5nS2V5czogVHJpcGxlPEJJUDMyPiA9IFtcbiAgICAgICAgcGFyYW1zLnVzZXJQcml2a2V5IHx8IHVzZXJLZXksXG4gICAgICAgIHBhcmFtcy5iYWNrdXBQcml2a2V5IHx8IGJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXksIC8vIGJpdGdvIGlzIGFsd2F5cyB4cHViXG4gICAgICBdO1xuXG4gICAgICBwc2J0ID0gYmFja3VwS2V5UmVjb3ZlcnlXaXRoV2FsbGV0VW5zcGVudHMoXG4gICAgICAgIGNvaW4ubmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLFxuICAgICAgICAgIGtleXM6IHNpZ25pbmdLZXlzLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgZmVlUmF0ZVNhdFZCOiBkZWZhdWx0RmVlUmF0ZVNhdEIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlY292ZXJVbnNwZW50c1xuICAgICAgKTtcblxuICAgICAgLy8gUGFyc2UgZ2VuZXJhdGVkIFBTQlRcbiAgICAgIHBhcnNlZCA9IHBzYnQucGFyc2VUcmFuc2FjdGlvbldpdGhXYWxsZXRLZXlzKHdhc21XYWxsZXRLZXlzLCB7XG4gICAgICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogcmVwbGF5UHJvdGVjdGlvbiB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvYWQgYW5kIHBhcnNlIGZpeHR1cmUgUFNCVFxuICAgICAgY29uc3QgcHNidEhleCA9IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHN0b3JlZEZpeHR1cmUgPSBhd2FpdCBnZXRGaXh0dXJlKGZpeHR1cmVDb2luLCBgcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnlQc2J0LSR7dGFncy5qb2luKCctJyl9YCwge1xuICAgICAgICBwc2J0SGV4LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBmaXh0dXJlUHNidCA9IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidC5mcm9tQnl0ZXMoXG4gICAgICAgIEJ1ZmZlci5mcm9tKHN0b3JlZEZpeHR1cmUucHNidEhleCwgJ2hleCcpLFxuICAgICAgICBmaXh0dXJlQ29pbi5uYW1lXG4gICAgICApO1xuICAgICAgZml4dHVyZVBhcnNlZCA9IGZpeHR1cmVQc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YXNtV2FsbGV0S2V5cywge1xuICAgICAgICByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IHJlcGxheVByb3RlY3Rpb24gfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBleHBlY3RlZCBpbnB1dCBjb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQuaW5wdXRzLmxlbmd0aCwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHJlY292ZXJ5IGRlc3RpbmF0aW9uIG91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhwYXJzZWQub3V0cHV0cy5sZW5ndGggPj0gMSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzZXMgPSBwYXJzZWQub3V0cHV0cy5tYXAoKG8pID0+IG8uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQub2sob3V0cHV0QWRkcmVzc2VzLmluY2x1ZGVzKHJlY292ZXJ5RGVzdGluYXRpb24pKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgZmVlIHJhdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnB1dFN1bSA9IHJlY292ZXJVbnNwZW50cy5yZWR1Y2UoKHN1bSwgdSkgPT4gc3VtICsgdS52YWx1ZSwgQmlnSW50KDApKTtcbiAgICAgIGNvbnN0IG91dHB1dFN1bSA9IHBhcnNlZC5vdXRwdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCBCaWdJbnQoMCkpO1xuICAgICAgY29uc3QgZmVlID0gaW5wdXRTdW0gLSBvdXRwdXRTdW07XG4gICAgICBjb25zdCB2c2l6ZSA9IGZpeGVkU2NyaXB0V2FsbGV0LkRpbWVuc2lvbnMuZnJvbVBzYnQocHNidCkuZ2V0VlNpemUoKTtcbiAgICAgIGNvbnN0IGZlZVJhdGVTYXRCID0gTnVtYmVyKGZlZSkgLyB2c2l6ZTtcbiAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhmZWVSYXRlU2F0QiAtIGRlZmF1bHRGZWVSYXRlU2F0QikgLyBkZWZhdWx0RmVlUmF0ZVNhdEI7XG4gICAgICAvLyB3aXRoaW4gMSVcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaWZmIDwgMC4wMSwgdHJ1ZSwgYGV4cGVjdGVkIGZlZSByYXRlICR7ZGVmYXVsdEZlZVJhdGVTYXRCfSBidXQgZ290ICR7ZmVlUmF0ZVNhdEJ9YCk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjaGVja0lucHV0c1NpZ25lZEJ5KHNpZ25lckluZGV4OiAwIHwgMSB8IDIsIGV4cGVjdFNpZ25lZDogYm9vbGVhbikge1xuICAgICAgY29uc3Qgc2lnbmVyS2V5ID0geHByaXZzW3NpZ25lckluZGV4XTtcbiAgICAgIGZvciAobGV0IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aDsgaW5wdXRJbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGhhc1NpZyA9IHBzYnQudmVyaWZ5U2lnbmF0dXJlKGlucHV0SW5kZXgsIHNpZ25lcktleSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChoYXNTaWcsIGV4cGVjdFNpZ25lZCwgYGlucHV0ICR7aW5wdXRJbmRleH0gc2lnbmVyICR7c2lnbmVySW5kZXh9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXQoKHBhcmFtcy51c2VyUHJpdmtleSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyB1c2VyIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkoMCwgISFwYXJhbXMudXNlclByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoKHBhcmFtcy5iYWNrdXBQcml2a2V5ID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIGJhY2t1cCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KDEsICEhcGFyYW1zLmJhY2t1cFByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hdGNoZXMgUFNCVCBmaXh0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZWQsIGZpeHR1cmVQYXJzZWQpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuV2l0aFNjcmlwdFR5cGVzKHNjcmlwdFR5cGVzOiBTY3JpcHRUeXBlMk9mM1tdKSB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IHNjcmlwdFR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodHlwZSkpKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICAvLyBVbnNpZ25lZCBzd2VlcCAtIG5vIHNpZ25hdHVyZXNcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHt9LCBbJ3Vuc2lnbmVkJywgLi4uc2NyaXB0VHlwZXNdKTtcblxuICAgICAgLy8gVXNlciBzaWduZWQgb25seSAoS1JTIHNjZW5hcmlvKVxuICAgICAgcnVuKGNvaW4sIHNjcmlwdFR5cGVzLCB3YXNtV2FsbGV0S2V5cywgeyB1c2VyUHJpdmtleSB9LCBbJ3VzZXJTaWduZWQnLCAuLi5zY3JpcHRUeXBlc10pO1xuXG4gICAgICAvLyBGdWxseSBzaWduZWQgcmVjb3ZlcnlcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHsgdXNlclByaXZrZXksIGJhY2t1cFByaXZrZXkgfSwgWydmdWxseVNpZ25lZCcsIC4uLnNjcmlwdFR5cGVzXSk7XG5cbiAgICAgIC8vIEZ1bGx5IHNpZ25lZCB3aXRoIGN1c3RvbSB1c2VyIGtleSBwYXRoXG4gICAgICBydW4oY29pbiwgc2NyaXB0VHlwZXMsIHdhc21FeG90aWNXYWxsZXRLZXlzLCB7IHVzZXJQcml2a2V5LCBiYWNrdXBQcml2a2V5IH0sIFtcbiAgICAgICAgJ2Z1bGx5U2lnbmVkJyxcbiAgICAgICAgJ2N1c3RvbVVzZXJLZXlQYXRoJyxcbiAgICAgICAgLi4uc2NyaXB0VHlwZXMsXG4gICAgICBdKTtcbiAgICB9KTtcbn1cblxuZGVzY3JpYmUoJ0JhY2t1cCBLZXkgUmVjb3ZlcnkgUFNCVCcsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3VzZXMgdGhlIHN1cHBsaWVkIHBvc3QtTlU2LjIgYmxvY2sgaGVpZ2h0IGZvciBaY2FzaCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB7IHdhbGxldEtleXM6IGV4dGVybmFsV2FsbGV0IH0gPSBjcmVhdGVXYXNtV2FsbGV0S2V5cygnZXh0ZXJuYWwnKTtcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gZ2V0V2FsbGV0QWRkcmVzcygnemVjJywgZXh0ZXJuYWxXYWxsZXQpO1xuICAgIGNvbnN0IHVuc3BlbnQgPSB0b1Vuc3BlbnQoeyBzY3JpcHRUeXBlOiAncDJzaCcsIHZhbHVlOiBCaWdJbnQoMWU4KSB9LCAwLCAnemVjJywgd2FzbVdhbGxldEtleXMpO1xuXG4gICAgY29uc3QgcHNidCA9IGJhY2t1cEtleVJlY292ZXJ5V2l0aFdhbGxldFVuc3BlbnRzKFxuICAgICAgJ3plYycsXG4gICAgICB7XG4gICAgICAgIHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLFxuICAgICAgICBrZXlzOiBbdXNlclByaXZrZXksIGJhY2t1cFByaXZrZXksIHdhc21XYWxsZXRLZXlzLmJpdGdvS2V5KCldLFxuICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICBmZWVSYXRlU2F0VkI6IDEsXG4gICAgICAgIGJsb2NrSGVpZ2h0OiAzXzM2NF82MDAsXG4gICAgICB9LFxuICAgICAgW3Vuc3BlbnRdXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbCgocHNidCBhcyBmaXhlZFNjcmlwdFdhbGxldC5aY2FzaEJpdEdvUHNidCkuY29uc2Vuc3VzQnJhbmNoSWQsIDB4NTQzN2YzMzApO1xuICB9KTtcblxuICAvLyBjb21wYXRpYmxlIHdpdGggYWxsIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2gnXSk7XG5cbiAgLy8gc2Vnd2l0IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJzaFAyd3NoJywgJ3Ayd3NoJ10pO1xuXG4gIC8vIHRhcHJvb3QgY29tcGF0aWJsZSBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnRyJywgJ3AydHJNdXNpZzInXSk7XG59KTtcbiJdfQ==
@@ -41,7 +41,9 @@ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
41
41
  const testutils = __importStar(require("@bitgo/wasm-utxo/testutils"));
42
42
  const parse_1 = require("../../../../src/transaction/descriptor/parse");
43
43
  const verifyTransaction_1 = require("../../../../src/transaction/descriptor/verifyTransaction");
44
+ const recipient_1 = require("../../../../src/transaction/recipient");
44
45
  const parseToAmountType_1 = require("../../../../src/transaction/descriptor/parseToAmountType");
46
+ const util_1 = require("../../util");
45
47
  const fixtures_utils_1 = require("./fixtures.utils");
46
48
  const { getDefaultXPubs, getDescriptor, getDescriptorMap, mockPsbtDefault } = testutils.descriptor;
47
49
  const { toPlainObject } = testutils;
@@ -79,7 +81,7 @@ describe('parse', function () {
79
81
  return recipient(descriptorOther, index, value);
80
82
  }
81
83
  function getBaseParsedTransaction(psbt, recipients) {
82
- return (0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, getDescriptorMap('Wsh2Of3', getDefaultXPubs('a')), recipients.map(toBaseOutputString), 'btc');
84
+ return (0, parse_1.toBaseParsedTransactionOutputsFromPsbt)(psbt, getDescriptorMap('Wsh2Of3', getDefaultXPubs('a')), recipients.map(toBaseOutputString), new recipient_1.AddressCodec((0, util_1.getUtxoCoin)('btc').name));
83
85
  }
84
86
  const psbtOutputs = psbt.getOutputsWithAddress('btc');
85
87
  const psbtOutput0 = psbtOutputs[0];
@@ -135,4 +137,4 @@ describe('parse', function () {
135
137
  });
136
138
  });
137
139
  });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixnREFBc0U7QUFDdEUsc0VBQXdEO0FBRXhELHdFQUdzRDtBQUN0RCxnR0FLa0U7QUFDbEUsZ0dBQXdGO0FBR3hGLHFEQUFrRDtBQUVsRCxNQUFNLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO0FBQ25HLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFDcEMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBQSwrQkFBYyxFQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsQ0FBQztBQU92RSxTQUFTLFlBQVksQ0FBVSxNQUF1QixFQUFFLFVBQStCO0lBQ3JGLElBQUEsZ0JBQU0sRUFBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixNQUFNLEVBQUUsSUFBQSxnQ0FBWSxFQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFZO0tBQzFELENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsTUFBdUI7SUFDakQsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxNQUF1QjtJQUMxQyxPQUFPO1FBQ0wsR0FBRyxNQUFN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Q0FBd0IsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDaEcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvciwgUHNidCwgZGVzY3JpcHRvcldhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgdGVzdHV0aWxzIGZyb20gJ0BiaXRnby93YXNtLXV0eG8vdGVzdHV0aWxzJztcblxuaW1wb3J0IHtcbiAgUGFyc2VkT3V0cHV0c0JpZ0ludCxcbiAgdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3BhcnNlJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcixcbiAgYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlLFxuICBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzLFxuICBFcnJvck1pc3NpbmdPdXRwdXRzLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci92ZXJpZnlUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyB0b0Ftb3VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZVRvQW1vdW50VHlwZSc7XG5pbXBvcnQgeyBCYXNlT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3R5cGVzJztcblxuaW1wb3J0IHsgZ2V0Rml4dHVyZVJvb3QgfSBmcm9tICcuL2ZpeHR1cmVzLnV0aWxzJztcblxuY29uc3QgeyBnZXREZWZhdWx0WFB1YnMsIGdldERlc2NyaXB0b3IsIGdldERlc2NyaXB0b3JNYXAsIG1vY2tQc2J0RGVmYXVsdCB9ID0gdGVzdHV0aWxzLmRlc2NyaXB0b3I7XG5jb25zdCB7IHRvUGxhaW5PYmplY3QgfSA9IHRlc3R1dGlscztcbmNvbnN0IHsgYXNzZXJ0RXF1YWxGaXh0dXJlIH0gPSBnZXRGaXh0dXJlUm9vdChfX2Rpcm5hbWUgKyAnL2ZpeHR1cmVzJyk7XG5cbnR5cGUgT3V0cHV0V2l0aFZhbHVlPFQgPSBudW1iZXIgfCBiaWdpbnQgfCBzdHJpbmc+ID0ge1xuICBhZGRyZXNzPzogc3RyaW5nO1xuICB2YWx1ZTogVDtcbn07XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dDxUTnVtYmVyPihvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSwgYW1vdW50VHlwZTogJ2JpZ2ludCcgfCAnc3RyaW5nJyk6IEJhc2VPdXRwdXQ8VE51bWJlcj4ge1xuICBhc3NlcnQob3V0cHV0LmFkZHJlc3MpO1xuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzLFxuICAgIGFtb3VudDogdG9BbW91bnRUeXBlKG91dHB1dC52YWx1ZSwgYW1vdW50VHlwZSkgYXMgVE51bWJlcixcbiAgfTtcbn1cblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0QmlnSW50KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogQmFzZU91dHB1dDxiaWdpbnQ+IHtcbiAgcmV0dXJuIHRvQmFzZU91dHB1dChvdXRwdXQsICdiaWdpbnQnKTtcbn1cblxuZnVuY3Rpb24gdG9CYXNlT3V0cHV0U3RyaW5nKG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogQmFzZU91dHB1dDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvQmFzZU91dHB1dChvdXRwdXQsICdzdHJpbmcnKTtcbn1cblxuZnVuY3Rpb24gdG9NYXhPdXRwdXQob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUpOiBPdXRwdXRXaXRoVmFsdWU8J21heCc+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5vdXRwdXQsXG4gICAgdmFsdWU6ICdtYXgnLFxuICB9O1xufVxuXG5kZXNjcmliZSgncGFyc2UnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGRlc2NyaXB0b3JTZWxmID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYScpKTtcbiAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYicpKTtcbiAgY29uc3QgcHNidCA9IG1vY2tQc2J0RGVmYXVsdCh7IGRlc2NyaXB0b3JTZWxmLCBkZXNjcmlwdG9yT3RoZXIgfSk7XG5cbiAgZnVuY3Rpb24gcmVjaXBpZW50KGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsIGluZGV4OiBudW1iZXIsIHZhbHVlID0gMTAwMCkge1xuICAgIHJldHVybiB7IHZhbHVlLCBhZGRyZXNzOiBkZXNjcmlwdG9yV2FsbGV0LmNyZWF0ZUFkZHJlc3NGcm9tRGVzY3JpcHRvcihkZXNjcmlwdG9yLCBpbmRleCwgJ2J0YycpIH07XG4gIH1cblxuICBmdW5jdGlvbiBpbnRlcm5hbFJlY2lwaWVudChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IE91dHB1dFdpdGhWYWx1ZSB7XG4gICAgcmV0dXJuIHJlY2lwaWVudChkZXNjcmlwdG9yU2VsZiwgaW5kZXgsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4dGVybmFsUmVjaXBpZW50KGluZGV4OiBudW1iZXIsIHZhbHVlPzogbnVtYmVyKTogT3V0cHV0V2l0aFZhbHVlIHtcbiAgICByZXR1cm4gcmVjaXBpZW50KGRlc2NyaXB0b3JPdGhlciwgaW5kZXgsIHZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0OiBQc2J0LCByZWNpcGllbnRzOiBPdXRwdXRXaXRoVmFsdWVbXSk6IFBhcnNlZE91dHB1dHNCaWdJbnQge1xuICAgIHJldHVybiB0b0Jhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHNGcm9tUHNidChcbiAgICAgIHBzYnQsXG4gICAgICBnZXREZXNjcmlwdG9yTWFwKCdXc2gyT2YzJywgZ2V0RGVmYXVsdFhQdWJzKCdhJykpLFxuICAgICAgcmVjaXBpZW50cy5tYXAodG9CYXNlT3V0cHV0U3RyaW5nKSxcbiAgICAgICdidGMnXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHBzYnRPdXRwdXRzID0gcHNidC5nZXRPdXRwdXRzV2l0aEFkZHJlc3MoJ2J0YycpO1xuICBjb25zdCBwc2J0T3V0cHV0MCA9IHBzYnRPdXRwdXRzWzBdO1xuICBjb25zdCBwc2J0T3V0cHV0MSA9IHBzYnRPdXRwdXRzWzFdO1xuXG4gIGRlc2NyaWJlKCd0b0Jhc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGNvcnJlY3QgQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZSgncGFyc2VXaXRob3V0UmVjaXBpZW50cy5qc29uJywgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW10pKSk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoXG4gICAgICAgICdwYXJzZVdpdGhFeHRlcm5hbFJlY2lwaWVudC5qc29uJyxcbiAgICAgICAgdG9QbGFpbk9iamVjdChnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3BzYnRPdXRwdXQwXSkpXG4gICAgICApO1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKFxuICAgICAgICAncGFyc2VXaXRoSW50ZXJuYWxSZWNpcGllbnQuanNvbicsXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtwc2J0T3V0cHV0MV0pKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgJ3BhcnNlV2l0aEV4dGVybmFsUmVjaXBpZW50Lmpzb24nLFxuICAgICAgICAvLyBtYXggcmVjaXBpZW50OiBpZ25vcmUgYWN0dWFsIHZhbHVlXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFt0b01heE91dHB1dChwc2J0T3V0cHV0MCldKSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihhY3R1YWw6IHVua25vd24sIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGZ1bmN0aW9uIG5vcm1FcnJvcnMoZTogRXJyb3JbXSk6IEVycm9yW10ge1xuICAgICAgICByZXR1cm4gZS5tYXAoKGUpID0+ICh7IC4uLmUsIHN0YWNrOiB1bmRlZmluZWQgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKG5vcm1FcnJvcnMoYWN0dWFsLmVycm9ycyksIG5vcm1FcnJvcnMoZXhwZWN0ZWQuZXJyb3JzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3IgdHlwZTogJyArIGFjdHVhbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0VmFsaWRhdGlvbkVycm9yKGY6ICgpID0+IHZvaWQsIGV4cGVjdGVkOiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIGFzc2VydC50aHJvd3MoZiwgKGVycikgPT4ge1xuICAgICAgICBhc3NlcnRFcXVhbFZhbGlkYXRpb25FcnJvcihlcnIsIGV4cGVjdGVkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbXBsaWNpdE91dHB1dEVycm9yKG91dHB1dDogT3V0cHV0V2l0aFZhbHVlLCB7IGV4dGVybmFsID0gdHJ1ZSB9ID0ge30pOiBFcnJvckltcGxpY2l0RXh0ZXJuYWxPdXRwdXRzIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyhbeyAuLi50b0Jhc2VPdXRwdXRCaWdJbnQob3V0cHV0KSwgZXh0ZXJuYWwgfV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1pc3NpbmdPdXRwdXRFcnJvcihvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSwgeyBleHRlcm5hbCA9IHRydWUgfSA9IHt9KTogRXJyb3JNaXNzaW5nT3V0cHV0cyB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yTWlzc2luZ091dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KG91dHB1dCksIGV4dGVybmFsIH1dKTtcbiAgICB9XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBubyByZWNpcGllbnQgcmVxdWVzdGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtdKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW2ltcGxpY2l0T3V0cHV0RXJyb3IocHNidE91dHB1dDApXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBvbmx5IGludGVybmFsIHJlY2lwaWVudCByZXF1ZXN0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3BzYnRPdXRwdXQxXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtpbXBsaWNpdE91dHB1dEVycm9yKHBzYnRPdXRwdXQwKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogb25seSBpbnRlcm5hbCBtYXggcmVjaXBpZW50IHJlcXVlc3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbdG9NYXhPdXRwdXQocHNidE91dHB1dDEpXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtpbXBsaWNpdE91dHB1dEVycm9yKHBzYnRPdXRwdXQwKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogc3dhcHBlZCByZWNpcGllbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSBleHRlcm5hbFJlY2lwaWVudCg5OSk7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3JlY2lwaWVudF0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbbWlzc2luZ091dHB1dEVycm9yKHJlY2lwaWVudCksIGltcGxpY2l0T3V0cHV0RXJyb3IocHNidE91dHB1dDApXSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGV4cGVjdGVkIGVycm9yOiBtaXNzaW5nIGludGVybmFsIHJlY2lwaWVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHJlY2lwaWVudCA9IGludGVybmFsUmVjaXBpZW50KDk5KTtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcmVjaXBpZW50XSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFttaXNzaW5nT3V0cHV0RXJyb3IocmVjaXBpZW50KSwgaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0T3V0cHV0MCldKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixnREFBc0U7QUFDdEUsc0VBQXdEO0FBRXhELHdFQUdzRDtBQUN0RCxnR0FLa0U7QUFDbEUscUVBQXFFO0FBQ3JFLGdHQUF3RjtBQUV4RixxQ0FBeUM7QUFFekMscURBQWtEO0FBRWxELE1BQU0sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFDbkcsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUNwQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxJQUFBLCtCQUFjLEVBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBT3ZFLFNBQVMsWUFBWSxDQUFVLE1BQXVCLEVBQUUsVUFBK0I7SUFDckYsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixPQUFPO1FBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLE1BQU0sRUFBRSxJQUFBLGdDQUFZLEVBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQVk7S0FDMUQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCO0lBQ2pELE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxNQUF1QjtJQUNqRCxPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLE1BQXVC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QUMsSUFBQSxrREFBOEIsRUFBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ2pGLElBQUksNENBQXdCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2hHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IERlc2NyaXB0b3IsIFBzYnQsIGRlc2NyaXB0b3JXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcbmltcG9ydCAqIGFzIHRlc3R1dGlscyBmcm9tICdAYml0Z28vd2FzbS11dHhvL3Rlc3R1dGlscyc7XG5cbmltcG9ydCB7XG4gIFBhcnNlZE91dHB1dHNCaWdJbnQsXG4gIHRvQmFzZVBhcnNlZFRyYW5zYWN0aW9uT3V0cHV0c0Zyb21Qc2J0LFxufSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZSc7XG5pbXBvcnQge1xuICBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IsXG4gIGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZSxcbiAgRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyxcbiAgRXJyb3JNaXNzaW5nT3V0cHV0cyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvdmVyaWZ5VHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQWRkcmVzc0NvZGVjIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3JlY2lwaWVudCc7XG5pbXBvcnQgeyB0b0Ftb3VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci9wYXJzZVRvQW1vdW50VHlwZSc7XG5pbXBvcnQgeyBCYXNlT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3R5cGVzJztcbmltcG9ydCB7IGdldFV0eG9Db2luIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5cbmltcG9ydCB7IGdldEZpeHR1cmVSb290IH0gZnJvbSAnLi9maXh0dXJlcy51dGlscyc7XG5cbmNvbnN0IHsgZ2V0RGVmYXVsdFhQdWJzLCBnZXREZXNjcmlwdG9yLCBnZXREZXNjcmlwdG9yTWFwLCBtb2NrUHNidERlZmF1bHQgfSA9IHRlc3R1dGlscy5kZXNjcmlwdG9yO1xuY29uc3QgeyB0b1BsYWluT2JqZWN0IH0gPSB0ZXN0dXRpbHM7XG5jb25zdCB7IGFzc2VydEVxdWFsRml4dHVyZSB9ID0gZ2V0Rml4dHVyZVJvb3QoX19kaXJuYW1lICsgJy9maXh0dXJlcycpO1xuXG50eXBlIE91dHB1dFdpdGhWYWx1ZTxUID0gbnVtYmVyIHwgYmlnaW50IHwgc3RyaW5nPiA9IHtcbiAgYWRkcmVzcz86IHN0cmluZztcbiAgdmFsdWU6IFQ7XG59O1xuXG5mdW5jdGlvbiB0b0Jhc2VPdXRwdXQ8VE51bWJlcj4ob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUsIGFtb3VudFR5cGU6ICdiaWdpbnQnIHwgJ3N0cmluZycpOiBCYXNlT3V0cHV0PFROdW1iZXI+IHtcbiAgYXNzZXJ0KG91dHB1dC5hZGRyZXNzKTtcbiAgcmV0dXJuIHtcbiAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICBhbW91bnQ6IHRvQW1vdW50VHlwZShvdXRwdXQudmFsdWUsIGFtb3VudFR5cGUpIGFzIFROdW1iZXIsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dEJpZ0ludChvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IEJhc2VPdXRwdXQ8YmlnaW50PiB7XG4gIHJldHVybiB0b0Jhc2VPdXRwdXQob3V0cHV0LCAnYmlnaW50Jyk7XG59XG5cbmZ1bmN0aW9uIHRvQmFzZU91dHB1dFN0cmluZyhvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSk6IEJhc2VPdXRwdXQ8c3RyaW5nPiB7XG4gIHJldHVybiB0b0Jhc2VPdXRwdXQob3V0cHV0LCAnc3RyaW5nJyk7XG59XG5cbmZ1bmN0aW9uIHRvTWF4T3V0cHV0KG91dHB1dDogT3V0cHV0V2l0aFZhbHVlKTogT3V0cHV0V2l0aFZhbHVlPCdtYXgnPiB7XG4gIHJldHVybiB7XG4gICAgLi4ub3V0cHV0LFxuICAgIHZhbHVlOiAnbWF4JyxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ3BhcnNlJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBkZXNjcmlwdG9yU2VsZiA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2EnKSk7XG4gIGNvbnN0IGRlc2NyaXB0b3JPdGhlciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCBnZXREZWZhdWx0WFB1YnMoJ2InKSk7XG4gIGNvbnN0IHBzYnQgPSBtb2NrUHNidERlZmF1bHQoeyBkZXNjcmlwdG9yU2VsZiwgZGVzY3JpcHRvck90aGVyIH0pO1xuXG4gIGZ1bmN0aW9uIHJlY2lwaWVudChkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyLCB2YWx1ZSA9IDEwMDApIHtcbiAgICByZXR1cm4geyB2YWx1ZSwgYWRkcmVzczogZGVzY3JpcHRvcldhbGxldC5jcmVhdGVBZGRyZXNzRnJvbURlc2NyaXB0b3IoZGVzY3JpcHRvciwgaW5kZXgsICdidGMnKSB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaW50ZXJuYWxSZWNpcGllbnQoaW5kZXg6IG51bWJlciwgdmFsdWU/OiBudW1iZXIpOiBPdXRwdXRXaXRoVmFsdWUge1xuICAgIHJldHVybiByZWNpcGllbnQoZGVzY3JpcHRvclNlbGYsIGluZGV4LCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBleHRlcm5hbFJlY2lwaWVudChpbmRleDogbnVtYmVyLCB2YWx1ZT86IG51bWJlcik6IE91dHB1dFdpdGhWYWx1ZSB7XG4gICAgcmV0dXJuIHJlY2lwaWVudChkZXNjcmlwdG9yT3RoZXIsIGluZGV4LCB2YWx1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidDogUHNidCwgcmVjaXBpZW50czogT3V0cHV0V2l0aFZhbHVlW10pOiBQYXJzZWRPdXRwdXRzQmlnSW50IHtcbiAgICByZXR1cm4gdG9CYXNlUGFyc2VkVHJhbnNhY3Rpb25PdXRwdXRzRnJvbVBzYnQoXG4gICAgICBwc2J0LFxuICAgICAgZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIGdldERlZmF1bHRYUHVicygnYScpKSxcbiAgICAgIHJlY2lwaWVudHMubWFwKHRvQmFzZU91dHB1dFN0cmluZyksXG4gICAgICBuZXcgQWRkcmVzc0NvZGVjKGdldFV0eG9Db2luKCdidGMnKS5uYW1lKVxuICAgICk7XG4gIH1cblxuICBjb25zdCBwc2J0T3V0cHV0cyA9IHBzYnQuZ2V0T3V0cHV0c1dpdGhBZGRyZXNzKCdidGMnKTtcbiAgY29uc3QgcHNidE91dHB1dDAgPSBwc2J0T3V0cHV0c1swXTtcbiAgY29uc3QgcHNidE91dHB1dDEgPSBwc2J0T3V0cHV0c1sxXTtcblxuICBkZXNjcmliZSgndG9CYXNlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRoZSBjb3JyZWN0IEJhc2VQYXJzZWRUcmFuc2FjdGlvbk91dHB1dHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoJ3BhcnNlV2l0aG91dFJlY2lwaWVudHMuanNvbicsIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtdKSkpO1xuICAgICAgYXdhaXQgYXNzZXJ0RXF1YWxGaXh0dXJlKFxuICAgICAgICAncGFyc2VXaXRoRXh0ZXJuYWxSZWNpcGllbnQuanNvbicsXG4gICAgICAgIHRvUGxhaW5PYmplY3QoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtwc2J0T3V0cHV0MF0pKVxuICAgICAgKTtcbiAgICAgIGF3YWl0IGFzc2VydEVxdWFsRml4dHVyZShcbiAgICAgICAgJ3BhcnNlV2l0aEludGVybmFsUmVjaXBpZW50Lmpzb24nLFxuICAgICAgICB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbcHNidE91dHB1dDFdKSlcbiAgICAgICk7XG4gICAgICBhd2FpdCBhc3NlcnRFcXVhbEZpeHR1cmUoXG4gICAgICAgICdwYXJzZVdpdGhFeHRlcm5hbFJlY2lwaWVudC5qc29uJyxcbiAgICAgICAgLy8gbWF4IHJlY2lwaWVudDogaWdub3JlIGFjdHVhbCB2YWx1ZVxuICAgICAgICB0b1BsYWluT2JqZWN0KGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbdG9NYXhPdXRwdXQocHNidE91dHB1dDApXSkpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYXNzZXJ0RXF1YWxWYWxpZGF0aW9uRXJyb3IoYWN0dWFsOiB1bmtub3duLCBleHBlY3RlZDogQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBmdW5jdGlvbiBub3JtRXJyb3JzKGU6IEVycm9yW10pOiBFcnJvcltdIHtcbiAgICAgICAgcmV0dXJuIGUubWFwKChlKSA9PiAoeyAuLi5lLCBzdGFjazogdW5kZWZpbmVkIH0pKTtcbiAgICAgIH1cbiAgICAgIGlmIChhY3R1YWwgaW5zdGFuY2VvZiBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChub3JtRXJyb3JzKGFjdHVhbC5lcnJvcnMpLCBub3JtRXJyb3JzKGV4cGVjdGVkLmVycm9ycykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yIHR5cGU6ICcgKyBhY3R1YWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFzc2VydFZhbGlkYXRpb25FcnJvcihmOiAoKSA9PiB2b2lkLCBleHBlY3RlZDogQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICBhc3NlcnQudGhyb3dzKGYsIChlcnIpID0+IHtcbiAgICAgICAgYXNzZXJ0RXF1YWxWYWxpZGF0aW9uRXJyb3IoZXJyLCBleHBlY3RlZCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW1wbGljaXRPdXRwdXRFcnJvcihvdXRwdXQ6IE91dHB1dFdpdGhWYWx1ZSwgeyBleHRlcm5hbCA9IHRydWUgfSA9IHt9KTogRXJyb3JJbXBsaWNpdEV4dGVybmFsT3V0cHV0cyB7XG4gICAgICByZXR1cm4gbmV3IEVycm9ySW1wbGljaXRFeHRlcm5hbE91dHB1dHMoW3sgLi4udG9CYXNlT3V0cHV0QmlnSW50KG91dHB1dCksIGV4dGVybmFsIH1dKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtaXNzaW5nT3V0cHV0RXJyb3Iob3V0cHV0OiBPdXRwdXRXaXRoVmFsdWUsIHsgZXh0ZXJuYWwgPSB0cnVlIH0gPSB7fSk6IEVycm9yTWlzc2luZ091dHB1dHMge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvck1pc3NpbmdPdXRwdXRzKFt7IC4uLnRvQmFzZU91dHB1dEJpZ0ludChvdXRwdXQpLCBleHRlcm5hbCB9XSk7XG4gICAgfVxuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogbm8gcmVjaXBpZW50IHJlcXVlc3RlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydFZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgKCkgPT4gYXNzZXJ0RXhwZWN0ZWRPdXRwdXREaWZmZXJlbmNlKGdldEJhc2VQYXJzZWRUcmFuc2FjdGlvbihwc2J0LCBbXSkpLFxuICAgICAgICBuZXcgQWdncmVnYXRlVmFsaWRhdGlvbkVycm9yKFtpbXBsaWNpdE91dHB1dEVycm9yKHBzYnRPdXRwdXQwKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogb25seSBpbnRlcm5hbCByZWNpcGllbnQgcmVxdWVzdGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtwc2J0T3V0cHV0MV0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0T3V0cHV0MCldKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3I6IG9ubHkgaW50ZXJuYWwgbWF4IHJlY2lwaWVudCByZXF1ZXN0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3RvTWF4T3V0cHV0KHBzYnRPdXRwdXQxKV0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbaW1wbGljaXRPdXRwdXRFcnJvcihwc2J0T3V0cHV0MCldKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXhwZWN0ZWQgZXJyb3I6IHN3YXBwZWQgcmVjaXBpZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcmVjaXBpZW50ID0gZXh0ZXJuYWxSZWNpcGllbnQoOTkpO1xuICAgICAgYXNzZXJ0VmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAoKSA9PiBhc3NlcnRFeHBlY3RlZE91dHB1dERpZmZlcmVuY2UoZ2V0QmFzZVBhcnNlZFRyYW5zYWN0aW9uKHBzYnQsIFtyZWNpcGllbnRdKSksXG4gICAgICAgIG5ldyBBZ2dyZWdhdGVWYWxpZGF0aW9uRXJyb3IoW21pc3NpbmdPdXRwdXRFcnJvcihyZWNpcGllbnQpLCBpbXBsaWNpdE91dHB1dEVycm9yKHBzYnRPdXRwdXQwKV0pXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBleHBlY3RlZCBlcnJvcjogbWlzc2luZyBpbnRlcm5hbCByZWNpcGllbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCByZWNpcGllbnQgPSBpbnRlcm5hbFJlY2lwaWVudCg5OSk7XG4gICAgICBhc3NlcnRWYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICgpID0+IGFzc2VydEV4cGVjdGVkT3V0cHV0RGlmZmVyZW5jZShnZXRCYXNlUGFyc2VkVHJhbnNhY3Rpb24ocHNidCwgW3JlY2lwaWVudF0pKSxcbiAgICAgICAgbmV3IEFnZ3JlZ2F0ZVZhbGlkYXRpb25FcnJvcihbbWlzc2luZ091dHB1dEVycm9yKHJlY2lwaWVudCksIGltcGxpY2l0T3V0cHV0RXJyb3IocHNidE91dHB1dDApXSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -44,6 +44,7 @@ const util_1 = require("../../util");
44
44
  const { getDefaultXPubs, getDescriptor, getDescriptorMap, mockPsbt } = testutils.descriptor;
45
45
  describe('descriptor verifyTransaction - quantum-resistant sweep', function () {
46
46
  const coin = (0, util_1.getUtxoCoin)('tbtc');
47
+ const addressCodec = new recipient_1.AddressCodec(coin.name);
47
48
  const xpubsSelf = getDefaultXPubs('a');
48
49
  const xpubsOther = getDefaultXPubs('b');
49
50
  const descriptorSelf = getDescriptor('Wsh2Of3', xpubsSelf);
@@ -70,7 +71,7 @@ describe('descriptor verifyTransaction - quantum-resistant sweep', function () {
70
71
  it('should reject when external outputs exist and qr is true', async function () {
71
72
  const psbt = buildPsbtWithExternal();
72
73
  const externalScript = Buffer.from(descriptorOther.atDerivationIndex(0).scriptPubkey());
73
- const externalAddress = (0, recipient_1.toExtendedAddressFormat)(externalScript, 'tbtc');
74
+ const externalAddress = new recipient_1.AddressCodec(coin.name).toExtendedAddressFormat(externalScript);
74
75
  await assert_1.default.rejects((0, verifyTransaction_1.verifyTransaction)(coin, {
75
76
  txParams: {
76
77
  qr: true,
@@ -78,7 +79,7 @@ describe('descriptor verifyTransaction - quantum-resistant sweep', function () {
78
79
  },
79
80
  txPrebuild: { txHex: Buffer.from(psbt.serialize()).toString('hex') },
80
81
  wallet: {},
81
- }, descriptorMap), /quantum-resistant sweep transactions must only contain wallet-internal outputs/);
82
+ }, descriptorMap, addressCodec), /quantum-resistant sweep transactions must only contain wallet-internal outputs/);
82
83
  });
83
84
  it('should pass when all outputs are internal and qr is true', async function () {
84
85
  const psbt = buildPsbtAllInternal();
@@ -86,7 +87,7 @@ describe('descriptor verifyTransaction - quantum-resistant sweep', function () {
86
87
  txParams: { qr: true, recipients: [] },
87
88
  txPrebuild: { txHex: Buffer.from(psbt.serialize()).toString('hex') },
88
89
  wallet: {},
89
- }, descriptorMap);
90
+ }, descriptorMap, addressCodec);
90
91
  assert_1.default.strictEqual(result, true);
91
92
  });
92
93
  it('should not apply qr check when qr is not set (internal-only outputs pass normally)', async function () {
@@ -95,8 +96,8 @@ describe('descriptor verifyTransaction - quantum-resistant sweep', function () {
95
96
  txParams: { recipients: [] },
96
97
  txPrebuild: { txHex: Buffer.from(psbt.serialize()).toString('hex') },
97
98
  wallet: {},
98
- }, descriptorMap);
99
+ }, descriptorMap, addressCodec);
99
100
  assert_1.default.strictEqual(result, true);
100
101
  });
101
102
  });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb25Rci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3ZlcmlmeVRyYW5zYWN0aW9uUXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsc0VBQXdEO0FBRXhELGdHQUE2RjtBQUM3RixxRUFBZ0Y7QUFDaEYscUNBQXlDO0FBRXpDLE1BQU0sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFFNUYsUUFBUSxDQUFDLHdEQUF3RCxFQUFFO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUVqQyxNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0QsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFN0QsU0FBUyxvQkFBb0I7UUFDM0IsT0FBTyxRQUFRLENBQ2I7WUFDRSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRTtZQUN4QyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7U0FDMUQsRUFDRDtZQUNFLEVBQUUs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QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sRUFBRSxFQUFTO1NBQ2xCLEVBQ0QsYUFBYSxDQUNkLENBQUM7UUFFRixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdGVzdHV0aWxzIGZyb20gJ0BiaXRnby93YXNtLXV0eG8vdGVzdHV0aWxzJztcblxuaW1wb3J0IHsgdmVyaWZ5VHJhbnNhY3Rpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvdHJhbnNhY3Rpb24vZGVzY3JpcHRvci92ZXJpZnlUcmFuc2FjdGlvbic7XG5pbXBvcnQgeyB0b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYy90cmFuc2FjdGlvbi9yZWNpcGllbnQnO1xuaW1wb3J0IHsgZ2V0VXR4b0NvaW4gfSBmcm9tICcuLi8uLi91dGlsJztcblxuY29uc3QgeyBnZXREZWZhdWx0WFB1YnMsIGdldERlc2NyaXB0b3IsIGdldERlc2NyaXB0b3JNYXAsIG1vY2tQc2J0IH0gPSB0ZXN0dXRpbHMuZGVzY3JpcHRvcjtcblxuZGVzY3JpYmUoJ2Rlc2NyaXB0b3IgdmVyaWZ5VHJhbnNhY3Rpb24gLSBxdWFudHVtLXJlc2lzdGFudCBzd2VlcCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbiA9IGdldFV0eG9Db2luKCd0YnRjJyk7XG5cbiAgY29uc3QgeHB1YnNTZWxmID0gZ2V0RGVmYXVsdFhQdWJzKCdhJyk7XG4gIGNvbnN0IHhwdWJzT3RoZXIgPSBnZXREZWZhdWx0WFB1YnMoJ2InKTtcbiAgY29uc3QgZGVzY3JpcHRvclNlbGYgPSBnZXREZXNjcmlwdG9yKCdXc2gyT2YzJywgeHB1YnNTZWxmKTtcbiAgY29uc3QgZGVzY3JpcHRvck90aGVyID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIHhwdWJzT3RoZXIpO1xuICBjb25zdCBkZXNjcmlwdG9yTWFwID0gZ2V0RGVzY3JpcHRvck1hcCgnV3NoMk9mMycsIHhwdWJzU2VsZik7XG5cbiAgZnVuY3Rpb24gYnVpbGRQc2J0QWxsSW50ZXJuYWwoKSB7XG4gICAgcmV0dXJuIG1vY2tQc2J0KFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMSwgaWQ6IHsgdm91dDogMSB9IH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpIH0sXG4gICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAxLCB2YWx1ZTogQmlnSW50KDRlNSkgfSxcbiAgICAgIF1cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gYnVpbGRQc2J0V2l0aEV4dGVybmFsKCkge1xuICAgIHJldHVybiBtb2NrUHNidChcbiAgICAgIFtcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDEsIGlkOiB7IHZvdXQ6IDEgfSB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yT3RoZXIsIGluZGV4OiAwLCB2YWx1ZTogQmlnSW50KDRlNSksIGV4dGVybmFsOiB0cnVlIH0sXG4gICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAwLCB2YWx1ZTogQmlnSW50KDRlNSkgfSxcbiAgICAgIF1cbiAgICApO1xuICB9XG5cbiAgaXQoJ3Nob3VsZCByZWplY3Qgd2hlbiBleHRlcm5hbCBvdXRwdXRzIGV4aXN0IGFuZCBxciBpcyB0cnVlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBzYnQgPSBidWlsZFBzYnRXaXRoRXh0ZXJuYWwoKTtcbiAgICBjb25zdCBleHRlcm5hbFNjcmlwdCA9IEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3JPdGhlci5hdERlcml2YXRpb25JbmRleCgwKS5zY3JpcHRQdWJrZXkoKSk7XG4gICAgY29uc3QgZXh0ZXJuYWxBZGRyZXNzID0gdG9FeHRlbmRlZEFkZHJlc3NGb3JtYXQoZXh0ZXJuYWxTY3JpcHQsICd0YnRjJyk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgIHZlcmlmeVRyYW5zYWN0aW9uKFxuICAgICAgICBjb2luLFxuICAgICAgICB7XG4gICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgIHFyOiB0cnVlLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogZXh0ZXJuYWxBZGRyZXNzLCBhbW91bnQ6ICc0MDAwMDAnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogQnVmZmVyLmZyb20ocHNidC5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgICAgd2FsbGV0OiB7fSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NyaXB0b3JNYXBcbiAgICAgICksXG4gICAgICAvcXVhbnR1bS1yZXNpc3RhbnQgc3dlZXAgdHJhbnNhY3Rpb25zIG11c3Qgb25seSBjb250YWluIHdhbGxldC1pbnRlcm5hbCBvdXRwdXRzL1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFzcyB3aGVuIGFsbCBvdXRwdXRzIGFyZSBpbnRlcm5hbCBhbmQgcXIgaXMgdHJ1ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gYnVpbGRQc2J0QWxsSW50ZXJuYWwoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVRyYW5zYWN0aW9uKFxuICAgICAgY29pbixcbiAgICAgIHtcbiAgICAgICAgdHhQYXJhbXM6IHsgcXI6IHRydWUsIHJlY2lwaWVudHM6IFtdIH0sXG4gICAgICAgIHR4UHJlYnVpbGQ6IHsgdHhIZXg6IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKSB9LFxuICAgICAgICB3YWxsZXQ6IHt9IGFzIGFueSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdG9yTWFwXG4gICAgKTtcblxuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQsIHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBhcHBseSBxciBjaGVjayB3aGVuIHFyIGlzIG5vdCBzZXQgKGludGVybmFsLW9ubHkgb3V0cHV0cyBwYXNzIG5vcm1hbGx5KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gYnVpbGRQc2J0QWxsSW50ZXJuYWwoKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHZlcmlmeVRyYW5zYWN0aW9uKFxuICAgICAgY29pbixcbiAgICAgIHtcbiAgICAgICAgdHhQYXJhbXM6IHsgcmVjaXBpZW50czogW10gfSxcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogQnVmZmVyLmZyb20ocHNidC5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgIHdhbGxldDoge30gYXMgYW55LFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0b3JNYXBcbiAgICApO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gIH0pO1xufSk7XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5VHJhbnNhY3Rpb25Rci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbi9kZXNjcmlwdG9yL3ZlcmlmeVRyYW5zYWN0aW9uUXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsc0VBQXdEO0FBRXhELGdHQUE2RjtBQUM3RixxRUFBcUU7QUFDckUscUNBQXlDO0FBRXpDLE1BQU0sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7QUFFNUYsUUFBUSxDQUFDLHdEQUF3RCxFQUFFO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLElBQUEsa0JBQVcsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLHdCQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxNQUFNLGVBQWUsR0FBRyxhQUFhLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUU3RCxTQUFTLG9CQUFvQjtRQUMzQixPQUFPLFFBQVEsQ0FDYjtZQUNFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO1lBQ3hDLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFF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LElBQUEscUNBQWlCLEVBQ3BDLElBQUksRUFDSjtZQUNFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7WUFDNUIsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sRUFBRSxFQUFTO1NBQ2xCLEVBQ0QsYUFBYSxFQUNiLFlBQVksQ0FDYixDQUFDO1FBRUYsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHRlc3R1dGlscyBmcm9tICdAYml0Z28vd2FzbS11dHhvL3Rlc3R1dGlscyc7XG5cbmltcG9ydCB7IHZlcmlmeVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL2Rlc2NyaXB0b3IvdmVyaWZ5VHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQWRkcmVzc0NvZGVjIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL3RyYW5zYWN0aW9uL3JlY2lwaWVudCc7XG5pbXBvcnQgeyBnZXRVdHhvQ29pbiB9IGZyb20gJy4uLy4uL3V0aWwnO1xuXG5jb25zdCB7IGdldERlZmF1bHRYUHVicywgZ2V0RGVzY3JpcHRvciwgZ2V0RGVzY3JpcHRvck1hcCwgbW9ja1BzYnQgfSA9IHRlc3R1dGlscy5kZXNjcmlwdG9yO1xuXG5kZXNjcmliZSgnZGVzY3JpcHRvciB2ZXJpZnlUcmFuc2FjdGlvbiAtIHF1YW50dW0tcmVzaXN0YW50IHN3ZWVwJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luID0gZ2V0VXR4b0NvaW4oJ3RidGMnKTtcbiAgY29uc3QgYWRkcmVzc0NvZGVjID0gbmV3IEFkZHJlc3NDb2RlYyhjb2luLm5hbWUpO1xuXG4gIGNvbnN0IHhwdWJzU2VsZiA9IGdldERlZmF1bHRYUHVicygnYScpO1xuICBjb25zdCB4cHVic090aGVyID0gZ2V0RGVmYXVsdFhQdWJzKCdiJyk7XG4gIGNvbnN0IGRlc2NyaXB0b3JTZWxmID0gZ2V0RGVzY3JpcHRvcignV3NoMk9mMycsIHhwdWJzU2VsZik7XG4gIGNvbnN0IGRlc2NyaXB0b3JPdGhlciA9IGdldERlc2NyaXB0b3IoJ1dzaDJPZjMnLCB4cHVic090aGVyKTtcbiAgY29uc3QgZGVzY3JpcHRvck1hcCA9IGdldERlc2NyaXB0b3JNYXAoJ1dzaDJPZjMnLCB4cHVic1NlbGYpO1xuXG4gIGZ1bmN0aW9uIGJ1aWxkUHNidEFsbEludGVybmFsKCkge1xuICAgIHJldHVybiBtb2NrUHNidChcbiAgICAgIFtcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAgfSxcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDEsIGlkOiB7IHZvdXQ6IDEgfSB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyBkZXNjcmlwdG9yOiBkZXNjcmlwdG9yU2VsZiwgaW5kZXg6IDAsIHZhbHVlOiBCaWdJbnQoNGU1KSB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMSwgdmFsdWU6IEJpZ0ludCg0ZTUpIH0sXG4gICAgICBdXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkUHNidFdpdGhFeHRlcm5hbCgpIHtcbiAgICByZXR1cm4gbW9ja1BzYnQoXG4gICAgICBbXG4gICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAwIH0sXG4gICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvclNlbGYsIGluZGV4OiAxLCBpZDogeyB2b3V0OiAxIH0gfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgZGVzY3JpcHRvcjogZGVzY3JpcHRvck90aGVyLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpLCBleHRlcm5hbDogdHJ1ZSB9LFxuICAgICAgICB7IGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JTZWxmLCBpbmRleDogMCwgdmFsdWU6IEJpZ0ludCg0ZTUpIH0sXG4gICAgICBdXG4gICAgKTtcbiAgfVxuXG4gIGl0KCdzaG91bGQgcmVqZWN0IHdoZW4gZXh0ZXJuYWwgb3V0cHV0cyBleGlzdCBhbmQgcXIgaXMgdHJ1ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBwc2J0ID0gYnVpbGRQc2J0V2l0aEV4dGVybmFsKCk7XG4gICAgY29uc3QgZXh0ZXJuYWxTY3JpcHQgPSBCdWZmZXIuZnJvbShkZXNjcmlwdG9yT3RoZXIuYXREZXJpdmF0aW9uSW5kZXgoMCkuc2NyaXB0UHVia2V5KCkpO1xuICAgIGNvbnN0IGV4dGVybmFsQWRkcmVzcyA9IG5ldyBBZGRyZXNzQ29kZWMoY29pbi5uYW1lKS50b0V4dGVuZGVkQWRkcmVzc0Zvcm1hdChleHRlcm5hbFNjcmlwdCk7XG5cbiAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgIHZlcmlmeVRyYW5zYWN0aW9uKFxuICAgICAgICBjb2luLFxuICAgICAgICB7XG4gICAgICAgICAgdHhQYXJhbXM6IHtcbiAgICAgICAgICAgIHFyOiB0cnVlLFxuICAgICAgICAgICAgcmVjaXBpZW50czogW3sgYWRkcmVzczogZXh0ZXJuYWxBZGRyZXNzLCBhbW91bnQ6ICc0MDAwMDAnIH1dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogQnVmZmVyLmZyb20ocHNidC5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgICAgd2FsbGV0OiB7fSBhcyBhbnksXG4gICAgICAgIH0sXG4gICAgICAgIGRlc2NyaXB0b3JNYXAsXG4gICAgICAgIGFkZHJlc3NDb2RlY1xuICAgICAgKSxcbiAgICAgIC9xdWFudHVtLXJlc2lzdGFudCBzd2VlcCB0cmFuc2FjdGlvbnMgbXVzdCBvbmx5IGNvbnRhaW4gd2FsbGV0LWludGVybmFsIG91dHB1dHMvXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXNzIHdoZW4gYWxsIG91dHB1dHMgYXJlIGludGVybmFsIGFuZCBxciBpcyB0cnVlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBzYnQgPSBidWlsZFBzYnRBbGxJbnRlcm5hbCgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5VHJhbnNhY3Rpb24oXG4gICAgICBjb2luLFxuICAgICAge1xuICAgICAgICB0eFBhcmFtczogeyBxcjogdHJ1ZSwgcmVjaXBpZW50czogW10gfSxcbiAgICAgICAgdHhQcmVidWlsZDogeyB0eEhleDogQnVmZmVyLmZyb20ocHNidC5zZXJpYWxpemUoKSkudG9TdHJpbmcoJ2hleCcpIH0sXG4gICAgICAgIHdhbGxldDoge30gYXMgYW55LFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0b3JNYXAsXG4gICAgICBhZGRyZXNzQ29kZWNcbiAgICApO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgdHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGFwcGx5IHFyIGNoZWNrIHdoZW4gcXIgaXMgbm90IHNldCAoaW50ZXJuYWwtb25seSBvdXRwdXRzIHBhc3Mgbm9ybWFsbHkpJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHBzYnQgPSBidWlsZFBzYnRBbGxJbnRlcm5hbCgpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdmVyaWZ5VHJhbnNhY3Rpb24oXG4gICAgICBjb2luLFxuICAgICAge1xuICAgICAgICB0eFBhcmFtczogeyByZWNpcGllbnRzOiBbXSB9LFxuICAgICAgICB0eFByZWJ1aWxkOiB7IHR4SGV4OiBCdWZmZXIuZnJvbShwc2J0LnNlcmlhbGl6ZSgpKS50b1N0cmluZygnaGV4JykgfSxcbiAgICAgICAgd2FsbGV0OiB7fSBhcyBhbnksXG4gICAgICB9LFxuICAgICAgZGVzY3JpcHRvck1hcCxcbiAgICAgIGFkZHJlc3NDb2RlY1xuICAgICk7XG5cbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCB0cnVlKTtcbiAgfSk7XG59KTtcbiJdfQ==