@bitgo/abstract-utxo 10.19.3 → 10.20.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 (98) hide show
  1. package/dist/cjs/src/abstractUtxoCoin.d.ts +7 -1
  2. package/dist/cjs/src/abstractUtxoCoin.d.ts.map +1 -1
  3. package/dist/cjs/src/abstractUtxoCoin.js +23 -11
  4. package/dist/cjs/src/transaction/decode.d.ts +2 -1
  5. package/dist/cjs/src/transaction/decode.d.ts.map +1 -1
  6. package/dist/cjs/src/transaction/decode.js +5 -1
  7. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts +32 -2
  8. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  9. package/dist/cjs/src/transaction/fixedScript/explainPsbtWasm.js +71 -18
  10. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts +7 -1
  11. package/dist/cjs/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  12. package/dist/cjs/src/transaction/fixedScript/explainTransaction.js +1 -1
  13. package/dist/cjs/src/transaction/fixedScript/index.d.ts +1 -1
  14. package/dist/cjs/src/transaction/fixedScript/index.d.ts.map +1 -1
  15. package/dist/cjs/src/transaction/fixedScript/index.js +4 -2
  16. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +3 -3
  17. package/dist/cjs/src/transaction/index.d.ts +2 -0
  18. package/dist/cjs/src/transaction/index.d.ts.map +1 -1
  19. package/dist/cjs/src/transaction/index.js +6 -2
  20. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  21. package/dist/cjs/src/transaction/signTransaction.js +11 -2
  22. package/dist/cjs/src/transaction/types.d.ts +1 -0
  23. package/dist/cjs/src/transaction/types.d.ts.map +1 -1
  24. package/dist/cjs/src/transaction/types.js +1 -1
  25. package/dist/cjs/test/integration/impl/bch/bch.d.ts +1 -1
  26. package/dist/cjs/test/integration/impl/bch/bch.d.ts.map +1 -1
  27. package/dist/cjs/test/integration/impl/bch/bch.js +12 -10
  28. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts +2 -0
  29. package/dist/cjs/test/unit/buildSignSendLegacyFormat.d.ts.map +1 -0
  30. package/dist/cjs/test/unit/buildSignSendLegacyFormat.js +99 -0
  31. package/dist/cjs/test/unit/customSigner.d.ts +1 -2
  32. package/dist/cjs/test/unit/customSigner.d.ts.map +1 -1
  33. package/dist/cjs/test/unit/customSigner.js +7 -9
  34. package/dist/cjs/test/unit/impl/bch/unit/bch.js +41 -108
  35. package/dist/cjs/test/unit/impl/bcha/unit/index.js +13 -19
  36. package/dist/cjs/test/unit/impl/bsv/unit/index.js +9 -7
  37. package/dist/cjs/test/unit/impl/btg/unit/index.js +8 -4
  38. package/dist/cjs/test/unit/impl/dash/unit/index.js +9 -7
  39. package/dist/cjs/test/unit/impl/doge/unit/index.js +9 -7
  40. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts +1 -1
  41. package/dist/cjs/test/unit/impl/zec/unit/index.d.ts.map +1 -1
  42. package/dist/cjs/test/unit/impl/zec/unit/index.js +9 -8
  43. package/dist/cjs/test/unit/keychains.d.ts +1 -1
  44. package/dist/cjs/test/unit/keychains.d.ts.map +1 -1
  45. package/dist/cjs/test/unit/keychains.js +2 -3
  46. package/dist/cjs/test/unit/postProcessPrebuild.d.ts +1 -1
  47. package/dist/cjs/test/unit/postProcessPrebuild.d.ts.map +1 -1
  48. package/dist/cjs/test/unit/postProcessPrebuild.js +7 -4
  49. package/dist/cjs/test/unit/prebuildAndSign.js +3 -5
  50. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts +1 -1
  51. package/dist/cjs/test/unit/recovery/backupKeyRecovery.d.ts.map +1 -1
  52. package/dist/cjs/test/unit/recovery/backupKeyRecovery.js +5 -6
  53. package/dist/cjs/test/unit/recovery/crossChainRecovery.js +6 -7
  54. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts +1 -1
  55. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.d.ts.map +1 -1
  56. package/dist/cjs/test/unit/recovery/formatBackupKeyRecoveryResult.js +32 -29
  57. package/dist/cjs/test/unit/transaction/fixedScript/explainPsbt.js +65 -1
  58. package/dist/cjs/test/unit/transaction.js +12 -12
  59. package/dist/cjs/test/unit/txFormat.d.ts.map +1 -1
  60. package/dist/cjs/test/unit/txFormat.js +25 -10
  61. package/dist/cjs/test/unit/util/assert.d.ts +3 -0
  62. package/dist/cjs/test/unit/util/assert.d.ts.map +1 -0
  63. package/dist/cjs/test/unit/util/assert.js +24 -0
  64. package/dist/cjs/test/unit/util/fixtures.d.ts +1 -2
  65. package/dist/cjs/test/unit/util/fixtures.d.ts.map +1 -1
  66. package/dist/cjs/test/unit/util/fixtures.js +8 -5
  67. package/dist/cjs/test/unit/util/index.d.ts +1 -0
  68. package/dist/cjs/test/unit/util/index.d.ts.map +1 -1
  69. package/dist/cjs/test/unit/util/index.js +2 -1
  70. package/dist/cjs/test/unit/wallet.d.ts +1 -1
  71. package/dist/cjs/test/unit/wallet.d.ts.map +1 -1
  72. package/dist/cjs/test/unit/wallet.js +15 -12
  73. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  74. package/dist/esm/abstractUtxoCoin.d.ts +7 -1
  75. package/dist/esm/abstractUtxoCoin.d.ts.map +1 -1
  76. package/dist/esm/abstractUtxoCoin.js +24 -12
  77. package/dist/esm/transaction/decode.d.ts +2 -1
  78. package/dist/esm/transaction/decode.d.ts.map +1 -1
  79. package/dist/esm/transaction/decode.js +4 -1
  80. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts +32 -2
  81. package/dist/esm/transaction/fixedScript/explainPsbtWasm.d.ts.map +1 -1
  82. package/dist/esm/transaction/fixedScript/explainPsbtWasm.js +69 -18
  83. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts +7 -1
  84. package/dist/esm/transaction/fixedScript/explainTransaction.d.ts.map +1 -1
  85. package/dist/esm/transaction/fixedScript/explainTransaction.js +1 -1
  86. package/dist/esm/transaction/fixedScript/index.d.ts +1 -1
  87. package/dist/esm/transaction/fixedScript/index.d.ts.map +1 -1
  88. package/dist/esm/transaction/fixedScript/index.js +2 -2
  89. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +3 -3
  90. package/dist/esm/transaction/index.d.ts +2 -0
  91. package/dist/esm/transaction/index.d.ts.map +1 -1
  92. package/dist/esm/transaction/index.js +3 -1
  93. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  94. package/dist/esm/transaction/signTransaction.js +13 -4
  95. package/dist/esm/transaction/types.d.ts +1 -0
  96. package/dist/esm/transaction/types.d.ts.map +1 -1
  97. package/dist/esm/transaction/types.js +1 -1
  98. package/package.json +10 -10
@@ -32,8 +32,11 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
35
38
  Object.defineProperty(exports, "__esModule", { value: true });
36
- require("should");
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
37
40
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
38
41
  const testutils = __importStar(require("@bitgo/wasm-utxo/testutils"));
39
42
  const util_1 = require("./util");
@@ -51,12 +54,12 @@ describe('Post Build Validation', function () {
51
54
  const postProcessBuilt = await coin.postProcessPrebuild(preBuild);
52
55
  // Parse result as PSBT
53
56
  const resultPsbt = BitGoPsbt.fromBytes(Buffer.from(postProcessBuilt.txHex, 'hex'), 'tbtc');
54
- resultPsbt.lockTime.should.equal(0);
57
+ strict_1.default.strictEqual(resultPsbt.lockTime(), 0);
55
58
  // Check sequences via parseTransactionWithWalletKeys
56
59
  const parsed = resultPsbt.parseTransactionWithWalletKeys(walletKeys, { replayProtection: { publicKeys: [] } });
57
60
  for (const input of parsed.inputs) {
58
- input.sequence.should.equal(0xffffffff);
61
+ strict_1.default.strictEqual(input.sequence, 0xffffffff);
59
62
  }
60
63
  });
61
64
  });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdFByb2Nlc3NQcmVidWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wb3N0UHJvY2Vzc1ByZWJ1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0JBQWdCO0FBRWhCLGdEQUFxRDtBQUNyRCxzRUFBd0Q7QUFFeEQsaUNBQXNFO0FBRXRFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyw2QkFBaUIsQ0FBQztBQUV4QyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7SUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpDLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLO1FBQzNELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sYUFBYSxHQUFHLElBQUEsdUJBQWdCLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTNELHdEQUF3RDtRQUN4RCxNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFhLEVBQ3hCLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFDekQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ2xELE1BQU0sRUFDTixVQUFVLEVBQ1YsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FDdEMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxFLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJHLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVwQyxxREFBcUQ7UUFDckQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3Nob3VsZCc7XG5cbmltcG9ydCB7IGZpeGVkU2NyaXB0V2FsbGV0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5pbXBvcnQgKiBhcyB0ZXN0dXRpbHMgZnJvbSAnQGJpdGdvL3dhc20tdXR4by90ZXN0dXRpbHMnO1xuXG5pbXBvcnQgeyBjb25zdHJ1Y3RQc2J0LCBnZXRXYWxsZXRBZGRyZXNzLCBnZXRVdHhvQ29pbiB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IHsgQml0R29Qc2J0IH0gPSBmaXhlZFNjcmlwdFdhbGxldDtcblxuZGVzY3JpYmUoJ1Bvc3QgQnVpbGQgVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbiA9IGdldFV0eG9Db2luKCd0YnRjJyk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGxvY2t0aW1lIG9uIHBvc3RQcm9jZXNzUHJlYnVpbGQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2FsbGV0S2V5cyA9IHRlc3R1dGlscy5nZXREZWZhdWx0V2FsbGV0S2V5cygpO1xuICAgIGNvbnN0IHdhbGxldEFkZHJlc3MgPSBnZXRXYWxsZXRBZGRyZXNzKCd0YnRjJywgd2FsbGV0S2V5cyk7XG5cbiAgICAvLyBDcmVhdGUgYSBQU0JUIHdpdGggbG9ja1RpbWU9MCBhbmQgc2VxdWVuY2U9MHhmZmZmZmZmZlxuICAgIGNvbnN0IHBzYnQgPSBjb25zdHJ1Y3RQc2J0KFxuICAgICAgW3sgc2NyaXB0VHlwZTogJ3Ayd3NoJyBhcyBjb25zdCwgdmFsdWU6IEJpZ0ludCgxMDAwMDApIH1dLFxuICAgICAgW3sgYWRkcmVzczogd2FsbGV0QWRkcmVzcywgdmFsdWU6IEJpZ0ludCg5MDAwMCkgfV0sXG4gICAgICAndGJ0YycsXG4gICAgICB3YWxsZXRLZXlzLFxuICAgICAgeyBsb2NrVGltZTogMCwgc2VxdWVuY2U6IDB4ZmZmZmZmZmYgfVxuICAgICk7XG5cbiAgICBjb25zdCB0eEhleCA9IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICBjb25zdCBibG9ja0hlaWdodCA9IDEwMDtcbiAgICBjb25zdCBwcmVCdWlsZCA9IHsgdHhIZXgsIGJsb2NrSGVpZ2h0IH07XG4gICAgY29uc3QgcG9zdFByb2Nlc3NCdWlsdCA9IGF3YWl0IGNvaW4ucG9zdFByb2Nlc3NQcmVidWlsZChwcmVCdWlsZCk7XG5cbiAgICAvLyBQYXJzZSByZXN1bHQgYXMgUFNCVFxuICAgIGNvbnN0IHJlc3VsdFBzYnQgPSBCaXRHb1BzYnQuZnJvbUJ5dGVzKEJ1ZmZlci5mcm9tKHBvc3RQcm9jZXNzQnVpbHQudHhIZXggYXMgc3RyaW5nLCAnaGV4JyksICd0YnRjJyk7XG5cbiAgICByZXN1bHRQc2J0LmxvY2tUaW1lLnNob3VsZC5lcXVhbCgwKTtcblxuICAgIC8vIENoZWNrIHNlcXVlbmNlcyB2aWEgcGFyc2VUcmFuc2FjdGlvbldpdGhXYWxsZXRLZXlzXG4gICAgY29uc3QgcGFyc2VkID0gcmVzdWx0UHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMod2FsbGV0S2V5cywgeyByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IFtdIH0gfSk7XG4gICAgZm9yIChjb25zdCBpbnB1dCBvZiBwYXJzZWQuaW5wdXRzKSB7XG4gICAgICBpbnB1dC5zZXF1ZW5jZS5zaG91bGQuZXF1YWwoMHhmZmZmZmZmZik7XG4gICAgfVxuICB9KTtcbn0pO1xuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdFByb2Nlc3NQcmVidWlsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9wb3N0UHJvY2Vzc1ByZWJ1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0VBQXdDO0FBRXhDLGdEQUFxRDtBQUNyRCxzRUFBd0Q7QUFFeEQsaUNBQXNFO0FBRXRFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyw2QkFBaUIsQ0FBQztBQUV4QyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7SUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBVyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRWpDLEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxLQUFLO1FBQzNELE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sYUFBYSxHQUFHLElBQUEsdUJBQWdCLEVBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTNELHdEQUF3RDtRQUN4RCxNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFhLEVBQ3hCLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFDekQsQ0FBQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQ2xELE1BQU0sRUFDTixVQUFVLEVBQ1YsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FDdEMsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN4QixNQUFNLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN4QyxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxFLHVCQUF1QjtRQUN2QixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBZSxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXJHLGdCQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU3QyxxREFBcUQ7UUFDckQsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLDhCQUE4QixDQUFDLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxnQkFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgdGVzdHV0aWxzIGZyb20gJ0BiaXRnby93YXNtLXV0eG8vdGVzdHV0aWxzJztcblxuaW1wb3J0IHsgY29uc3RydWN0UHNidCwgZ2V0V2FsbGV0QWRkcmVzcywgZ2V0VXR4b0NvaW4gfSBmcm9tICcuL3V0aWwnO1xuXG5jb25zdCB7IEJpdEdvUHNidCB9ID0gZml4ZWRTY3JpcHRXYWxsZXQ7XG5cbmRlc2NyaWJlKCdQb3N0IEJ1aWxkIFZhbGlkYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGNvaW4gPSBnZXRVdHhvQ29pbigndGJ0YycpO1xuXG4gIGl0KCdzaG91bGQgbm90IG1vZGlmeSBsb2NrdGltZSBvbiBwb3N0UHJvY2Vzc1ByZWJ1aWxkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhbGxldEtleXMgPSB0ZXN0dXRpbHMuZ2V0RGVmYXVsdFdhbGxldEtleXMoKTtcbiAgICBjb25zdCB3YWxsZXRBZGRyZXNzID0gZ2V0V2FsbGV0QWRkcmVzcygndGJ0YycsIHdhbGxldEtleXMpO1xuXG4gICAgLy8gQ3JlYXRlIGEgUFNCVCB3aXRoIGxvY2tUaW1lPTAgYW5kIHNlcXVlbmNlPTB4ZmZmZmZmZmZcbiAgICBjb25zdCBwc2J0ID0gY29uc3RydWN0UHNidChcbiAgICAgIFt7IHNjcmlwdFR5cGU6ICdwMndzaCcgYXMgY29uc3QsIHZhbHVlOiBCaWdJbnQoMTAwMDAwKSB9XSxcbiAgICAgIFt7IGFkZHJlc3M6IHdhbGxldEFkZHJlc3MsIHZhbHVlOiBCaWdJbnQoOTAwMDApIH1dLFxuICAgICAgJ3RidGMnLFxuICAgICAgd2FsbGV0S2V5cyxcbiAgICAgIHsgbG9ja1RpbWU6IDAsIHNlcXVlbmNlOiAweGZmZmZmZmZmIH1cbiAgICApO1xuXG4gICAgY29uc3QgdHhIZXggPSBCdWZmZXIuZnJvbShwc2J0LnNlcmlhbGl6ZSgpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3QgYmxvY2tIZWlnaHQgPSAxMDA7XG4gICAgY29uc3QgcHJlQnVpbGQgPSB7IHR4SGV4LCBibG9ja0hlaWdodCB9O1xuICAgIGNvbnN0IHBvc3RQcm9jZXNzQnVpbHQgPSBhd2FpdCBjb2luLnBvc3RQcm9jZXNzUHJlYnVpbGQocHJlQnVpbGQpO1xuXG4gICAgLy8gUGFyc2UgcmVzdWx0IGFzIFBTQlRcbiAgICBjb25zdCByZXN1bHRQc2J0ID0gQml0R29Qc2J0LmZyb21CeXRlcyhCdWZmZXIuZnJvbShwb3N0UHJvY2Vzc0J1aWx0LnR4SGV4IGFzIHN0cmluZywgJ2hleCcpLCAndGJ0YycpO1xuXG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdFBzYnQubG9ja1RpbWUoKSwgMCk7XG5cbiAgICAvLyBDaGVjayBzZXF1ZW5jZXMgdmlhIHBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5c1xuICAgIGNvbnN0IHBhcnNlZCA9IHJlc3VsdFBzYnQucGFyc2VUcmFuc2FjdGlvbldpdGhXYWxsZXRLZXlzKHdhbGxldEtleXMsIHsgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiBbXSB9IH0pO1xuICAgIGZvciAoY29uc3QgaW5wdXQgb2YgcGFyc2VkLmlucHV0cykge1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlucHV0LnNlcXVlbmNlLCAweGZmZmZmZmZmKTtcbiAgICB9XG4gIH0pO1xufSk7XG4iXX0=
@@ -206,12 +206,10 @@ function run(coin, inputScripts, txFormat) {
206
206
  addressInfo,
207
207
  nockOutputAddresses: txFormat !== 'psbt',
208
208
  });
209
- await wallet
210
- .prebuildAndSignTransaction({
209
+ await assert.rejects(wallet.prebuildAndSignTransaction({
211
210
  recipients: [recipient],
212
211
  walletPassphrase: Math.random().toString(),
213
- })
214
- .should.be.rejectedWith('unable to decrypt keychain with the given wallet passphrase');
212
+ }), { message: 'unable to decrypt keychain with the given wallet passphrase' });
215
213
  });
216
214
  });
217
215
  [true, false].forEach((selfSend) => {
@@ -248,4 +246,4 @@ function run(coin, inputScripts, txFormat) {
248
246
  (0, util_1.getMinUtxoCoins)().forEach((coin) => {
249
247
  run(coin, (0, util_1.getScriptTypes)(coin, 'psbt'), 'psbt');
250
248
  });
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyx5REFBMkM7QUFFM0MsNkJBQThCO0FBQzlCLDhDQUE0RTtBQUM1RSw4Q0FBMEM7QUFJMUMsaUNBU2dCO0FBWWhCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFPckQsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQTBCLEVBQUUsT0FBd0I7SUFDM0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLHVIQUF1SDtJQUN2SCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7UUFDdEYsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQy9GLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDckMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBRUQsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUEsMkJBQW9CLEdBQUUsQ0FBQztBQUM5QyxNQUFNLGtCQUFrQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO0lBQ3JFLE9BQU87UUFDTCxFQUFFLEVBQUUsSUFBQSxrQkFBTyxFQUFDLHNCQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUN4RCxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUNoQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMzQyxZQUFZLEVBQUUsSUFBQSxzQkFBZSxFQUFDLGdCQUFnQixFQUFFLHNCQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEUsZUFBZSxFQUFFO1lBQ2Y7Z0JBQ0UsV0FBVyxFQUFFLEtBQUs7Z0JBQ2xCLGlCQUFpQixFQUFFO29CQUNqQixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsR0FBRyxFQUFFLFFBQVE7b0JBQ2IsU0FBUyxFQUFFLFlBQVk7aUJBQ3hCO2dCQUNELE9BQU8sRUFBRSxLQUFLO2dCQUNkLFlBQVksRUFBRSxJQUFBLHNCQUFlLEVBQUMsd0JBQXdCLEVBQUUsc0JBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqRjtTQUNGO1FBQ0QsWUFBWSxFQUFFLEVBQUU7S0FDakIsQ0FBQztBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxHQUFHLENBQUMsSUFBc0IsRUFBRSxZQUEwQixFQUFFLFFBQWtCO0lBQ2pGLFNBQVMsa0JBQWtCLENBQUMsTUFBZSxFQUFFLE9BQWdEO1FBQzNGLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUN6QyxNQUFrQyxFQUNsQyxPQUFPLEVBQ1AsSUFBSSxDQUFDLE9BQU8sRUFDWixjQUFjLEVBQ2QsVUFBVSxDQUNYLENBQUM7UUFDRixPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsU0FBUyxXQUFXLENBQUMsTUFZcEI7UUFDQyxNQUFNLEtBQUssR0FBaUIsRUFBRSxDQUFDO1FBRS9CLG1EQUFtRDtRQUNuRCxNQUFNLGVBQWUsR0FBRztZQUN0QixVQUFVLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN6QixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7WUFDbkMsaUJBQWlCLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO1NBQ3hFLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUNoRCxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNmLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQ3pGLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FDOUQsQ0FBQztRQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLHNCQUFzQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbEgsOEZBQThGO1FBQzlGLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDMUMsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FDNUcsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsOEJBQThCO1FBQzlCLElBQUksTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDL0IsS0FBSyxDQUFDLElBQUksQ0FDUixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDZixHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsWUFBWSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNwRyxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FDbEMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNmLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDO2lCQUN2RyxLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNWLE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxPQUFPLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPO3dCQUNqQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO3dCQUN0QyxXQUFXLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNO3dCQUNwQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUscUNBQXFDO3FCQUM3RztvQkFDRCx5REFBeUQ7b0JBQ3pEO3dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU87d0JBQ2pDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7d0JBQ3RDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU07d0JBQ3BDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLGtCQUFrQjtxQkFDL0M7aUJBQ0Y7YUFDRixDQUFDLENBQ0wsQ0FBQztRQUNKLENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyRCxLQUFLLENBQUMsSUFBSSxDQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNmLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2hHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEMsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLDZCQUE2QixRQUFRLGlCQUFpQixZQUFZLENBQUMsSUFBSSxDQUNuRyxHQUFHLENBQ0osRUFBRSxFQUFFO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksRUFBRTtZQUNqQyxZQUFZLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFO1lBQzFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekMsRUFBRSxFQUFFLFVBQVU7U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxpQkFBTSxDQUFDLFlBQVksQ0FBQyxtQkFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzdELElBQUksUUFBZ0MsQ0FBQztRQUNyQyxJQUFJLFNBQThDLENBQUM7UUFDbkQsSUFBSSxXQUFnQyxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUxQixNQUFNLENBQUMsS0FBSztZQUNWLGtDQUFrQztZQUNsQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDckUsTUFBTSxnQkFBZ0IsR0FBMkMsTUFBTSxDQUFDO1lBQ3hFLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN6RSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVuRyxTQUFTLEdBQUc7Z0JBQ1YsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLE1BQU0sRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFO2FBQ2hDLENBQUM7WUFDRixXQUFXLEdBQUc7Z0JBQ1osT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLEtBQUssRUFBRSxXQUFXO2dCQUNsQixLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDckIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7Z0JBQ25CLFlBQVksRUFBRSxFQUFFO2FBQ2pCLENBQUM7WUFFRixRQUFRLEdBQUcsa0JBQWtCLENBQzNCLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ2hFLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQ3hELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDcEMsRUFBRSxDQUFDLHVCQUF1QixXQUFXLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxLQUFLO2dCQUN2Rix5REFBeUQ7Z0JBQ3pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDO29CQUN4QixLQUFLO29CQUNMLE1BQU07b0JBQ04sWUFBWSxFQUFFLGtCQUFrQjtvQkFDaEMsUUFBUTtvQkFDUixTQUFTO29CQUNULFdBQVc7b0JBQ1gsbUJBQW1CLEVBQUUsUUFBUSxLQUFLLE1BQU07b0JBQ3hDLFFBQVEsRUFBRSxlQUFlO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsbURBQW1EO2dCQUNuRCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLDBCQUEwQixDQUFDO29CQUNuRCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ3ZCLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtpQkFDNUUsQ0FBQyxDQUE4QixDQUFDO2dCQUVqQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBRWxELGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMsbURBQW1ELEVBQUUsS0FBSztnQkFDM0QsV0FBVyxDQUFDO29CQUNWLEtBQUs7b0JBQ0wsTUFBTTtvQkFDTixZQUFZLEVBQUUsa0JBQWtCO29CQUNoQyxRQUFRO29CQUNSLFNBQVM7b0JBQ1QsV0FBVztvQkFDWCxtQkFBbUIsRUFBRSxRQUFRLEtBQUssTUFBTTtpQkFDekMsQ0FBQyxDQUFDO2dCQUVILE1BQU0sTUFBTTtxQkFDVCwwQkFBMEIsQ0FBQztvQkFDMUIsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO29CQUN2QixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO2lCQUMzQyxDQUFDO3FCQUNELE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLDZEQUE2RCxDQUFDLENBQUM7WUFDM0YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2pDLEVBQUUsQ0FBQyxvRkFBb0YsUUFBUSxFQUFFLEVBQUUsS0FBSztnQkFDdEcsTUFBTSxRQUFRLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUNwQyxhQUFhLEdBQUcsR0FBRyxDQUFDO2dCQUN0Qix5REFBeUQ7Z0JBQ3pELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDO29CQUN4QixLQUFLO29CQUNMLE1BQU07b0JBQ04sWUFBWSxFQUFFLGtCQUFrQjtvQkFDaEMsUUFBUTtvQkFDUixTQUFTO29CQUNULFdBQVc7b0JBQ1gsUUFBUTtvQkFDUixhQUFhO29CQUNiLFFBQVE7b0JBQ1IsbUJBQW1CLEVBQUUsUUFBUSxLQUFLLE1BQU07b0JBQ3hDLFFBQVEsRUFBRSxlQUFlO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsbURBQW1EO2dCQUNuRCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLDBCQUEwQixDQUFDO29CQUNuRCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ3ZCLGdCQUFnQjtvQkFDaEIsUUFBUTtvQkFDUixhQUFhO2lCQUNkLENBQUMsQ0FBOEIsQ0FBQztnQkFFakMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVsRCxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUEscUJBQWMsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgdGVzdHV0aWwgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBjb21tb24sIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb24sIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7XG4gIGRlZmF1bHRCaXRHbyxcbiAgZW5jcnlwdEtleWNoYWluLFxuICBnZXREZWZhdWx0V2FsbGV0S2V5cyxcbiAgZ2V0TWluVXR4b0NvaW5zLFxuICBnZXRVdHhvV2FsbGV0LFxuICBrZXljaGFpbnNCYXNlNTgsXG4gIGdldFNjcmlwdFR5cGVzLFxuICBUeEZvcm1hdCxcbn0gZnJvbSAnLi91dGlsJztcblxudHlwZSBTY3JpcHRUeXBlID0gdGVzdHV0aWwuSW5wdXRTY3JpcHRUeXBlO1xuXG50eXBlIEtleURvYyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBhbnk7XG59O1xuXG5jb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2dhYmFnb29sJztcbmNvbnN0IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA9ICdqdXN0IHRoZSBnYWJhZ29vbCc7XG5cbnR5cGUgSW5wdXQgPSB7XG4gIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGU7XG4gIHZhbHVlOiBiaWdpbnQ7XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRTaWduYWJsZShwc2J0SGV4OiBzdHJpbmcsIGlucHV0U2NyaXB0czogU2NyaXB0VHlwZVtdLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiB2b2lkIHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21IZXgocHNidEhleCwgbmV0d29yayk7XG4gIC8vIE1ha2Ugc3VyZSB0aGF0IHlvdSBjYW4gc2lnbiB3aXRoIGJpdGdvIGtleSBhbmQgZXh0cmFjdCB0aGUgdHJhbnNhY3Rpb25cbiAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciBwMnNoUDJwayAoc2luZ2xlLXNpZyByZXBsYXkgcHJvdGVjdGlvbikgYW5kIHRhcHJvb3RLZXlQYXRoU3BlbmQgKHJlcXVpcmVzIG11c2lnMiBub25jZSBleGNoYW5nZSlcbiAgaWYgKGlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJzaFAycGsnKSB8fCBpbnB1dFNjcmlwdHMuaW5jbHVkZXMoJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBrZXkgPSBpbnB1dFNjcmlwdHMuaW5jbHVkZXMoJ3AydHJNdXNpZzInKSA/IHJvb3RXYWxsZXRLZXlzLmJhY2t1cCA6IHJvb3RXYWxsZXRLZXlzLmJpdGdvO1xuICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXksIHsgZGV0ZXJtaW5pc3RpYzogdHJ1ZSB9KTtcbiAgcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICBwc2J0LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gIGNvbnN0IHR4ID0gcHNidC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgYXNzZXJ0Lm9rKHR4KTtcbn1cblxuLy8gQnVpbGQgdGhlIGtleSBvYmplY3RzXG5jb25zdCByb290V2FsbGV0S2V5cyA9IGdldERlZmF1bHRXYWxsZXRLZXlzKCk7XG5jb25zdCBrZXlEb2N1bWVudE9iamVjdHMgPSByb290V2FsbGV0S2V5cy50cmlwbGUubWFwKChiaXAzMiwga2V5SWR4KSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGdldFNlZWQoa2V5Y2hhaW5zQmFzZTU4W2tleUlkeF0ucHViKS50b1N0cmluZygnaGV4JyksXG4gICAgcHViOiBiaXAzMi5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgc291cmNlOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ11ba2V5SWR4XSxcbiAgICBlbmNyeXB0ZWRQcnY6IGVuY3J5cHRLZXljaGFpbih3YWxsZXRQYXNzcGhyYXNlLCBrZXljaGFpbnNCYXNlNThba2V5SWR4XSksXG4gICAgd2ViYXV0aG5EZXZpY2VzOiBbXG4gICAgICB7XG4gICAgICAgIG90cERldmljZUlkOiAnMTIzJyxcbiAgICAgICAgYXV0aGVudGljYXRvckluZm86IHtcbiAgICAgICAgICBjcmVkSUQ6ICdjcmVkSUQnLFxuICAgICAgICAgIGZtdDogJ3BhY2tlZCcsXG4gICAgICAgICAgcHVibGljS2V5OiAnc29tZSB2YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICAgIHByZlNhbHQ6ICc0NTYnLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6IGVuY3J5cHRLZXljaGFpbih3ZWJhdXRobldhbGxldFBhc3NQaHJhc2UsIGtleWNoYWluc0Jhc2U1OFtrZXlJZHhdKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2luU3BlY2lmaWM6IHt9LFxuICB9O1xufSk7XG5cbmZ1bmN0aW9uIHJ1bihjb2luOiBBYnN0cmFjdFV0eG9Db2luLCBpbnB1dFNjcmlwdHM6IFNjcmlwdFR5cGVbXSwgdHhGb3JtYXQ6IFR4Rm9ybWF0KTogdm9pZCB7XG4gIGZ1bmN0aW9uIGNyZWF0ZVByZWJ1aWxkUHNidChpbnB1dHM6IElucHV0W10sIG91dHB1dHM6IHsgc2NyaXB0VHlwZTogJ3Ayc2gnOyB2YWx1ZTogYmlnaW50IH1bXSkge1xuICAgIGNvbnN0IHBzYnQgPSB1dHhvbGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICBpbnB1dHMgYXMgdXR4b2xpYi50ZXN0dXRpbC5JbnB1dFtdLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNvaW4ubmV0d29yayxcbiAgICAgIHJvb3RXYWxsZXRLZXlzLFxuICAgICAgJ3Vuc2lnbmVkJ1xuICAgICk7XG4gICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCByb290V2FsbGV0S2V5cyk7XG4gICAgcmV0dXJuIHBzYnQ7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2NrcyhwYXJhbXM6IHtcbiAgICBiZ1VybDogc3RyaW5nO1xuICAgIHdhbGxldDogV2FsbGV0O1xuICAgIGtleURvY3VtZW50czogS2V5RG9jW107XG4gICAgcHJlYnVpbGQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgcmVjaXBpZW50OiB7IGFkZHJlc3M6IHN0cmluZzsgYW1vdW50OiBzdHJpbmcgfTtcbiAgICBhZGRyZXNzSW5mbzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICByYmZUeElkcz86IHN0cmluZ1tdO1xuICAgIGZlZU11bHRpcGxpZXI/OiBudW1iZXI7XG4gICAgc2VsZlNlbmQ/OiBib29sZWFuO1xuICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM/OiBib29sZWFuO1xuICAgIHR4Rm9ybWF0Pzogc3RyaW5nO1xuICB9KTogbm9jay5TY29wZVtdIHtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICAvLyBOb2NrIHRoZSBwcmVidWlsZCByb3V0ZSAoL3R4L2J1aWxkLCBibG9ja2hlaWdodClcbiAgICBjb25zdCBleHBlY3RlZF9wYXJhbXMgPSB7XG4gICAgICByZWNpcGllbnRzOiBbcGFyYW1zLnJlY2lwaWVudF0sXG4gICAgICByYmZUeElkczogcGFyYW1zLnJiZlR4SWRzLFxuICAgICAgZmVlTXVsdGlwbGllcjogcGFyYW1zLmZlZU11bHRpcGxpZXIsXG4gICAgICBjaGFuZ2VBZGRyZXNzVHlwZTogWydwMnRyTXVzaWcyJywgJ3Ayd3NoJywgJ3Ayc2hQMndzaCcsICdwMnNoJywgJ3AydHInXSxcbiAgICB9O1xuICAgIGlmIChwYXJhbXMudHhGb3JtYXQpIHtcbiAgICAgIGV4cGVjdGVkX3BhcmFtc1sndHhGb3JtYXQnXSA9IHBhcmFtcy50eEZvcm1hdDtcbiAgICB9XG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2socGFyYW1zLmJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC9idWlsZGAsIGV4cGVjdGVkX3BhcmFtcylcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogcGFyYW1zLnByZWJ1aWxkLnRvSGV4KCksIHR4SW5mbzoge30gfSlcbiAgICApO1xuICAgIG5vY2tzLnB1c2gobm9jayhwYXJhbXMuYmdVcmwpLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vcHVibGljL2Jsb2NrL2xhdGVzdGApLnJlcGx5KDIwMCwgeyBoZWlnaHQ6IDEwMDAgfSkpO1xuXG4gICAgLy8gbm9jayB0aGUga2V5Y2hhaW4gZmV0Y2ggLSAzIHRpbWVzIChwcmVidWlsZEFuZFNpZ24sIHZlcmlmeVRyYW5zYWN0aW9uLCBhbmQgc2lnblRyYW5zYWN0aW9uKVxuICAgIHBhcmFtcy5rZXlEb2N1bWVudHMuZm9yRWFjaCgoa2V5RG9jdW1lbnQpID0+IHtcbiAgICAgIG5vY2tzLnB1c2goXG4gICAgICAgIG5vY2socGFyYW1zLmJnVXJsKS5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L2tleS8ke2tleURvY3VtZW50LmlkfWApLnRpbWVzKDMpLnJlcGx5KDIwMCwga2V5RG9jdW1lbnQpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gbm9jayB0aGUgYWRkcmVzcyBpbmZvIGZldGNoXG4gICAgaWYgKHBhcmFtcy5ub2NrT3V0cHV0QWRkcmVzc2VzKSB7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L2FkZHJlc3MvJHtwYXJhbXMuYWRkcmVzc0luZm8uYWRkcmVzc31gKVxuICAgICAgICAgIC5yZXBseSgyMDAsIHBhcmFtcy5hZGRyZXNzSW5mbylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5yYmZUeElkcykge1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC8ke3BhcmFtcy5yYmZUeElkc1swXX0/aW5jbHVkZVJiZj10cnVlYClcbiAgICAgICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwYXJhbXMucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsdWU6IE51bWJlcihwYXJhbXMucmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6IHBhcmFtcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgICAgICAgICAgIHdhbGxldDogcGFyYW1zLnNlbGZTZW5kID8gcGFyYW1zLndhbGxldC5pZCgpIDogJ3NvbWUtb3RoZXItd2FsbGV0LWlkJywgLy8gZXh0ZXJuYWwgb3V0cHV0IGlmIG5vdCBhIHNlbGYgc2VuZFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyBEdW1teSBjaGFuZ2Ugb3V0cHV0IHRvIHRlc3QgdHJhbnNmZXIgZW50cmllcyBmaWx0ZXJpbmdcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogTnVtYmVyKHBhcmFtcy5yZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogcGFyYW1zLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICAgICAgd2FsbGV0OiBwYXJhbXMud2FsbGV0LmlkKCksIC8vIGludGVybmFsIG91dHB1dFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBub2NrIHRoZSBkZXRlcm1pbmlzdGljIG5vbmNlIHJlc3BvbnNlXG4gICAgaWYgKGlucHV0U2NyaXB0cy5pbmNsdWRlcygndGFwcm9vdEtleVBhdGhTcGVuZCcpKSB7XG4gICAgICBjb25zdCBwc2J0ID0gcGFyYW1zLnByZWJ1aWxkLmNsb25lKCk7XG4gICAgICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXMudXNlcik7XG4gICAgICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXMuYml0Z28pO1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3BhcmFtcy53YWxsZXQuaWQoKX0vdHgvc2lnbnBzYnRgLCAoYm9keSkgPT4gYm9keS5wc2J0KVxuICAgICAgICAgIC5yZXBseSgyMDAsIHsgcHNidDogcHNidC50b0hleCgpIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2NrcztcbiAgfVxuXG4gIGRlc2NyaWJlKGAke2NvaW4uZ2V0RnVsbE5hbWUoKX0tcHJlYnVpbGRBbmRTaWduLXR4Rm9ybWF0PSR7dHhGb3JtYXR9LWlucHV0U2NyaXB0cz0ke2lucHV0U2NyaXB0cy5qb2luKFxuICAgICcsJ1xuICApfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXQgPSBnZXRVdHhvV2FsbGV0KGNvaW4sIHtcbiAgICAgIGNvaW5TcGVjaWZpYzogeyBhZGRyZXNzVmVyc2lvbjogJ2Jhc2U1OCcgfSxcbiAgICAgIGtleXM6IGtleURvY3VtZW50T2JqZWN0cy5tYXAoKGspID0+IGsuaWQpLFxuICAgICAgaWQ6ICd3YWxsZXRJZCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbZGVmYXVsdEJpdEdvLmdldEVudigpXS51cmk7XG4gICAgbGV0IHByZWJ1aWxkOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuICAgIGxldCByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xuICAgIGxldCBhZGRyZXNzSW5mbzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdCBmZWUgPSBCaWdJbnQoMTAwMDApO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE1ha2Ugb3V0cHV0IGFkZHJlc3MgaW5mb3JtYXRpb25cbiAgICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IEJpZ0ludChpbnB1dFNjcmlwdHMubGVuZ3RoKSAqIEJpZ0ludCgxZTgpIC0gZmVlO1xuICAgICAgY29uc3Qgb3V0cHV0U2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUgPSAncDJzaCc7XG4gICAgICBjb25zdCBvdXRwdXRDaGFpbiA9IHV0eG9saWIuYml0Z28uZ2V0RXh0ZXJuYWxDaGFpbkNvZGUob3V0cHV0U2NyaXB0VHlwZSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzID0gdXR4b2xpYi5iaXRnby5nZXRXYWxsZXRBZGRyZXNzKHJvb3RXYWxsZXRLZXlzLCBvdXRwdXRDaGFpbiwgMCwgY29pbi5uZXR3b3JrKTtcblxuICAgICAgcmVjaXBpZW50ID0ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXRBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudC50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICAgIGFkZHJlc3NJbmZvID0ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXRBZGRyZXNzLFxuICAgICAgICBjaGFpbjogb3V0cHV0Q2hhaW4sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICAgIHdhbGxldDogd2FsbGV0LmlkKCksXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge30sXG4gICAgICB9O1xuXG4gICAgICBwcmVidWlsZCA9IGNyZWF0ZVByZWJ1aWxkUHNidChcbiAgICAgICAgaW5wdXRTY3JpcHRzLm1hcCgocykgPT4gKHsgc2NyaXB0VHlwZTogcywgdmFsdWU6IEJpZ0ludCgxZTgpIH0pKSxcbiAgICAgICAgW3sgc2NyaXB0VHlwZTogb3V0cHV0U2NyaXB0VHlwZSwgdmFsdWU6IG91dHB1dEFtb3VudCB9XVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChub2NrLmNsZWFuQWxsKTtcblxuICAgIFt0cnVlLCBmYWxzZV0uZm9yRWFjaCgodXNlV2ViYXV0aG4pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgc3VjY2VlZCB3aXRoICR7dXNlV2ViYXV0aG4gPyAnd2ViYXV0aG4gZW5jcnlwdGVkUHJ2JyA6ICdlbmNyeXB0ZWRQcnYnfWAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyB3YWxsZXQvY29pbiBjb21iaW5hdGlvbiBkZWZhdWx0cyB0byBwc2J0XG4gICAgICAgIGNvbnN0IGRlZmF1bHRUeEZvcm1hdCA9IGNvaW4uZ2V0RGVmYXVsdFR4Rm9ybWF0KHdhbGxldCk7XG4gICAgICAgIGNvbnN0IG5vY2tzID0gY3JlYXRlTm9ja3Moe1xuICAgICAgICAgIGJnVXJsLFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICBrZXlEb2N1bWVudHM6IGtleURvY3VtZW50T2JqZWN0cyxcbiAgICAgICAgICBwcmVidWlsZCxcbiAgICAgICAgICByZWNpcGllbnQsXG4gICAgICAgICAgYWRkcmVzc0luZm8sXG4gICAgICAgICAgbm9ja091dHB1dEFkZHJlc3NlczogdHhGb3JtYXQgIT09ICdwc2J0JyxcbiAgICAgICAgICB0eEZvcm1hdDogZGVmYXVsdFR4Rm9ybWF0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBjYWxsIHByZWJ1aWxkIGFuZCBzaWduLCBub2NrcyBzaG91bGQgYmUgY29uc3VtZWRcbiAgICAgICAgY29uc3QgcmVzID0gKGF3YWl0IHdhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdXNlV2ViYXV0aG4gPyB3ZWJhdXRobldhbGxldFBhc3NQaHJhc2UgOiB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSkgYXMgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbjtcblxuICAgICAgICBub2Nrcy5mb3JFYWNoKChub2NrKSA9PiBhc3NlcnQub2sobm9jay5pc0RvbmUoKSkpO1xuXG4gICAgICAgIGFzc2VydFNpZ25hYmxlKHJlcy50eEhleCwgaW5wdXRTY3JpcHRzLCBjb2luLm5ldHdvcmspO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCBpZiB0aGUgd2FsbGV0IHBhc3NwaHJhc2UgaXMgaW5jb3JyZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICBub2NrT3V0cHV0QWRkcmVzc2VzOiB0eEZvcm1hdCAhPT0gJ3BzYnQnLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCB3YWxsZXRcbiAgICAgICAgICAucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgndW5hYmxlIHRvIGRlY3J5cHQga2V5Y2hhaW4gd2l0aCB0aGUgZ2l2ZW4gd2FsbGV0IHBhc3NwaHJhc2UnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgW3RydWUsIGZhbHNlXS5mb3JFYWNoKChzZWxmU2VuZCkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBiZSBhYmxlIHRvIGJ1aWxkLCBzaWduLCAmIHZlcmlmeSBhIHJlcGxhY2VtZW50IHRyYW5zYWN0aW9uIHdpdGggc2VsZlNlbmQ6ICR7c2VsZlNlbmR9YCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByYmZUeElkcyA9IFsndHgtdG8tYmUtcmVwbGFjZWQnXSxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyID0gMS41O1xuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhbGxldC9jb2luIGNvbWJpbmF0aW9uIGRlZmF1bHRzIHRvIHBzYnRcbiAgICAgICAgY29uc3QgZGVmYXVsdFR4Rm9ybWF0ID0gY29pbi5nZXREZWZhdWx0VHhGb3JtYXQod2FsbGV0KTtcbiAgICAgICAgY29uc3Qgbm9ja3MgPSBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICByYmZUeElkcyxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyLFxuICAgICAgICAgIHNlbGZTZW5kLFxuICAgICAgICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM6IHR4Rm9ybWF0ICE9PSAncHNidCcsXG4gICAgICAgICAgdHhGb3JtYXQ6IGRlZmF1bHRUeEZvcm1hdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gY2FsbCBwcmVidWlsZCBhbmQgc2lnbiwgbm9ja3Mgc2hvdWxkIGJlIGNvbnN1bWVkXG4gICAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCB3YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtyZWNpcGllbnRdLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgcmJmVHhJZHMsXG4gICAgICAgICAgZmVlTXVsdGlwbGllcixcbiAgICAgICAgfSkpIGFzIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb247XG5cbiAgICAgICAgbm9ja3MuZm9yRWFjaCgobm9jaykgPT4gYXNzZXJ0Lm9rKG5vY2suaXNEb25lKCkpKTtcblxuICAgICAgICBhc3NlcnRTaWduYWJsZShyZXMudHhIZXgsIGlucHV0U2NyaXB0cywgY29pbi5uZXR3b3JrKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZ2V0TWluVXR4b0NvaW5zKCkuZm9yRWFjaCgoY29pbikgPT4ge1xuICBydW4oY29pbiwgZ2V0U2NyaXB0VHlwZXMoY29pbiwgJ3BzYnQnKSwgJ3BzYnQnKTtcbn0pO1xuIl19
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlYnVpbGRBbmRTaWduLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3ByZWJ1aWxkQW5kU2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyx5REFBMkM7QUFFM0MsNkJBQThCO0FBQzlCLDhDQUE0RTtBQUM1RSw4Q0FBMEM7QUFJMUMsaUNBU2dCO0FBWWhCLE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLE1BQU0sd0JBQXdCLEdBQUcsbUJBQW1CLENBQUM7QUFPckQsU0FBUyxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQTBCLEVBQUUsT0FBd0I7SUFDM0YsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QseUVBQXlFO0lBQ3pFLHVIQUF1SDtJQUN2SCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7UUFDdEYsT0FBTztJQUNULENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO0lBQy9GLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDckMsTUFBTSxDQUFDLEVBQUUsQ0FB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Q0FBQztBQUNMLENBQUM7QUFFRCxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNqQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUEscUJBQWMsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgdGVzdHV0aWwgfSBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBjb21tb24sIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb24sIFdhbGxldCB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiB9IGZyb20gJy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7XG4gIGRlZmF1bHRCaXRHbyxcbiAgZW5jcnlwdEtleWNoYWluLFxuICBnZXREZWZhdWx0V2FsbGV0S2V5cyxcbiAgZ2V0TWluVXR4b0NvaW5zLFxuICBnZXRVdHhvV2FsbGV0LFxuICBrZXljaGFpbnNCYXNlNTgsXG4gIGdldFNjcmlwdFR5cGVzLFxuICBUeEZvcm1hdCxcbn0gZnJvbSAnLi91dGlsJztcblxudHlwZSBTY3JpcHRUeXBlID0gdGVzdHV0aWwuSW5wdXRTY3JpcHRUeXBlO1xuXG50eXBlIEtleURvYyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcHViOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBlbmNyeXB0ZWRQcnY6IHN0cmluZztcbiAgY29pblNwZWNpZmljOiBhbnk7XG59O1xuXG5jb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ2dhYmFnb29sJztcbmNvbnN0IHdlYmF1dGhuV2FsbGV0UGFzc1BocmFzZSA9ICdqdXN0IHRoZSBnYWJhZ29vbCc7XG5cbnR5cGUgSW5wdXQgPSB7XG4gIHNjcmlwdFR5cGU6IFNjcmlwdFR5cGU7XG4gIHZhbHVlOiBiaWdpbnQ7XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRTaWduYWJsZShwc2J0SGV4OiBzdHJpbmcsIGlucHV0U2NyaXB0czogU2NyaXB0VHlwZVtdLCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiB2b2lkIHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uY3JlYXRlUHNidEZyb21IZXgocHNidEhleCwgbmV0d29yayk7XG4gIC8vIE1ha2Ugc3VyZSB0aGF0IHlvdSBjYW4gc2lnbiB3aXRoIGJpdGdvIGtleSBhbmQgZXh0cmFjdCB0aGUgdHJhbnNhY3Rpb25cbiAgLy8gU2tpcCB2YWxpZGF0aW9uIGZvciBwMnNoUDJwayAoc2luZ2xlLXNpZyByZXBsYXkgcHJvdGVjdGlvbikgYW5kIHRhcHJvb3RLZXlQYXRoU3BlbmQgKHJlcXVpcmVzIG11c2lnMiBub25jZSBleGNoYW5nZSlcbiAgaWYgKGlucHV0U2NyaXB0cy5pbmNsdWRlcygncDJzaFAycGsnKSB8fCBpbnB1dFNjcmlwdHMuaW5jbHVkZXMoJ3RhcHJvb3RLZXlQYXRoU3BlbmQnKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBrZXkgPSBpbnB1dFNjcmlwdHMuaW5jbHVkZXMoJ3AydHJNdXNpZzInKSA/IHJvb3RXYWxsZXRLZXlzLmJhY2t1cCA6IHJvb3RXYWxsZXRLZXlzLmJpdGdvO1xuICBwc2J0LnNpZ25BbGxJbnB1dHNIRChrZXksIHsgZGV0ZXJtaW5pc3RpYzogdHJ1ZSB9KTtcbiAgcHNidC52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICBwc2J0LmZpbmFsaXplQWxsSW5wdXRzKCk7XG4gIGNvbnN0IHR4ID0gcHNidC5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbiAgYXNzZXJ0Lm9rKHR4KTtcbn1cblxuLy8gQnVpbGQgdGhlIGtleSBvYmplY3RzXG5jb25zdCByb290V2FsbGV0S2V5cyA9IGdldERlZmF1bHRXYWxsZXRLZXlzKCk7XG5jb25zdCBrZXlEb2N1bWVudE9iamVjdHMgPSByb290V2FsbGV0S2V5cy50cmlwbGUubWFwKChiaXAzMiwga2V5SWR4KSA9PiB7XG4gIHJldHVybiB7XG4gICAgaWQ6IGdldFNlZWQoa2V5Y2hhaW5zQmFzZTU4W2tleUlkeF0ucHViKS50b1N0cmluZygnaGV4JyksXG4gICAgcHViOiBiaXAzMi5uZXV0ZXJlZCgpLnRvQmFzZTU4KCksXG4gICAgc291cmNlOiBbJ3VzZXInLCAnYmFja3VwJywgJ2JpdGdvJ11ba2V5SWR4XSxcbiAgICBlbmNyeXB0ZWRQcnY6IGVuY3J5cHRLZXljaGFpbih3YWxsZXRQYXNzcGhyYXNlLCBrZXljaGFpbnNCYXNlNThba2V5SWR4XSksXG4gICAgd2ViYXV0aG5EZXZpY2VzOiBbXG4gICAgICB7XG4gICAgICAgIG90cERldmljZUlkOiAnMTIzJyxcbiAgICAgICAgYXV0aGVudGljYXRvckluZm86IHtcbiAgICAgICAgICBjcmVkSUQ6ICdjcmVkSUQnLFxuICAgICAgICAgIGZtdDogJ3BhY2tlZCcsXG4gICAgICAgICAgcHVibGljS2V5OiAnc29tZSB2YWx1ZScsXG4gICAgICAgIH0sXG4gICAgICAgIHByZlNhbHQ6ICc0NTYnLFxuICAgICAgICBlbmNyeXB0ZWRQcnY6IGVuY3J5cHRLZXljaGFpbih3ZWJhdXRobldhbGxldFBhc3NQaHJhc2UsIGtleWNoYWluc0Jhc2U1OFtrZXlJZHhdKSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBjb2luU3BlY2lmaWM6IHt9LFxuICB9O1xufSk7XG5cbmZ1bmN0aW9uIHJ1bihjb2luOiBBYnN0cmFjdFV0eG9Db2luLCBpbnB1dFNjcmlwdHM6IFNjcmlwdFR5cGVbXSwgdHhGb3JtYXQ6IFR4Rm9ybWF0KTogdm9pZCB7XG4gIGZ1bmN0aW9uIGNyZWF0ZVByZWJ1aWxkUHNidChpbnB1dHM6IElucHV0W10sIG91dHB1dHM6IHsgc2NyaXB0VHlwZTogJ3Ayc2gnOyB2YWx1ZTogYmlnaW50IH1bXSkge1xuICAgIGNvbnN0IHBzYnQgPSB1dHhvbGliLnRlc3R1dGlsLmNvbnN0cnVjdFBzYnQoXG4gICAgICBpbnB1dHMgYXMgdXR4b2xpYi50ZXN0dXRpbC5JbnB1dFtdLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNvaW4ubmV0d29yayxcbiAgICAgIHJvb3RXYWxsZXRLZXlzLFxuICAgICAgJ3Vuc2lnbmVkJ1xuICAgICk7XG4gICAgdXR4b2xpYi5iaXRnby5hZGRYcHVic1RvUHNidChwc2J0LCByb290V2FsbGV0S2V5cyk7XG4gICAgcmV0dXJuIHBzYnQ7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2NrcyhwYXJhbXM6IHtcbiAgICBiZ1VybDogc3RyaW5nO1xuICAgIHdhbGxldDogV2FsbGV0O1xuICAgIGtleURvY3VtZW50czogS2V5RG9jW107XG4gICAgcHJlYnVpbGQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQ7XG4gICAgcmVjaXBpZW50OiB7IGFkZHJlc3M6IHN0cmluZzsgYW1vdW50OiBzdHJpbmcgfTtcbiAgICBhZGRyZXNzSW5mbzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICByYmZUeElkcz86IHN0cmluZ1tdO1xuICAgIGZlZU11bHRpcGxpZXI/OiBudW1iZXI7XG4gICAgc2VsZlNlbmQ/OiBib29sZWFuO1xuICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM/OiBib29sZWFuO1xuICAgIHR4Rm9ybWF0Pzogc3RyaW5nO1xuICB9KTogbm9jay5TY29wZVtdIHtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICAvLyBOb2NrIHRoZSBwcmVidWlsZCByb3V0ZSAoL3R4L2J1aWxkLCBibG9ja2hlaWdodClcbiAgICBjb25zdCBleHBlY3RlZF9wYXJhbXMgPSB7XG4gICAgICByZWNpcGllbnRzOiBbcGFyYW1zLnJlY2lwaWVudF0sXG4gICAgICByYmZUeElkczogcGFyYW1zLnJiZlR4SWRzLFxuICAgICAgZmVlTXVsdGlwbGllcjogcGFyYW1zLmZlZU11bHRpcGxpZXIsXG4gICAgICBjaGFuZ2VBZGRyZXNzVHlwZTogWydwMnRyTXVzaWcyJywgJ3Ayd3NoJywgJ3Ayc2hQMndzaCcsICdwMnNoJywgJ3AydHInXSxcbiAgICB9O1xuICAgIGlmIChwYXJhbXMudHhGb3JtYXQpIHtcbiAgICAgIGV4cGVjdGVkX3BhcmFtc1sndHhGb3JtYXQnXSA9IHBhcmFtcy50eEZvcm1hdDtcbiAgICB9XG4gICAgbm9ja3MucHVzaChcbiAgICAgIG5vY2socGFyYW1zLmJnVXJsKVxuICAgICAgICAucG9zdChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC9idWlsZGAsIGV4cGVjdGVkX3BhcmFtcylcbiAgICAgICAgLnJlcGx5KDIwMCwgeyB0eEhleDogcGFyYW1zLnByZWJ1aWxkLnRvSGV4KCksIHR4SW5mbzoge30gfSlcbiAgICApO1xuICAgIG5vY2tzLnB1c2gobm9jayhwYXJhbXMuYmdVcmwpLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vcHVibGljL2Jsb2NrL2xhdGVzdGApLnJlcGx5KDIwMCwgeyBoZWlnaHQ6IDEwMDAgfSkpO1xuXG4gICAgLy8gbm9jayB0aGUga2V5Y2hhaW4gZmV0Y2ggLSAzIHRpbWVzIChwcmVidWlsZEFuZFNpZ24sIHZlcmlmeVRyYW5zYWN0aW9uLCBhbmQgc2lnblRyYW5zYWN0aW9uKVxuICAgIHBhcmFtcy5rZXlEb2N1bWVudHMuZm9yRWFjaCgoa2V5RG9jdW1lbnQpID0+IHtcbiAgICAgIG5vY2tzLnB1c2goXG4gICAgICAgIG5vY2socGFyYW1zLmJnVXJsKS5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L2tleS8ke2tleURvY3VtZW50LmlkfWApLnRpbWVzKDMpLnJlcGx5KDIwMCwga2V5RG9jdW1lbnQpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgLy8gbm9jayB0aGUgYWRkcmVzcyBpbmZvIGZldGNoXG4gICAgaWYgKHBhcmFtcy5ub2NrT3V0cHV0QWRkcmVzc2VzKSB7XG4gICAgICBub2Nrcy5wdXNoKFxuICAgICAgICBub2NrKHBhcmFtcy5iZ1VybClcbiAgICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtwYXJhbXMud2FsbGV0LmlkKCl9L2FkZHJlc3MvJHtwYXJhbXMuYWRkcmVzc0luZm8uYWRkcmVzc31gKVxuICAgICAgICAgIC5yZXBseSgyMDAsIHBhcmFtcy5hZGRyZXNzSW5mbylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5yYmZUeElkcykge1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cGFyYW1zLndhbGxldC5pZCgpfS90eC8ke3BhcmFtcy5yYmZUeElkc1swXX0/aW5jbHVkZVJiZj10cnVlYClcbiAgICAgICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgICAgICBvdXRwdXRzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBwYXJhbXMucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgdmFsdWU6IE51bWJlcihwYXJhbXMucmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmc6IHBhcmFtcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgICAgICAgICAgIHdhbGxldDogcGFyYW1zLnNlbGZTZW5kID8gcGFyYW1zLndhbGxldC5pZCgpIDogJ3NvbWUtb3RoZXItd2FsbGV0LWlkJywgLy8gZXh0ZXJuYWwgb3V0cHV0IGlmIG5vdCBhIHNlbGYgc2VuZFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAvLyBEdW1teSBjaGFuZ2Ugb3V0cHV0IHRvIHRlc3QgdHJhbnNmZXIgZW50cmllcyBmaWx0ZXJpbmdcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IHBhcmFtcy5yZWNpcGllbnQuYWRkcmVzcyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogTnVtYmVyKHBhcmFtcy5yZWNpcGllbnQuYW1vdW50KSxcbiAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZzogcGFyYW1zLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICAgICAgICAgICAgd2FsbGV0OiBwYXJhbXMud2FsbGV0LmlkKCksIC8vIGludGVybmFsIG91dHB1dFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBub2NrIHRoZSBkZXRlcm1pbmlzdGljIG5vbmNlIHJlc3BvbnNlXG4gICAgaWYgKGlucHV0U2NyaXB0cy5pbmNsdWRlcygndGFwcm9vdEtleVBhdGhTcGVuZCcpKSB7XG4gICAgICBjb25zdCBwc2J0ID0gcGFyYW1zLnByZWJ1aWxkLmNsb25lKCk7XG4gICAgICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXMudXNlcik7XG4gICAgICBwc2J0LnNldEFsbElucHV0c011c2lnMk5vbmNlSEQocm9vdFdhbGxldEtleXMuYml0Z28pO1xuICAgICAgbm9ja3MucHVzaChcbiAgICAgICAgbm9jayhwYXJhbXMuYmdVcmwpXG4gICAgICAgICAgLnBvc3QoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3BhcmFtcy53YWxsZXQuaWQoKX0vdHgvc2lnbnBzYnRgLCAoYm9keSkgPT4gYm9keS5wc2J0KVxuICAgICAgICAgIC5yZXBseSgyMDAsIHsgcHNidDogcHNidC50b0hleCgpIH0pXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBub2NrcztcbiAgfVxuXG4gIGRlc2NyaWJlKGAke2NvaW4uZ2V0RnVsbE5hbWUoKX0tcHJlYnVpbGRBbmRTaWduLXR4Rm9ybWF0PSR7dHhGb3JtYXR9LWlucHV0U2NyaXB0cz0ke2lucHV0U2NyaXB0cy5qb2luKFxuICAgICcsJ1xuICApfWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB3YWxsZXQgPSBnZXRVdHhvV2FsbGV0KGNvaW4sIHtcbiAgICAgIGNvaW5TcGVjaWZpYzogeyBhZGRyZXNzVmVyc2lvbjogJ2Jhc2U1OCcgfSxcbiAgICAgIGtleXM6IGtleURvY3VtZW50T2JqZWN0cy5tYXAoKGspID0+IGsuaWQpLFxuICAgICAgaWQ6ICd3YWxsZXRJZCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCBiZ1VybCA9IGNvbW1vbi5FbnZpcm9ubWVudHNbZGVmYXVsdEJpdEdvLmdldEVudigpXS51cmk7XG4gICAgbGV0IHByZWJ1aWxkOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0O1xuICAgIGxldCByZWNpcGllbnQ6IHsgYWRkcmVzczogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9O1xuICAgIGxldCBhZGRyZXNzSW5mbzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBjb25zdCBmZWUgPSBCaWdJbnQoMTAwMDApO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIE1ha2Ugb3V0cHV0IGFkZHJlc3MgaW5mb3JtYXRpb25cbiAgICAgIGNvbnN0IG91dHB1dEFtb3VudCA9IEJpZ0ludChpbnB1dFNjcmlwdHMubGVuZ3RoKSAqIEJpZ0ludCgxZTgpIC0gZmVlO1xuICAgICAgY29uc3Qgb3V0cHV0U2NyaXB0VHlwZTogdXR4b2xpYi5iaXRnby5vdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUgPSAncDJzaCc7XG4gICAgICBjb25zdCBvdXRwdXRDaGFpbiA9IHV0eG9saWIuYml0Z28uZ2V0RXh0ZXJuYWxDaGFpbkNvZGUob3V0cHV0U2NyaXB0VHlwZSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzID0gdXR4b2xpYi5iaXRnby5nZXRXYWxsZXRBZGRyZXNzKHJvb3RXYWxsZXRLZXlzLCBvdXRwdXRDaGFpbiwgMCwgY29pbi5uZXR3b3JrKTtcblxuICAgICAgcmVjaXBpZW50ID0ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXRBZGRyZXNzLFxuICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudC50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICAgIGFkZHJlc3NJbmZvID0ge1xuICAgICAgICBhZGRyZXNzOiBvdXRwdXRBZGRyZXNzLFxuICAgICAgICBjaGFpbjogb3V0cHV0Q2hhaW4sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjb2luOiBjb2luLmdldENoYWluKCksXG4gICAgICAgIHdhbGxldDogd2FsbGV0LmlkKCksXG4gICAgICAgIGNvaW5TcGVjaWZpYzoge30sXG4gICAgICB9O1xuXG4gICAgICBwcmVidWlsZCA9IGNyZWF0ZVByZWJ1aWxkUHNidChcbiAgICAgICAgaW5wdXRTY3JpcHRzLm1hcCgocykgPT4gKHsgc2NyaXB0VHlwZTogcywgdmFsdWU6IEJpZ0ludCgxZTgpIH0pKSxcbiAgICAgICAgW3sgc2NyaXB0VHlwZTogb3V0cHV0U2NyaXB0VHlwZSwgdmFsdWU6IG91dHB1dEFtb3VudCB9XVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChub2NrLmNsZWFuQWxsKTtcblxuICAgIFt0cnVlLCBmYWxzZV0uZm9yRWFjaCgodXNlV2ViYXV0aG4pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgc3VjY2VlZCB3aXRoICR7dXNlV2ViYXV0aG4gPyAnd2ViYXV0aG4gZW5jcnlwdGVkUHJ2JyA6ICdlbmNyeXB0ZWRQcnYnfWAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyB3YWxsZXQvY29pbiBjb21iaW5hdGlvbiBkZWZhdWx0cyB0byBwc2J0XG4gICAgICAgIGNvbnN0IGRlZmF1bHRUeEZvcm1hdCA9IGNvaW4uZ2V0RGVmYXVsdFR4Rm9ybWF0KHdhbGxldCk7XG4gICAgICAgIGNvbnN0IG5vY2tzID0gY3JlYXRlTm9ja3Moe1xuICAgICAgICAgIGJnVXJsLFxuICAgICAgICAgIHdhbGxldCxcbiAgICAgICAgICBrZXlEb2N1bWVudHM6IGtleURvY3VtZW50T2JqZWN0cyxcbiAgICAgICAgICBwcmVidWlsZCxcbiAgICAgICAgICByZWNpcGllbnQsXG4gICAgICAgICAgYWRkcmVzc0luZm8sXG4gICAgICAgICAgbm9ja091dHB1dEFkZHJlc3NlczogdHhGb3JtYXQgIT09ICdwc2J0JyxcbiAgICAgICAgICB0eEZvcm1hdDogZGVmYXVsdFR4Rm9ybWF0LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBjYWxsIHByZWJ1aWxkIGFuZCBzaWduLCBub2NrcyBzaG91bGQgYmUgY29uc3VtZWRcbiAgICAgICAgY29uc3QgcmVzID0gKGF3YWl0IHdhbGxldC5wcmVidWlsZEFuZFNpZ25UcmFuc2FjdGlvbih7XG4gICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgd2FsbGV0UGFzc3BocmFzZTogdXNlV2ViYXV0aG4gPyB3ZWJhdXRobldhbGxldFBhc3NQaHJhc2UgOiB3YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICB9KSkgYXMgSGFsZlNpZ25lZFV0eG9UcmFuc2FjdGlvbjtcblxuICAgICAgICBub2Nrcy5mb3JFYWNoKChub2NrKSA9PiBhc3NlcnQub2sobm9jay5pc0RvbmUoKSkpO1xuXG4gICAgICAgIGFzc2VydFNpZ25hYmxlKHJlcy50eEhleCwgaW5wdXRTY3JpcHRzLCBjb2luLm5ldHdvcmspO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCBpZiB0aGUgd2FsbGV0IHBhc3NwaHJhc2UgaXMgaW5jb3JyZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICBub2NrT3V0cHV0QWRkcmVzc2VzOiB0eEZvcm1hdCAhPT0gJ3BzYnQnLFxuICAgICAgICB9KTtcblxuICAgICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgICB3YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgICAgcmVjaXBpZW50czogW3JlY2lwaWVudF0sXG4gICAgICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCksXG4gICAgICAgICAgfSksXG4gICAgICAgICAgeyBtZXNzYWdlOiAndW5hYmxlIHRvIGRlY3J5cHQga2V5Y2hhaW4gd2l0aCB0aGUgZ2l2ZW4gd2FsbGV0IHBhc3NwaHJhc2UnIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgW3RydWUsIGZhbHNlXS5mb3JFYWNoKChzZWxmU2VuZCkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBiZSBhYmxlIHRvIGJ1aWxkLCBzaWduLCAmIHZlcmlmeSBhIHJlcGxhY2VtZW50IHRyYW5zYWN0aW9uIHdpdGggc2VsZlNlbmQ6ICR7c2VsZlNlbmR9YCwgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCByYmZUeElkcyA9IFsndHgtdG8tYmUtcmVwbGFjZWQnXSxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyID0gMS41O1xuICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhbGxldC9jb2luIGNvbWJpbmF0aW9uIGRlZmF1bHRzIHRvIHBzYnRcbiAgICAgICAgY29uc3QgZGVmYXVsdFR4Rm9ybWF0ID0gY29pbi5nZXREZWZhdWx0VHhGb3JtYXQod2FsbGV0KTtcbiAgICAgICAgY29uc3Qgbm9ja3MgPSBjcmVhdGVOb2Nrcyh7XG4gICAgICAgICAgYmdVcmwsXG4gICAgICAgICAgd2FsbGV0LFxuICAgICAgICAgIGtleURvY3VtZW50czoga2V5RG9jdW1lbnRPYmplY3RzLFxuICAgICAgICAgIHByZWJ1aWxkLFxuICAgICAgICAgIHJlY2lwaWVudCxcbiAgICAgICAgICBhZGRyZXNzSW5mbyxcbiAgICAgICAgICByYmZUeElkcyxcbiAgICAgICAgICBmZWVNdWx0aXBsaWVyLFxuICAgICAgICAgIHNlbGZTZW5kLFxuICAgICAgICAgIG5vY2tPdXRwdXRBZGRyZXNzZXM6IHR4Rm9ybWF0ICE9PSAncHNidCcsXG4gICAgICAgICAgdHhGb3JtYXQ6IGRlZmF1bHRUeEZvcm1hdCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gY2FsbCBwcmVidWlsZCBhbmQgc2lnbiwgbm9ja3Mgc2hvdWxkIGJlIGNvbnN1bWVkXG4gICAgICAgIGNvbnN0IHJlcyA9IChhd2FpdCB3YWxsZXQucHJlYnVpbGRBbmRTaWduVHJhbnNhY3Rpb24oe1xuICAgICAgICAgIHJlY2lwaWVudHM6IFtyZWNpcGllbnRdLFxuICAgICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgICAgcmJmVHhJZHMsXG4gICAgICAgICAgZmVlTXVsdGlwbGllcixcbiAgICAgICAgfSkpIGFzIEhhbGZTaWduZWRVdHhvVHJhbnNhY3Rpb247XG5cbiAgICAgICAgbm9ja3MuZm9yRWFjaCgobm9jaykgPT4gYXNzZXJ0Lm9rKG5vY2suaXNEb25lKCkpKTtcblxuICAgICAgICBhc3NlcnRTaWduYWJsZShyZXMudHhIZXgsIGlucHV0U2NyaXB0cywgY29pbi5uZXR3b3JrKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZ2V0TWluVXR4b0NvaW5zKCkuZm9yRWFjaCgoY29pbikgPT4ge1xuICBydW4oY29pbiwgZ2V0U2NyaXB0VHlwZXMoY29pbiwgJ3BzYnQnKSwgJ3BzYnQnKTtcbn0pO1xuIl19
@@ -1,2 +1,2 @@
1
- import 'should';
1
+ export {};
2
2
  //# sourceMappingURL=backupKeyRecovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backupKeyRecovery.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/backupKeyRecovery.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,CAAC"}
1
+ {"version":3,"file":"backupKeyRecovery.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/backupKeyRecovery.ts"],"names":[],"mappings":""}
@@ -4,7 +4,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const assert_1 = __importDefault(require("assert"));
7
- require("should");
8
7
  const nock = require("nock");
9
8
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
10
9
  const src_1 = require("../../../src");
@@ -73,12 +72,12 @@ function run(coin, scriptTypes, wasmWalletKeys, params, tags = []) {
73
72
  });
74
73
  });
75
74
  it('has expected input count', function () {
76
- parsed.inputs.length.should.eql(recoverUnspents.length);
75
+ assert_1.default.strictEqual(parsed.inputs.length, recoverUnspents.length);
77
76
  });
78
77
  it('has recovery destination output', function () {
79
- parsed.outputs.length.should.be.greaterThanOrEqual(1);
78
+ assert_1.default.ok(parsed.outputs.length >= 1);
80
79
  const outputAddresses = parsed.outputs.map((o) => o.address);
81
- outputAddresses.includes(recoveryDestination).should.eql(true);
80
+ assert_1.default.ok(outputAddresses.includes(recoveryDestination));
82
81
  });
83
82
  it('has expected fee rate', function () {
84
83
  const inputSum = recoverUnspents.reduce((sum, u) => sum + u.value, BigInt(0));
@@ -94,7 +93,7 @@ function run(coin, scriptTypes, wasmWalletKeys, params, tags = []) {
94
93
  const signerKey = xprivs[signerIndex];
95
94
  for (let inputIndex = 0; inputIndex < recoverUnspents.length; inputIndex++) {
96
95
  const hasSig = psbt.verifySignature(inputIndex, signerKey);
97
- hasSig.should.eql(expectSigned, `input ${inputIndex} signer ${signerIndex}`);
96
+ assert_1.default.strictEqual(hasSig, expectSigned, `input ${inputIndex} signer ${signerIndex}`);
98
97
  }
99
98
  }
100
99
  it((params.userPrivkey ? 'has' : 'has no') + ' user signature', function () {
@@ -134,4 +133,4 @@ describe('Backup Key Recovery PSBT', function () {
134
133
  // taproot compatible coins
135
134
  runWithScriptTypes(['p2tr', 'p2trMusig2']);
136
135
  });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsa0JBQWdCO0FBQ2hCLDZCQUE4QjtBQUU5QixnREFBb0U7QUFFcEUsc0NBQXFGO0FBRXJGLGtDQVFpQjtBQUdqQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUV6QixNQUFNLHVCQUF1QixHQUFHLE9BQU8sQ0FBQztBQUN4QyxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQztBQUVsQyx1RUFBdUU7QUFDdkUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSwrQkFBd0IsR0FBRSxDQUFDO0FBQzFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixFQUFDO0lBQ3BFLGlCQUFpQjtJQUNqQix1QkFBdUI7SUFDdkIsdUJBQXVCO0NBQ3hCLENBQUMsQ0FBQztBQUVILDJCQUEyQjtBQUMzQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRWhDLFNBQVMsR0FBRyxDQUNWLElBQXNCLEVBQ3RCLFdBQTZCLEVBQzdCLGNBQWdELEVBQ2hELE1BR0MsRUFDRCxPQUFpQixFQUFFO0lBRW5CLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0lBRS9CLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUM3RSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxHQUFHLElBQUEsMkJB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UUFDeEIsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUV4Ryx5Q0FBeUM7UUFDekMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEVBQUU7WUFDM0UsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQixHQUFHLFdBQVc7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxRQUFRLENBQUMsMEJBQTBCLEVBQUU7SUFDbkMsNEJBQTRCO0lBQzVCLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUU3QiwwQkFBMEI7SUFDMUIsa0JBQWtCLENBQUMsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUUzQywyQkFBMkI7SUFDM0Isa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgQklQMzIsIEVDUGFpciwgZml4ZWRTY3JpcHRXYWxsZXQgfSBmcm9tICdAYml0Z28vd2FzbS11dHhvJztcblxuaW1wb3J0IHsgQWJzdHJhY3RVdHhvQ29pbiwgYmFja3VwS2V5UmVjb3ZlcnlXaXRoV2FsbGV0VW5zcGVudHMgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHR5cGUgeyBXYWxsZXRVbnNwZW50IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Vuc3BlbnQnO1xuaW1wb3J0IHtcbiAgY3JlYXRlV2FzbVdhbGxldEtleXMsXG4gIGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cyxcbiAgZ2V0Rml4dHVyZSxcbiAgZ2V0Tm9ybWFsVGVzdG5ldENvaW4sXG4gIGdldFdhbGxldEFkZHJlc3MsXG4gIHRvVW5zcGVudCxcbiAgdXR4b0NvaW5zLFxufSBmcm9tICcuLi91dGlsJztcbnR5cGUgU2NyaXB0VHlwZTJPZjMgPSAncDJzaCcgfCAncDJzaFAyd3NoJyB8ICdwMndzaCcgfCAncDJ0cicgfCAncDJ0ck11c2lnMic7XG5cbm5vY2suZGlzYWJsZU5ldENvbm5lY3QoKTtcblxuY29uc3QgZGVmYXVsdERlcml2YXRpb25QcmVmaXggPSAnbS8wLzAnO1xuY29uc3QgZXhvdGljVXNlcktleVBhdGggPSAnOTkvOTknO1xuXG4vLyBDcmVhdGUgd2FsbGV0IGtleXMgdXNpbmcgd2FzbS11dHhvIHByaW1pdGl2ZXMgZnJvbSBkZWZhdWx0IGtleWNoYWluc1xuY29uc3QgeyB3YWxsZXRLZXlzOiB3YXNtV2FsbGV0S2V5cywgeHByaXZzIH0gPSBnZXREZWZhdWx0V2FzbVdhbGxldEtleXMoKTtcbmNvbnN0IHsgd2FsbGV0S2V5czogd2FzbUV4b3RpY1dhbGxldEtleXMgfSA9IGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cyhbXG4gIGV4b3RpY1VzZXJLZXlQYXRoLFxuICBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCxcbiAgZGVmYXVsdERlcml2YXRpb25QcmVmaXgsXG5dKTtcblxuLy8gUHJpdmF0ZSBrZXlzIGZvciBzaWduaW5nXG5jb25zdCB1c2VyUHJpdmtleSA9IHhwcml2c1swXTtcbmNvbnN0IGJhY2t1cFByaXZrZXkgPSB4cHJpdnNbMV07XG5cbmZ1bmN0aW9uIHJ1bihcbiAgY29pbjogQWJzdHJhY3RVdHhvQ29pbixcbiAgc2NyaXB0VHlwZXM6IFNjcmlwdFR5cGUyT2YzW10sXG4gIHdhc21XYWxsZXRLZXlzOiBmaXhlZFNjcmlwdFdhbGxldC5Sb290V2FsbGV0S2V5cyxcbiAgcGFyYW1zOiB7XG4gICAgdXNlclByaXZrZXk/OiBCSVAzMjtcbiAgICBiYWNrdXBQcml2a2V5PzogQklQMzI7XG4gIH0sXG4gIHRhZ3M6IHN0cmluZ1tdID0gW11cbikge1xuICBjb25zdCBkZWZhdWx0RmVlUmF0ZVNhdEIgPSAxMDA7XG5cbiAgZGVzY3JpYmUoYEJhY2t1cCBLZXkgUmVjb3ZlcnkgUFNCVCBbJHtbY29pbi5nZXRDaGFpbigpLCAuLi50YWdzXS5qb2luKCcsJyl9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB7IHdhbGxldEtleXM6IGV4dGVybmFsV2FsbGV0IH0gPSBjcmVhdGVXYXNtV2FsbGV0S2V5cygnZXh0ZXJuYWwnKTtcbiAgICBjb25zdCByZWNvdmVyeURlc3RpbmF0aW9uID0gZ2V0V2FsbGV0QWRkcmVzcyhjb2luLm5hbWUsIGV4dGVybmFsV2FsbGV0KTtcbiAgICBjb25zdCBmaXh0dXJlQ29pbiA9IGdldE5vcm1hbFRlc3RuZXRDb2luKGNvaW4pO1xuICAgIC8vIEdldCB4cHVicyBmcm9tIHdhbGxldCBrZXlzXG4gICAgY29uc3QgdXNlcktleSA9IHdhc21XYWxsZXRLZXlzLnVzZXJLZXkoKTtcbiAgICBjb25zdCBiYWNrdXBLZXkgPSB3YXNtV2FsbGV0S2V5cy5iYWNrdXBLZXkoKTtcbiAgICBjb25zdCBiaXRnb0tleSA9IHdhc21XYWxsZXRLZXlzLmJpdGdvS2V5KCk7XG4gICAgY29uc3QgcmVwbGF5UHJvdGVjdGlvbiA9IFtFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbSh1c2VyS2V5LnB1YmxpY0tleSkpXTtcblxuICAgIC8vIDFlOCAqIDllNyA8IDkuMDA3ZTE1IGJ1dCAyZTggKiA5ZTcgPiA5LjAwN2UxNSB0byB0ZXN0IGJvdGggY29kZSBwYXRocyBpbiBxdWVyeUJsb2NrY2hhaW5VbnNwZW50c1BhdGhcbiAgICBjb25zdCB2YWx1ZU11bCA9IGNvaW4uYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcgPyBCaWdJbnQoOWU3KSA6IEJpZ0ludCgxKTtcblxuICAgIGxldCBwc2J0OiBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQ7XG4gICAgbGV0IHJlY292ZXJVbnNwZW50czogV2FsbGV0VW5zcGVudDxiaWdpbnQ+W107XG4gICAgbGV0IHBhcnNlZDogZml4ZWRTY3JpcHRXYWxsZXQuUGFyc2VkVHJhbnNhY3Rpb247XG4gICAgbGV0IGZpeHR1cmVQYXJzZWQ6IGZpeGVkU2NyaXB0V2FsbGV0LlBhcnNlZFRyYW5zYWN0aW9uO1xuXG4gICAgYmVmb3JlKCdjcmVhdGUgcmVjb3ZlcnkgZGF0YSBhbmQgbG9hZCBmaXh0dXJlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy50aW1lb3V0KDEwXzAwMCk7XG5cbiAgICAgIHJlY292ZXJVbnNwZW50cyA9IHNjcmlwdFR5cGVzLmZsYXRNYXAoKHNjcmlwdFR5cGUsIGluZGV4KSA9PiBbXG4gICAgICAgIHRvVW5zcGVudCh7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoMWU4KSAqIHZhbHVlTXVsIH0sIGluZGV4LCBjb2luLm5hbWUsIHdhc21XYWxsZXRLZXlzKSxcbiAgICAgICAgdG9VbnNwZW50KHsgc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCgyZTgpICogdmFsdWVNdWwgfSwgaW5kZXgsIGNvaW4ubmFtZSwgd2FzbVdhbGxldEtleXMpLFxuICAgICAgICB0b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDNlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uYW1lLCB3YXNtV2FsbGV0S2V5cyksXG4gICAgICBdKTtcblxuICAgICAgLy8gQnVpbGQgc2lnbmluZyBrZXlzIHRyaXBsZTogcHJpdmtleSBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHhwdWIgZnJvbSB3YWxsZXQga2V5c1xuICAgICAgY29uc3Qgc2lnbmluZ0tleXM6IFRyaXBsZTxCSVAzMj4gPSBbXG4gICAgICAgIHBhcmFtcy51c2VyUHJpdmtleSB8fCB1c2VyS2V5LFxuICAgICAgICBwYXJhbXMuYmFja3VwUHJpdmtleSB8fCBiYWNrdXBLZXksXG4gICAgICAgIGJpdGdvS2V5LCAvLyBiaXRnbyBpcyBhbHdheXMgeHB1YlxuICAgICAgXTtcblxuICAgICAgcHNidCA9IGJhY2t1cEtleVJlY292ZXJ5V2l0aFdhbGxldFVuc3BlbnRzKFxuICAgICAgICBjb2luLm5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICB3YWxsZXRLZXlzOiB3YXNtV2FsbGV0S2V5cyxcbiAgICAgICAgICBrZXlzOiBzaWduaW5nS2V5cyxcbiAgICAgICAgICByZWNvdmVyeURlc3RpbmF0aW9uLFxuICAgICAgICAgIGZlZVJhdGVTYXRWQjogZGVmYXVsdEZlZVJhdGVTYXRCLFxuICAgICAgICB9LFxuICAgICAgICByZWNvdmVyVW5zcGVudHNcbiAgICAgICk7XG5cbiAgICAgIC8vIFBhcnNlIGdlbmVyYXRlZCBQU0JUXG4gICAgICBwYXJzZWQgPSBwc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YXNtV2FsbGV0S2V5cywge1xuICAgICAgICByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IHJlcGxheVByb3RlY3Rpb24gfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBMb2FkIGFuZCBwYXJzZSBmaXh0dXJlIFBTQlRcbiAgICAgIGNvbnN0IHBzYnRIZXggPSBCdWZmZXIuZnJvbShwc2J0LnNlcmlhbGl6ZSgpKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBjb25zdCBzdG9yZWRGaXh0dXJlID0gYXdhaXQgZ2V0Rml4dHVyZShmaXh0dXJlQ29pbiwgYHJlY292ZXJ5L2JhY2t1cEtleVJlY292ZXJ5UHNidC0ke3RhZ3Muam9pbignLScpfWAsIHtcbiAgICAgICAgcHNidEhleCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZml4dHVyZVBzYnQgPSBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQuZnJvbUJ5dGVzKFxuICAgICAgICBCdWZmZXIuZnJvbShzdG9yZWRGaXh0dXJlLnBzYnRIZXgsICdoZXgnKSxcbiAgICAgICAgZml4dHVyZUNvaW4ubmFtZVxuICAgICAgKTtcbiAgICAgIGZpeHR1cmVQYXJzZWQgPSBmaXh0dXJlUHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMod2FzbVdhbGxldEtleXMsIHtcbiAgICAgICAgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiByZXBsYXlQcm90ZWN0aW9uIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgaW5wdXQgY291bnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZWQuaW5wdXRzLmxlbmd0aC5zaG91bGQuZXFsKHJlY292ZXJVbnNwZW50cy5sZW5ndGgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyByZWNvdmVyeSBkZXN0aW5hdGlvbiBvdXRwdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZWQub3V0cHV0cy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuT3JFcXVhbCgxKTtcbiAgICAgIGNvbnN0IG91dHB1dEFkZHJlc3NlcyA9IHBhcnNlZC5vdXRwdXRzLm1hcCgobykgPT4gby5hZGRyZXNzKTtcbiAgICAgIG91dHB1dEFkZHJlc3Nlcy5pbmNsdWRlcyhyZWNvdmVyeURlc3RpbmF0aW9uKS5zaG91bGQuZXFsKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBleHBlY3RlZCBmZWUgcmF0ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGlucHV0U3VtID0gcmVjb3ZlclVuc3BlbnRzLnJlZHVjZSgoc3VtLCB1KSA9PiBzdW0gKyB1LnZhbHVlLCBCaWdJbnQoMCkpO1xuICAgICAgY29uc3Qgb3V0cHV0U3VtID0gcGFyc2VkLm91dHB1dHMucmVkdWNlKChzdW0sIG8pID0+IHN1bSArIG8udmFsdWUsIEJpZ0ludCgwKSk7XG4gICAgICBjb25zdCBmZWUgPSBpbnB1dFN1bSAtIG91dHB1dFN1bTtcbiAgICAgIGNvbnN0IHZzaXplID0gZml4ZWRTY3JpcHRXYWxsZXQuRGltZW5zaW9ucy5mcm9tUHNidChwc2J0KS5nZXRWU2l6ZSgpO1xuICAgICAgY29uc3QgZmVlUmF0ZVNhdEIgPSBOdW1iZXIoZmVlKSAvIHZzaXplO1xuICAgICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGZlZVJhdGVTYXRCIC0gZGVmYXVsdEZlZVJhdGVTYXRCKSAvIGRlZmF1bHRGZWVSYXRlU2F0QjtcbiAgICAgIC8vIHdpdGhpbiAxJVxuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGRpZmYgPCAwLjAxLCB0cnVlLCBgZXhwZWN0ZWQgZmVlIHJhdGUgJHtkZWZhdWx0RmVlUmF0ZVNhdEJ9IGJ1dCBnb3QgJHtmZWVSYXRlU2F0Qn1gKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNoZWNrSW5wdXRzU2lnbmVkQnkoc2lnbmVySW5kZXg6IDAgfCAxIHwgMiwgZXhwZWN0U2lnbmVkOiBib29sZWFuKSB7XG4gICAgICBjb25zdCBzaWduZXJLZXkgPSB4cHJpdnNbc2lnbmVySW5kZXhdO1xuICAgICAgZm9yIChsZXQgaW5wdXRJbmRleCA9IDA7IGlucHV0SW5kZXggPCByZWNvdmVyVW5zcGVudHMubGVuZ3RoOyBpbnB1dEluZGV4KyspIHtcbiAgICAgICAgY29uc3QgaGFzU2lnID0gcHNidC52ZXJpZnlTaWduYXR1cmUoaW5wdXRJbmRleCwgc2lnbmVyS2V5KTtcbiAgICAgICAgaGFzU2lnLnNob3VsZC5lcWwoZXhwZWN0U2lnbmVkLCBgaW5wdXQgJHtpbnB1dEluZGV4fSBzaWduZXIgJHtzaWduZXJJbmRleH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpdCgocGFyYW1zLnVzZXJQcml2a2V5ID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIHVzZXIgc2lnbmF0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2hlY2tJbnB1dHNTaWduZWRCeSgwLCAhIXBhcmFtcy51c2VyUHJpdmtleSk7XG4gICAgfSk7XG5cbiAgICBpdCgocGFyYW1zLmJhY2t1cFByaXZrZXkgPyAnaGFzJyA6ICdoYXMgbm8nKSArICcgYmFja3VwIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkoMSwgISFwYXJhbXMuYmFja3VwUHJpdmtleSk7XG4gICAgfSk7XG5cbiAgICBpdCgnbWF0Y2hlcyBQU0JUIGZpeHR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHBhcnNlZCwgZml4dHVyZVBhcnNlZCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBydW5XaXRoU2NyaXB0VHlwZXMoc2NyaXB0VHlwZXM6IFNjcmlwdFR5cGUyT2YzW10pIHtcbiAgdXR4b0NvaW5zXG4gICAgLmZpbHRlcigoY29pbikgPT4gc2NyaXB0VHlwZXMuZXZlcnkoKHR5cGUpID0+IGNvaW4uc3VwcG9ydHNBZGRyZXNzVHlwZSh0eXBlKSkpXG4gICAgLmZvckVhY2goKGNvaW4pID0+IHtcbiAgICAgIC8vIFVuc2lnbmVkIHN3ZWVwIC0gbm8gc2lnbmF0dXJlc1xuICAgICAgcnVuKGNvaW4sIHNjcmlwdFR5cGVzLCB3YXNtV2FsbGV0S2V5cywge30sIFsndW5zaWduZWQnLCAuLi5zY3JpcHRUeXBlc10pO1xuXG4gICAgICAvLyBVc2VyIHNpZ25lZCBvbmx5IChLUlMgc2NlbmFyaW8pXG4gICAgICBydW4oY29pbiwgc2NyaXB0VHlwZXMsIHdhc21XYWxsZXRLZXlzLCB7IHVzZXJQcml2a2V5IH0sIFsndXNlclNpZ25lZCcsIC4uLnNjcmlwdFR5cGVzXSk7XG5cbiAgICAgIC8vIEZ1bGx5IHNpZ25lZCByZWNvdmVyeVxuICAgICAgcnVuKGNvaW4sIHNjcmlwdFR5cGVzLCB3YXNtV2FsbGV0S2V5cywgeyB1c2VyUHJpdmtleSwgYmFja3VwUHJpdmtleSB9LCBbJ2Z1bGx5U2lnbmVkJywgLi4uc2NyaXB0VHlwZXNdKTtcblxuICAgICAgLy8gRnVsbHkgc2lnbmVkIHdpdGggY3VzdG9tIHVzZXIga2V5IHBhdGhcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbUV4b3RpY1dhbGxldEtleXMsIHsgdXNlclByaXZrZXksIGJhY2t1cFByaXZrZXkgfSwgW1xuICAgICAgICAnZnVsbHlTaWduZWQnLFxuICAgICAgICAnY3VzdG9tVXNlcktleVBhdGgnLFxuICAgICAgICAuLi5zY3JpcHRUeXBlcyxcbiAgICAgIF0pO1xuICAgIH0pO1xufVxuXG5kZXNjcmliZSgnQmFja3VwIEtleSBSZWNvdmVyeSBQU0JUJywgZnVuY3Rpb24gKCkge1xuICAvLyBjb21wYXRpYmxlIHdpdGggYWxsIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2gnXSk7XG5cbiAgLy8gc2Vnd2l0IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJzaFAyd3NoJywgJ3Ayd3NoJ10pO1xuXG4gIC8vIHRhcHJvb3QgY29tcGF0aWJsZSBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnRyJywgJ3AydHJNdXNpZzInXSk7XG59KTtcbiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja3VwS2V5UmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsNkJBQThCO0FBRTlCLGdEQUFvRTtBQUVwRSxzQ0FBcUY7QUFFckYsa0NBUWlCO0FBR2pCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBRXpCLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxDQUFDO0FBQ3hDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRWxDLHVFQUF1RTtBQUN2RSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLCtCQUF3QixHQUFFLENBQUM7QUFDMUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLElBQUEsK0JBQXdCLEVBQUM7SUFDcEUsaUJBQWlCO0lBQ2pCLHVCQUF1QjtJQUN2Qix1QkFBdUI7Q0FDeEIsQ0FBQyxDQUFDO0FBRUgsMkJBQTJCO0FBQzNCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFaEMsU0FBUyxHQUFHLENBQ1YsSUFBc0IsRUFDdEIsV0FBNkIsRUFDN0IsY0FBZ0QsRUFDaEQsTUFHQyxFQUNELE9BQWlCLEVBQUU7SUFFbkIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7SUFFL0IsUUFBUSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQzdFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsSUFBQSwyQkFBb0IsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUN4RSxNQUFNLG1CQUFtQixHQUFHLElBQUEsdUJBQWdCLEVBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN4RSxNQUFNLFdBQVcsR0FBRyxJQUFBLDJCQUFvQixFQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9DLDZCQUE2QjtRQUM3QixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsa0JBQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWhGLHVHQUF1RztRQUN2RyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFeEUsSUFBSSxJQUFpQyxDQUFDO1FBQ3RDLElBQUksZUFBd0MsQ0FBQztRQUM3QyxJQUFJLE1BQTJDLENBQUM7UUFDaEQsSUFBSSxhQUFrRCxDQUFDO1FBRXZELE1BQU0sQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLO1lBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBTSxDQUFDLENBQUM7WUFFckIsZUFBZSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDM0QsSUFBQSxnQkFBUyxFQUFDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDO2dCQUMxRixJQUFBLGdCQUFTLEVBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7Z0JBQzFGLElBQUEsZ0JBQVMsRUFBQyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQzthQUMzRixDQUFDLENBQUM7WUFFSCxrRkFBa0Y7WUFDbEYsTUFBTSxXQUFXLEdBQWtCO2dCQUNqQyxNQUFNLENBQUMsV0FBVyxJQUFJLE9BQU87Z0JBQzdCLE1BQU0sQ0FBQyxhQUFhLElBQUksU0FBUztnQkFDakMsUUFBUSxFQUFFLHVCQUF1QjthQUNsQyxDQUFDO1lBRUYsSUFBSSxHQUFHLElBQUEseUNBQW1DLEVBQ3hDLElBQUksQ0FBQyxJQUFJLEVBQ1Q7Z0JBQ0UsVUFBVSxFQUFFLGNBQWM7Z0JBQzFCLElBQUksRUFBRSxXQUFXO2dCQUNqQixtQkFBbUI7Z0JBQ25CLFlBQVksRUFBRSxrQkFBa0I7YUFDakMsRUFDRCxlQUFlLENBQ2hCLENBQUM7WUFFRix1QkFBdUI7WUFDdkIsTUFBTSxHQUFHLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxjQUFjLEVBQUU7Z0JBQzNELGdCQUFnQixFQUFFLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFO2FBQ25ELENBQUMsQ0FBQztZQUVILDhCQUE4QjtZQUM5QixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5RCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsa0NBQWtDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRTtnQkFDdEcsT0FBTzthQUNSLENBQUMsQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQ3ZELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFDekMsV0FBVyxDQUFDLElBQUksQ0FDakIsQ0FBQztZQUNGLGFBQWEsR0FBRyxXQUFXLENBQUMsOEJBQThCLENBQUMsY0FBYyxFQUFFO2dCQUN6RSxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRTthQUNuRCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQkFBMEIsRUFBRTtZQUM3QixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7WUFDcEMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3RCxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1QkFBdUIsRUFBRTtZQUMxQixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLEdBQUcsR0FBRyxRQUFRLEdBQUcsU0FBUyxDQUFDO1lBQ2pDLE1BQU0sS0FBSyxHQUFHLDZCQUFpQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1lBQzdFLFlBQVk7WUFDWixnQkFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksRUFBRSxxQkFBcUIsa0JBQWtCLFlBQVksV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztRQUVILFNBQVMsbUJBQW1CLENBQUMsV0FBc0IsRUFBRSxZQUFxQjtZQUN4RSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdEMsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDM0UsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzNELGdCQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxVQUFVLFdBQVcsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0gsQ0FBQztRQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLEVBQUU7WUFDOUQsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLG1CQUFtQixFQUFFO1lBQ2xFLG1CQUFtQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHNCQUFzQixFQUFFO1lBQ3pCLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsV0FBNkI7SUFDdkQsZ0JBQVM7U0FDTixNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2hCLGlDQUFpQztRQUNqQyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUV6RSxrQ0FBa0M7UUFDbEMsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXhGLHdCQUF3QjtRQUN4QixHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBRXhHLHlDQUF5QztRQUN6QyxHQUFHLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsRUFBRTtZQUMzRSxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLEdBQUcsV0FBVztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELFFBQVEsQ0FBQywwQkFBMEIsRUFBRTtJQUNuQyw0QkFBNEI7SUFDNUIsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTdCLDBCQUEwQjtJQUMxQixrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRTNDLDJCQUEyQjtJQUMzQixrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCSVAzMiwgRUNQYWlyLCBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFV0eG9Db2luLCBiYWNrdXBLZXlSZWNvdmVyeVdpdGhXYWxsZXRVbnNwZW50cyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgdHlwZSB7IFdhbGxldFVuc3BlbnQgfSBmcm9tICcuLi8uLi8uLi9zcmMvdW5zcGVudCc7XG5pbXBvcnQge1xuICBjcmVhdGVXYXNtV2FsbGV0S2V5cyxcbiAgZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzLFxuICBnZXRGaXh0dXJlLFxuICBnZXROb3JtYWxUZXN0bmV0Q29pbixcbiAgZ2V0V2FsbGV0QWRkcmVzcyxcbiAgdG9VbnNwZW50LFxuICB1dHhvQ29pbnMsXG59IGZyb20gJy4uL3V0aWwnO1xudHlwZSBTY3JpcHRUeXBlMk9mMyA9ICdwMnNoJyB8ICdwMnNoUDJ3c2gnIHwgJ3Ayd3NoJyB8ICdwMnRyJyB8ICdwMnRyTXVzaWcyJztcblxubm9jay5kaXNhYmxlTmV0Q29ubmVjdCgpO1xuXG5jb25zdCBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCA9ICdtLzAvMCc7XG5jb25zdCBleG90aWNVc2VyS2V5UGF0aCA9ICc5OS85OSc7XG5cbi8vIENyZWF0ZSB3YWxsZXQga2V5cyB1c2luZyB3YXNtLXV0eG8gcHJpbWl0aXZlcyBmcm9tIGRlZmF1bHQga2V5Y2hhaW5zXG5jb25zdCB7IHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLCB4cHJpdnMgfSA9IGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cygpO1xuY29uc3QgeyB3YWxsZXRLZXlzOiB3YXNtRXhvdGljV2FsbGV0S2V5cyB9ID0gZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzKFtcbiAgZXhvdGljVXNlcktleVBhdGgsXG4gIGRlZmF1bHREZXJpdmF0aW9uUHJlZml4LFxuICBkZWZhdWx0RGVyaXZhdGlvblByZWZpeCxcbl0pO1xuXG4vLyBQcml2YXRlIGtleXMgZm9yIHNpZ25pbmdcbmNvbnN0IHVzZXJQcml2a2V5ID0geHByaXZzWzBdO1xuY29uc3QgYmFja3VwUHJpdmtleSA9IHhwcml2c1sxXTtcblxuZnVuY3Rpb24gcnVuKFxuICBjb2luOiBBYnN0cmFjdFV0eG9Db2luLFxuICBzY3JpcHRUeXBlczogU2NyaXB0VHlwZTJPZjNbXSxcbiAgd2FzbVdhbGxldEtleXM6IGZpeGVkU2NyaXB0V2FsbGV0LlJvb3RXYWxsZXRLZXlzLFxuICBwYXJhbXM6IHtcbiAgICB1c2VyUHJpdmtleT86IEJJUDMyO1xuICAgIGJhY2t1cFByaXZrZXk/OiBCSVAzMjtcbiAgfSxcbiAgdGFnczogc3RyaW5nW10gPSBbXVxuKSB7XG4gIGNvbnN0IGRlZmF1bHRGZWVSYXRlU2F0QiA9IDEwMDtcblxuICBkZXNjcmliZShgQmFja3VwIEtleSBSZWNvdmVyeSBQU0JUIFske1tjb2luLmdldENoYWluKCksIC4uLnRhZ3NdLmpvaW4oJywnKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHsgd2FsbGV0S2V5czogZXh0ZXJuYWxXYWxsZXQgfSA9IGNyZWF0ZVdhc21XYWxsZXRLZXlzKCdleHRlcm5hbCcpO1xuICAgIGNvbnN0IHJlY292ZXJ5RGVzdGluYXRpb24gPSBnZXRXYWxsZXRBZGRyZXNzKGNvaW4ubmFtZSwgZXh0ZXJuYWxXYWxsZXQpO1xuICAgIGNvbnN0IGZpeHR1cmVDb2luID0gZ2V0Tm9ybWFsVGVzdG5ldENvaW4oY29pbik7XG4gICAgLy8gR2V0IHhwdWJzIGZyb20gd2FsbGV0IGtleXNcbiAgICBjb25zdCB1c2VyS2V5ID0gd2FzbVdhbGxldEtleXMudXNlcktleSgpO1xuICAgIGNvbnN0IGJhY2t1cEtleSA9IHdhc21XYWxsZXRLZXlzLmJhY2t1cEtleSgpO1xuICAgIGNvbnN0IGJpdGdvS2V5ID0gd2FzbVdhbGxldEtleXMuYml0Z29LZXkoKTtcbiAgICBjb25zdCByZXBsYXlQcm90ZWN0aW9uID0gW0VDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHVzZXJLZXkucHVibGljS2V5KSldO1xuXG4gICAgLy8gMWU4ICogOWU3IDwgOS4wMDdlMTUgYnV0IDJlOCAqIDllNyA+IDkuMDA3ZTE1IHRvIHRlc3QgYm90aCBjb2RlIHBhdGhzIGluIHF1ZXJ5QmxvY2tjaGFpblVuc3BlbnRzUGF0aFxuICAgIGNvbnN0IHZhbHVlTXVsID0gY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCg5ZTcpIDogQmlnSW50KDEpO1xuXG4gICAgbGV0IHBzYnQ6IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidDtcbiAgICBsZXQgcmVjb3ZlclVuc3BlbnRzOiBXYWxsZXRVbnNwZW50PGJpZ2ludD5bXTtcbiAgICBsZXQgcGFyc2VkOiBmaXhlZFNjcmlwdFdhbGxldC5QYXJzZWRUcmFuc2FjdGlvbjtcbiAgICBsZXQgZml4dHVyZVBhcnNlZDogZml4ZWRTY3JpcHRXYWxsZXQuUGFyc2VkVHJhbnNhY3Rpb247XG5cbiAgICBiZWZvcmUoJ2NyZWF0ZSByZWNvdmVyeSBkYXRhIGFuZCBsb2FkIGZpeHR1cmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoMTBfMDAwKTtcblxuICAgICAgcmVjb3ZlclVuc3BlbnRzID0gc2NyaXB0VHlwZXMuZmxhdE1hcCgoc2NyaXB0VHlwZSwgaW5kZXgpID0+IFtcbiAgICAgICAgdG9VbnNwZW50KHsgc2NyaXB0VHlwZSwgdmFsdWU6IEJpZ0ludCgxZTgpICogdmFsdWVNdWwgfSwgaW5kZXgsIGNvaW4ubmFtZSwgd2FzbVdhbGxldEtleXMpLFxuICAgICAgICB0b1Vuc3BlbnQoeyBzY3JpcHRUeXBlLCB2YWx1ZTogQmlnSW50KDJlOCkgKiB2YWx1ZU11bCB9LCBpbmRleCwgY29pbi5uYW1lLCB3YXNtV2FsbGV0S2V5cyksXG4gICAgICAgIHRvVW5zcGVudCh7IHNjcmlwdFR5cGUsIHZhbHVlOiBCaWdJbnQoM2U4KSAqIHZhbHVlTXVsIH0sIGluZGV4LCBjb2luLm5hbWUsIHdhc21XYWxsZXRLZXlzKSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBCdWlsZCBzaWduaW5nIGtleXMgdHJpcGxlOiBwcml2a2V5IGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgeHB1YiBmcm9tIHdhbGxldCBrZXlzXG4gICAgICBjb25zdCBzaWduaW5nS2V5czogVHJpcGxlPEJJUDMyPiA9IFtcbiAgICAgICAgcGFyYW1zLnVzZXJQcml2a2V5IHx8IHVzZXJLZXksXG4gICAgICAgIHBhcmFtcy5iYWNrdXBQcml2a2V5IHx8IGJhY2t1cEtleSxcbiAgICAgICAgYml0Z29LZXksIC8vIGJpdGdvIGlzIGFsd2F5cyB4cHViXG4gICAgICBdO1xuXG4gICAgICBwc2J0ID0gYmFja3VwS2V5UmVjb3ZlcnlXaXRoV2FsbGV0VW5zcGVudHMoXG4gICAgICAgIGNvaW4ubmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLFxuICAgICAgICAgIGtleXM6IHNpZ25pbmdLZXlzLFxuICAgICAgICAgIHJlY292ZXJ5RGVzdGluYXRpb24sXG4gICAgICAgICAgZmVlUmF0ZVNhdFZCOiBkZWZhdWx0RmVlUmF0ZVNhdEIsXG4gICAgICAgIH0sXG4gICAgICAgIHJlY292ZXJVbnNwZW50c1xuICAgICAgKTtcblxuICAgICAgLy8gUGFyc2UgZ2VuZXJhdGVkIFBTQlRcbiAgICAgIHBhcnNlZCA9IHBzYnQucGFyc2VUcmFuc2FjdGlvbldpdGhXYWxsZXRLZXlzKHdhc21XYWxsZXRLZXlzLCB7XG4gICAgICAgIHJlcGxheVByb3RlY3Rpb246IHsgcHVibGljS2V5czogcmVwbGF5UHJvdGVjdGlvbiB9LFxuICAgICAgfSk7XG5cbiAgICAgIC8vIExvYWQgYW5kIHBhcnNlIGZpeHR1cmUgUFNCVFxuICAgICAgY29uc3QgcHNidEhleCA9IEJ1ZmZlci5mcm9tKHBzYnQuc2VyaWFsaXplKCkpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHN0b3JlZEZpeHR1cmUgPSBhd2FpdCBnZXRGaXh0dXJlKGZpeHR1cmVDb2luLCBgcmVjb3ZlcnkvYmFja3VwS2V5UmVjb3ZlcnlQc2J0LSR7dGFncy5qb2luKCctJyl9YCwge1xuICAgICAgICBwc2J0SGV4LFxuICAgICAgfSk7XG4gICAgICBjb25zdCBmaXh0dXJlUHNidCA9IGZpeGVkU2NyaXB0V2FsbGV0LkJpdEdvUHNidC5mcm9tQnl0ZXMoXG4gICAgICAgIEJ1ZmZlci5mcm9tKHN0b3JlZEZpeHR1cmUucHNidEhleCwgJ2hleCcpLFxuICAgICAgICBmaXh0dXJlQ29pbi5uYW1lXG4gICAgICApO1xuICAgICAgZml4dHVyZVBhcnNlZCA9IGZpeHR1cmVQc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YXNtV2FsbGV0S2V5cywge1xuICAgICAgICByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IHJlcGxheVByb3RlY3Rpb24gfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBleHBlY3RlZCBpbnB1dCBjb3VudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQuaW5wdXRzLmxlbmd0aCwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIHJlY292ZXJ5IGRlc3RpbmF0aW9uIG91dHB1dCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydC5vayhwYXJzZWQub3V0cHV0cy5sZW5ndGggPj0gMSk7XG4gICAgICBjb25zdCBvdXRwdXRBZGRyZXNzZXMgPSBwYXJzZWQub3V0cHV0cy5tYXAoKG8pID0+IG8uYWRkcmVzcyk7XG4gICAgICBhc3NlcnQub2sob3V0cHV0QWRkcmVzc2VzLmluY2x1ZGVzKHJlY292ZXJ5RGVzdGluYXRpb24pKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYXMgZXhwZWN0ZWQgZmVlIHJhdGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnB1dFN1bSA9IHJlY292ZXJVbnNwZW50cy5yZWR1Y2UoKHN1bSwgdSkgPT4gc3VtICsgdS52YWx1ZSwgQmlnSW50KDApKTtcbiAgICAgIGNvbnN0IG91dHB1dFN1bSA9IHBhcnNlZC5vdXRwdXRzLnJlZHVjZSgoc3VtLCBvKSA9PiBzdW0gKyBvLnZhbHVlLCBCaWdJbnQoMCkpO1xuICAgICAgY29uc3QgZmVlID0gaW5wdXRTdW0gLSBvdXRwdXRTdW07XG4gICAgICBjb25zdCB2c2l6ZSA9IGZpeGVkU2NyaXB0V2FsbGV0LkRpbWVuc2lvbnMuZnJvbVBzYnQocHNidCkuZ2V0VlNpemUoKTtcbiAgICAgIGNvbnN0IGZlZVJhdGVTYXRCID0gTnVtYmVyKGZlZSkgLyB2c2l6ZTtcbiAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhmZWVSYXRlU2F0QiAtIGRlZmF1bHRGZWVSYXRlU2F0QikgLyBkZWZhdWx0RmVlUmF0ZVNhdEI7XG4gICAgICAvLyB3aXRoaW4gMSVcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChkaWZmIDwgMC4wMSwgdHJ1ZSwgYGV4cGVjdGVkIGZlZSByYXRlICR7ZGVmYXVsdEZlZVJhdGVTYXRCfSBidXQgZ290ICR7ZmVlUmF0ZVNhdEJ9YCk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjaGVja0lucHV0c1NpZ25lZEJ5KHNpZ25lckluZGV4OiAwIHwgMSB8IDIsIGV4cGVjdFNpZ25lZDogYm9vbGVhbikge1xuICAgICAgY29uc3Qgc2lnbmVyS2V5ID0geHByaXZzW3NpZ25lckluZGV4XTtcbiAgICAgIGZvciAobGV0IGlucHV0SW5kZXggPSAwOyBpbnB1dEluZGV4IDwgcmVjb3ZlclVuc3BlbnRzLmxlbmd0aDsgaW5wdXRJbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGhhc1NpZyA9IHBzYnQudmVyaWZ5U2lnbmF0dXJlKGlucHV0SW5kZXgsIHNpZ25lcktleSk7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChoYXNTaWcsIGV4cGVjdFNpZ25lZCwgYGlucHV0ICR7aW5wdXRJbmRleH0gc2lnbmVyICR7c2lnbmVySW5kZXh9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaXQoKHBhcmFtcy51c2VyUHJpdmtleSA/ICdoYXMnIDogJ2hhcyBubycpICsgJyB1c2VyIHNpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNoZWNrSW5wdXRzU2lnbmVkQnkoMCwgISFwYXJhbXMudXNlclByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoKHBhcmFtcy5iYWNrdXBQcml2a2V5ID8gJ2hhcycgOiAnaGFzIG5vJykgKyAnIGJhY2t1cCBzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0lucHV0c1NpZ25lZEJ5KDEsICEhcGFyYW1zLmJhY2t1cFByaXZrZXkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21hdGNoZXMgUFNCVCBmaXh0dXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChwYXJzZWQsIGZpeHR1cmVQYXJzZWQpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcnVuV2l0aFNjcmlwdFR5cGVzKHNjcmlwdFR5cGVzOiBTY3JpcHRUeXBlMk9mM1tdKSB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoKGNvaW4pID0+IHNjcmlwdFR5cGVzLmV2ZXJ5KCh0eXBlKSA9PiBjb2luLnN1cHBvcnRzQWRkcmVzc1R5cGUodHlwZSkpKVxuICAgIC5mb3JFYWNoKChjb2luKSA9PiB7XG4gICAgICAvLyBVbnNpZ25lZCBzd2VlcCAtIG5vIHNpZ25hdHVyZXNcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHt9LCBbJ3Vuc2lnbmVkJywgLi4uc2NyaXB0VHlwZXNdKTtcblxuICAgICAgLy8gVXNlciBzaWduZWQgb25seSAoS1JTIHNjZW5hcmlvKVxuICAgICAgcnVuKGNvaW4sIHNjcmlwdFR5cGVzLCB3YXNtV2FsbGV0S2V5cywgeyB1c2VyUHJpdmtleSB9LCBbJ3VzZXJTaWduZWQnLCAuLi5zY3JpcHRUeXBlc10pO1xuXG4gICAgICAvLyBGdWxseSBzaWduZWQgcmVjb3ZlcnlcbiAgICAgIHJ1bihjb2luLCBzY3JpcHRUeXBlcywgd2FzbVdhbGxldEtleXMsIHsgdXNlclByaXZrZXksIGJhY2t1cFByaXZrZXkgfSwgWydmdWxseVNpZ25lZCcsIC4uLnNjcmlwdFR5cGVzXSk7XG5cbiAgICAgIC8vIEZ1bGx5IHNpZ25lZCB3aXRoIGN1c3RvbSB1c2VyIGtleSBwYXRoXG4gICAgICBydW4oY29pbiwgc2NyaXB0VHlwZXMsIHdhc21FeG90aWNXYWxsZXRLZXlzLCB7IHVzZXJQcml2a2V5LCBiYWNrdXBQcml2a2V5IH0sIFtcbiAgICAgICAgJ2Z1bGx5U2lnbmVkJyxcbiAgICAgICAgJ2N1c3RvbVVzZXJLZXlQYXRoJyxcbiAgICAgICAgLi4uc2NyaXB0VHlwZXMsXG4gICAgICBdKTtcbiAgICB9KTtcbn1cblxuZGVzY3JpYmUoJ0JhY2t1cCBLZXkgUmVjb3ZlcnkgUFNCVCcsIGZ1bmN0aW9uICgpIHtcbiAgLy8gY29tcGF0aWJsZSB3aXRoIGFsbCBjb2luc1xuICBydW5XaXRoU2NyaXB0VHlwZXMoWydwMnNoJ10pO1xuXG4gIC8vIHNlZ3dpdCBjb21wYXRpYmxlIGNvaW5zXG4gIHJ1bldpdGhTY3JpcHRUeXBlcyhbJ3Ayc2hQMndzaCcsICdwMndzaCddKTtcblxuICAvLyB0YXByb290IGNvbXBhdGlibGUgY29pbnNcbiAgcnVuV2l0aFNjcmlwdFR5cGVzKFsncDJ0cicsICdwMnRyTXVzaWcyJ10pO1xufSk7XG4iXX0=
@@ -34,7 +34,6 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  const assert = __importStar(require("assert"));
37
- const should = require("should");
38
37
  const nock = require("nock");
39
38
  const sdk_test_1 = require("@bitgo/sdk-test");
40
39
  const wasm_utxo_1 = require("@bitgo/wasm-utxo");
@@ -143,18 +142,18 @@ function run(sourceCoin, recoveryCoin) {
143
142
  }
144
143
  }));
145
144
  }
146
- (0, util_1.shouldEqualJSON)(recoveryObj, await (0, util_1.getFixture)(sourceCoin, `recovery/crossChainRecovery-${recoveryCoin.getChain()}-${name}`, recoveryObj));
145
+ (0, util_1.assertEqualJSON)(recoveryObj, await (0, util_1.getFixture)(sourceCoin, `recovery/crossChainRecovery-${recoveryCoin.getChain()}-${name}`, recoveryObj));
147
146
  }
148
147
  function checkRecoveryPsbtSignature(psbtHex) {
149
148
  // Parse using wasm-utxo for signature verification
150
149
  const wasmPsbt = wasm_utxo_1.fixedScriptWallet.BitGoPsbt.fromBytes(Buffer.from(psbtHex, 'hex'), sourceCoin.name);
151
150
  const parsed = wasmPsbt.parseTransactionWithWalletKeys(wasmWalletKeys, { replayProtection: { publicKeys: [] } });
152
151
  const unspents = getRecoveryUnspents();
153
- should.equal(parsed.inputs.length, unspents.length);
152
+ assert.strictEqual(parsed.inputs.length, unspents.length);
154
153
  // Verify user key has signed each input (same pattern as backupKeyRecovery test)
155
154
  parsed.inputs.forEach((_, i) => {
156
155
  const userSigned = wasmPsbt.verifySignature(i, xprivs[0]);
157
- userSigned.should.eql(true, `Input ${i} should be signed by user key`);
156
+ assert.strictEqual(userSigned, true, `Input ${i} should be signed by user key`);
158
157
  });
159
158
  }
160
159
  it('should test signed cross chain recovery', async () => {
@@ -176,7 +175,7 @@ function run(sourceCoin, recoveryCoin) {
176
175
  ...params,
177
176
  xprv: util_1.keychainsBase58[0].prv,
178
177
  }));
179
- should.equal(getRecoveryProviderStub.callCount, 1);
178
+ assert.strictEqual(getRecoveryProviderStub.callCount, 1);
180
179
  // Verify fixture match
181
180
  await matchFixture('signed', signedRecovery);
182
181
  // Verify PSBT has valid signatures (user key signed)
@@ -201,7 +200,7 @@ function run(sourceCoin, recoveryCoin) {
201
200
  ...params,
202
201
  signed: false,
203
202
  }));
204
- should.equal(getRecoveryProviderStub.callCount, 1);
203
+ assert.strictEqual(getRecoveryProviderStub.callCount, 1);
205
204
  // Verify fixture match
206
205
  await matchFixture('unsigned', unsignedRecovery);
207
206
  // Verify the unsigned PSBT can be signed
@@ -295,4 +294,4 @@ describe('convertLtcAddressToLegacyFormat', function () {
295
294
  assert.strictEqual(result, bech32Address);
296
295
  });
297
296
  });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyxpQ0FBa0M7QUFDbEMsNkJBQThCO0FBRTlCLDhDQUEwQztBQUMxQyxnREFBNkU7QUFDN0UsNkNBQStCO0FBRS9CLHNDQVFzQjtBQUN0Qiw4Q0FBa0U7QUFFbEUsa0NBVWlCO0FBQ2pCLGlEQUE4QztBQUU5QyxpQ0FBd0Q7QUFFeEQsU0FBUyxRQUFRLENBQUMsQ0FBaUI7SUFDakMsT0FBTyxJQUFBLGtCQUFPLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBc0IsRUFBRSxRQUFnQixFQUFFLFVBQWtDO0lBQzlGLE9BQU87UUFDTCxJQUFBLHFCQUFTLEdBQUU7YUFDUixHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsUUFBUSxFQUFFLENBQUM7YUFDcEQsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLEVBQUUsRUFBRSxRQUFRO1lBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDckIsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pDLENBQUM7YUFDRCxPQUFPLEVBQUU7UUFDWixHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUN0QixJQUFBLHFCQUFTLEdBQUU7YUFDUixHQUFHLENBQUMsV0FBVyxJQUFJLENB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QUUseUJBQXlCLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxvRUFBb0UsRUFBRTtRQUN2RSxNQUFNLE9BQU8sR0FBRyxvQ0FBb0MsQ0FBQztRQUNyRCxNQUFNLGFBQWEsR0FBRyxJQUFBLHFDQUErQixFQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV0RSxpREFBaUQ7UUFDakQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLDRDQUE0QyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLDZDQUE2QyxDQUFDO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLElBQUEscUNBQStCLEVBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHNob3VsZCA9IHJlcXVpcmUoJ3Nob3VsZCcpO1xuaW1wb3J0IG5vY2sgPSByZXF1aXJlKCdub2NrJyk7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgZ2V0U2VlZCB9IGZyb20gJ0BiaXRnby9zZGstdGVzdCc7XG5pbXBvcnQgeyBhZGRyZXNzIGFzIHdhc21BZGRyZXNzLCBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdFV0eG9Db2luLFxuICBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQsXG4gIENyb3NzQ2hhaW5SZWNvdmVyeVVuc2lnbmVkLFxuICBnZXRXYWxsZXQsXG4gIHN1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyaWVzLFxuICBnZW5lcmF0ZUFkZHJlc3MsXG4gIGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQsXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBpc01haW5uZXRDb2luLCBpc1Rlc3RuZXRDb2luIH0gZnJvbSAnLi4vLi4vLi4vc3JjL25hbWVzJztcbmltcG9ydCB0eXBlIHsgV2FsbGV0VW5zcGVudCB9IGZyb20gJy4uLy4uLy4uL3NyYy91bnNwZW50JztcbmltcG9ydCB7XG4gIGdldEZpeHR1cmUsXG4gIGtleWNoYWluc0Jhc2U1OCxcbiAgS2V5Y2hhaW5CYXNlNTgsXG4gIHNob3VsZEVxdWFsSlNPTixcbiAgdXR4b0NvaW5zLFxuICBnZXREZWZhdWx0V2FzbVdhbGxldEtleXMsXG4gIGRlZmF1bHRCaXRHbyxcbiAgZ2V0VXR4b0NvaW4sXG4gIGNyZWF0ZVdhc21XYWxsZXRVbnNwZW50LFxufSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IG5vY2tCaXRHbyB9IGZyb20gJy4uL3V0aWwvbm9ja0JpdEdvJztcblxuaW1wb3J0IHsgV2FzbUNyb3NzQ2hhaW5SZWNvdmVyeVByb3ZpZGVyIH0gZnJvbSAnLi9tb2NrJztcblxuZnVuY3Rpb24gZ2V0S2V5SWQoazogS2V5Y2hhaW5CYXNlNTgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0U2VlZChrLnB1YikudG9TdHJpbmcoJ2hleCcpO1xufVxuXG5mdW5jdGlvbiBub2NrV2FsbGV0KGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIHdhbGxldElkOiBzdHJpbmcsIHdhbGxldEtleXM6IFRyaXBsZTxLZXljaGFpbkJhc2U1OD4pOiBub2NrLlNjb3BlW10ge1xuICByZXR1cm4gW1xuICAgIG5vY2tCaXRHbygpXG4gICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHt3YWxsZXRJZH1gKVxuICAgICAgLnJlcGx5KDIwMCwge1xuICAgICAgICBpZDogd2FsbGV0SWQsXG4gICAgICAgIGNvaW46IGNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgICAgbGFiZWw6ICdjcm9zc0NoYWluUmVjb3ZlcnknLFxuICAgICAgICBrZXlzOiB3YWxsZXRLZXlzLm1hcCgoaykgPT4gZ2V0S2V5SWQoaykpLFxuICAgICAgfSlcbiAgICAgIC5wZXJzaXN0KCksXG4gICAgLi4ud2FsbGV0S2V5cy5tYXAoKGspID0+XG4gICAgICBub2NrQml0R28oKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7Y29pbi5nZXRDaGFpbigpfS9rZXkvJHtnZXRLZXlJZChrKX1gKVxuICAgICAgICAucmVwbHkoMjAwLCBrKVxuICAgICAgICAucGVyc2lzdCgpXG4gICAgKSxcbiAgXTtcbn1cblxudHlwZSBBZGRyZXNzID0ge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIGNoYWluOiBudW1iZXI7XG4gIGluZGV4OiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBub2NrV2FsbGV0QWRkcmVzcyhjb2luOiBBYnN0cmFjdFV0eG9Db2luLCB3YWxsZXRJZDogc3RyaW5nLCBhZGRyZXNzOiBBZGRyZXNzKTogbm9jay5TY29wZSB7XG4gIHJldHVybiBub2NrQml0R28oKVxuICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3dhbGxldElkfS9hZGRyZXNzLyR7YWRkcmVzcy5hZGRyZXNzfWApXG4gICAgLnJlcGx5KDIwMCwge1xuICAgICAgYWRkcmVzczogYWRkcmVzcy5hZGRyZXNzLFxuICAgICAgY2hhaW46IGFkZHJlc3MuY2hhaW4sXG4gICAgICBpbmRleDogYWRkcmVzcy5pbmRleCxcbiAgICAgIGNvaW46IGNvaW4uZ2V0Q2hhaW4oKSxcbiAgICAgIHdhbGxldDogd2FsbGV0SWQsXG4gICAgfSlcbiAgICAucGVyc2lzdCgpO1xufVxuXG4vKipcbiAqIFNldHVwIHRlc3QgZm9yIGNyb3NzLWNoYWluIHJlY292ZXJ5LlxuICpcbiAqIFVzZXJzIGNhbiByZWNlaXZlIGRlcG9zaXRzIG9uIHdhbGxldCBhZGRyZXNzZXMgdGhhdCBhcmUgb24gYSBkaWZmZXJlbnQgY2hhaW4uXG4gKlxuICogRm9yIGluc3RhbmNlLCBhIHVzZXIgY2FuIHJlY2VpdmUgbGl0ZWNvaW4gb24gYSBiaXRjb2luIHdhbGxldC5cbiAqIFRoaXMgbWVhbnMgdGhhdCB0aGUgbGl0ZWNvaW4gYmxvY2tjaGFpbiBoYXMgYSB0cmFuc2FjdGlvbiB3aXRoIG91dHB1dHMgdGhhdCBhcmUgc3BlbmRhYmxlXG4gKiB3aXRoIGtleXMgdGhhdCB3ZXJlIG9yaWdpbmFsbHkgY3JlYXRlZCBmb3IgYSBCaXRHbyBCVEMgd2FsbGV0LlxuICogSW4gdGhpcyBleGFtcGxlLCBMVEMgaXMgdGhlIFwic291cmNlIGNvaW5cIiBhbmQgQlRDIGlzIHRoZSBcInJlY292ZXJ5IGNvaW5cIlxuICogSW4gY2FzZXMgbGlrZSB0aGVzZSB3ZSBtdXN0IHVzZSBjb25zdHJ1Y3QgYSB0cmFuc2FjdGlvbiBmb3IgbGl0ZWNvaW4gbmV0d29yayB1c2luZyBrZXlzIG9mIHRoZVxuICogYml0Y29pbiB3YWxsZXQuXG4gKlxuICogQHBhcmFtIHNvdXJjZUNvaW4gLSB0aGUgY29pbiB0byBjb25zdHJ1Y3QgdGhlIHRyYW5zYWN0aW9uIGZvclxuICogQHBhcmFtIHJlY292ZXJ5Q29pbiAtIHRoZSBjb2luIHRoZSByZWNlaXZpbmcgd2FsbGV0IHdhcyBzZXQgdXAgZm9yXG4gKi9cbi8vIEdldCB3YXNtIHdhbGxldCBrZXlzIGZvciBzaWduYXR1cmUgdmVyaWZpY2F0aW9uXG5jb25zdCB7IHdhbGxldEtleXM6IHdhc21XYWxsZXRLZXlzLCB4cHJpdnMgfSA9IGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cygpO1xuXG5mdW5jdGlvbiBydW48VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludCA9IG51bWJlcj4oc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbiwgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luKSB7XG4gIGRlc2NyaWJlKGBDcm9zcy1DaGFpbiBSZWNvdmVyeSBbc291cmNlQ29pbj0ke3NvdXJjZUNvaW4uZ2V0Q2hhaW4oKX0gcmVjb3ZlcnlDb2luPSR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9XWAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZWNvdmVyeVdhbGxldElkID0gJzVhYmFjZWJlMjhkNzJmYmQwN2UwYjhjYmJhMGZmMzllJztcbiAgICAvLyB0aGUgYWRkcmVzcyB0aGUgYWNjaWRlbnRhbCBkZXBvc2l0IHdlbnQgdG8sIGluIGJvdGggc291cmNlQ29pbiBhbmQgYWRkcmVzc0NvaW4gZm9ybWF0c1xuICAgIGNvbnN0IFtkZXBvc2l0QWRkcmVzc1NvdXJjZUNvaW4sIGRlcG9zaXRBZGRyZXNzUmVjb3ZlcnlDb2luXSA9IFtzb3VyY2VDb2luLCByZWNvdmVyeUNvaW5dLm1hcCgoY29pbikgPT4gKHtcbiAgICAgIGFkZHJlc3M6IGdlbmVyYXRlQWRkcmVzcyhjb2luLm5hbWUsIHsga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsIGNoYWluOiAwLCBpbmRleDogMCB9KSxcbiAgICAgIGNoYWluOiAwLFxuICAgICAgaW5kZXg6IDAsXG4gICAgfSkpO1xuICAgIGNvbnN0IGNoYWluID0gMDtcbiAgICBjb25zdCBpbmRleCA9IDE7XG4gICAgLy8gdGhlIGFkZHJlc3Mgd2hlcmUgd2Ugd2FudCB0byByZWNvdmVyIG91ciBmdW5kcyB0b1xuICAgIGNvbnN0IHJlY292ZXJ5QWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcyhzb3VyY2VDb2luLm5hbWUsIHtcbiAgICAgIGtleWNoYWluczoga2V5Y2hhaW5zQmFzZTU4LFxuICAgICAgY2hhaW4sXG4gICAgICBpbmRleCxcbiAgICB9KTtcbiAgICBjb25zdCBub2Nrczogbm9jay5TY29wZVtdID0gW107XG5cbiAgICAvLyBDcmVhdGUgcmVjb3ZlcnkgdW5zcGVudCB1c2luZyB3YXNtLXV0eG8gKG5vIHV0eG9saWIgZGVwZW5kZW5jeSlcbiAgICBmdW5jdGlvbiBnZXRSZWNvdmVyeVVuc3BlbnRzKCk6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXSB7XG4gICAgICBjb25zdCBkZXBvc2l0VmFsdWUgPSAoc291cmNlQ29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50JyA/IEJpZ0ludCgxZTgpIDogMWU4KSBhcyBUTnVtYmVyO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgY3JlYXRlV2FzbVdhbGxldFVuc3BlbnQ8VE51bWJlcj4oZGVwb3NpdEFkZHJlc3NTb3VyY2VDb2luLmFkZHJlc3MsIGNoYWluLCBpbmRleCwgZGVwb3NpdFZhbHVlLCBzb3VyY2VDb2luLm5hbWUpLFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBiZWZvcmUoJ3NldHVwIG5vY2tzJywgZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja3MucHVzaCguLi5ub2NrV2FsbGV0KHJlY292ZXJ5Q29pbiwgcmVjb3ZlcnlXYWxsZXRJZCwga2V5Y2hhaW5zQmFzZTU4KSk7XG4gICAgICBub2Nrcy5wdXNoKG5vY2tXYWxsZXRBZGRyZXNzKHJlY292ZXJ5Q29pbiwgcmVjb3ZlcnlXYWxsZXRJZCwgZGVwb3NpdEFkZHJlc3NSZWNvdmVyeUNvaW4pKTtcbiAgICB9KTtcblxuICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2tzLmZvckVhY2goKG4pID0+IG4uZG9uZSgpKTtcbiAgICB9KTtcblxuICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vY2suY2xlYW5BbGwoKTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzaW5vbi5yZXN0b3JlKCk7XG4gICAgfSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBtYXRjaEZpeHR1cmUoXG4gICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICByZWNvdmVyeTogQ3Jvc3NDaGFpblJlY292ZXJ5U2lnbmVkPFROdW1iZXI+IHwgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQ8VE51bWJlcj5cbiAgICApIHtcbiAgICAgIGxldCByZWNvdmVyeU9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7IC4uLnJlY292ZXJ5IH07XG4gICAgICBpZiAoc291cmNlQ29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICByZWNvdmVyeU9iaiA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkocmVjb3ZlcnlPYmosIChrLCB2KSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc2hvdWxkRXF1YWxKU09OKFxuICAgICAgICByZWNvdmVyeU9iaixcbiAgICAgICAgYXdhaXQgZ2V0Rml4dHVyZShzb3VyY2VDb2luLCBgcmVjb3ZlcnkvY3Jvc3NDaGFpblJlY292ZXJ5LSR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9LSR7bmFtZX1gLCByZWNvdmVyeU9iailcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUocHNidEhleDogc3RyaW5nKSB7XG4gICAgICAvLyBQYXJzZSB1c2luZyB3YXNtLXV0eG8gZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbiAgICAgIGNvbnN0IHdhc21Qc2J0ID0gZml4ZWRTY3JpcHRXYWxsZXQuQml0R29Qc2J0LmZyb21CeXRlcyhCdWZmZXIuZnJvbShwc2J0SGV4LCAnaGV4JyksIHNvdXJjZUNvaW4ubmFtZSk7XG4gICAgICBjb25zdCBwYXJzZWQgPSB3YXNtUHNidC5wYXJzZVRyYW5zYWN0aW9uV2l0aFdhbGxldEtleXMod2FzbVdhbGxldEtleXMsIHsgcmVwbGF5UHJvdGVjdGlvbjogeyBwdWJsaWNLZXlzOiBbXSB9IH0pO1xuICAgICAgY29uc3QgdW5zcGVudHMgPSBnZXRSZWNvdmVyeVVuc3BlbnRzKCk7XG4gICAgICBzaG91bGQuZXF1YWwocGFyc2VkLmlucHV0cy5sZW5ndGgsIHVuc3BlbnRzLmxlbmd0aCk7XG4gICAgICAvLyBWZXJpZnkgdXNlciBrZXkgaGFzIHNpZ25lZCBlYWNoIGlucHV0IChzYW1lIHBhdHRlcm4gYXMgYmFja3VwS2V5UmVjb3ZlcnkgdGVzdClcbiAgICAgIHBhcnNlZC5pbnB1dHMuZm9yRWFjaCgoXywgaSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyU2lnbmVkID0gd2FzbVBzYnQudmVyaWZ5U2lnbmF0dXJlKGksIHhwcml2c1swXSk7XG4gICAgICAgIHVzZXJTaWduZWQuc2hvdWxkLmVxbCh0cnVlLCBgSW5wdXQgJHtpfSBzaG91bGQgYmUgc2lnbmVkIGJ5IHVzZXIga2V5YCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpdCgnc2hvdWxkIHRlc3Qgc2lnbmVkIGNyb3NzIGNoYWluIHJlY292ZXJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVwb3NpdFVuc3BlbnQgPSBnZXRSZWNvdmVyeVVuc3BlbnRzKClbMF07XG4gICAgICAvLyBQYXJzZSB0eGlkIGZyb20gdGhlIHVuc3BlbnQgaWQgKGZvcm1hdDogdHhpZDp2b3V0KVxuICAgICAgY29uc3QgZGVwb3NpdFR4aWQgPSBkZXBvc2l0VW5zcGVudC5pZC5zcGxpdCgnOicpWzBdO1xuICAgICAgLy8gVXNlIHRoZSBkZXBvc2l0IGFkZHJlc3MgYXMgdGhlIGlucHV0IGFkZHJlc3MgKHNpbXVsYXRpbmcgYSBwMnNoIGlucHV0KVxuICAgICAgY29uc3QgaW5wdXRBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKHNvdXJjZUNvaW4ubmFtZSwgeyBrZXljaGFpbnM6IGtleWNoYWluc0Jhc2U1OCwgY2hhaW46IDAsIGluZGV4OiAyIH0pO1xuICAgICAgY29uc3QgZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIgPSBzaW5vblxuICAgICAgICAuc3R1YihBYnN0cmFjdFV0eG9Db2luLnByb3RvdHlwZSwgJ2dldFJlY292ZXJ5UHJvdmlkZXInKVxuICAgICAgICAucmV0dXJucyhuZXcgV2FzbUNyb3NzQ2hhaW5SZWNvdmVyeVByb3ZpZGVyPFROdW1iZXI+KHNvdXJjZUNvaW4sIGRlcG9zaXRVbnNwZW50LCBbaW5wdXRBZGRyZXNzXSkpO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICByZWNvdmVyeUNvaW4sXG4gICAgICAgIHR4aWQ6IGRlcG9zaXRUeGlkLFxuICAgICAgICByZWNvdmVyeUFkZHJlc3MsXG4gICAgICAgIHdhbGxldDogcmVjb3ZlcnlXYWxsZXRJZCxcbiAgICAgIH07XG4gICAgICBjb25zdCBzaWduZWRSZWNvdmVyeSA9IChhd2FpdCBzb3VyY2VDb2luLnJlY292ZXJGcm9tV3JvbmdDaGFpbjxUTnVtYmVyPih7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgeHBydjoga2V5Y2hhaW5zQmFzZTU4WzBdLnBydixcbiAgICAgIH0pKSBhcyBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj47XG4gICAgICBzaG91bGQuZXF1YWwoZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIuY2FsbENvdW50LCAxKTtcblxuICAgICAgLy8gVmVyaWZ5IGZpeHR1cmUgbWF0Y2hcbiAgICAgIGF3YWl0IG1hdGNoRml4dHVyZSgnc2lnbmVkJywgc2lnbmVkUmVjb3ZlcnkpO1xuXG4gICAgICAvLyBWZXJpZnkgUFNCVCBoYXMgdmFsaWQgc2lnbmF0dXJlcyAodXNlciBrZXkgc2lnbmVkKVxuICAgICAgY2hlY2tSZWNvdmVyeVBzYnRTaWduYXR1cmUoc2lnbmVkUmVjb3ZlcnkudHhIZXggYXMgc3RyaW5nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGVzdCB1bnNpZ25lZCBjcm9zcyBjaGFpbiByZWNvdmVyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlcG9zaXRVbnNwZW50ID0gZ2V0UmVjb3ZlcnlVbnNwZW50cygpWzBdO1xuICAgICAgLy8gUGFyc2UgdHhpZCBmcm9tIHRoZSB1bnNwZW50IGlkIChmb3JtYXQ6IHR4aWQ6dm91dClcbiAgICAgIGNvbnN0IGRlcG9zaXRUeGlkID0gZGVwb3NpdFVuc3BlbnQuaWQuc3BsaXQoJzonKVswXTtcbiAgICAgIC8vIFVzZSB0aGUgZGVwb3NpdCBhZGRyZXNzIGFzIHRoZSBpbnB1dCBhZGRyZXNzIChzaW11bGF0aW5nIGEgcDJzaCBpbnB1dClcbiAgICAgIGNvbnN0IGlucHV0QWRkcmVzcyA9IGdlbmVyYXRlQWRkcmVzcyhzb3VyY2VDb2luLm5hbWUsIHsga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsIGNoYWluOiAwLCBpbmRleDogMiB9KTtcbiAgICAgIGNvbnN0IGdldFJlY292ZXJ5UHJvdmlkZXJTdHViID0gc2lub25cbiAgICAgICAgLnN0dWIoQWJzdHJhY3RVdHhvQ29pbi5wcm90b3R5cGUsICdnZXRSZWNvdmVyeVByb3ZpZGVyJylcbiAgICAgICAgLnJldHVybnMobmV3IFdhc21Dcm9zc0NoYWluUmVjb3ZlcnlQcm92aWRlcjxUTnVtYmVyPihzb3VyY2VDb2luLCBkZXBvc2l0VW5zcGVudCwgW2lucHV0QWRkcmVzc10pKTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgcmVjb3ZlcnlDb2luLFxuICAgICAgICB0eGlkOiBkZXBvc2l0VHhpZCxcbiAgICAgICAgcmVjb3ZlcnlBZGRyZXNzLFxuICAgICAgICB3YWxsZXQ6IHJlY292ZXJ5V2FsbGV0SWQsXG4gICAgICB9O1xuICAgICAgY29uc3QgdW5zaWduZWRSZWNvdmVyeSA9IChhd2FpdCBzb3VyY2VDb2luLnJlY292ZXJGcm9tV3JvbmdDaGFpbjxUTnVtYmVyPih7XG4gICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgc2lnbmVkOiBmYWxzZSxcbiAgICAgIH0pKSBhcyBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZDxUTnVtYmVyPjtcbiAgICAgIHNob3VsZC5lcXVhbChnZXRSZWNvdmVyeVByb3ZpZGVyU3R1Yi5jYWxsQ291bnQsIDEpO1xuXG4gICAgICAvLyBWZXJpZnkgZml4dHVyZSBtYXRjaFxuICAgICAgYXdhaXQgbWF0Y2hGaXh0dXJlKCd1bnNpZ25lZCcsIHVuc2lnbmVkUmVjb3ZlcnkpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHVuc2lnbmVkIFBTQlQgY2FuIGJlIHNpZ25lZFxuICAgICAgY29uc3Qgc2lnbmVkVHggPSBhd2FpdCBzb3VyY2VDb2luLnNpZ25UcmFuc2FjdGlvbjxUTnVtYmVyPih7XG4gICAgICAgIHR4UHJlYnVpbGQ6IHVuc2lnbmVkUmVjb3ZlcnksXG4gICAgICAgIHBydjoga2V5Y2hhaW5zQmFzZTU4WzBdLnBydixcbiAgICAgICAgcHViczoga2V5Y2hhaW5zQmFzZTU4Lm1hcCgoaykgPT4gay5wdWIpIGFzIFRyaXBsZTxzdHJpbmc+LFxuICAgICAgfSk7XG4gICAgICBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZSgoc2lnbmVkVHggYXMgeyB0eEhleDogc3RyaW5nIH0pLnR4SGV4KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzU3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJ5KHNvdXJjZUNvaW46IEFic3RyYWN0VXR4b0NvaW4sIHJlY292ZXJ5Q29pbjogQWJzdHJhY3RVdHhvQ29pbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJpZXNbc291cmNlQ29pbi5nZXRGYW1pbHkoKV0/LmluY2x1ZGVzKHJlY292ZXJ5Q29pbi5nZXRGYW1pbHkoKSk7XG59XG5cbnV0eG9Db2lucy5mb3JFYWNoKChjb2luKSA9PiB7XG4gIHV0eG9Db2luc1xuICAgIC5maWx0ZXIoXG4gICAgICAob3RoZXJDb2luKSA9PlxuICAgICAgICBjb2luICE9PSBvdGhlckNvaW4gJiZcbiAgICAgICAgaXNTdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3ZlcnkoY29pbiwgb3RoZXJDb2luKSAmJlxuICAgICAgICAoKGlzTWFpbm5ldENvaW4oY29pbi5uYW1lKSAmJiBpc01haW5uZXRDb2luKG90aGVyQ29pbi5uYW1lKSkgfHxcbiAgICAgICAgICAoaXNUZXN0bmV0Q29pbihjb2luLm5hbWUpICYmIGlzVGVzdG5ldENvaW4ob3RoZXJDb2luLm5hbWUpKSlcbiAgICApXG4gICAgLmZvckVhY2goKG90aGVyQ29pbikgPT4ge1xuICAgICAgaWYgKGNvaW4uYW1vdW50VHlwZSA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgcnVuPGJpZ2ludD4oY29pbiwgb3RoZXJDb2luKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJ1bihjb2luLCBvdGhlckNvaW4pO1xuICAgICAgfVxuICAgIH0pO1xufSk7XG5cbmRlc2NyaWJlKGBDcm9zcy1DaGFpbiBSZWNvdmVyeSBnZXRXYWxsZXRgLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IGJpdGdvID0gZGVmYXVsdEJpdEdvO1xuICBjb25zdCByZWNvdmVyeUNvaW4gPSBnZXRVdHhvQ29pbignYnRjJyk7XG4gIGNvbnN0IHJlY292ZXJ5V2FsbGV0SWQgPSAnNWFiYWNlYmUyOGQ3MmZiZDA3ZTBiOGNiYmEwZmYzOWUnO1xuXG4gIGl0KCdzaG91bGQgc2VhcmNoIHYxIHdhbGxldHMgaWYgdGhlIHYyIGVuZHBvaW50IHJlc3BvbmRzIHdpdGggYSA0eHggZXJyb3InLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZXJyb3JSZXNwb25zZXMgPSBbNDAwLCA0MDRdO1xuXG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvclJlc3BvbnNlcykge1xuICAgICAgY29uc3Qgbm9ja1YyV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9L3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YClcbiAgICAgICAgLnJlcGx5KGVycm9yKTtcbiAgICAgIGNvbnN0IG5vY2tWMVdhbGxldCA9IG5vY2tCaXRHbyhiaXRnbykuZ2V0KGAvYXBpL3YxL3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YCkucmVwbHkoZXJyb3IpO1xuICAgICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICAgICgpID0+IGdldFdhbGxldChiaXRnbywgcmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkKSxcbiAgICAgICAgRXJyb3IoYGNvdWxkIG5vdCBnZXQgd2FsbGV0ICR7cmVjb3ZlcnlXYWxsZXRJZH0gZnJvbSB2MSBvciB2MjogQXBpUmVzcG9uc2VFcnJvcjogJHtlcnJvcn1gKVxuICAgICAgKTtcbiAgICAgIG5vY2tWMldhbGxldC5kb25lKCk7XG4gICAgICBub2NrVjFXYWxsZXQuZG9uZSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgdjIgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBhIDV4eCBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBlcnJvclJlc3BvbnNlcyA9IFs1MDBdO1xuICAgIGZvciAoY29uc3QgZXJyb3Igb2YgZXJyb3JSZXNwb25zZXMpIHtcbiAgICAgIGNvbnN0IG5vY2tWMldhbGxldCA9IG5vY2tCaXRHbyhiaXRnbylcbiAgICAgICAgLmdldChgL2FwaS92Mi8ke3JlY292ZXJ5Q29pbi5nZXRDaGFpbigpfS93YWxsZXQvJHtyZWNvdmVyeVdhbGxldElkfWApXG4gICAgICAgIC5yZXBseShlcnJvcik7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cygoKSA9PiBnZXRXYWxsZXQoYml0Z28sIHJlY292ZXJ5Q29pbiwgcmVjb3ZlcnlXYWxsZXRJZCksIHtcbiAgICAgICAgbmFtZTogJ0FwaVJlc3BvbnNlRXJyb3InLFxuICAgICAgICBzdGF0dXM6IDUwMCxcbiAgICAgICAgcmVzdWx0OiB7fSxcbiAgICAgICAgaW52YWxpZFRva2VuOiBmYWxzZSxcbiAgICAgICAgbmVlZHNPVFA6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICBub2NrVjJXYWxsZXQuZG9uZSgpO1xuICAgIH1cbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2NvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNjcmlwdFB1YktleSA9IEJ1ZmZlci5mcm9tKCdhOTE0OWYwYmY1MWZhYjRkMzNhYjIxOTc3ZTFiODlmNzc2ZjY0MTYxZWY0Mjg3JywgJ2hleCcpO1xuICBpdCgnc2hvdWxkIGNvbnZlcnQgTS4uLiBQMlNIIGFkZHJlc3MgdG8gMy4uLiBsZWdhY3kgZm9ybWF0JywgZnVuY3Rpb24gKCkge1xuICAgIC8vIFRoZXNlIHR3byBhZGRyZXNzZXMgcmVwcmVzZW50IHRoZSBzYW1lIHVuZGVybHlpbmcgc2NyaXB0IGhhc2g6XG4gICAgLy8gLSBNTlE3emtnTXNhVjY3cnNqQTNKdVA1OVJDNXd4Ulhwd2dFIGlzIHRoZSBMVEMgZm9ybWF0IChzY3JpcHRIYXNoIDB4MzIpXG4gICAgLy8gLSAzR0J5Z3NHUHZUZGZLTWJxNEFLWlpSdTFzUE1XUEVzQmZkIGlzIHRoZSBCVEMgZm9ybWF0IChzY3JpcHRIYXNoIDB4MDUpXG4gICAgLy8gY29uc3QgbHRjQWRkcmVzcyA9ICdNTlE3emtnTXNhVjY3cnNqQTNKdVA1OVJDNXd4Ulhwd2dFJztcbiAgICBjb25zdCBsdGNBZGRyZXNzID0gd2FzbUFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhDb2luKHNjcmlwdFB1YktleSwgJ2x0YycpO1xuICAgIGNvbnN0IHRsdGNBZGRyZXNzID0gd2FzbUFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdFdpdGhDb2luKHNjcmlwdFB1YktleSwgJ3RsdGMnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwobHRjQWRkcmVzcywgJ01OUTd6a2dNc2FWNjdyc2pBM0p1UDU5UkM1d3hSWHB3Z0UnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwodGx0Y0FkZHJlc3MsICdRYjZ3c2Q0ZloyQzZmS3pSTVB5VEc1S2lFODFXNlFDeGhVJyk7XG5cbiAgICBjb25zdCBsZWdhY3lBZGRyZXNzID0gY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdChsdGNBZGRyZXNzLCAnbHRjJyk7XG4gICAgY29uc3QgZXhwZWN0ZWRMdGNMZWdhY3lBZGRyZXNzID0gJzNHQnlnc0dQdlRkZktNYnE0QUtaWlJ1MXNQTVdQRXNCZmQnO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChsZWdhY3lBZGRyZXNzLCBleHBlY3RlZEx0Y0xlZ2FjeUFkZHJlc3MpO1xuXG4gICAgY29uc3QgZXhwZWN0ZWRUbHRjTGVnYWN5QWRkcmVzcyA9ICcyTjdrQmtjQ1JYdjkxWDlFTmpId1NCTnRINWpaZzh5eWU2cic7XG4gICAgY29uc3QgdGx0Y0xlZ2FjeUFkZHJlc3MgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KHRsdGNBZGRyZXNzLCAndGx0YycpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0bHRjTGVnYWN5QWRkcmVzcywgZXhwZWN0ZWRUbHRjTGVnYWN5QWRkcmVzcyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY29udmVydCBNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFIHRvIGxlZ2FjeSBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYWRkcmVzcyA9ICdNRDY4UHNkaGVLeGNZc3JWTHlaUlhnb1NETG5CMU1kVnRFJztcbiAgICBjb25zdCBsZWdhY3lBZGRyZXNzID0gY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdChhZGRyZXNzLCAnbHRjJyk7XG5cbiAgICAvLyBTaG91bGQgc3RhcnQgd2l0aCAnMycgKGxlZ2FjeSBCVEMgUDJTSCBmb3JtYXQpXG4gICAgYXNzZXJ0Lm9rKGxlZ2FjeUFkZHJlc3Muc3RhcnRzV2l0aCgnMycpLCBgRXhwZWN0ZWQgYWRkcmVzcyB0byBzdGFydCB3aXRoICczJywgZ290OiAke2xlZ2FjeUFkZHJlc3N9YCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IG1vZGlmeSBiZWNoMzIgYWRkcmVzc2VzJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJlY2gzMkFkZHJlc3MgPSAnbHRjMXFncmw4enBuZHNrbGFhOXN3Z2Q1dmV2eXhteDV4NjN2Y3JsN2RrNCc7XG4gICAgY29uc3QgcmVzdWx0ID0gY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdChiZWNoMzJBZGRyZXNzLCAnbHRjJyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlc3VsdCwgYmVjaDMyQWRkcmVzcyk7XG4gIH0pO1xufSk7XG4iXX0=
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3NDaGFpblJlY292ZXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3JlY292ZXJ5L2Nyb3NzQ2hhaW5SZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUVqQyw2QkFBOEI7QUFFOUIsOENBQTBDO0FBQzFDLGdEQUE2RTtBQUM3RSw2Q0FBK0I7QUFFL0Isc0NBUXNCO0FBQ3RCLDhDQUFrRTtBQUVsRSxrQ0FVaUI7QUFDakIsaURBQThDO0FBRTlDLGlDQUF3RDtBQUV4RCxTQUFTLFFBQVEsQ0FBQyxDQUFpQjtJQUNqQyxPQUFPLElBQUEsa0JBQU8sRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxJQUFzQixFQUFFLFFBQWdCLEVBQUUsVUFBa0M7SUFDOUYsT0FBTztRQUNMLElBQUEscUJBQVMsR0FBRTthQUNSLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxRQUFRLEVBQUUsQ0FBQzthQUNwRCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsRUFBRSxFQUFFLFFBQVE7WUFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLElBQUksRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekMsQ0FBQzthQUNELE9BQU8sRUFBRTtRQUNaLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3RCLElBQUEscUJBQVMsR0FBRTthQUNSLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUs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QyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLG9DQUFvQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLElBQUEscUNBQStCLEVBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXRFLGlEQUFpRDtRQUNqRCxNQUFNLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsNENBQTRDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUU7UUFDdkMsTUFBTSxhQUFhLEdBQUcsNkNBQTZDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQ0FBK0IsRUFBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgbm9jayA9IHJlcXVpcmUoJ25vY2snKTtcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBnZXRTZWVkIH0gZnJvbSAnQGJpdGdvL3Nkay10ZXN0JztcbmltcG9ydCB7IGFkZHJlc3MgYXMgd2FzbUFkZHJlc3MsIGZpeGVkU2NyaXB0V2FsbGV0IH0gZnJvbSAnQGJpdGdvL3dhc20tdXR4byc7XG5pbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5cbmltcG9ydCB7XG4gIEFic3RyYWN0VXR4b0NvaW4sXG4gIENyb3NzQ2hhaW5SZWNvdmVyeVNpZ25lZCxcbiAgQ3Jvc3NDaGFpblJlY292ZXJ5VW5zaWduZWQsXG4gIGdldFdhbGxldCxcbiAgc3VwcG9ydGVkQ3Jvc3NDaGFpblJlY292ZXJpZXMsXG4gIGdlbmVyYXRlQWRkcmVzcyxcbiAgY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdCxcbn0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGlzTWFpbm5ldENvaW4sIGlzVGVzdG5ldENvaW4gfSBmcm9tICcuLi8uLi8uLi9zcmMvbmFtZXMnO1xuaW1wb3J0IHR5cGUgeyBXYWxsZXRVbnNwZW50IH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Vuc3BlbnQnO1xuaW1wb3J0IHtcbiAgZ2V0Rml4dHVyZSxcbiAga2V5Y2hhaW5zQmFzZTU4LFxuICBLZXljaGFpbkJhc2U1OCxcbiAgYXNzZXJ0RXF1YWxKU09OLFxuICB1dHhvQ29pbnMsXG4gIGdldERlZmF1bHRXYXNtV2FsbGV0S2V5cyxcbiAgZGVmYXVsdEJpdEdvLFxuICBnZXRVdHhvQ29pbixcbiAgY3JlYXRlV2FzbVdhbGxldFVuc3BlbnQsXG59IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgbm9ja0JpdEdvIH0gZnJvbSAnLi4vdXRpbC9ub2NrQml0R28nO1xuXG5pbXBvcnQgeyBXYXNtQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXIgfSBmcm9tICcuL21vY2snO1xuXG5mdW5jdGlvbiBnZXRLZXlJZChrOiBLZXljaGFpbkJhc2U1OCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTZWVkKGsucHViKS50b1N0cmluZygnaGV4Jyk7XG59XG5cbmZ1bmN0aW9uIG5vY2tXYWxsZXQoY29pbjogQWJzdHJhY3RVdHhvQ29pbiwgd2FsbGV0SWQ6IHN0cmluZywgd2FsbGV0S2V5czogVHJpcGxlPEtleWNoYWluQmFzZTU4Pik6IG5vY2suU2NvcGVbXSB7XG4gIHJldHVybiBbXG4gICAgbm9ja0JpdEdvKClcbiAgICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L3dhbGxldC8ke3dhbGxldElkfWApXG4gICAgICAucmVwbHkoMjAwLCB7XG4gICAgICAgIGlkOiB3YWxsZXRJZCxcbiAgICAgICAgY29pbjogY29pbi5nZXRDaGFpbigpLFxuICAgICAgICBsYWJlbDogJ2Nyb3NzQ2hhaW5SZWNvdmVyeScsXG4gICAgICAgIGtleXM6IHdhbGxldEtleXMubWFwKChrKSA9PiBnZXRLZXlJZChrKSksXG4gICAgICB9KVxuICAgICAgLnBlcnNpc3QoKSxcbiAgICAuLi53YWxsZXRLZXlzLm1hcCgoaykgPT5cbiAgICAgIG5vY2tCaXRHbygpXG4gICAgICAgIC5nZXQoYC9hcGkvdjIvJHtjb2luLmdldENoYWluKCl9L2tleS8ke2dldEtleUlkKGspfWApXG4gICAgICAgIC5yZXBseSgyMDAsIGspXG4gICAgICAgIC5wZXJzaXN0KClcbiAgICApLFxuICBdO1xufVxuXG50eXBlIEFkZHJlc3MgPSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgY2hhaW46IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIG5vY2tXYWxsZXRBZGRyZXNzKGNvaW46IEFic3RyYWN0VXR4b0NvaW4sIHdhbGxldElkOiBzdHJpbmcsIGFkZHJlc3M6IEFkZHJlc3MpOiBub2NrLlNjb3BlIHtcbiAgcmV0dXJuIG5vY2tCaXRHbygpXG4gICAgLmdldChgL2FwaS92Mi8ke2NvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7d2FsbGV0SWR9L2FkZHJlc3MvJHthZGRyZXNzLmFkZHJlc3N9YClcbiAgICAucmVwbHkoMjAwLCB7XG4gICAgICBhZGRyZXNzOiBhZGRyZXNzLmFkZHJlc3MsXG4gICAgICBjaGFpbjogYWRkcmVzcy5jaGFpbixcbiAgICAgIGluZGV4OiBhZGRyZXNzLmluZGV4LFxuICAgICAgY29pbjogY29pbi5nZXRDaGFpbigpLFxuICAgICAgd2FsbGV0OiB3YWxsZXRJZCxcbiAgICB9KVxuICAgIC5wZXJzaXN0KCk7XG59XG5cbi8qKlxuICogU2V0dXAgdGVzdCBmb3IgY3Jvc3MtY2hhaW4gcmVjb3ZlcnkuXG4gKlxuICogVXNlcnMgY2FuIHJlY2VpdmUgZGVwb3NpdHMgb24gd2FsbGV0IGFkZHJlc3NlcyB0aGF0IGFyZSBvbiBhIGRpZmZlcmVudCBjaGFpbi5cbiAqXG4gKiBGb3IgaW5zdGFuY2UsIGEgdXNlciBjYW4gcmVjZWl2ZSBsaXRlY29pbiBvbiBhIGJpdGNvaW4gd2FsbGV0LlxuICogVGhpcyBtZWFucyB0aGF0IHRoZSBsaXRlY29pbiBibG9ja2NoYWluIGhhcyBhIHRyYW5zYWN0aW9uIHdpdGggb3V0cHV0cyB0aGF0IGFyZSBzcGVuZGFibGVcbiAqIHdpdGgga2V5cyB0aGF0IHdlcmUgb3JpZ2luYWxseSBjcmVhdGVkIGZvciBhIEJpdEdvIEJUQyB3YWxsZXQuXG4gKiBJbiB0aGlzIGV4YW1wbGUsIExUQyBpcyB0aGUgXCJzb3VyY2UgY29pblwiIGFuZCBCVEMgaXMgdGhlIFwicmVjb3ZlcnkgY29pblwiXG4gKiBJbiBjYXNlcyBsaWtlIHRoZXNlIHdlIG11c3QgdXNlIGNvbnN0cnVjdCBhIHRyYW5zYWN0aW9uIGZvciBsaXRlY29pbiBuZXR3b3JrIHVzaW5nIGtleXMgb2YgdGhlXG4gKiBiaXRjb2luIHdhbGxldC5cbiAqXG4gKiBAcGFyYW0gc291cmNlQ29pbiAtIHRoZSBjb2luIHRvIGNvbnN0cnVjdCB0aGUgdHJhbnNhY3Rpb24gZm9yXG4gKiBAcGFyYW0gcmVjb3ZlcnlDb2luIC0gdGhlIGNvaW4gdGhlIHJlY2VpdmluZyB3YWxsZXQgd2FzIHNldCB1cCBmb3JcbiAqL1xuLy8gR2V0IHdhc20gd2FsbGV0IGtleXMgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb25cbmNvbnN0IHsgd2FsbGV0S2V5czogd2FzbVdhbGxldEtleXMsIHhwcml2cyB9ID0gZ2V0RGVmYXVsdFdhc21XYWxsZXRLZXlzKCk7XG5cbmZ1bmN0aW9uIHJ1bjxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50ID0gbnVtYmVyPihzb3VyY2VDb2luOiBBYnN0cmFjdFV0eG9Db2luLCByZWNvdmVyeUNvaW46IEFic3RyYWN0VXR4b0NvaW4pIHtcbiAgZGVzY3JpYmUoYENyb3NzLUNoYWluIFJlY292ZXJ5IFtzb3VyY2VDb2luPSR7c291cmNlQ29pbi5nZXRDaGFpbigpfSByZWNvdmVyeUNvaW49JHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX1dYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHJlY292ZXJ5V2FsbGV0SWQgPSAnNWFiYWNlYmUyOGQ3MmZiZDA3ZTBiOGNiYmEwZmYzOWUnO1xuICAgIC8vIHRoZSBhZGRyZXNzIHRoZSBhY2NpZGVudGFsIGRlcG9zaXQgd2VudCB0bywgaW4gYm90aCBzb3VyY2VDb2luIGFuZCBhZGRyZXNzQ29pbiBmb3JtYXRzXG4gICAgY29uc3QgW2RlcG9zaXRBZGRyZXNzU291cmNlQ29pbiwgZGVwb3NpdEFkZHJlc3NSZWNvdmVyeUNvaW5dID0gW3NvdXJjZUNvaW4sIHJlY292ZXJ5Q29pbl0ubWFwKChjb2luKSA9PiAoe1xuICAgICAgYWRkcmVzczogZ2VuZXJhdGVBZGRyZXNzKGNvaW4ubmFtZSwgeyBrZXljaGFpbnM6IGtleWNoYWluc0Jhc2U1OCwgY2hhaW46IDAsIGluZGV4OiAwIH0pLFxuICAgICAgY2hhaW46IDAsXG4gICAgICBpbmRleDogMCxcbiAgICB9KSk7XG4gICAgY29uc3QgY2hhaW4gPSAwO1xuICAgIGNvbnN0IGluZGV4ID0gMTtcbiAgICAvLyB0aGUgYWRkcmVzcyB3aGVyZSB3ZSB3YW50IHRvIHJlY292ZXIgb3VyIGZ1bmRzIHRvXG4gICAgY29uc3QgcmVjb3ZlcnlBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKHNvdXJjZUNvaW4ubmFtZSwge1xuICAgICAga2V5Y2hhaW5zOiBrZXljaGFpbnNCYXNlNTgsXG4gICAgICBjaGFpbixcbiAgICAgIGluZGV4LFxuICAgIH0pO1xuICAgIGNvbnN0IG5vY2tzOiBub2NrLlNjb3BlW10gPSBbXTtcblxuICAgIC8vIENyZWF0ZSByZWNvdmVyeSB1bnNwZW50IHVzaW5nIHdhc20tdXR4byAobm8gdXR4b2xpYiBkZXBlbmRlbmN5KVxuICAgIGZ1bmN0aW9uIGdldFJlY292ZXJ5VW5zcGVudHMoKTogV2FsbGV0VW5zcGVudDxUTnVtYmVyPltdIHtcbiAgICAgIGNvbnN0IGRlcG9zaXRWYWx1ZSA9IChzb3VyY2VDb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnID8gQmlnSW50KDFlOCkgOiAxZTgpIGFzIFROdW1iZXI7XG4gICAgICByZXR1cm4gW1xuICAgICAgICBjcmVhdGVXYXNtV2FsbGV0VW5zcGVudDxUTnVtYmVyPihkZXBvc2l0QWRkcmVzc1NvdXJjZUNvaW4uYWRkcmVzcywgY2hhaW4sIGluZGV4LCBkZXBvc2l0VmFsdWUsIHNvdXJjZUNvaW4ubmFtZSksXG4gICAgICBdO1xuICAgIH1cblxuICAgIGJlZm9yZSgnc2V0dXAgbm9ja3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBub2Nrcy5wdXNoKC4uLm5vY2tXYWxsZXQocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBrZXljaGFpbnNCYXNlNTgpKTtcbiAgICAgIG5vY2tzLnB1c2gobm9ja1dhbGxldEFkZHJlc3MocmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkLCBkZXBvc2l0QWRkcmVzc1JlY292ZXJ5Q29pbikpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9ja3MuZm9yRWFjaCgobikgPT4gbi5kb25lKCkpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgbm9jay5jbGVhbkFsbCgpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIG1hdGNoRml4dHVyZShcbiAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgIHJlY292ZXJ5OiBDcm9zc0NoYWluUmVjb3ZlcnlTaWduZWQ8VE51bWJlcj4gfCBDcm9zc0NoYWluUmVjb3ZlcnlVbnNpZ25lZDxUTnVtYmVyPlxuICAgICkge1xuICAgICAgbGV0IHJlY292ZXJ5T2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsgLi4ucmVjb3ZlcnkgfTtcbiAgICAgIGlmIChzb3VyY2VDb2luLmFtb3VudFR5cGUgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIHJlY292ZXJ5T2JqID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShyZWNvdmVyeU9iaiwgKGssIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBhc3NlcnRFcXVhbEpTT04oXG4gICAgICAgIHJlY292ZXJ5T2JqLFxuICAgICAgICBhd2FpdCBnZXRGaXh0dXJlKHNvdXJjZUNvaW4sIGByZWNvdmVyeS9jcm9zc0NoYWluUmVjb3ZlcnktJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0tJHtuYW1lfWAsIHJlY292ZXJ5T2JqKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZShwc2J0SGV4OiBzdHJpbmcpIHtcbiAgICAgIC8vIFBhcnNlIHVzaW5nIHdhc20tdXR4byBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvblxuICAgICAgY29uc3Qgd2FzbVBzYnQgPSBmaXhlZFNjcmlwdFdhbGxldC5CaXRHb1BzYnQuZnJvbUJ5dGVzKEJ1ZmZlci5mcm9tKHBzYnRIZXgsICdoZXgnKSwgc291cmNlQ29pbi5uYW1lKTtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHdhc21Qc2J0LnBhcnNlVHJhbnNhY3Rpb25XaXRoV2FsbGV0S2V5cyh3YXNtV2FsbGV0S2V5cywgeyByZXBsYXlQcm90ZWN0aW9uOiB7IHB1YmxpY0tleXM6IFtdIH0gfSk7XG4gICAgICBjb25zdCB1bnNwZW50cyA9IGdldFJlY292ZXJ5VW5zcGVudHMoKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChwYXJzZWQuaW5wdXRzLmxlbmd0aCwgdW5zcGVudHMubGVuZ3RoKTtcbiAgICAgIC8vIFZlcmlmeSB1c2VyIGtleSBoYXMgc2lnbmVkIGVhY2ggaW5wdXQgKHNhbWUgcGF0dGVybiBhcyBiYWNrdXBLZXlSZWNvdmVyeSB0ZXN0KVxuICAgICAgcGFyc2VkLmlucHV0cy5mb3JFYWNoKChfLCBpKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXJTaWduZWQgPSB3YXNtUHNidC52ZXJpZnlTaWduYXR1cmUoaSwgeHByaXZzWzBdKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKHVzZXJTaWduZWQsIHRydWUsIGBJbnB1dCAke2l9IHNob3VsZCBiZSBzaWduZWQgYnkgdXNlciBrZXlgKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0KCdzaG91bGQgdGVzdCBzaWduZWQgY3Jvc3MgY2hhaW4gcmVjb3ZlcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBkZXBvc2l0VW5zcGVudCA9IGdldFJlY292ZXJ5VW5zcGVudHMoKVswXTtcbiAgICAgIC8vIFBhcnNlIHR4aWQgZnJvbSB0aGUgdW5zcGVudCBpZCAoZm9ybWF0OiB0eGlkOnZvdXQpXG4gICAgICBjb25zdCBkZXBvc2l0VHhpZCA9IGRlcG9zaXRVbnNwZW50LmlkLnNwbGl0KCc6JylbMF07XG4gICAgICAvLyBVc2UgdGhlIGRlcG9zaXQgYWRkcmVzcyBhcyB0aGUgaW5wdXQgYWRkcmVzcyAoc2ltdWxhdGluZyBhIHAyc2ggaW5wdXQpXG4gICAgICBjb25zdCBpbnB1dEFkZHJlc3MgPSBnZW5lcmF0ZUFkZHJlc3Moc291cmNlQ29pbi5uYW1lLCB7IGtleWNoYWluczoga2V5Y2hhaW5zQmFzZTU4LCBjaGFpbjogMCwgaW5kZXg6IDIgfSk7XG4gICAgICBjb25zdCBnZXRSZWNvdmVyeVByb3ZpZGVyU3R1YiA9IHNpbm9uXG4gICAgICAgIC5zdHViKEFic3RyYWN0VXR4b0NvaW4ucHJvdG90eXBlLCAnZ2V0UmVjb3ZlcnlQcm92aWRlcicpXG4gICAgICAgIC5yZXR1cm5zKG5ldyBXYXNtQ3Jvc3NDaGFpblJlY292ZXJ5UHJvdmlkZXI8VE51bWJlcj4oc291cmNlQ29pbiwgZGVwb3NpdFVuc3BlbnQsIFtpbnB1dEFkZHJlc3NdKSk7XG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIHJlY292ZXJ5Q29pbixcbiAgICAgICAgdHhpZDogZGVwb3NpdFR4aWQsXG4gICAgICAgIHJlY292ZXJ5QWRkcmVzcyxcbiAgICAgICAgd2FsbGV0OiByZWNvdmVyeVdhbGxldElkLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHNpZ25lZFJlY292ZXJ5ID0gKGF3YWl0IHNvdXJjZUNvaW4ucmVjb3ZlckZyb21Xcm9uZ0NoYWluPFROdW1iZXI+KHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICB4cHJ2OiBrZXljaGFpbnNCYXNlNThbMF0ucHJ2LFxuICAgICAgfSkpIGFzIENyb3NzQ2hhaW5SZWNvdmVyeVNpZ25lZDxUTnVtYmVyPjtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRSZWNvdmVyeVByb3ZpZGVyU3R1Yi5jYWxsQ291bnQsIDEpO1xuXG4gICAgICAvLyBWZXJpZnkgZml4dHVyZSBtYXRjaFxuICAgICAgYXdhaXQgbWF0Y2hGaXh0dXJlKCdzaWduZWQnLCBzaWduZWRSZWNvdmVyeSk7XG5cbiAgICAgIC8vIFZlcmlmeSBQU0JUIGhhcyB2YWxpZCBzaWduYXR1cmVzICh1c2VyIGtleSBzaWduZWQpXG4gICAgICBjaGVja1JlY292ZXJ5UHNidFNpZ25hdHVyZShzaWduZWRSZWNvdmVyeS50eEhleCBhcyBzdHJpbmcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0ZXN0IHVuc2lnbmVkIGNyb3NzIGNoYWluIHJlY292ZXJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVwb3NpdFVuc3BlbnQgPSBnZXRSZWNvdmVyeVVuc3BlbnRzKClbMF07XG4gICAgICAvLyBQYXJzZSB0eGlkIGZyb20gdGhlIHVuc3BlbnQgaWQgKGZvcm1hdDogdHhpZDp2b3V0KVxuICAgICAgY29uc3QgZGVwb3NpdFR4aWQgPSBkZXBvc2l0VW5zcGVudC5pZC5zcGxpdCgnOicpWzBdO1xuICAgICAgLy8gVXNlIHRoZSBkZXBvc2l0IGFkZHJlc3MgYXMgdGhlIGlucHV0IGFkZHJlc3MgKHNpbXVsYXRpbmcgYSBwMnNoIGlucHV0KVxuICAgICAgY29uc3QgaW5wdXRBZGRyZXNzID0gZ2VuZXJhdGVBZGRyZXNzKHNvdXJjZUNvaW4ubmFtZSwgeyBrZXljaGFpbnM6IGtleWNoYWluc0Jhc2U1OCwgY2hhaW46IDAsIGluZGV4OiAyIH0pO1xuICAgICAgY29uc3QgZ2V0UmVjb3ZlcnlQcm92aWRlclN0dWIgPSBzaW5vblxuICAgICAgICAuc3R1YihBYnN0cmFjdFV0eG9Db2luLnByb3RvdHlwZSwgJ2dldFJlY292ZXJ5UHJvdmlkZXInKVxuICAgICAgICAucmV0dXJucyhuZXcgV2FzbUNyb3NzQ2hhaW5SZWNvdmVyeVByb3ZpZGVyPFROdW1iZXI+KHNvdXJjZUNvaW4sIGRlcG9zaXRVbnNwZW50LCBbaW5wdXRBZGRyZXNzXSkpO1xuICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICByZWNvdmVyeUNvaW4sXG4gICAgICAgIHR4aWQ6IGRlcG9zaXRUeGlkLFxuICAgICAgICByZWNvdmVyeUFkZHJlc3MsXG4gICAgICAgIHdhbGxldDogcmVjb3ZlcnlXYWxsZXRJZCxcbiAgICAgIH07XG4gICAgICBjb25zdCB1bnNpZ25lZFJlY292ZXJ5ID0gKGF3YWl0IHNvdXJjZUNvaW4ucmVjb3ZlckZyb21Xcm9uZ0NoYWluPFROdW1iZXI+KHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICBzaWduZWQ6IGZhbHNlLFxuICAgICAgfSkpIGFzIENyb3NzQ2hhaW5SZWNvdmVyeVVuc2lnbmVkPFROdW1iZXI+O1xuICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGdldFJlY292ZXJ5UHJvdmlkZXJTdHViLmNhbGxDb3VudCwgMSk7XG5cbiAgICAgIC8vIFZlcmlmeSBmaXh0dXJlIG1hdGNoXG4gICAgICBhd2FpdCBtYXRjaEZpeHR1cmUoJ3Vuc2lnbmVkJywgdW5zaWduZWRSZWNvdmVyeSk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdW5zaWduZWQgUFNCVCBjYW4gYmUgc2lnbmVkXG4gICAgICBjb25zdCBzaWduZWRUeCA9IGF3YWl0IHNvdXJjZUNvaW4uc2lnblRyYW5zYWN0aW9uPFROdW1iZXI+KHtcbiAgICAgICAgdHhQcmVidWlsZDogdW5zaWduZWRSZWNvdmVyeSxcbiAgICAgICAgcHJ2OiBrZXljaGFpbnNCYXNlNThbMF0ucHJ2LFxuICAgICAgICBwdWJzOiBrZXljaGFpbnNCYXNlNTgubWFwKChrKSA9PiBrLnB1YikgYXMgVHJpcGxlPHN0cmluZz4sXG4gICAgICB9KTtcbiAgICAgIGNoZWNrUmVjb3ZlcnlQc2J0U2lnbmF0dXJlKChzaWduZWRUeCBhcyB7IHR4SGV4OiBzdHJpbmcgfSkudHhIZXgpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNTdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3Zlcnkoc291cmNlQ29pbjogQWJzdHJhY3RVdHhvQ29pbiwgcmVjb3ZlcnlDb2luOiBBYnN0cmFjdFV0eG9Db2luKTogYm9vbGVhbiB7XG4gIHJldHVybiBzdXBwb3J0ZWRDcm9zc0NoYWluUmVjb3Zlcmllc1tzb3VyY2VDb2luLmdldEZhbWlseSgpXT8uaW5jbHVkZXMocmVjb3ZlcnlDb2luLmdldEZhbWlseSgpKTtcbn1cblxudXR4b0NvaW5zLmZvckVhY2goKGNvaW4pID0+IHtcbiAgdXR4b0NvaW5zXG4gICAgLmZpbHRlcihcbiAgICAgIChvdGhlckNvaW4pID0+XG4gICAgICAgIGNvaW4gIT09IG90aGVyQ29pbiAmJlxuICAgICAgICBpc1N1cHBvcnRlZENyb3NzQ2hhaW5SZWNvdmVyeShjb2luLCBvdGhlckNvaW4pICYmXG4gICAgICAgICgoaXNNYWlubmV0Q29pbihjb2luLm5hbWUpICYmIGlzTWFpbm5ldENvaW4ob3RoZXJDb2luLm5hbWUpKSB8fFxuICAgICAgICAgIChpc1Rlc3RuZXRDb2luKGNvaW4ubmFtZSkgJiYgaXNUZXN0bmV0Q29pbihvdGhlckNvaW4ubmFtZSkpKVxuICAgIClcbiAgICAuZm9yRWFjaCgob3RoZXJDb2luKSA9PiB7XG4gICAgICBpZiAoY29pbi5hbW91bnRUeXBlID09PSAnYmlnaW50Jykge1xuICAgICAgICBydW48YmlnaW50Pihjb2luLCBvdGhlckNvaW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcnVuKGNvaW4sIG90aGVyQ29pbik7XG4gICAgICB9XG4gICAgfSk7XG59KTtcblxuZGVzY3JpYmUoYENyb3NzLUNoYWluIFJlY292ZXJ5IGdldFdhbGxldGAsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYml0Z28gPSBkZWZhdWx0Qml0R287XG4gIGNvbnN0IHJlY292ZXJ5Q29pbiA9IGdldFV0eG9Db2luKCdidGMnKTtcbiAgY29uc3QgcmVjb3ZlcnlXYWxsZXRJZCA9ICc1YWJhY2ViZTI4ZDcyZmJkMDdlMGI4Y2JiYTBmZjM5ZSc7XG5cbiAgaXQoJ3Nob3VsZCBzZWFyY2ggdjEgd2FsbGV0cyBpZiB0aGUgdjIgZW5kcG9pbnQgcmVzcG9uZHMgd2l0aCBhIDR4eCBlcnJvcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBlcnJvclJlc3BvbnNlcyA9IFs0MDAsIDQwNF07XG5cbiAgICBmb3IgKGNvbnN0IGVycm9yIG9mIGVycm9yUmVzcG9uc2VzKSB7XG4gICAgICBjb25zdCBub2NrVjJXYWxsZXQgPSBub2NrQml0R28oYml0Z28pXG4gICAgICAgIC5nZXQoYC9hcGkvdjIvJHtyZWNvdmVyeUNvaW4uZ2V0Q2hhaW4oKX0vd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKVxuICAgICAgICAucmVwbHkoZXJyb3IpO1xuICAgICAgY29uc3Qgbm9ja1YxV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKS5nZXQoYC9hcGkvdjEvd2FsbGV0LyR7cmVjb3ZlcnlXYWxsZXRJZH1gKS5yZXBseShlcnJvcik7XG4gICAgICBhd2FpdCBhc3NlcnQucmVqZWN0cyhcbiAgICAgICAgKCkgPT4gZ2V0V2FsbGV0KGJpdGdvLCByZWNvdmVyeUNvaW4sIHJlY292ZXJ5V2FsbGV0SWQpLFxuICAgICAgICBFcnJvcihgY291bGQgbm90IGdldCB3YWxsZXQgJHtyZWNvdmVyeVdhbGxldElkfSBmcm9tIHYxIG9yIHYyOiBBcGlSZXNwb25zZUVycm9yOiAke2Vycm9yfWApXG4gICAgICApO1xuICAgICAgbm9ja1YyV2FsbGV0LmRvbmUoKTtcbiAgICAgIG5vY2tWMVdhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRoZSB2MiBlbmRwb2ludCByZXNwb25kcyB3aXRoIGEgNXh4IGVycm9yJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGVycm9yUmVzcG9uc2VzID0gWzUwMF07XG4gICAgZm9yIChjb25zdCBlcnJvciBvZiBlcnJvclJlc3BvbnNlcykge1xuICAgICAgY29uc3Qgbm9ja1YyV2FsbGV0ID0gbm9ja0JpdEdvKGJpdGdvKVxuICAgICAgICAuZ2V0KGAvYXBpL3YyLyR7cmVjb3ZlcnlDb2luLmdldENoYWluKCl9L3dhbGxldC8ke3JlY292ZXJ5V2FsbGV0SWR9YClcbiAgICAgICAgLnJlcGx5KGVycm9yKTtcbiAgICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKCgpID0+IGdldFdhbGxldChiaXRnbywgcmVjb3ZlcnlDb2luLCByZWNvdmVyeVdhbGxldElkKSwge1xuICAgICAgICBuYW1lOiAnQXBpUmVzcG9uc2VFcnJvcicsXG4gICAgICAgIHN0YXR1czogNTAwLFxuICAgICAgICByZXN1bHQ6IHt9LFxuICAgICAgICBpbnZhbGlkVG9rZW46IGZhbHNlLFxuICAgICAgICBuZWVkc09UUDogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIG5vY2tWMldhbGxldC5kb25lKCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnY29udmVydEx0Y0FkZHJlc3NUb0xlZ2FjeUZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3Qgc2NyaXB0UHViS2V5ID0gQnVmZmVyLmZyb20oJ2E5MTQ5ZjBiZjUxZmFiNGQzM2FiMjE5NzdlMWI4OWY3NzZmNjQxNjFlZjQyODcnLCAnaGV4Jyk7XG4gIGl0KCdzaG91bGQgY29udmVydCBNLi4uIFAyU0ggYWRkcmVzcyB0byAzLi4uIGxlZ2FjeSBmb3JtYXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgLy8gVGhlc2UgdHdvIGFkZHJlc3NlcyByZXByZXNlbnQgdGhlIHNhbWUgdW5kZXJseWluZyBzY3JpcHQgaGFzaDpcbiAgICAvLyAtIE1OUTd6a2dNc2FWNjdyc2pBM0p1UDU5UkM1d3hSWHB3Z0UgaXMgdGhlIExUQyBmb3JtYXQgKHNjcmlwdEhhc2ggMHgzMilcbiAgICAvLyAtIDNHQnlnc0dQdlRkZktNYnE0QUtaWlJ1MXNQTVdQRXNCZmQgaXMgdGhlIEJUQyBmb3JtYXQgKHNjcmlwdEhhc2ggMHgwNSlcbiAgICAvLyBjb25zdCBsdGNBZGRyZXNzID0gJ01OUTd6a2dNc2FWNjdyc2pBM0p1UDU5UkM1d3hSWHB3Z0UnO1xuICAgIGNvbnN0IGx0Y0FkZHJlc3MgPSB3YXNtQWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0V2l0aENvaW4oc2NyaXB0UHViS2V5LCAnbHRjJyk7XG4gICAgY29uc3QgdGx0Y0FkZHJlc3MgPSB3YXNtQWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0V2l0aENvaW4oc2NyaXB0UHViS2V5LCAndGx0YycpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChsdGNBZGRyZXNzLCAnTU5RN3prZ01zYVY2N3JzakEzSnVQNTlSQzV3eFJYcHdnRScpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0bHRjQWRkcmVzcywgJ1FiNndzZDRmWjJDNmZLelJNUHlURzVLaUU4MVc2UUN4aFUnKTtcblxuICAgIGNvbnN0IGxlZ2FjeUFkZHJlc3MgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KGx0Y0FkZHJlc3MsICdsdGMnKTtcbiAgICBjb25zdCBleHBlY3RlZEx0Y0xlZ2FjeUFkZHJlc3MgPSAnM0dCeWdzR1B2VGRmS01icTRBS1paUnUxc1BNV1BFc0JmZCc7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGxlZ2FjeUFkZHJlc3MsIGV4cGVjdGVkTHRjTGVnYWN5QWRkcmVzcyk7XG5cbiAgICBjb25zdCBleHBlY3RlZFRsdGNMZWdhY3lBZGRyZXNzID0gJzJON2tCa2NDUlh2OTFYOUVOakh3U0JOdEg1alpnOHl5ZTZyJztcbiAgICBjb25zdCB0bHRjTGVnYWN5QWRkcmVzcyA9IGNvbnZlcnRMdGNBZGRyZXNzVG9MZWdhY3lGb3JtYXQodGx0Y0FkZHJlc3MsICd0bHRjJyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHRsdGNMZWdhY3lBZGRyZXNzLCBleHBlY3RlZFRsdGNMZWdhY3lBZGRyZXNzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjb252ZXJ0IE1ENjhQc2RoZUt4Y1lzclZMeVpSWGdvU0RMbkIxTWRWdEUgdG8gbGVnYWN5IGZvcm1hdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBhZGRyZXNzID0gJ01ENjhQc2RoZUt4Y1lzclZMeVpSWGdvU0RMbkIxTWRWdEUnO1xuICAgIGNvbnN0IGxlZ2FjeUFkZHJlc3MgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KGFkZHJlc3MsICdsdGMnKTtcblxuICAgIC8vIFNob3VsZCBzdGFydCB3aXRoICczJyAobGVnYWN5IEJUQyBQMlNIIGZvcm1hdClcbiAgICBhc3NlcnQub2sobGVnYWN5QWRkcmVzcy5zdGFydHNXaXRoKCczJyksIGBFeHBlY3RlZCBhZGRyZXNzIHRvIHN0YXJ0IHdpdGggJzMnLCBnb3Q6ICR7bGVnYWN5QWRkcmVzc31gKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgbW9kaWZ5IGJlY2gzMiBhZGRyZXNzZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYmVjaDMyQWRkcmVzcyA9ICdsdGMxcWdybDh6cG5kc2tsYWE5c3dnZDV2ZXZ5eG14NXg2M3Zjcmw3ZGs0JztcbiAgICBjb25zdCByZXN1bHQgPSBjb252ZXJ0THRjQWRkcmVzc1RvTGVnYWN5Rm9ybWF0KGJlY2gzMkFkZHJlc3MsICdsdGMnKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwocmVzdWx0LCBiZWNoMzJBZGRyZXNzKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,2 +1,2 @@
1
- import 'should';
1
+ export {};
2
2
  //# sourceMappingURL=formatBackupKeyRecoveryResult.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatBackupKeyRecoveryResult.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/formatBackupKeyRecoveryResult.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC"}
1
+ {"version":3,"file":"formatBackupKeyRecoveryResult.d.ts","sourceRoot":"","sources":["../../../../../test/unit/recovery/formatBackupKeyRecoveryResult.ts"],"names":[],"mappings":""}