@bitgo/sdk-api 1.86.5 → 2.0.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.
- package/dist/package.json +3 -3
- package/dist/src/bitgoAPI.d.ts +14 -58
- package/dist/src/bitgoAPI.d.ts.map +1 -1
- package/dist/src/bitgoAPI.js +27 -178
- package/dist/src/encrypt.d.ts +6 -15
- package/dist/src/encrypt.d.ts.map +1 -1
- package/dist/src/encrypt.js +23 -18
- package/dist/src/v1/keychains.js +3 -3
- package/dist/src/v1/travelRule.js +7 -45
- package/dist/src/v1/wallet.js +8 -8
- package/dist/src/v1/wallets.js +5 -5
- package/dist/test/unit/bitgoAPI.js +51 -77
- package/dist/test/unit/encrypt.js +91 -151
- package/dist/test/unit/v1/travelRule.d.ts +1 -1
- package/dist/test/unit/v1/travelRule.d.ts.map +1 -1
- package/dist/test/unit/v1/travelRule.js +15 -63
- package/dist/test/unit/v1/wallet.js +3 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
const sinon = __importStar(require("sinon"));
|
|
37
|
-
|
|
37
|
+
require("should");
|
|
38
38
|
const bitgoAPI_1 = require("../../../src/bitgoAPI");
|
|
39
39
|
const TravelRule = require('../../../src/v1/travelRule');
|
|
40
40
|
// Use a real 33-byte compressed public key from the utxo-lib test vector set.
|
|
@@ -50,42 +50,24 @@ describe('TravelRule unit tests', () => {
|
|
|
50
50
|
sinon.restore();
|
|
51
51
|
});
|
|
52
52
|
// ---------------------------------------------------------------------------
|
|
53
|
-
// decryptReceivedTravelInfo
|
|
53
|
+
// decryptReceivedTravelInfo
|
|
54
54
|
// ---------------------------------------------------------------------------
|
|
55
55
|
describe('decryptReceivedTravelInfo', () => {
|
|
56
|
-
it('throws when tx param is missing', () => {
|
|
57
|
-
should.throws(() => travel.decryptReceivedTravelInfo({}), /expecting tx param to be object/);
|
|
58
|
-
});
|
|
59
|
-
it('returns tx unchanged when receivedTravelInfo is empty', () => {
|
|
60
|
-
const tx = { receivedTravelInfo: [] };
|
|
61
|
-
const result = travel.decryptReceivedTravelInfo({ tx });
|
|
62
|
-
result.should.equal(tx);
|
|
63
|
-
});
|
|
64
|
-
it('returns tx unchanged when receivedTravelInfo is not present', () => {
|
|
65
|
-
const tx = { id: 'txid123' };
|
|
66
|
-
const result = travel.decryptReceivedTravelInfo({ tx });
|
|
67
|
-
result.should.equal(tx);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
// ---------------------------------------------------------------------------
|
|
71
|
-
// decryptReceivedTravelInfoAsync
|
|
72
|
-
// ---------------------------------------------------------------------------
|
|
73
|
-
describe('decryptReceivedTravelInfoAsync', () => {
|
|
74
56
|
it('throws when tx param is missing', async () => {
|
|
75
|
-
await travel.
|
|
57
|
+
await travel.decryptReceivedTravelInfo({}).should.be.rejectedWith(/expecting tx param to be object/);
|
|
76
58
|
});
|
|
77
59
|
it('returns tx unchanged when receivedTravelInfo is empty', async () => {
|
|
78
60
|
const tx = { receivedTravelInfo: [] };
|
|
79
|
-
const result = await travel.
|
|
61
|
+
const result = await travel.decryptReceivedTravelInfo({ tx });
|
|
80
62
|
result.should.equal(tx);
|
|
81
63
|
});
|
|
82
64
|
it('returns tx unchanged when receivedTravelInfo is not present', async () => {
|
|
83
65
|
const tx = { id: 'txid456' };
|
|
84
|
-
const result = await travel.
|
|
66
|
+
const result = await travel.decryptReceivedTravelInfo({ tx });
|
|
85
67
|
result.should.equal(tx);
|
|
86
68
|
});
|
|
87
|
-
it('calls
|
|
88
|
-
const decryptStub = sinon.stub(bitgo, '
|
|
69
|
+
it('calls decrypt for each travel info entry', async () => {
|
|
70
|
+
const decryptStub = sinon.stub(bitgo, 'decrypt').resolves(JSON.stringify({ fromUserName: 'Alice' }));
|
|
89
71
|
const xprv = 'xprv9s21ZrQH143K2fJ91S4BRsupcYrE6mmY96fcX5HkhoTrrwmwjd16Cn87cWinJjByrfpojjx7ezsJLx7TAKLT8m8hM5Kax9YcoxnBeJZ3t2k';
|
|
90
72
|
const keychain = { xprv };
|
|
91
73
|
const tx = {
|
|
@@ -100,48 +82,18 @@ describe('TravelRule unit tests', () => {
|
|
|
100
82
|
},
|
|
101
83
|
],
|
|
102
84
|
};
|
|
103
|
-
const result = await travel.
|
|
85
|
+
const result = await travel.decryptReceivedTravelInfo({ tx, keychain });
|
|
104
86
|
decryptStub.callCount.should.equal(1);
|
|
105
87
|
result.should.equal(tx);
|
|
106
88
|
});
|
|
107
89
|
});
|
|
108
90
|
// ---------------------------------------------------------------------------
|
|
109
|
-
// prepareParams
|
|
91
|
+
// prepareParams
|
|
110
92
|
// ---------------------------------------------------------------------------
|
|
111
93
|
describe('prepareParams', () => {
|
|
112
|
-
it('throws when recipient is missing', () => {
|
|
113
|
-
should.throws(() => travel.prepareParams({
|
|
114
|
-
txid: 'abc123',
|
|
115
|
-
travelInfo: { fromUserName: 'Alice' },
|
|
116
|
-
}), /invalid or missing recipient/);
|
|
117
|
-
});
|
|
118
|
-
it('throws when travelInfo is missing', () => {
|
|
119
|
-
should.throws(() => travel.prepareParams({
|
|
120
|
-
txid: 'abc123',
|
|
121
|
-
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
|
|
122
|
-
}), /invalid or missing travelInfo/);
|
|
123
|
-
});
|
|
124
|
-
it('calls bitgo.encrypt and returns expected shape', () => {
|
|
125
|
-
const encryptStub = sinon.stub(bitgo, 'encrypt').returns('encryptedBlob');
|
|
126
|
-
const result = travel.prepareParams({
|
|
127
|
-
txid: 'abc123',
|
|
128
|
-
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
|
|
129
|
-
travelInfo: { fromUserName: 'Alice', toAddress: '1BitGo' },
|
|
130
|
-
});
|
|
131
|
-
encryptStub.callCount.should.equal(1);
|
|
132
|
-
result.should.have.property('txid', 'abc123');
|
|
133
|
-
result.should.have.property('toPubKey', KNOWN_RECIPIENT_PUB);
|
|
134
|
-
result.should.have.property('fromPubKey').which.is.a.String();
|
|
135
|
-
result.should.have.property('encryptedTravelInfo', 'encryptedBlob');
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
// ---------------------------------------------------------------------------
|
|
139
|
-
// prepareParamsAsync
|
|
140
|
-
// ---------------------------------------------------------------------------
|
|
141
|
-
describe('prepareParamsAsync', () => {
|
|
142
94
|
it('throws when recipient is missing', async () => {
|
|
143
95
|
await travel
|
|
144
|
-
.
|
|
96
|
+
.prepareParams({
|
|
145
97
|
txid: 'abc123',
|
|
146
98
|
travelInfo: { fromUserName: 'Alice' },
|
|
147
99
|
})
|
|
@@ -149,15 +101,15 @@ describe('TravelRule unit tests', () => {
|
|
|
149
101
|
});
|
|
150
102
|
it('throws when travelInfo is missing', async () => {
|
|
151
103
|
await travel
|
|
152
|
-
.
|
|
104
|
+
.prepareParams({
|
|
153
105
|
txid: 'abc123',
|
|
154
106
|
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '0' },
|
|
155
107
|
})
|
|
156
108
|
.should.be.rejectedWith(/invalid or missing travelInfo/);
|
|
157
109
|
});
|
|
158
|
-
it('calls
|
|
159
|
-
const encryptStub = sinon.stub(bitgo, '
|
|
160
|
-
const result = await travel.
|
|
110
|
+
it('calls encrypt and returns expected output shape', async () => {
|
|
111
|
+
const encryptStub = sinon.stub(bitgo, 'encrypt').resolves('asyncEncryptedBlob');
|
|
112
|
+
const result = await travel.prepareParams({
|
|
161
113
|
txid: 'txid789',
|
|
162
114
|
recipient: { enterprise: 'SDKTest', pubKey: KNOWN_RECIPIENT_PUB, outputIndex: '1' },
|
|
163
115
|
travelInfo: { fromUserName: 'Bob', toAddress: '1BitGo' },
|
|
@@ -170,4 +122,4 @@ describe('TravelRule unit tests', () => {
|
|
|
170
122
|
});
|
|
171
123
|
});
|
|
172
124
|
});
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVsUnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC92MS90cmF2ZWxSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLCtDQUFpQztBQUNqQyxvREFBaUQ7QUFFakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFekQsOEVBQThFO0FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFakcsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLE1BQXlCLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEtBQUssR0FBRyxJQUFJLG1CQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEVBQThFO0lBQzlFLG1DQUFtQztJQUNuQyw4RUFBOEU7SUFDOUUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxFQUFFLGlDQUFpQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsR0FBRyxFQUFFO1lBQy9ELE1BQU0sRUFBRSxHQUFH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QyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgKiBhcyBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpdGdvQVBJJztcblxuY29uc3QgVHJhdmVsUnVsZSA9IHJlcXVpcmUoJy4uLy4uLy4uL3NyYy92MS90cmF2ZWxSdWxlJyk7XG5cbi8vIFVzZSBhIHJlYWwgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgZnJvbSB0aGUgdXR4by1saWIgdGVzdCB2ZWN0b3Igc2V0LlxuY29uc3QgS05PV05fUkVDSVBJRU5UX1BVQiA9ICcwMjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnO1xuXG5kZXNjcmliZSgnVHJhdmVsUnVsZSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICBsZXQgdHJhdmVsOiB0eXBlb2YgVHJhdmVsUnVsZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHRyYXZlbCA9IG5ldyBUcmF2ZWxSdWxlKGJpdGdvKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBkZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvIChzeW5jKVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZGVzY3JpYmUoJ2RlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8nLCAoKSA9PiB7XG4gICAgaXQoJ3Rocm93cyB3aGVuIHR4IHBhcmFtIGlzIG1pc3NpbmcnLCAoKSA9PiB7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHt9KSwgL2V4cGVjdGluZyB0eCBwYXJhbSB0byBiZSBvYmplY3QvKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIHR4IHVuY2hhbmdlZCB3aGVuIHJlY2VpdmVkVHJhdmVsSW5mbyBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0geyByZWNlaXZlZFRyYXZlbEluZm86IFtdIH07XG4gICAgICBjb25zdCByZXN1bHQgPSB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbyh7IHR4IH0pO1xuICAgICAgcmVzdWx0LnNob3VsZC5lcXVhbCh0eCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0eCB1bmNoYW5nZWQgd2hlbiByZWNlaXZlZFRyYXZlbEluZm8gaXMgbm90IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IHsgaWQ6ICd0eGlkMTIzJyB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8oeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZXNjcmliZSgnZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiB0eCBwYXJhbSBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm9Bc3luYyh7fSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvZXhwZWN0aW5nIHR4IHBhcmFtIHRvIGJlIG9iamVjdC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIGVtcHR5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IHJlY2VpdmVkVHJhdmVsSW5mbzogW10gfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvQXN5bmMoeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIG5vdCBwcmVzZW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IGlkOiAndHhpZDQ1NicgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvQXN5bmMoeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIGRlY3J5cHRBc3luYyBmb3IgZWFjaCB0cmF2ZWwgaW5mbyBlbnRyeScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGRlY3J5cHRTdHViID0gc2lub24uc3R1YihiaXRnbywgJ2RlY3J5cHRBc3luYycpLnJlc29sdmVzKEpTT04uc3RyaW5naWZ5KHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0pKTtcblxuICAgICAgY29uc3QgeHBydiA9XG4gICAgICAgICd4cHJ2OXMyMVpyUUgxNDNLMmZKOTFTNEJSc3VwY1lyRTZtbVk5NmZjWDVIa2hvVHJyd213amQxNkNuODdjV2luSmpCeXJmcG9qang3ZXpzSkx4N1RBS0xUOG04aE01S2F4OVljb3huQmVKWjN0MmsnO1xuICAgICAgY29uc3Qga2V5Y2hhaW4gPSB7IHhwcnYgfTtcbiAgICAgIGNvbnN0IHR4ID0ge1xuICAgICAgICByZWNlaXZlZFRyYXZlbEluZm86IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b1B1YktleVBhdGg6ICdtLzAvMCcsXG4gICAgICAgICAgICBmcm9tUHViS2V5OiBLTk9XTl9SRUNJUElFTlRfUFVCLFxuICAgICAgICAgICAgZW5jcnlwdGVkVHJhdmVsSW5mbzogJ3NvbWVFbmNyeXB0ZWRCbG9iJyxcbiAgICAgICAgICAgIHRyYXZlbEluZm86ICcnLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogJ3R4aWQxJyxcbiAgICAgICAgICAgIG91dHB1dEluZGV4OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mb0FzeW5jKHsgdHgsIGtleWNoYWluIH0pO1xuICAgICAgZGVjcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gcHJlcGFyZVBhcmFtcyAoc3luYylcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiByZWNpcGllbnQgaXMgbWlzc2luZycsICgpID0+IHtcbiAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICgpID0+XG4gICAgICAgICAgdHJhdmVsLnByZXBhcmVQYXJhbXMoe1xuICAgICAgICAgICAgdHhpZDogJ2FiYzEyMycsXG4gICAgICAgICAgICB0cmF2ZWxJbmZvOiB7IGZyb21Vc2VyTmFtZTogJ0FsaWNlJyB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAvaW52YWxpZCBvciBtaXNzaW5nIHJlY2lwaWVudC9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhdmVsSW5mbyBpcyBtaXNzaW5nJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLnRocm93cyhcbiAgICAgICAgKCkgPT5cbiAgICAgICAgICB0cmF2ZWwucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgICAgICB0eGlkOiAnYWJjMTIzJyxcbiAgICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIGJpdGdvLmVuY3J5cHQgYW5kIHJldHVybnMgZXhwZWN0ZWQgc2hhcGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBlbmNyeXB0U3R1YiA9IHNpbm9uLnN0dWIoYml0Z28sICdlbmNyeXB0JykucmV0dXJucygnZW5jcnlwdGVkQmxvYicpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSB0cmF2ZWwucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMCcgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdBbGljZScsIHRvQWRkcmVzczogJzFCaXRHbycgfSxcbiAgICAgIH0pO1xuXG4gICAgICBlbmNyeXB0U3R1Yi5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0eGlkJywgJ2FiYzEyMycpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0b1B1YktleScsIEtOT1dOX1JFQ0lQSUVOVF9QVUIpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdmcm9tUHViS2V5Jykud2hpY2guaXMuYS5TdHJpbmcoKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZW5jcnlwdGVkVHJhdmVsSW5mbycsICdlbmNyeXB0ZWRCbG9iJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBwcmVwYXJlUGFyYW1zQXN5bmNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zQXN5bmMnLCAoKSA9PiB7XG4gICAgaXQoJ3Rocm93cyB3aGVuIHJlY2lwaWVudCBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsXG4gICAgICAgIC5wcmVwYXJlUGFyYW1zQXN5bmMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHRyYXZlbEluZm86IHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9pbnZhbGlkIG9yIG1pc3NpbmcgcmVjaXBpZW50Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhdmVsSW5mbyBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdHJhdmVsXG4gICAgICAgIC5wcmVwYXJlUGFyYW1zQXN5bmMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBlbmNyeXB0QXN5bmMgYW5kIHJldHVybnMgZXhwZWN0ZWQgb3V0cHV0IHNoYXBlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZW5jcnlwdFN0dWIgPSBzaW5vbi5zdHViKGJpdGdvLCAnZW5jcnlwdEFzeW5jJykucmVzb2x2ZXMoJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwucHJlcGFyZVBhcmFtc0FzeW5jKHtcbiAgICAgICAgdHhpZDogJ3R4aWQ3ODknLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMScgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdCb2InLCB0b0FkZHJlc3M6ICcxQml0R28nIH0sXG4gICAgICB9KTtcblxuICAgICAgZW5jcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcsICd0eGlkNzg5Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RvUHViS2V5JywgS05PV05fUkVDSVBJRU5UX1BVQik7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Zyb21QdWJLZXknKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNyeXB0ZWRUcmF2ZWxJbmZvJywgJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVsUnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC92MS90cmF2ZWxSdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQStCO0FBQy9CLGtCQUFnQjtBQUNoQixvREFBaUQ7QUFFakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFFekQsOEVBQThFO0FBQzlFLE1BQU0sbUJBQW1CLEdBQUcsb0VBQW9FLENBQUM7QUFFakcsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxJQUFJLEtBQWUsQ0FBQztJQUNwQixJQUFJLE1BQXlCLENBQUM7SUFFOUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEtBQUssR0FBRyxJQUFJLG1CQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN0QyxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBRUgsOEVBQThFO0lBQzlFLDRCQUE0QjtJQUM1Qiw4RUFBOEU7SUFDOUUsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDL0MsTUFBTSxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsaUNBQWlDLENBQUMsQ0FBQztRQUN2RyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNyRSxNQUFN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LENBQUMsQ0FBQztZQUVoRixNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3hDLElBQUksRUFBRSxTQUFTO2dCQUNmLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUU7Z0JBQ25GLFVBQVUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTthQUN6RCxDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMvQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IEJpdEdvQVBJIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2JpdGdvQVBJJztcblxuY29uc3QgVHJhdmVsUnVsZSA9IHJlcXVpcmUoJy4uLy4uLy4uL3NyYy92MS90cmF2ZWxSdWxlJyk7XG5cbi8vIFVzZSBhIHJlYWwgMzMtYnl0ZSBjb21wcmVzc2VkIHB1YmxpYyBrZXkgZnJvbSB0aGUgdXR4by1saWIgdGVzdCB2ZWN0b3Igc2V0LlxuY29uc3QgS05PV05fUkVDSVBJRU5UX1BVQiA9ICcwMjc5YmU2NjdlZjlkY2JiYWM1NWEwNjI5NWNlODcwYjA3MDI5YmZjZGIyZGNlMjhkOTU5ZjI4MTViMTZmODE3OTgnO1xuXG5kZXNjcmliZSgnVHJhdmVsUnVsZSB1bml0IHRlc3RzJywgKCkgPT4ge1xuICBsZXQgYml0Z286IEJpdEdvQVBJO1xuICBsZXQgdHJhdmVsOiB0eXBlb2YgVHJhdmVsUnVsZTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBiaXRnbyA9IG5ldyBCaXRHb0FQSSh7IGVudjogJ3Rlc3QnIH0pO1xuICAgIHRyYXZlbCA9IG5ldyBUcmF2ZWxSdWxlKGJpdGdvKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBzaW5vbi5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBkZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBkZXNjcmliZSgnZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbycsICgpID0+IHtcbiAgICBpdCgndGhyb3dzIHdoZW4gdHggcGFyYW0gaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHt9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9leHBlY3RpbmcgdHggcGFyYW0gdG8gYmUgb2JqZWN0Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyB0eCB1bmNoYW5nZWQgd2hlbiByZWNlaXZlZFRyYXZlbEluZm8gaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IHsgcmVjZWl2ZWRUcmF2ZWxJbmZvOiBbXSB9O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdHJhdmVsLmRlY3J5cHRSZWNlaXZlZFRyYXZlbEluZm8oeyB0eCB9KTtcbiAgICAgIHJlc3VsdC5zaG91bGQuZXF1YWwodHgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgdHggdW5jaGFuZ2VkIHdoZW4gcmVjZWl2ZWRUcmF2ZWxJbmZvIGlzIG5vdCBwcmVzZW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSB7IGlkOiAndHhpZDQ1NicgfTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5kZWNyeXB0UmVjZWl2ZWRUcmF2ZWxJbmZvKHsgdHggfSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHR4KTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBkZWNyeXB0IGZvciBlYWNoIHRyYXZlbCBpbmZvIGVudHJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGVjcnlwdFN0dWIgPSBzaW5vbi5zdHViKGJpdGdvLCAnZGVjcnlwdCcpLnJlc29sdmVzKEpTT04uc3RyaW5naWZ5KHsgZnJvbVVzZXJOYW1lOiAnQWxpY2UnIH0pKTtcblxuICAgICAgY29uc3QgeHBydiA9XG4gICAgICAgICd4cHJ2OXMyMVpyUUgxNDNLMmZKOTFTNEJSc3VwY1lyRTZtbVk5NmZjWDVIa2hvVHJyd213amQxNkNuODdjV2luSmpCeXJmcG9qang3ZXpzSkx4N1RBS0xUOG04aE01S2F4OVljb3huQmVKWjN0MmsnO1xuICAgICAgY29uc3Qga2V5Y2hhaW4gPSB7IHhwcnYgfTtcbiAgICAgIGNvbnN0IHR4ID0ge1xuICAgICAgICByZWNlaXZlZFRyYXZlbEluZm86IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0b1B1YktleVBhdGg6ICdtLzAvMCcsXG4gICAgICAgICAgICBmcm9tUHViS2V5OiBLTk9XTl9SRUNJUElFTlRfUFVCLFxuICAgICAgICAgICAgZW5jcnlwdGVkVHJhdmVsSW5mbzogJ3NvbWVFbmNyeXB0ZWRCbG9iJyxcbiAgICAgICAgICAgIHRyYXZlbEluZm86ICcnLFxuICAgICAgICAgICAgdHJhbnNhY3Rpb25JZDogJ3R4aWQxJyxcbiAgICAgICAgICAgIG91dHB1dEluZGV4OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmF2ZWwuZGVjcnlwdFJlY2VpdmVkVHJhdmVsSW5mbyh7IHR4LCBrZXljaGFpbiB9KTtcbiAgICAgIGRlY3J5cHRTdHViLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICByZXN1bHQuc2hvdWxkLmVxdWFsKHR4KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHByZXBhcmVQYXJhbXNcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGRlc2NyaWJlKCdwcmVwYXJlUGFyYW1zJywgKCkgPT4ge1xuICAgIGl0KCd0aHJvd3Mgd2hlbiByZWNpcGllbnQgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRyYXZlbFxuICAgICAgICAucHJlcGFyZVBhcmFtcyh7XG4gICAgICAgICAgdHhpZDogJ2FiYzEyMycsXG4gICAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdBbGljZScgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL2ludmFsaWQgb3IgbWlzc2luZyByZWNpcGllbnQvKTtcbiAgICB9KTtcblxuICAgIGl0KCd0aHJvd3Mgd2hlbiB0cmF2ZWxJbmZvIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0cmF2ZWxcbiAgICAgICAgLnByZXBhcmVQYXJhbXMoe1xuICAgICAgICAgIHR4aWQ6ICdhYmMxMjMnLFxuICAgICAgICAgIHJlY2lwaWVudDogeyBlbnRlcnByaXNlOiAnU0RLVGVzdCcsIHB1YktleTogS05PV05fUkVDSVBJRU5UX1BVQiwgb3V0cHV0SW5kZXg6ICcwJyB9LFxuICAgICAgICB9KVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvaW52YWxpZCBvciBtaXNzaW5nIHRyYXZlbEluZm8vKTtcbiAgICB9KTtcblxuICAgIGl0KCdjYWxscyBlbmNyeXB0IGFuZCByZXR1cm5zIGV4cGVjdGVkIG91dHB1dCBzaGFwZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGVuY3J5cHRTdHViID0gc2lub24uc3R1YihiaXRnbywgJ2VuY3J5cHQnKS5yZXNvbHZlcygnYXN5bmNFbmNyeXB0ZWRCbG9iJyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYXZlbC5wcmVwYXJlUGFyYW1zKHtcbiAgICAgICAgdHhpZDogJ3R4aWQ3ODknLFxuICAgICAgICByZWNpcGllbnQ6IHsgZW50ZXJwcmlzZTogJ1NES1Rlc3QnLCBwdWJLZXk6IEtOT1dOX1JFQ0lQSUVOVF9QVUIsIG91dHB1dEluZGV4OiAnMScgfSxcbiAgICAgICAgdHJhdmVsSW5mbzogeyBmcm9tVXNlck5hbWU6ICdCb2InLCB0b0FkZHJlc3M6ICcxQml0R28nIH0sXG4gICAgICB9KTtcblxuICAgICAgZW5jcnlwdFN0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJlc3VsdC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndHhpZCcsICd0eGlkNzg5Jyk7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RvUHViS2V5JywgS05PV05fUkVDSVBJRU5UX1BVQik7XG4gICAgICByZXN1bHQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Zyb21QdWJLZXknKS53aGljaC5pcy5hLlN0cmluZygpO1xuICAgICAgcmVzdWx0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdlbmNyeXB0ZWRUcmF2ZWxJbmZvJywgJ2FzeW5jRW5jcnlwdGVkQmxvYicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|