@bitgo-beta/sdk-core 8.2.1-beta.1993 → 8.2.1-beta.1995

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 (50) hide show
  1. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +8 -1
  2. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  3. package/dist/src/bitgo/baseCoin/iBaseCoin.js +1 -1
  4. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +12 -1
  5. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -1
  6. package/dist/src/bitgo/tss/bitgoPubKeys.js +22 -2
  7. package/dist/src/bitgo/tss/common.d.ts +2 -1
  8. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  9. package/dist/src/bitgo/tss/common.js +1 -1
  10. package/dist/src/bitgo/utils/opengpgUtils.d.ts +1 -0
  11. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  12. package/dist/src/bitgo/utils/opengpgUtils.js +5 -1
  13. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +6 -2
  14. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  15. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +31 -7
  16. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +1 -0
  17. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  18. package/dist/src/bitgo/utils/tss/baseTypes.js +1 -1
  19. package/dist/src/bitgo/utils/tss/index.d.ts +1 -0
  20. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  21. package/dist/src/bitgo/utils/tss/index.js +3 -2
  22. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  23. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  24. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +128 -0
  25. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  26. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  27. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  28. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +30 -0
  29. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  30. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +46 -0
  31. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +46 -0
  32. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  33. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  34. package/dist/src/bitgo/wallet/wallet.d.ts +4 -0
  35. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  36. package/dist/src/bitgo/wallet/wallet.js +6 -4
  37. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  38. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  39. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  40. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  41. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  42. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +81 -0
  43. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  44. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  45. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +281 -0
  46. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  47. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  48. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  49. package/dist/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +9 -9
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const assert = __importStar(require("assert"));
37
+ const sinon = __importStar(require("sinon"));
38
+ const src_1 = require("../../../../../src");
39
+ const bitgoPubKeys_1 = require("../../../../../src/bitgo/tss/bitgoPubKeys");
40
+ const BaseTssUtils = src_1.BaseTssUtils.default;
41
+ class TestBaseTssUtils extends BaseTssUtils {
42
+ async setBitgoGpgPubKeyForTest(bitgo) {
43
+ return this.setBitgoGpgPubKey(bitgo);
44
+ }
45
+ getBitgoRedpallasMpcv2PublicGpgKeyForTest() {
46
+ return this.getBitgoRedpallasMpcv2PublicGpgKey();
47
+ }
48
+ getBitgoEddsaMpcv2PublicGpgKeyForTest() {
49
+ return this.getBitgoEddsaMpcv2PublicGpgKey();
50
+ }
51
+ }
52
+ describe('BaseTssUtils RedPallas MPCv2 BitGo GPG key', function () {
53
+ let utils;
54
+ let mockBitGo;
55
+ beforeEach(function () {
56
+ mockBitGo = {};
57
+ utils = new TestBaseTssUtils(mockBitGo, {});
58
+ });
59
+ afterEach(function () {
60
+ sinon.restore();
61
+ });
62
+ it('setBitgoGpgPubKey populates bitgoRedpallasMpcv2PublicGpgKey from constants', async function () {
63
+ mockBitGo.fetchConstants = sinon.stub().resolves({
64
+ mpc: {
65
+ bitgoPublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.mpcv1.nitro.test,
66
+ bitgoRedpallasMpcv2PublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test,
67
+ },
68
+ });
69
+ await utils.setBitgoGpgPubKeyForTest(mockBitGo);
70
+ const key = await utils.getBitgoRedpallasMpcv2PublicGpgKeyForTest();
71
+ assert.ok(key);
72
+ assert.strictEqual(key.armor(), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test);
73
+ });
74
+ it('does not populate bitgoRedpallasMpcv2PublicGpgKey when constants omit it', async function () {
75
+ mockBitGo.fetchConstants = sinon.stub().resolves({
76
+ mpc: {
77
+ bitgoPublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.mpcv1.nitro.test,
78
+ },
79
+ });
80
+ await utils.setBitgoGpgPubKeyForTest(mockBitGo);
81
+ await assert.rejects(utils.getBitgoRedpallasMpcv2PublicGpgKeyForTest(), /Failed to get Bitgo's RedPallas MPCv2 gpg key/);
82
+ });
83
+ it('populating the RedPallas key does not clobber a separately-set EdDSA MPCv2 key', async function () {
84
+ mockBitGo.fetchConstants = sinon
85
+ .stub()
86
+ .onFirstCall()
87
+ .resolves({
88
+ mpc: {
89
+ bitgoPublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.mpcv1.nitro.test,
90
+ bitgoEddsaMpcv2PublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.eddsaMpcv2.nitro.test,
91
+ },
92
+ })
93
+ .onSecondCall()
94
+ .resolves({
95
+ mpc: {
96
+ bitgoPublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.mpcv1.nitro.test,
97
+ bitgoRedpallasMpcv2PublicKey: bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test,
98
+ },
99
+ });
100
+ await utils.setBitgoGpgPubKeyForTest(mockBitGo);
101
+ const eddsaKey = await utils.getBitgoEddsaMpcv2PublicGpgKeyForTest();
102
+ assert.strictEqual(eddsaKey.armor(), bitgoPubKeys_1.bitgoMpcGpgPubKeys.eddsaMpcv2.nitro.test);
103
+ await utils.setBitgoGpgPubKeyForTest(mockBitGo);
104
+ const redpallasKey = await utils.getBitgoRedpallasMpcv2PublicGpgKeyForTest();
105
+ assert.strictEqual(redpallasKey.armor(), bitgoPubKeys_1.bitgoMpcGpgPubKeys.redpallasMpcv2.nitro.test);
106
+ // EdDSA key should still be set - it must not have been unset by the second call.
107
+ const eddsaKeyAgain = await utils.getBitgoEddsaMpcv2PublicGpgKeyForTest();
108
+ assert.strictEqual(eddsaKeyAgain.armor(), bitgoPubKeys_1.bitgoMpcGpgPubKeys.eddsaMpcv2.nitro.test);
109
+ });
110
+ });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcGFsbGFzQml0Z29HcGdLZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vdXRpbHMvdHNzL3JlZHBhbGxhc0JpdGdvR3BnS2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQiw0Q0FBaUc7QUFDakcsNEVBQStFO0FBRS9FLE1BQU0sWUFBWSxHQUFHLGtCQUFxQixDQUFDLE9BQU8sQ0FBQztBQUVuRCxNQUFNLGdCQUFpQixTQUFRLFlBQW9CO0lBQ2pELEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx5Q0FBeUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsa0NBQWtDLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRUQscUNBQXFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixFQUFFLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLDRDQUE0QyxFQUFFO0lBQ3JELElBQUksS0FBdUIsQ0FBQztJQUM1QixJQUFJLFNBQW9CLENBQUM7SUFFekIsVUFBVSxDQUFDO1FBQ1QsU0FBUyxHQUFHLEVBQTBCLENBQUM7UUFDdkMsS0FBSyxHQUFHLElBQUksZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEVBQTBCLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQztRQUNSLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw0RUFBNEUsRUFBRSxLQUFLO1FBQ3BGLFNBQVMsQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUMv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YXNzZXJ0JztcbmltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IEJpdEdvQmFzZSwgSUJhc2VDb2luLCBCYXNlVHNzVXRpbHMgYXMgQmFzZVRzc1V0aWxzTmFtZXNwYWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IGJpdGdvTXBjR3BnUHViS2V5cyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90c3MvYml0Z29QdWJLZXlzJztcblxuY29uc3QgQmFzZVRzc1V0aWxzID0gQmFzZVRzc1V0aWxzTmFtZXNwYWNlLmRlZmF1bHQ7XG5cbmNsYXNzIFRlc3RCYXNlVHNzVXRpbHMgZXh0ZW5kcyBCYXNlVHNzVXRpbHM8QnVmZmVyPiB7XG4gIGFzeW5jIHNldEJpdGdvR3BnUHViS2V5Rm9yVGVzdChiaXRnbyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnNldEJpdGdvR3BnUHViS2V5KGJpdGdvKTtcbiAgfVxuXG4gIGdldEJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNHcGdLZXlGb3JUZXN0KCk6IFByb21pc2U8aW1wb3J0KCdvcGVucGdwJykuS2V5PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Qml0Z29SZWRwYWxsYXNNcGN2MlB1YmxpY0dwZ0tleSgpO1xuICB9XG5cbiAgZ2V0Qml0Z29FZGRzYU1wY3YyUHVibGljR3BnS2V5Rm9yVGVzdCgpOiBQcm9taXNlPGltcG9ydCgnb3BlbnBncCcpLktleT4ge1xuICAgIHJldHVybiB0aGlzLmdldEJpdGdvRWRkc2FNcGN2MlB1YmxpY0dwZ0tleSgpO1xuICB9XG59XG5cbmRlc2NyaWJlKCdCYXNlVHNzVXRpbHMgUmVkUGFsbGFzIE1QQ3YyIEJpdEdvIEdQRyBrZXknLCBmdW5jdGlvbiAoKSB7XG4gIGxldCB1dGlsczogVGVzdEJhc2VUc3NVdGlscztcbiAgbGV0IG1vY2tCaXRHbzogQml0R29CYXNlO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIG1vY2tCaXRHbyA9IHt9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuICAgIHV0aWxzID0gbmV3IFRlc3RCYXNlVHNzVXRpbHMobW9ja0JpdEdvLCB7fSBhcyB1bmtub3duIGFzIElCYXNlQ29pbik7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2V0Qml0Z29HcGdQdWJLZXkgcG9wdWxhdGVzIGJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNHcGdLZXkgZnJvbSBjb25zdGFudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgbW9ja0JpdEdvLmZldGNoQ29uc3RhbnRzID0gc2lub24uc3R1YigpLnJlc29sdmVzKHtcbiAgICAgIG1wYzoge1xuICAgICAgICBiaXRnb1B1YmxpY0tleTogYml0Z29NcGNHcGdQdWJLZXlzLm1wY3YxLm5pdHJvLnRlc3QsXG4gICAgICAgIGJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNLZXk6IGJpdGdvTXBjR3BnUHViS2V5cy5yZWRwYWxsYXNNcGN2Mi5uaXRyby50ZXN0LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGF3YWl0IHV0aWxzLnNldEJpdGdvR3BnUHViS2V5Rm9yVGVzdChtb2NrQml0R28pO1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHV0aWxzLmdldEJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNHcGdLZXlGb3JUZXN0KCk7XG5cbiAgICBhc3NlcnQub2soa2V5KTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoa2V5LmFybW9yKCksIGJpdGdvTXBjR3BnUHViS2V5cy5yZWRwYWxsYXNNcGN2Mi5uaXRyby50ZXN0KTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHBvcHVsYXRlIGJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNHcGdLZXkgd2hlbiBjb25zdGFudHMgb21pdCBpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZmV0Y2hDb25zdGFudHMgPSBzaW5vbi5zdHViKCkucmVzb2x2ZXMoe1xuICAgICAgbXBjOiB7XG4gICAgICAgIGJpdGdvUHVibGljS2V5OiBiaXRnb01wY0dwZ1B1YktleXMubXBjdjEubml0cm8udGVzdCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCB1dGlscy5zZXRCaXRnb0dwZ1B1YktleUZvclRlc3QobW9ja0JpdEdvKTtcblxuICAgIGF3YWl0IGFzc2VydC5yZWplY3RzKFxuICAgICAgdXRpbHMuZ2V0Qml0Z29SZWRwYWxsYXNNcGN2MlB1YmxpY0dwZ0tleUZvclRlc3QoKSxcbiAgICAgIC9GYWlsZWQgdG8gZ2V0IEJpdGdvJ3MgUmVkUGFsbGFzIE1QQ3YyIGdwZyBrZXkvXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3BvcHVsYXRpbmcgdGhlIFJlZFBhbGxhcyBrZXkgZG9lcyBub3QgY2xvYmJlciBhIHNlcGFyYXRlbHktc2V0IEVkRFNBIE1QQ3YyIGtleScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBtb2NrQml0R28uZmV0Y2hDb25zdGFudHMgPSBzaW5vblxuICAgICAgLnN0dWIoKVxuICAgICAgLm9uRmlyc3RDYWxsKClcbiAgICAgIC5yZXNvbHZlcyh7XG4gICAgICAgIG1wYzoge1xuICAgICAgICAgIGJpdGdvUHVibGljS2V5OiBiaXRnb01wY0dwZ1B1YktleXMubXBjdjEubml0cm8udGVzdCxcbiAgICAgICAgICBiaXRnb0VkZHNhTXBjdjJQdWJsaWNLZXk6IGJpdGdvTXBjR3BnUHViS2V5cy5lZGRzYU1wY3YyLm5pdHJvLnRlc3QsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLm9uU2Vjb25kQ2FsbCgpXG4gICAgICAucmVzb2x2ZXMoe1xuICAgICAgICBtcGM6IHtcbiAgICAgICAgICBiaXRnb1B1YmxpY0tleTogYml0Z29NcGNHcGdQdWJLZXlzLm1wY3YxLm5pdHJvLnRlc3QsXG4gICAgICAgICAgYml0Z29SZWRwYWxsYXNNcGN2MlB1YmxpY0tleTogYml0Z29NcGNHcGdQdWJLZXlzLnJlZHBhbGxhc01wY3YyLm5pdHJvLnRlc3QsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgIGF3YWl0IHV0aWxzLnNldEJpdGdvR3BnUHViS2V5Rm9yVGVzdChtb2NrQml0R28pO1xuICAgIGNvbnN0IGVkZHNhS2V5ID0gYXdhaXQgdXRpbHMuZ2V0Qml0Z29FZGRzYU1wY3YyUHVibGljR3BnS2V5Rm9yVGVzdCgpO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChlZGRzYUtleS5hcm1vcigpLCBiaXRnb01wY0dwZ1B1YktleXMuZWRkc2FNcGN2Mi5uaXRyby50ZXN0KTtcblxuICAgIGF3YWl0IHV0aWxzLnNldEJpdGdvR3BnUHViS2V5Rm9yVGVzdChtb2NrQml0R28pO1xuICAgIGNvbnN0IHJlZHBhbGxhc0tleSA9IGF3YWl0IHV0aWxzLmdldEJpdGdvUmVkcGFsbGFzTXBjdjJQdWJsaWNHcGdLZXlGb3JUZXN0KCk7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKHJlZHBhbGxhc0tleS5hcm1vcigpLCBiaXRnb01wY0dwZ1B1YktleXMucmVkcGFsbGFzTXBjdjIubml0cm8udGVzdCk7XG5cbiAgICAvLyBFZERTQSBrZXkgc2hvdWxkIHN0aWxsIGJlIHNldCAtIGl0IG11c3Qgbm90IGhhdmUgYmVlbiB1bnNldCBieSB0aGUgc2Vjb25kIGNhbGwuXG4gICAgY29uc3QgZWRkc2FLZXlBZ2FpbiA9IGF3YWl0IHV0aWxzLmdldEJpdGdvRWRkc2FNcGN2MlB1YmxpY0dwZ0tleUZvclRlc3QoKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoZWRkc2FLZXlBZ2Fpbi5hcm1vcigpLCBiaXRnb01wY0dwZ1B1YktleXMuZWRkc2FNcGN2Mi5uaXRyby50ZXN0KTtcbiAgfSk7XG59KTtcbiJdfQ==