@bitgo/sdk-core 28.10.0 → 28.12.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 (108) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +1 -0
  3. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +1 -0
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  6. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +1 -0
  7. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -1
  8. package/dist/src/account-lib/baseCoin/enum.d.ts +3 -1
  9. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  10. package/dist/src/account-lib/baseCoin/enum.js +5 -1
  11. package/dist/src/account-lib/baseCoin/iface.d.ts +1 -0
  12. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  13. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -0
  14. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  15. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +1 -0
  16. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  17. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +1 -0
  18. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  19. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +1 -0
  20. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  21. package/dist/src/account-lib/util/crypto.d.ts +1 -0
  22. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  23. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +1 -0
  24. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
  25. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +1 -0
  26. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  27. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +1 -0
  28. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  29. package/dist/src/bitgo/bip32util.d.ts +1 -0
  30. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  31. package/dist/src/bitgo/bitcoin.d.ts +1 -0
  32. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  33. package/dist/src/bitgo/ecdh.d.ts +1 -0
  34. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  35. package/dist/src/bitgo/enterprise/enterprise.d.ts +1 -0
  36. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  37. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +1 -0
  38. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  39. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +1 -0
  40. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  41. package/dist/src/bitgo/keychain/iKeychains.d.ts +3 -0
  42. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  43. package/dist/src/bitgo/keychain/iKeychains.js +1 -1
  44. package/dist/src/bitgo/keychain/keychains.d.ts +1 -0
  45. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  46. package/dist/src/bitgo/legacyBitcoin.d.ts +1 -0
  47. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  48. package/dist/src/bitgo/lightning/lightningUtils.d.ts +1 -0
  49. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +1 -1
  50. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +1 -0
  51. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -1
  52. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +1 -0
  53. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -1
  54. package/dist/src/bitgo/trading/network/utils.d.ts +1 -0
  55. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -1
  56. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +27 -0
  57. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  58. package/dist/src/bitgo/tss/bitgoPubKeys.js +61 -0
  59. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +1 -0
  60. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  61. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +1 -0
  62. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  63. package/dist/src/bitgo/tss/index.d.ts +1 -0
  64. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  65. package/dist/src/bitgo/tss/index.js +3 -2
  66. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  67. package/dist/src/bitgo/utils/mpcUtils.js +6 -1
  68. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +8 -0
  69. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  70. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +61 -1
  71. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +4 -0
  72. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  73. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  74. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +0 -5
  75. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -1
  76. package/dist/src/bitgo/utils/tss/ecdsa/base.js +2 -16
  77. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +1 -0
  78. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  79. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +1 -0
  80. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -1
  81. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +9 -7
  82. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +1 -0
  83. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  84. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +1 -0
  85. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  86. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +5 -5
  87. package/dist/src/bitgo/wallet/iWallet.d.ts +6 -0
  88. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  89. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  90. package/dist/src/bitgo/wallet/wallet.d.ts +12 -1
  91. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  92. package/dist/src/bitgo/wallet/wallet.js +29 -1
  93. package/dist/src/bitgo/wallet/wallets.d.ts +1 -0
  94. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  95. package/dist/src/bitgo/wallet/wallets.js +19 -10
  96. package/dist/src/coins/fiateur.d.ts +1 -0
  97. package/dist/src/coins/fiateur.d.ts.map +1 -1
  98. package/dist/src/coins/fiatgbp.d.ts +1 -0
  99. package/dist/src/coins/fiatgbp.d.ts.map +1 -1
  100. package/dist/src/coins/fiatusd.d.ts +1 -0
  101. package/dist/src/coins/fiatusd.d.ts.map +1 -1
  102. package/dist/src/coins/ofc.d.ts +1 -0
  103. package/dist/src/coins/ofc.d.ts.map +1 -1
  104. package/dist/src/coins/susd.d.ts +1 -0
  105. package/dist/src/coins/susd.d.ts.map +1 -1
  106. package/dist/test/unit/bitgo/lightning/lightningUtils.js +3 -14
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ofc.d.ts","sourceRoot":"","sources":["../../../src/coins/ofc.ts"],"names":[],"mappings":";AAKA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,KAAK,CAAC;AAEb,qBAAa,GAAI,SAAQ,QAAQ;gBACnB,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD,QAAQ;IAIR;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAevC,SAAS;IAIT,WAAW;IAIX;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAInD;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,aAAa,IAAI,MAAM,GAAG,MAAM;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGlF"}
1
+ {"version":3,"file":"ofc.d.ts","sourceRoot":"","sources":["../../../src/coins/ofc.ts"],"names":[],"mappings":";;AAKA,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,KAAK,CAAC;AAEb,qBAAa,GAAI,SAAQ,QAAQ;gBACnB,KAAK,EAAE,SAAS;IAI5B,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD,QAAQ;IAIR;;;;;OAKG;IACH,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAevC,SAAS;IAIT,WAAW;IAIX;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;IAInD;;;;;OAKG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQhC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,aAAa,IAAI,MAAM,GAAG,MAAM;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGlF"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @prettier
4
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"susd.d.ts","sourceRoot":"","sources":["../../../src/coins/susd.ts"],"names":[],"mappings":";AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,KAAK,CAAC;AAEb,qBAAa,IAAK,SAAQ,QAAQ;IAChC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAI7D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGvF"}
1
+ {"version":3,"file":"susd.d.ts","sourceRoot":"","sources":["../../../src/coins/susd.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,OAAO,EAEP,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,KAAK,CAAC;AAEb,qBAAa,IAAK,SAAQ,QAAQ;IAChC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ;IAIjD;;;OAGG;IACH,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO;IAI7D,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAIvC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI1B,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE,eAAe,CAAC,MAAM,GAAE,sBAA2B,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGvF"}
@@ -27,13 +27,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  const assert_1 = __importDefault(require("assert"));
30
- const sinon = __importStar(require("sinon"));
31
30
  const macaroon_1 = require("macaroon");
32
- const statics = __importStar(require("@bitgo/statics"));
33
31
  const utxolib = __importStar(require("@bitgo/utxo-lib"));
34
32
  const createWatchOnlyFixture_1 = require("./createWatchOnlyFixture");
35
33
  const lightningUtils_1 = require("./../../../../src/bitgo/lightning/lightningUtils");
36
- const lightningUtils = __importStar(require("../../../../src/bitgo/lightning/lightningUtils"));
37
34
  const src_1 = require("../../../../src");
38
35
  describe('lightning utils', function () {
39
36
  [
@@ -88,18 +85,10 @@ describe('lightning utils', function () {
88
85
  });
89
86
  it(`deriveLightningServiceSharedSecret`, function () {
90
87
  const userAuthXprv = 'xprv9s21ZrQH143K4NPkV8riiTnFf72MRyQDVHMmmpekGF1w5QkS2MfTei9KXYvrZVMop4zQ4arnzSF7TRp3Cy73AWaDdADiYMCi5qpYW1bUa5m';
91
- const lightningServicePubKey = '03b6fe266b3f8ae110b877d942765e9cea9e82faf03cdbb6d0effe980b6371b9c2';
92
- const lightningServicePrvKey = '8b95613f4341e347743bd2625728d87bc6f0a119acb6ae9121afeee2b2a650f7';
93
- const coin = statics.coins.get('tlnbtc');
94
- (0, assert_1.default)(coin instanceof statics.LightningCoin);
95
- const getStaticsLightningNetworkStub = sinon.stub(lightningUtils, 'getStaticsLightningNetwork').returns({
96
- ...coin.network,
97
- lightningServicePubKey,
98
- });
88
+ const lightningServicePubKey = (0, lightningUtils_1.getStaticsLightningNetwork)('tlnbtc').lightningServicePubKey;
89
+ const expectedSecret = (0, src_1.getSharedSecret)(utxolib.bip32.fromBase58(userAuthXprv), Buffer.from(lightningServicePubKey, 'hex'));
99
90
  const secret = (0, lightningUtils_1.deriveLightningServiceSharedSecret)('tlnbtc', userAuthXprv);
100
- getStaticsLightningNetworkStub.restore();
101
- const expectedSecret = (0, src_1.getSharedSecret)(Buffer.from(lightningServicePrvKey, 'hex'), utxolib.bip32.fromBase58(userAuthXprv).neutered());
102
91
  assert_1.default.deepStrictEqual(secret, expectedSecret);
103
92
  });
104
93
  });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBQStCO0FBQy9CLHVDQUEwQztBQUMxQyx3REFBMEM7QUFDMUMseURBQTJDO0FBRTNDLHFFQUFtRTtBQUNuRSxxRkFVMEQ7QUFFMUQsK0ZBQWlGO0FBQ2pGLHlDQUFrRDtBQUVsRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUI7UUFDRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtRQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUMzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixXQUFXLEVBQUUsRUFBRTtZQUM1RCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUEsb0NBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7Z0JBQzVCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUEsZ0JBQU0sRUFBQyxJQUFBLHdD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cUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1FBQ3ZDLE1BQU0sWUFBWSxHQUNoQixpSEFBaUgsQ0FBQztRQUNwSCxNQUFNLHNCQUFzQixHQUFHLG9FQUFvRSxDQUFDO1FBQ3BHLE1BQU0sc0JBQXNCLEdBQUcsa0VBQWtFLENBQUM7UUFFbEcsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBQSxnQkFBTSxFQUFDLElBQUksWUFBWSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFOUMsTUFBTSw4QkFBOEIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN0RyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2Ysc0JBQXNCO1NBQ3ZCLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUEsbURBQWtDLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzFFLDhCQUE4QixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRXpDLE1BQU0sY0FBYyxHQUFHLElBQUEscUJBQWUsRUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsRUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ2xELENBQUM7UUFFRixnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGltcG9ydE1hY2Fyb29uIH0gZnJvbSAnbWFjYXJvb24nO1xuaW1wb3J0ICogYXMgc3RhdGljcyBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IGFjY291bnRzLCBzaWduZXJSb290S2V5IH0gZnJvbSAnLi9jcmVhdGVXYXRjaE9ubHlGaXh0dXJlJztcbmltcG9ydCB7XG4gIGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSxcbiAgZ2V0TGlnaHRuaW5nTmV0d29yayxcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmssXG4gIGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRVdHhvbGliTmV0d29yayxcbiAgaXNMaWdodG5pbmdDb2luTmFtZSxcbiAgY3JlYXRlV2F0Y2hPbmx5LFxuICBhZGRJUENhdmVhdFRvTWFjYXJvb24sXG4gIGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXQsXG59IGZyb20gJy4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmdVdGlscyc7XG5cbmltcG9ydCAqIGFzIGxpZ2h0bmluZ1V0aWxzIGZyb20gJy4uLy4uLy4uLy4uL3NyYy9iaXRnby9saWdodG5pbmcvbGlnaHRuaW5nVXRpbHMnO1xuaW1wb3J0IHsgZ2V0U2hhcmVkU2VjcmV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjJztcblxuZGVzY3JpYmUoJ2xpZ2h0bmluZyB1dGlscycsIGZ1bmN0aW9uICgpIHtcbiAgW1xuICAgIHsgbmFtZTogJ2xuYnRjJywgbmV0d29ya05hbWU6ICdiaXRjb2luJyB9LFxuICAgIHsgbmFtZTogJ3RsbmJ0YycsIG5ldHdvcmtOYW1lOiAndGVzdG5ldCcgfSxcbiAgXS5mb3JFYWNoKCh7IG5hbWUsIG5ldHdvcmtOYW1lIH0pID0+IHtcbiAgICBkZXNjcmliZShgc3VjY2VzcyAtIGNvaW4gJHtuYW1lfSBhbmQgbmV0d29yayAke25ldHdvcmtOYW1lfWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUgYW5kIGdldExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgY29uc3QgbmV0d29yayA9IGdldExpZ2h0bmluZ05ldHdvcmsobmV0d29ya05hbWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwobmV0d29yaywgdXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZShuZXR3b3JrTmFtZSkpO1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1tuZXR3b3JrTmFtZV0pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29yayhuYW1lKS5mYW1pbHksICdsbmJ0YycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBnZXRVdHhvbGliTmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgICAgIGdldFV0eG9saWJOZXR3b3JrKG5hbWUpLFxuICAgICAgICAgIG5ldHdvcmtOYW1lID09PSAnYml0Y29pbicgPyB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4gOiB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXRcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgaXNMaWdodG5pbmdDb2luTmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUobmFtZSksIHRydWUpO1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNMaWdodG5pbmdDb2luTmFtZSgnbHRjJyksIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29yayBuYW1lYCwgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUoJ2xpdGVjb2luJyksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIG5vbiBsaWdodG5pbmcgbmV0d29ya2AsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmsodXR4b2xpYi5uZXR3b3Jrc1snbGl0ZWNvaW4nXSksIGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoYGdldFV0eG9saWJOZXR3b3JrIHNob3VsZCByZXR1cm4gZmFpbCBmb3IgaW52YWxpZCBsaWdodG5pbmcgY29pbmAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IHtcbiAgICAgIGdldFV0eG9saWJOZXR3b3JrKCdsdGMnKTtcbiAgICB9LCAvbHRjIGlzIG5vdCBhIGxpZ2h0bmluZyBjb2luLyk7XG4gIH0pO1xuXG4gIGl0KGBjcmVhdGVXYXRjaE9ubHlgLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3Qgd2F0Y2hPbmx5ID0gY3JlYXRlV2F0Y2hPbmx5KHNpZ25lclJvb3RLZXksIHV0eG9saWIubmV0d29ya3MudGVzdG5ldCk7XG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCh3YXRjaE9ubHkuYWNjb3VudHMsIGFjY291bnRzKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoXG4gICAgICB3YXRjaE9ubHkubWFzdGVyX2tleV9maW5nZXJwcmludCxcbiAgICAgIHV0eG9saWIuYmlwMzIuZnJvbUJhc2U1OChzaWduZXJSb290S2V5LCB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQpLmZpbmdlcnByaW50LnRvU3RyaW5nKCdoZXgnKVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KGBhZGRJUENhdmVhdFRvTWFjYXJvb25gLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgbWFjYXJvb24gPVxuICAgICAgJ0FnRURiRzVrQXZnQkF3b1FNZ1U3ckRpODAyWXFnL3RIbGwyNG5oSUJNQm9XQ2dkaFpHUnlaWE56RWdSeVpXRmtFZ1YzY21sMFpSb1RDZ1JwYm1adkVnUnlaV0ZrRWdWM2NtbDBaUm9YQ2docGJuWnZhV05sY3hJRWNtVmhaQklGZDNKcGRHVWFJUW9JYldGallYSnZiMjRTQ0dkbGJtVnlZWFJsRWdSeVpXRmtFZ1YzY21sMFpSb1dDZ2R0WlhOellXZGxFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHZabVpqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRmdvSGIyNWphR0ZwYmhJRWNtVmhaQklGZDNKcGRHVWFGQW9GY0dWbGNuTVNCSEpsWVdRU0JYZHlhWFJsR2hnS0JuTnBaMjVsY2hJSVoyVnVaWEpoZEdVU0JISmxZV1FBQUFZZ1pLaVV2RXp4R2QyUUtHVVMrOVI1WldldkcwOVMwNmZNSlVudCtrMVhYWFE9JztcbiAgICBjb25zdCBtYWNhcm9vbk9iaiA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uKS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqLmMsIHVuZGVmaW5lZCk7XG4gICAgY29uc3QgbWFjYXJvb25XaXRoQ2F2ZWF0ID0gYWRkSVBDYXZlYXRUb01hY2Fyb29uKG1hY2Fyb29uLCAnMTI3LjAuMC4xJyk7XG4gICAgY29uc3QgbWFjYXJvb25PYmpXaXRoQ2F2ZWF0ID0gaW1wb3J0TWFjYXJvb24obWFjYXJvb25XaXRoQ2F2ZWF0KS5leHBvcnRKU09OKCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKG1hY2Fyb29uT2JqV2l0aENhdmVhdC5jWzBdLmksICdpcGFkZHIgMTI3LjAuMC4xJyk7XG4gIH0pO1xuXG4gIGl0KGBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHVzZXJBdXRoWHBydiA9XG4gICAgICAneHBydjlzMjFaclFIMTQzSzROUGtWOHJpaVRuRmY3Mk1SeVFEVkhNbW1wZWtHRjF3NVFrUzJNZlRlaTlLWFl2clpWTW9wNHpRNGFybnpTRjdUUnAzQ3k3M0FXYURkQURpWU1DaTVxcFlXMWJVYTVtJztcbiAgICBjb25zdCBsaWdodG5pbmdTZXJ2aWNlUHViS2V5ID0gJzAzYjZmZTI2NmIzZjhhZTExMGI4NzdkOTQyNzY1ZTljZWE5ZTgyZmFmMDNjZGJiNmQwZWZmZTk4MGI2MzcxYjljMic7XG4gICAgY29uc3QgbGlnaHRuaW5nU2VydmljZVBydktleSA9ICc4Yjk1NjEzZjQzNDFlMzQ3NzQzYmQyNjI1NzI4ZDg3YmM2ZjBhMTE5YWNiNmFlOTEyMWFmZWVlMmIyYTY1MGY3JztcblxuICAgIGNvbnN0IGNvaW4gPSBzdGF0aWNzLmNvaW5zLmdldCgndGxuYnRjJyk7XG4gICAgYXNzZXJ0KGNvaW4gaW5zdGFuY2VvZiBzdGF0aWNzLkxpZ2h0bmluZ0NvaW4pO1xuXG4gICAgY29uc3QgZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmtTdHViID0gc2lub24uc3R1YihsaWdodG5pbmdVdGlscywgJ2dldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrJykucmV0dXJucyh7XG4gICAgICAuLi5jb2luLm5ldHdvcmssXG4gICAgICBsaWdodG5pbmdTZXJ2aWNlUHViS2V5LFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VjcmV0ID0gZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldCgndGxuYnRjJywgdXNlckF1dGhYcHJ2KTtcbiAgICBnZXRTdGF0aWNzTGlnaHRuaW5nTmV0d29ya1N0dWIucmVzdG9yZSgpO1xuXG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQoXG4gICAgICBCdWZmZXIuZnJvbShsaWdodG5pbmdTZXJ2aWNlUHJ2S2V5LCAnaGV4JyksXG4gICAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlckF1dGhYcHJ2KS5uZXV0ZXJlZCgpXG4gICAgKTtcblxuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoc2VjcmV0LCBleHBlY3RlZFNlY3JldCk7XG4gIH0pO1xufSk7XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlnaHRuaW5nVXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vbGlnaHRuaW5nL2xpZ2h0bmluZ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsdUNBQTBDO0FBQzFDLHlEQUEyQztBQUUzQyxxRUFBbUU7QUFDbkUscUZBVTBEO0FBRTFELHlDQUFrRDtBQUVsRCxRQUFRLENBQUMsaUJBQWlCLEVBQUU7SUFDMUI7UUFDRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtRQUN6QyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtLQUMzQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsUUFBUSxDQUFDLGtCQUFrQixJQUFJLGdCQUFnQixXQUFXLEVBQUUsRUFBRTtZQUM1RCxFQUFFLENBQUMscURBQXFELEVBQUU7Z0JBQ3hELElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUEsb0NBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ2pELGdCQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxDQUFDLENBQUM7WUFFSCxFQUFFLENBQUMseUJBQXlCLEVBQUU7Z0JBQzVCLElBQUEsZ0JBQU0sRUFBQyxJQUFBLDRDQUEyQixFQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUEsZ0JBQU0sRUFBQyxJQUFBLHdDQUF1QixFQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFD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QUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1FBQ3ZDLE1BQU0sWUFBWSxHQUNoQixpSEFBaUgsQ0FBQztRQUNwSCxNQUFNLHNCQUFzQixHQUFHLElBQUEsMkNBQTBCLEVBQUMsUUFBUSxDQUFDLENBQUMsc0JBQXNCLENBQUM7UUFFM0YsTUFBTSxjQUFjLEdBQUcsSUFBQSxxQkFBZSxFQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FDM0MsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLElBQUEsbURBQWtDLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBRTFFLGdCQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgaW1wb3J0TWFjYXJvb24gfSBmcm9tICdtYWNhcm9vbic7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby91dHhvLWxpYic7XG5cbmltcG9ydCB7IGFjY291bnRzLCBzaWduZXJSb290S2V5IH0gZnJvbSAnLi9jcmVhdGVXYXRjaE9ubHlGaXh0dXJlJztcbmltcG9ydCB7XG4gIGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSxcbiAgZ2V0TGlnaHRuaW5nTmV0d29yayxcbiAgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmssXG4gIGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrLFxuICBnZXRVdHhvbGliTmV0d29yayxcbiAgaXNMaWdodG5pbmdDb2luTmFtZSxcbiAgY3JlYXRlV2F0Y2hPbmx5LFxuICBhZGRJUENhdmVhdFRvTWFjYXJvb24sXG4gIGRlcml2ZUxpZ2h0bmluZ1NlcnZpY2VTaGFyZWRTZWNyZXQsXG59IGZyb20gJy4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2xpZ2h0bmluZy9saWdodG5pbmdVdGlscyc7XG5cbmltcG9ydCB7IGdldFNoYXJlZFNlY3JldCB9IGZyb20gJy4uLy4uLy4uLy4uL3NyYyc7XG5cbmRlc2NyaWJlKCdsaWdodG5pbmcgdXRpbHMnLCBmdW5jdGlvbiAoKSB7XG4gIFtcbiAgICB7IG5hbWU6ICdsbmJ0YycsIG5ldHdvcmtOYW1lOiAnYml0Y29pbicgfSxcbiAgICB7IG5hbWU6ICd0bG5idGMnLCBuZXR3b3JrTmFtZTogJ3Rlc3RuZXQnIH0sXG4gIF0uZm9yRWFjaCgoeyBuYW1lLCBuZXR3b3JrTmFtZSB9KSA9PiB7XG4gICAgZGVzY3JpYmUoYHN1Y2Nlc3MgLSBjb2luICR7bmFtZX0gYW5kIG5ldHdvcmsgJHtuZXR3b3JrTmFtZX1gLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lIGFuZCBnZXRMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKG5ldHdvcmtOYW1lKSk7XG4gICAgICAgIGNvbnN0IG5ldHdvcmsgPSBnZXRMaWdodG5pbmdOZXR3b3JrKG5ldHdvcmtOYW1lKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKG5ldHdvcmssIHV0eG9saWIubmV0d29ya3NbbmV0d29ya05hbWVdKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydChpc1ZhbGlkTGlnaHRuaW5nTmV0d29ya05hbWUobmV0d29ya05hbWUpKTtcbiAgICAgICAgYXNzZXJ0KGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbbmV0d29ya05hbWVdKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZ2V0U3RhdGljc0xpZ2h0bmluZ05ldHdvcmsobmFtZSkuZmFtaWx5LCAnbG5idGMnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgZ2V0VXR4b2xpYk5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgICBnZXRVdHhvbGliTmV0d29yayhuYW1lKSxcbiAgICAgICAgICBuZXR3b3JrTmFtZSA9PT0gJ2JpdGNvaW4nID8gdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luIDogdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0XG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYGlzTGlnaHRuaW5nQ29pbk5hbWVgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChpc0xpZ2h0bmluZ0NvaW5OYW1lKG5hbWUpLCB0cnVlKTtcbiAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzTGlnaHRuaW5nQ29pbk5hbWUoJ2x0YycpLCBmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoYGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrTmFtZSBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmsgbmFtZWAsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoaXNWYWxpZExpZ2h0bmluZ05ldHdvcmtOYW1lKCdsaXRlY29pbicpLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBpc1ZhbGlkTGlnaHRuaW5nTmV0d29yayBzaG91bGQgcmV0dXJuIGZhbHNlIGZvciBub24gbGlnaHRuaW5nIG5ldHdvcmtgLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGlzVmFsaWRMaWdodG5pbmdOZXR3b3JrKHV0eG9saWIubmV0d29ya3NbJ2xpdGVjb2luJ10pLCBmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KGBnZXRVdHhvbGliTmV0d29yayBzaG91bGQgcmV0dXJuIGZhaWwgZm9yIGludmFsaWQgbGlnaHRuaW5nIGNvaW5gLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiB7XG4gICAgICBnZXRVdHhvbGliTmV0d29yaygnbHRjJyk7XG4gICAgfSwgL2x0YyBpcyBub3QgYSBsaWdodG5pbmcgY29pbi8pO1xuICB9KTtcblxuICBpdChgY3JlYXRlV2F0Y2hPbmx5YCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IHdhdGNoT25seSA9IGNyZWF0ZVdhdGNoT25seShzaWduZXJSb290S2V5LCB1dHhvbGliLm5ldHdvcmtzLnRlc3RuZXQpO1xuICAgIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwod2F0Y2hPbmx5LmFjY291bnRzLCBhY2NvdW50cyk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKFxuICAgICAgd2F0Y2hPbmx5Lm1hc3Rlcl9rZXlfZmluZ2VycHJpbnQsXG4gICAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoc2lnbmVyUm9vdEtleSwgdXR4b2xpYi5uZXR3b3Jrcy50ZXN0bmV0KS5maW5nZXJwcmludC50b1N0cmluZygnaGV4JylcbiAgICApO1xuICB9KTtcblxuICBpdChgYWRkSVBDYXZlYXRUb01hY2Fyb29uYCwgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG1hY2Fyb29uID1cbiAgICAgICdBZ0VEYkc1a0F2Z0JBd29RTWdVN3JEaTgwMllxZy90SGxsMjRuaElCTUJvV0NnZGhaR1J5WlhOekVnUnlaV0ZrRWdWM2NtbDBaUm9UQ2dScGJtWnZFZ1J5WldGa0VnVjNjbWwwWlJvWENnaHBiblp2YVdObGN4SUVjbVZoWkJJRmQzSnBkR1VhSVFvSWJXRmpZWEp2YjI0U0NHZGxibVZ5WVhSbEVnUnlaV0ZrRWdWM2NtbDBaUm9XQ2dkdFpYTnpZV2RsRWdSeVpXRmtFZ1YzY21sMFpSb1hDZ2h2Wm1aamFHRnBiaElFY21WaFpCSUZkM0pwZEdVYUZnb0hiMjVqYUdGcGJoSUVjbVZoWkJJRmQzSnBkR1VhRkFvRmNHVmxjbk1TQkhKbFlXUVNCWGR5YVhSbEdoZ0tCbk5wWjI1bGNoSUlaMlZ1WlhKaGRHVVNCSEpsWVdRQUFBWWdaS2lVdkV6eEdkMlFLR1VTKzlSNVpXZXZHMDlTMDZmTUpVbnQrazFYWFhRPSc7XG4gICAgY29uc3QgbWFjYXJvb25PYmogPSBpbXBvcnRNYWNhcm9vbihtYWNhcm9vbikuZXhwb3J0SlNPTigpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChtYWNhcm9vbk9iai5jLCB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG1hY2Fyb29uV2l0aENhdmVhdCA9IGFkZElQQ2F2ZWF0VG9NYWNhcm9vbihtYWNhcm9vbiwgJzEyNy4wLjAuMScpO1xuICAgIGNvbnN0IG1hY2Fyb29uT2JqV2l0aENhdmVhdCA9IGltcG9ydE1hY2Fyb29uKG1hY2Fyb29uV2l0aENhdmVhdCkuZXhwb3J0SlNPTigpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChtYWNhcm9vbk9ialdpdGhDYXZlYXQuY1swXS5pLCAnaXBhZGRyIDEyNy4wLjAuMScpO1xuICB9KTtcblxuICBpdChgZGVyaXZlTGlnaHRuaW5nU2VydmljZVNoYXJlZFNlY3JldGAsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB1c2VyQXV0aFhwcnYgPVxuICAgICAgJ3hwcnY5czIxWnJRSDE0M0s0TlBrVjhyaWlUbkZmNzJNUnlRRFZITW1tcGVrR0YxdzVRa1MyTWZUZWk5S1hZdnJaVk1vcDR6UTRhcm56U0Y3VFJwM0N5NzNBV2FEZEFEaVlNQ2k1cXBZVzFiVWE1bSc7XG4gICAgY29uc3QgbGlnaHRuaW5nU2VydmljZVB1YktleSA9IGdldFN0YXRpY3NMaWdodG5pbmdOZXR3b3JrKCd0bG5idGMnKS5saWdodG5pbmdTZXJ2aWNlUHViS2V5O1xuXG4gICAgY29uc3QgZXhwZWN0ZWRTZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQoXG4gICAgICB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgodXNlckF1dGhYcHJ2KSxcbiAgICAgIEJ1ZmZlci5mcm9tKGxpZ2h0bmluZ1NlcnZpY2VQdWJLZXksICdoZXgnKVxuICAgICk7XG5cbiAgICBjb25zdCBzZWNyZXQgPSBkZXJpdmVMaWdodG5pbmdTZXJ2aWNlU2hhcmVkU2VjcmV0KCd0bG5idGMnLCB1c2VyQXV0aFhwcnYpO1xuXG4gICAgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbChzZWNyZXQsIGV4cGVjdGVkU2VjcmV0KTtcbiAgfSk7XG59KTtcbiJdfQ==