@bitgo-beta/sdk-api 1.10.1-beta.78 → 1.10.1-beta.780

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.
@@ -2,6 +2,42 @@
2
2
  /**
3
3
  * @hidden
4
4
  */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
5
41
  Object.defineProperty(exports, "__esModule", { value: true });
6
42
  /**
7
43
  */
@@ -13,10 +49,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
49
  //
14
50
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
15
51
  const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
16
- const utxolib = require("@bitgo-beta/utxo-lib");
17
- const _ = require("lodash");
18
- const Bluebird = require("bluebird");
19
- const co = Bluebird.coroutine;
52
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
53
+ const lodash_1 = __importDefault(require("lodash"));
54
+ const bluebird_1 = __importDefault(require("bluebird"));
55
+ const co = bluebird_1.default.coroutine;
20
56
  const Wallet = require('./wallet');
21
57
  //
22
58
  // Constructor
@@ -37,19 +73,19 @@ Wallets.prototype.list = function (params, callback) {
37
73
  throw new Error('cannot specify both skip and prevId');
38
74
  }
39
75
  if (params.limit) {
40
- if (!_.isNumber(params.limit)) {
76
+ if (!lodash_1.default.isNumber(params.limit)) {
41
77
  throw new Error('invalid limit argument, expecting number');
42
78
  }
43
79
  args.push('limit=' + params.limit);
44
80
  }
45
81
  if (params.getbalances) {
46
- if (!_.isBoolean(params.getbalances)) {
82
+ if (!lodash_1.default.isBoolean(params.getbalances)) {
47
83
  throw new Error('invalid getbalances argument, expecting boolean');
48
84
  }
49
85
  args.push('getbalances=' + params.getbalances);
50
86
  }
51
87
  if (params.skip) {
52
- if (!_.isNumber(params.skip)) {
88
+ if (!lodash_1.default.isNumber(params.skip)) {
53
89
  throw new Error('invalid skip argument, expecting number');
54
90
  }
55
91
  args.push('skip=' + params.skip);
@@ -62,7 +98,7 @@ Wallets.prototype.list = function (params, callback) {
62
98
  query = '?' + args.join('&');
63
99
  }
64
100
  const self = this;
65
- return Bluebird.resolve(this.bitgo.get(this.bitgo.url('/wallet' + query)).result())
101
+ return bluebird_1.default.resolve(this.bitgo.get(this.bitgo.url('/wallet' + query)).result())
66
102
  .then(function (body) {
67
103
  body.wallets = body.wallets.map(function (w) {
68
104
  return new Wallet(self.bitgo, w);
@@ -79,7 +115,7 @@ Wallets.prototype.getWallet = function (params, callback) {
79
115
  if (params.gpk) {
80
116
  query = '?gpk=1';
81
117
  }
82
- return Bluebird.resolve(this.bitgo.get(this.bitgo.url('/wallet/' + params.id + query)).result())
118
+ return bluebird_1.default.resolve(this.bitgo.get(this.bitgo.url('/wallet/' + params.id + query)).result())
83
119
  .then(function (wallet) {
84
120
  return new Wallet(self.bitgo, wallet);
85
121
  })
@@ -92,7 +128,7 @@ Wallets.prototype.getWallet = function (params, callback) {
92
128
  Wallets.prototype.listInvites = function (params, callback) {
93
129
  params = params || {};
94
130
  sdk_core_1.common.validateParams(params, [], [], callback);
95
- return Bluebird.resolve(this.bitgo.get(this.bitgo.url('/walletinvite')).result()).nodeify(callback);
131
+ return bluebird_1.default.resolve(this.bitgo.get(this.bitgo.url('/walletinvite')).result()).nodeify(callback);
96
132
  };
97
133
  //
98
134
  // cancelInvite
@@ -101,7 +137,7 @@ Wallets.prototype.listInvites = function (params, callback) {
101
137
  Wallets.prototype.cancelInvite = function (params, callback) {
102
138
  params = params || {};
103
139
  sdk_core_1.common.validateParams(params, ['walletInviteId'], [], callback);
104
- return Bluebird.resolve(this.bitgo.del(this.bitgo.url('/walletinvite/' + params.walletInviteId)).result()).nodeify(callback);
140
+ return bluebird_1.default.resolve(this.bitgo.del(this.bitgo.url('/walletinvite/' + params.walletInviteId)).result()).nodeify(callback);
105
141
  };
106
142
  //
107
143
  // listShares
@@ -110,7 +146,7 @@ Wallets.prototype.cancelInvite = function (params, callback) {
110
146
  Wallets.prototype.listShares = function (params, callback) {
111
147
  params = params || {};
112
148
  sdk_core_1.common.validateParams(params, [], [], callback);
113
- return Bluebird.resolve(this.bitgo.get(this.bitgo.url('/walletshare')).result()).nodeify(callback);
149
+ return bluebird_1.default.resolve(this.bitgo.get(this.bitgo.url('/walletshare')).result()).nodeify(callback);
114
150
  };
115
151
  //
116
152
  // resendShareInvite
@@ -138,7 +174,7 @@ Wallets.prototype.resendShareInvite = function (params, callback) {
138
174
  Wallets.prototype.getShare = function (params, callback) {
139
175
  params = params || {};
140
176
  sdk_core_1.common.validateParams(params, ['walletShareId'], [], callback);
141
- return Bluebird.resolve(this.bitgo.get(this.bitgo.url('/walletshare/' + params.walletShareId)).result()).nodeify(callback);
177
+ return bluebird_1.default.resolve(this.bitgo.get(this.bitgo.url('/walletshare/' + params.walletShareId)).result()).nodeify(callback);
142
178
  };
143
179
  //
144
180
  // updateShare
@@ -150,7 +186,7 @@ Wallets.prototype.getShare = function (params, callback) {
150
186
  Wallets.prototype.updateShare = function (params, callback) {
151
187
  params = params || {};
152
188
  sdk_core_1.common.validateParams(params, ['walletShareId'], [], callback);
153
- return Bluebird.resolve(this.bitgo
189
+ return bluebird_1.default.resolve(this.bitgo
154
190
  .post(this.bitgo.url('/walletshare/' + params.walletShareId))
155
191
  .send(params)
156
192
  .result()).nodeify(callback);
@@ -164,7 +200,7 @@ Wallets.prototype.updateShare = function (params, callback) {
164
200
  Wallets.prototype.cancelShare = function (params, callback) {
165
201
  params = params || {};
166
202
  sdk_core_1.common.validateParams(params, ['walletShareId'], [], callback);
167
- return Bluebird.resolve(this.bitgo
203
+ return bluebird_1.default.resolve(this.bitgo
168
204
  .del(this.bitgo.url('/walletshare/' + params.walletShareId))
169
205
  .send()
170
206
  .result()).nodeify(callback);
@@ -205,7 +241,7 @@ Wallets.prototype.acceptShare = function (params, callback) {
205
241
  input: sharingKeychain.encryptedXprv,
206
242
  });
207
243
  // Derive key by path (which is used between these 2 users only)
208
- const secret = sdk_core_1.getSharedSecret(utxo_lib_1.bip32.fromBase58(sharingKeychain.xprv).derivePath(sdk_core_1.sanitizeLegacyPath(walletShare.keychain.path)), Buffer.from(walletShare.keychain.fromPubKey, 'hex')).toString('hex');
244
+ const secret = (0, sdk_core_1.getSharedSecret)(utxo_lib_1.bip32.fromBase58(sharingKeychain.xprv).derivePath((0, sdk_core_1.sanitizeLegacyPath)(walletShare.keychain.path)), Buffer.from(walletShare.keychain.fromPubKey, 'hex')).toString('hex');
209
245
  // Yes! We got the secret successfully here, now decrypt the shared wallet xprv
210
246
  const decryptedSharedWalletXprv = self.bitgo.decrypt({
211
247
  password: secret,
@@ -238,9 +274,9 @@ Wallets.prototype.acceptShare = function (params, callback) {
238
274
  // key: <key, in WIF format>
239
275
  // }
240
276
  Wallets.prototype.createKey = function (params) {
241
- const key = sdk_core_1.makeRandomKey();
277
+ const key = (0, sdk_core_1.makeRandomKey)();
242
278
  return {
243
- address: sdk_core_1.getAddressP2PKH(key),
279
+ address: (0, sdk_core_1.getAddressP2PKH)(key),
244
280
  key: key.toWIF(),
245
281
  };
246
282
  };
@@ -292,7 +328,7 @@ Wallets.prototype.createWalletWithKeychains = function (params, callback) {
292
328
  if (hasBackupXpub && hasBackupXpubProvider) {
293
329
  throw new Error('Cannot provide more than one backupXpub or backupXpubProvider flag');
294
330
  }
295
- if (params.disableTransactionNotifications !== undefined && !_.isBoolean(params.disableTransactionNotifications)) {
331
+ if (params.disableTransactionNotifications !== undefined && !lodash_1.default.isBoolean(params.disableTransactionNotifications)) {
296
332
  throw new Error('Expected disableTransactionNotifications to be a boolean. ');
297
333
  }
298
334
  let backupKeychain;
@@ -374,15 +410,15 @@ Wallets.prototype.createWalletWithKeychains = function (params, callback) {
374
410
  Wallets.prototype.createForwardWallet = function (params, callback) {
375
411
  params = params || {};
376
412
  sdk_core_1.common.validateParams(params, ['privKey', 'sourceAddress'], ['label'], callback);
377
- if (!_.isObject(params.destinationWallet) || !params.destinationWallet.id) {
413
+ if (!lodash_1.default.isObject(params.destinationWallet) || !params.destinationWallet.id) {
378
414
  throw new Error('expecting destinationWallet object');
379
415
  }
380
416
  const self = this;
381
417
  let newDestinationAddress;
382
418
  let addressFromPrivKey;
383
419
  try {
384
- const key = utxolib.ECPair.fromWIF(params.privKey, sdk_core_1.getNetwork());
385
- addressFromPrivKey = sdk_core_1.getAddressP2PKH(key);
420
+ const key = utxolib.ECPair.fromWIF(params.privKey, (0, sdk_core_1.getNetwork)());
421
+ addressFromPrivKey = (0, sdk_core_1.getAddressP2PKH)(key);
386
422
  }
387
423
  catch (e) {
388
424
  throw new Error('expecting a valid privKey');
@@ -403,7 +439,7 @@ Wallets.prototype.createForwardWallet = function (params, callback) {
403
439
  if (params.enterprise) {
404
440
  walletParams.enterprise = params.enterprise;
405
441
  }
406
- return Bluebird.resolve(self.bitgo.post(self.bitgo.url('/wallet')).send(walletParams).result()).nodeify(callback);
442
+ return bluebird_1.default.resolve(self.bitgo.post(self.bitgo.url('/wallet')).send(walletParams).result()).nodeify(callback);
407
443
  });
408
444
  };
409
445
  /**
@@ -419,7 +455,7 @@ Wallets.prototype.createForwardWallet = function (params, callback) {
419
455
  Wallets.prototype.add = function (params, callback) {
420
456
  params = params || {};
421
457
  sdk_core_1.common.validateParams(params, [], ['label', 'enterprise'], callback);
422
- if (Array.isArray(params.keychains) === false || !_.isNumber(params.m) || !_.isNumber(params.n)) {
458
+ if (Array.isArray(params.keychains) === false || !lodash_1.default.isNumber(params.m) || !lodash_1.default.isNumber(params.n)) {
423
459
  throw new Error('invalid argument');
424
460
  }
425
461
  // TODO: support more types of multisig
@@ -442,7 +478,7 @@ Wallets.prototype.add = function (params, callback) {
442
478
  if (params.disableTransactionNotifications) {
443
479
  walletParams.disableTransactionNotifications = params.disableTransactionNotifications;
444
480
  }
445
- return Bluebird.resolve(this.bitgo.post(this.bitgo.url('/wallet')).send(walletParams).result())
481
+ return bluebird_1.default.resolve(this.bitgo.post(this.bitgo.url('/wallet')).send(walletParams).result())
446
482
  .then(function (body) {
447
483
  return new Wallet(self.bitgo, body);
448
484
  })
@@ -466,7 +502,7 @@ Wallets.prototype.get = function (params, callback) {
466
502
  Wallets.prototype.remove = function (params, callback) {
467
503
  params = params || {};
468
504
  sdk_core_1.common.validateParams(params, ['id'], [], callback);
469
- return Bluebird.resolve(this.bitgo.del(this.bitgo.url('/wallet/' + params.id)).result()).nodeify(callback);
505
+ return bluebird_1.default.resolve(this.bitgo.del(this.bitgo.url('/wallet/' + params.id)).result()).nodeify(callback);
470
506
  };
471
507
  module.exports = Wallets;
472
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS93YWxsZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7QUFFSDtHQUNHO0FBQ0gsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQixzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0YsbURBTzhCO0FBQzlCLG1EQUE2QztBQUM3QyxnREFBZ0Q7QUFDaEQsNEJBQTRCO0FBQzVCLHFDQUFxQztBQUNyQyxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzlCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVuQyxFQUFFO0FBQ0YsY0FBYztBQUNkLEVBQUU7QUFDRixNQUFNLE9BQU8sR0FBRyxVQUFVLEtBQUs7SUFDN0Isc0NBQXNDO0lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLENBQUMsQ0FBQztBQUVGLEVBQUU7QUFDRixPQUFPO0FBQ1AsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxVQUFVLE1BQU0sRUFBRSxRQUFRO0lBQ2pELE1BQU0sR0FBRyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3RCLGlCQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWhELE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztJQUUxQixJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7S0FDeEQ7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUss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cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaGlkZGVuXG4gKi9cblxuLyoqXG4gKi9cbi8vXG4vLyBXYWxsZXRzIE9iamVjdFxuLy8gQml0R28gYWNjZXNzb3IgdG8gYSB1c2VyJ3Mgd2FsbGV0cy5cbi8vXG4vLyBDb3B5cmlnaHQgMjAxNCwgQml0R28sIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vL1xuaW1wb3J0IHtcbiAgY29tbW9uLFxuICBnZXRBZGRyZXNzUDJQS0gsXG4gIGdldE5ldHdvcmssXG4gIGdldFNoYXJlZFNlY3JldCxcbiAgbWFrZVJhbmRvbUtleSxcbiAgc2FuaXRpemVMZWdhY3lQYXRoLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBiaXAzMiB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgQmx1ZWJpcmQgZnJvbSAnYmx1ZWJpcmQnO1xuY29uc3QgY28gPSBCbHVlYmlyZC5jb3JvdXRpbmU7XG5jb25zdCBXYWxsZXQgPSByZXF1aXJlKCcuL3dhbGxldCcpO1xuXG4vL1xuLy8gQ29uc3RydWN0b3Jcbi8vXG5jb25zdCBXYWxsZXRzID0gZnVuY3Rpb24gKGJpdGdvKSB7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgLSBubyBpbXBsaWNpdCB0aGlzXG4gIHRoaXMuYml0Z28gPSBiaXRnbztcbn07XG5cbi8vXG4vLyBsaXN0XG4vLyBMaXN0IHRoZSB1c2VyJ3Mgd2FsbGV0c1xuLy9cbldhbGxldHMucHJvdG90eXBlLmxpc3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgaWYgKHBhcmFtcy5za2lwICYmIHBhcmFtcy5wcmV2SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggc2tpcCBhbmQgcHJldklkJyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxpbWl0KSB7XG4gICAgaWYgKCFfLmlzTnVtYmVyKHBhcmFtcy5saW1pdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBsaW1pdCBhcmd1bWVudCwgZXhwZWN0aW5nIG51bWJlcicpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJ2xpbWl0PScgKyBwYXJhbXMubGltaXQpO1xuICB9XG4gIGlmIChwYXJhbXMuZ2V0YmFsYW5jZXMpIHtcbiAgICBpZiAoIV8uaXNCb29sZWFuKHBhcmFtcy5nZXRiYWxhbmNlcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBnZXRiYWxhbmNlcyBhcmd1bWVudCwgZXhwZWN0aW5nIGJvb2xlYW4nKTtcbiAgICB9XG4gICAgYXJncy5wdXNoKCdnZXRiYWxhbmNlcz0nICsgcGFyYW1zLmdldGJhbGFuY2VzKTtcbiAgfVxuICBpZiAocGFyYW1zLnNraXApIHtcbiAgICBpZiAoIV8uaXNOdW1iZXIocGFyYW1zLnNraXApKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2tpcCBhcmd1bWVudCwgZXhwZWN0aW5nIG51bWJlcicpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJ3NraXA9JyArIHBhcmFtcy5za2lwKTtcbiAgfSBlbHNlIGlmIChwYXJhbXMucHJldklkKSB7XG4gICAgYXJncy5wdXNoKCdwcmV2SWQ9JyArIHBhcmFtcy5wcmV2SWQpO1xuICB9XG5cbiAgbGV0IHF1ZXJ5ID0gJyc7XG4gIGlmIChhcmdzLmxlbmd0aCkge1xuICAgIHF1ZXJ5ID0gJz8nICsgYXJncy5qb2luKCcmJyk7XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy93YWxsZXQnICsgcXVlcnkpKS5yZXN1bHQoKSlcbiAgICAudGhlbihmdW5jdGlvbiAoYm9keSkge1xuICAgICAgYm9keS53YWxsZXRzID0gYm9keS53YWxsZXRzLm1hcChmdW5jdGlvbiAodykge1xuICAgICAgICByZXR1cm4gbmV3IFdhbGxldChzZWxmLmJpdGdvLCB3KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJvZHk7XG4gICAgfSlcbiAgICAubm9kZWlmeShjYWxsYmFjayk7XG59O1xuXG5XYWxsZXRzLnByb3RvdHlwZS5nZXRXYWxsZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnaWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICBjb25zdCBzZWxmID0gdGhpcztcblxuICBsZXQgcXVlcnkgPSAnJztcbiAgaWYgKHBhcmFtcy5ncGspIHtcbiAgICBxdWVyeSA9ICc/Z3BrPTEnO1xuICB9XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy93YWxsZXQvJyArIHBhcmFtcy5pZCArIHF1ZXJ5KSkucmVzdWx0KCkpXG4gICAgLnRoZW4oZnVuY3Rpb24gKHdhbGxldCkge1xuICAgICAgcmV0dXJuIG5ldyBXYWxsZXQoc2VsZi5iaXRnbywgd2FsbGV0KTtcbiAgICB9KVxuICAgIC5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBsaXN0SW52aXRlc1xuLy8gTGlzdCB0aGUgaW52aXRlcyBvbiBhIHVzZXJcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5saXN0SW52aXRlcyA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy93YWxsZXRpbnZpdGUnKSkucmVzdWx0KCkpLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGNhbmNlbEludml0ZVxuLy8gY2FuY2VsIGEgd2FsbGV0IGludml0ZSB0aGF0IGEgdXNlciBpbml0aWF0ZWRcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5jYW5jZWxJbnZpdGUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnd2FsbGV0SW52aXRlSWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZSh0aGlzLmJpdGdvLmRlbCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldGludml0ZS8nICsgcGFyYW1zLndhbGxldEludml0ZUlkKSkucmVzdWx0KCkpLm5vZGVpZnkoXG4gICAgY2FsbGJhY2tcbiAgKTtcbn07XG5cbi8vXG4vLyBsaXN0U2hhcmVzXG4vLyBMaXN0IHRoZSB1c2VyJ3Mgd2FsbGV0IHNoYXJlc1xuLy9cbldhbGxldHMucHJvdG90eXBlLmxpc3RTaGFyZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0c2hhcmUnKSkucmVzdWx0KCkpLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIHJlc2VuZFNoYXJlSW52aXRlXG4vLyBSZXNlbmQgdGhlIGludml0YXRpb24gZW1haWwgd2hpY2ggc2hhcmVzIGEgd2FsbGV0IHdpdGggYW5vdGhlciB1c2VyXG4vLyBQYXJhbXM6XG4vLyAgICB3YWxsZXRTaGFyZUlkIC0gdGhlIHdhbGxldCBzaGFyZSB0byBnZXQgaW5mb3JtYXRpb24gb25cbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5yZXNlbmRTaGFyZUludml0ZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHJldHVybiBjbyhmdW5jdGlvbiogKCkge1xuICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3dhbGxldFNoYXJlSWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICAgIGNvbnN0IHVybFBhcnRzID0gcGFyYW1zLndhbGxldFNoYXJlSWQgKyAnL3Jlc2VuZGVtYWlsJztcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICAgIHJldHVybiB0aGlzLmJpdGdvLnBvc3QodGhpcy5iaXRnby51cmwoJy93YWxsZXRzaGFyZS8nICsgdXJsUGFydHMpKS5yZXN1bHQoKTtcbiAgfSlcbiAgICAuY2FsbCh0aGlzKVxuICAgIC5hc0NhbGxiYWNrKGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBnZXRTaGFyZVxuLy8gR2V0cyBhIHdhbGxldCBzaGFyZSBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIHRoZSBlbmNyeXB0ZWQgc2hhcmluZyBrZXljaGFpbi4gcmVxdWlyZXMgdW5sb2NrIGlmIGtleWNoYWluIGlzIHByZXNlbnQuXG4vLyBQYXJhbXM6XG4vLyAgICB3YWxsZXRTaGFyZUlkIC0gdGhlIHdhbGxldCBzaGFyZSB0byBnZXQgaW5mb3JtYXRpb24gb25cbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5nZXRTaGFyZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWyd3YWxsZXRTaGFyZUlkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby51cmwoJy93YWxsZXRzaGFyZS8nICsgcGFyYW1zLndhbGxldFNoYXJlSWQpKS5yZXN1bHQoKSkubm9kZWlmeShcbiAgICBjYWxsYmFja1xuICApO1xufTtcblxuLy9cbi8vIHVwZGF0ZVNoYXJlXG4vLyB1cGRhdGVzIGEgd2FsbGV0IHNoYXJlXG4vLyBQYXJhbXM6XG4vLyAgICB3YWxsZXRTaGFyZUlkIC0gdGhlIHdhbGxldCBzaGFyZSB0byB1cGRhdGVcbi8vICAgIHN0YXRlIC0gdGhlIG5ldyBzdGF0ZSBvZiB0aGUgd2FsbGV0IHNoYXJlXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUudXBkYXRlU2hhcmUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnd2FsbGV0U2hhcmVJZCddLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKFxuICAgIHRoaXMuYml0Z29cbiAgICAgIC5wb3N0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0c2hhcmUvJyArIHBhcmFtcy53YWxsZXRTaGFyZUlkKSlcbiAgICAgIC5zZW5kKHBhcmFtcylcbiAgICAgIC5yZXN1bHQoKVxuICApLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGNhbmNlbFNoYXJlXG4vLyBjYW5jZWxzIGEgd2FsbGV0IHNoYXJlXG4vLyBQYXJhbXM6XG4vLyAgICB3YWxsZXRTaGFyZUlkIC0gdGhlIHdhbGxldCBzaGFyZSB0byB1cGRhdGVcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5jYW5jZWxTaGFyZSA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWyd3YWxsZXRTaGFyZUlkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUoXG4gICAgdGhpcy5iaXRnb1xuICAgICAgLmRlbCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldHNoYXJlLycgKyBwYXJhbXMud2FsbGV0U2hhcmVJZCkpXG4gICAgICAuc2VuZCgpXG4gICAgICAucmVzdWx0KClcbiAgKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBhY2NlcHRTaGFyZVxuLy8gQWNjZXB0cyBhIHdhbGxldCBzaGFyZSwgYWRkaW5nIHRoZSB3YWxsZXQgdG8gdGhlIHVzZXIncyBsaXN0XG4vLyBOZWVkcyBhIHVzZXIncyBwYXNzd29yZCB0byBkZWNyeXB0IHRoZSBzaGFyZWQga2V5XG4vLyBQYXJhbXM6XG4vLyAgICB3YWxsZXRTaGFyZUlkIC0gdGhlIHdhbGxldCBzaGFyZSB0byBhY2NlcHRcbi8vICAgIHVzZXJQYXNzd29yZCAtIChyZXF1aXJlZCBpZiBtb3JlIGEga2V5Y2hhaW4gd2FzIHNoYXJlZCkgdXNlcidzIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIHNoYXJlZCB3YWxsZXRcbi8vICAgIG5ld1dhbGxldFBhc3NwaHJhc2UgLSBuZXcgd2FsbGV0IHBhc3NwaHJhc2UgZm9yIHNhdmluZyB0aGUgc2hhcmVkIHdhbGxldCB4cHJ2LlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgIElmIGxlZnQgYmxhbmsgYW5kIGEgd2FsbGV0IHdpdGggbW9yZSB0aGFuIHZpZXcgcGVybWlzc2lvbnMgd2FzIHNoYXJlZCwgdGhlbiB0aGUgdXNlcnBhc3N3b3JkIGlzIHVzZWQuXG4vLyAgICBvdmVycmlkZUVuY3J5cHRlZFhwcnYgLSBzZXQgb25seSBpZiB0aGUgeHBydiB3YXMgcmVjZWl2ZWQgb3V0LW9mLWJhbmQuXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuYWNjZXB0U2hhcmUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnd2FsbGV0U2hhcmVJZCddLCBbJ292ZXJyaWRlRW5jcnlwdGVkWHBydiddLCBjYWxsYmFjayk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIGxldCBlbmNyeXB0ZWRYcHJ2ID0gcGFyYW1zLm92ZXJyaWRlRW5jcnlwdGVkWHBydjtcblxuICByZXR1cm4gdGhpcy5nZXRTaGFyZSh7IHdhbGxldFNoYXJlSWQ6IHBhcmFtcy53YWxsZXRTaGFyZUlkIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKHdhbGxldFNoYXJlKSB7XG4gICAgICAvLyBSZXR1cm4gcmlnaHQgYXdheSBpZiB0aGVyZSBpcyBubyBrZXljaGFpbiB0byBkZWNyeXB0LCBvciBpZiBleHBsaWNpdCBlbmNyeXB0ZWRYcHJ2IHdhcyBwcm92aWRlZFxuICAgICAgaWYgKCF3YWxsZXRTaGFyZS5rZXljaGFpbiB8fCAhd2FsbGV0U2hhcmUua2V5Y2hhaW4uZW5jcnlwdGVkWHBydiB8fCBlbmNyeXB0ZWRYcHJ2KSB7XG4gICAgICAgIHJldHVybiB3YWxsZXRTaGFyZTtcbiAgICAgIH1cblxuICAgICAgLy8gTW9yZSB0aGFuIHZpZXdpbmcgd2FzIHJlcXVlc3RlZCwgc28gd2UgbmVlZCB0byBwcm9jZXNzIHRoZSB3YWxsZXQga2V5cyB1c2luZyB0aGUgc2hhcmVkIGVjZGggc2NoZW1lXG4gICAgICBpZiAoIXBhcmFtcy51c2VyUGFzc3dvcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1c2VyUGFzc3dvcmQgcGFyYW0gbXVzdCBiZSBwcm92aWRlZCB0byBkZWNyeXB0IHNoYXJlZCBrZXknKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGYuYml0Z28uZ2V0RUNESEtleWNoYWluKCkudGhlbihmdW5jdGlvbiAoc2hhcmluZ0tleWNoYWluKSB7XG4gICAgICAgIGlmICghc2hhcmluZ0tleWNoYWluLmVuY3J5cHRlZFhwcnYpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY3J5cHRlZFhwcnYgd2FzIG5vdCBmb3VuZCBvbiBzaGFyaW5nIGtleWNoYWluJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgc2hhcmluZyBrZXljaGFpbiwgd2UgY2FuIHdvcmsgb3V0IHRoZSBzZWNyZXQgdXNlZCBmb3Igc2hhcmluZyB0aGUgd2FsbGV0IHdpdGggdXNcbiAgICAgICAgc2hhcmluZ0tleWNoYWluLnhwcnYgPSBzZWxmLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgICAgIHBhc3N3b3JkOiBwYXJhbXMudXNlclBhc3N3b3JkLFxuICAgICAgICAgIGlucHV0OiBzaGFyaW5nS2V5Y2hhaW4uZW5jcnlwdGVkWHBydixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gRGVyaXZlIGtleSBieSBwYXRoICh3aGljaCBpcyB1c2VkIGJldHdlZW4gdGhlc2UgMiB1c2VycyBvbmx5KVxuICAgICAgICBjb25zdCBzZWNyZXQgPSBnZXRTaGFyZWRTZWNyZXQoXG4gICAgICAgICAgYmlwMzIuZnJvbUJhc2U1OChzaGFyaW5nS2V5Y2hhaW4ueHBydikuZGVyaXZlUGF0aChzYW5pdGl6ZUxlZ2FjeVBhdGgod2FsbGV0U2hhcmUua2V5Y2hhaW4ucGF0aCkpLFxuICAgICAgICAgIEJ1ZmZlci5mcm9tKHdhbGxldFNoYXJlLmtleWNoYWluLmZyb21QdWJLZXksICdoZXgnKVxuICAgICAgICApLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgICAvLyBZZXMhIFdlIGdvdCB0aGUgc2VjcmV0IHN1Y2Nlc3NmdWxseSBoZXJlLCBub3cgZGVjcnlwdCB0aGUgc2hhcmVkIHdhbGxldCB4cHJ2XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFNoYXJlZFdhbGxldFhwcnYgPSBzZWxmLmJpdGdvLmRlY3J5cHQoe1xuICAgICAgICAgIHBhc3N3b3JkOiBzZWNyZXQsXG4gICAgICAgICAgaW5wdXQ6IHdhbGxldFNoYXJlLmtleWNoYWluLmVuY3J5cHRlZFhwcnYsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFdlIHdpbGwgbm93IHJlLWVuY3J5cHQgdGhlIHdhbGxldCB3aXRoIG91ciBvd24gcGFzc3dvcmRcbiAgICAgICAgY29uc3QgbmV3V2FsbGV0UGFzc3BocmFzZSA9IHBhcmFtcy5uZXdXYWxsZXRQYXNzcGhyYXNlIHx8IHBhcmFtcy51c2VyUGFzc3dvcmQ7XG4gICAgICAgIGVuY3J5cHRlZFhwcnYgPSBzZWxmLmJpdGdvLmVuY3J5cHQoeyBwYXNzd29yZDogbmV3V2FsbGV0UGFzc3BocmFzZSwgaW5wdXQ6IGRlY3J5cHRlZFNoYXJlZFdhbGxldFhwcnYgfSk7XG5cbiAgICAgICAgLy8gQ2Fycnkgb24gdG8gdGhlIG5leHQgYmxvY2sgd2hlcmUgd2Ugd2lsbCBwb3N0IHRoZSBhY2NlcHRhbmNlIG9mIHRoZSBzaGFyZSB3aXRoIHRoZSBlbmNyeXB0ZWQgeHBydlxuICAgICAgICByZXR1cm4gd2FsbGV0U2hhcmU7XG4gICAgICB9KTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICh3YWxsZXRTaGFyZSkge1xuICAgICAgY29uc3QgdXBkYXRlUGFyYW1zOiBhbnkgPSB7XG4gICAgICAgIHdhbGxldFNoYXJlSWQ6IHBhcmFtcy53YWxsZXRTaGFyZUlkLFxuICAgICAgICBzdGF0ZTogJ2FjY2VwdGVkJyxcbiAgICAgIH07XG5cbiAgICAgIGlmIChlbmNyeXB0ZWRYcHJ2KSB7XG4gICAgICAgIHVwZGF0ZVBhcmFtcy5lbmNyeXB0ZWRYcHJ2ID0gZW5jcnlwdGVkWHBydjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGYudXBkYXRlU2hhcmUodXBkYXRlUGFyYW1zKTtcbiAgICB9KVxuICAgIC5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBjcmVhdGVLZXlcbi8vIENyZWF0ZSBhIHNpbmdsZSBiaXRjb2luIGtleS4gIFRoaXMgcnVucyBsb2NhbGx5LlxuLy8gUmV0dXJuczoge1xuLy8gICBhZGRyZXNzOiA8YWRkcmVzcz5cbi8vICAga2V5OiA8a2V5LCBpbiBXSUYgZm9ybWF0PlxuLy8gfVxuV2FsbGV0cy5wcm90b3R5cGUuY3JlYXRlS2V5ID0gZnVuY3Rpb24gKHBhcmFtcykge1xuICBjb25zdCBrZXkgPSBtYWtlUmFuZG9tS2V5KCk7XG4gIHJldHVybiB7XG4gICAgYWRkcmVzczogZ2V0QWRkcmVzc1AyUEtIKGtleSksXG4gICAga2V5OiBrZXkudG9XSUYoKSxcbiAgfTtcbn07XG5cbi8vXG4vLyBjcmVhdGVXYWxsZXRXaXRoS2V5Y2hhaW5zXG4vLyBDcmVhdGUgYSBuZXcgMi1vZi0zIHdhbGxldCBhbmQgaXQncyBhc3NvY2lhdGVkIGtleWNoYWlucy5cbi8vIFJldHVybnMgdGhlIGxvY2FsbHkgY3JlYXRlZCBrZXlzIHdpdGggdGhlaXIgZW5jcnlwdGVkIHhwcnZzLlxuLy8gKipXQVJOSU5HOiBCRSBTVVJFIFRPIEJBQ0tVUCEgTk9UIERPSU5HIFNPIENBTiBSRVNVTFQgSU4gTE9TUyBPRiBGVU5EUyEqKlxuLy9cbi8vIDEuIENyZWF0ZXMgdGhlIHVzZXIga2V5Y2hhaW4gbG9jYWxseSBvbiB0aGUgY2xpZW50LCBhbmQgZW5jcnlwdHMgaXQgd2l0aCB0aGUgcHJvdmlkZWQgcGFzc3BocmFzZVxuLy8gMi4gSWYgbm8geHB1YiB3YXMgcHJvdmlkZWQsIGNyZWF0ZXMgdGhlIGJhY2t1cCBrZXljaGFpbiBsb2NhbGx5IG9uIHRoZSBjbGllbnQsIGFuZCBlbmNyeXB0cyBpdCB3aXRoIHRoZSBwcm92aWRlZCBwYXNzcGhyYXNlXG4vLyAzLiBVcGxvYWRzIHRoZSBlbmNyeXB0ZWQgdXNlciBhbmQgYmFja3VwIGtleWNoYWlucyB0byBCaXRHb1xuLy8gNC4gQ3JlYXRlcyB0aGUgQml0R28ga2V5IG9uIHRoZSBzZXJ2aWNlXG4vLyA1LiBDcmVhdGVzIHRoZSB3YWxsZXQgb24gQml0R28gd2l0aCB0aGUgMyBwdWJsaWMga2V5cyBhYm92ZVxuLy9cbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgXCJwYXNzcGhyYXNlXCI6IHdhbGxldCBwYXNzcGhyYXNlIHRvIGVuY3J5cHQgdXNlciBhbmQgYmFja3VwIGtleXMgd2l0aFxuLy8gICBcImxhYmVsXCI6IHdhbGxldCBsYWJlbCwgaXMgc2hvd24gaW4gQml0R28gVUlcbi8vICAgXCJiYWNrdXBYcHViXCI6IGJhY2t1cCBrZXljaGFpbiB4cHViLCBpdCBpcyBISUdITFkgUkVDT01NRU5ERUQgeW91IGdlbmVyYXRlIHRoaXMgb24gYSBzZXBhcmF0ZSBtYWNoaW5lIVxuLy8gICAgICAgICAgICAgICAgIEJJVEdPIERPRVMgTk9UIEdVQVJBTlRFRSBTQUZFVFkgT0YgV0FMTEVUUyBXSVRIIE1VTFRJUExFIEtFWVMgQ1JFQVRFRCBPTiBUSEUgU0FNRSBNQUNISU5FICoqXG4vLyAgIFwiYmFja3VwWHB1YlByb3ZpZGVyXCI6IFByb3Zpc2lvbiBiYWNrdXAga2V5IGZyb20gdGhpcyBwcm92aWRlciAoS1JTKSwgZS5nLiBcImtleXRlcm5hbFwiLlxuLy8gICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZyB0aGlzIHZhbHVlIHdpbGwgY3JlYXRlIGFuIGluc3RhbnQtY2FwYWJsZSB3YWxsZXQuXG4vLyAgIFwicGFzc2NvZGVFbmNyeXB0aW9uQ29kZVwiOiB0aGUgY29kZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdhbGxldCBwYXNzY29kZSB1c2VkIGluIHRoZSByZWNvdmVyeSBwcm9jZXNzXG4vLyBSZXR1cm5zOiB7XG4vLyAgIHdhbGxldDogbmV3bHkgY3JlYXRlZCB3YWxsZXQgbW9kZWwgb2JqZWN0XG4vLyAgIHVzZXJLZXljaGFpbjogdGhlIG5ld2x5IGNyZWF0ZWQgdXNlciBrZXljaGFpbiwgd2hpY2ggaGFzIGFuIGVuY3J5cHRlZCB4cHJ2IHN0b3JlZCBvbiBCaXRHb1xuLy8gICBiYWNrdXBLZXljaGFpbjogdGhlIG5ld2x5IGNyZWF0ZWQgYmFja3VwIGtleWNoYWluXG4vL1xuLy8gKiogQkUgU1VSRSBUTyBCQUNLIFVQIFRIRSBFTkNSWVBURUQgVVNFUiBBTkQgQkFDS1VQIEtFWUNIQUlOUyEqKlxuLy9cbi8vIH1cbldhbGxldHMucHJvdG90eXBlLmNyZWF0ZVdhbGxldFdpdGhLZXljaGFpbnMgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhcbiAgICBwYXJhbXMsXG4gICAgWydwYXNzcGhyYXNlJ10sXG4gICAgWydsYWJlbCcsICdiYWNrdXBYcHViJywgJ2VudGVycHJpc2UnLCAncGFzc2NvZGVFbmNyeXB0aW9uQ29kZSddLFxuICAgIGNhbGxiYWNrXG4gICk7XG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICBjb25zdCBsYWJlbCA9IHBhcmFtcy5sYWJlbDtcblxuICAvLyBDcmVhdGUgdGhlIHVzZXIgYW5kIGJhY2t1cCBrZXkuXG4gIGNvbnN0IHVzZXJLZXljaGFpbiA9IHRoaXMuYml0Z28ua2V5Y2hhaW5zKCkuY3JlYXRlKCk7XG4gIHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRYcHJ2ID0gdGhpcy5iaXRnby5lbmNyeXB0KHsgcGFzc3dvcmQ6IHBhcmFtcy5wYXNzcGhyYXNlLCBpbnB1dDogdXNlcktleWNoYWluLnhwcnYgfSk7XG5cbiAgY29uc3Qga2V5Y2hhaW5EYXRhOiBhbnkgPSB7XG4gICAgeHB1YjogdXNlcktleWNoYWluLnhwdWIsXG4gICAgZW5jcnlwdGVkWHBydjogdXNlcktleWNoYWluLmVuY3J5cHRlZFhwcnYsXG4gIH07XG5cbiAgaWYgKHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAga2V5Y2hhaW5EYXRhLm9yaWdpbmFsUGFzc2NvZGVFbmNyeXB0aW9uQ29kZSA9IHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlO1xuICB9XG5cbiAgY29uc3QgaGFzQmFja3VwWHB1YiA9ICEhcGFyYW1zLmJhY2t1cFhwdWI7XG4gIGNvbnN0IGhhc0JhY2t1cFhwdWJQcm92aWRlciA9ICEhcGFyYW1zLmJhY2t1cFhwdWJQcm92aWRlcjtcbiAgaWYgKGhhc0JhY2t1cFhwdWIgJiYgaGFzQmFja3VwWHB1YlByb3ZpZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcHJvdmlkZSBtb3JlIHRoYW4gb25lIGJhY2t1cFhwdWIgb3IgYmFja3VwWHB1YlByb3ZpZGVyIGZsYWcnKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucyAhPT0gdW5kZWZpbmVkICYmICFfLmlzQm9vbGVhbihwYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnMgdG8gYmUgYSBib29sZWFuLiAnKTtcbiAgfVxuXG4gIGxldCBiYWNrdXBLZXljaGFpbjtcbiAgbGV0IGJpdGdvS2V5Y2hhaW47XG5cbiAgLy8gQWRkIHRoZSB1c2VyIGtleWNoYWluXG4gIHJldHVybiBzZWxmLmJpdGdvXG4gICAgLmtleWNoYWlucygpXG4gICAgLmFkZChrZXljaGFpbkRhdGEpXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQWRkIHRoZSBiYWNrdXAga2V5Y2hhaW5cbiAgICAgIGlmIChwYXJhbXMuYmFja3VwWHB1YlByb3ZpZGVyKSB7XG4gICAgICAgIC8vIElmIHJlcXVlc3RlZCwgdXNlIGEgS1JTIG9yIGJhY2t1cCBrZXkgcHJvdmlkZXJcbiAgICAgICAgcmV0dXJuIHNlbGYuYml0Z29cbiAgICAgICAgICAua2V5Y2hhaW5zKClcbiAgICAgICAgICAuY3JlYXRlQmFja3VwKHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiBwYXJhbXMuYmFja3VwWHB1YlByb3ZpZGVyLFxuICAgICAgICAgICAgZGlzYWJsZUtSU0VtYWlsOiBwYXJhbXMuZGlzYWJsZUtSU0VtYWlsLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGtleWNoYWluKSB7XG4gICAgICAgICAgICBiYWNrdXBLZXljaGFpbiA9IGtleWNoYWluO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zLmJhY2t1cFhwdWIpIHtcbiAgICAgICAgLy8gdXNlciBwcm92aWRlZCBiYWNrdXAgeHB1YlxuICAgICAgICBiYWNrdXBLZXljaGFpbiA9IHsgeHB1YjogcGFyYW1zLmJhY2t1cFhwdWIgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG5vIHByb3ZpZGVkIHhwdWIsIHNvIGRlZmF1bHQgdG8gY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgICAgYmFja3VwS2V5Y2hhaW4gPSBzZWxmLmJpdGdvLmtleWNoYWlucygpLmNyZWF0ZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZi5iaXRnby5rZXljaGFpbnMoKS5hZGQoYmFja3VwS2V5Y2hhaW4pO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNlbGYuYml0Z28ua2V5Y2hhaW5zKCkuY3JlYXRlQml0R28oKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uIChrZXljaGFpbikge1xuICAgICAgYml0Z29LZXljaGFpbiA9IGtleWNoYWluO1xuICAgICAgY29uc3Qgd2FsbGV0UGFyYW1zOiBhbnkgPSB7XG4gICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgbTogMixcbiAgICAgICAgbjogMyxcbiAgICAgICAga2V5Y2hhaW5zOiBbeyB4cHViOiB1c2VyS2V5Y2hhaW4ueHB1YiB9LCB7IHhwdWI6IGJhY2t1cEtleWNoYWluLnhwdWIgfSwgeyB4cHViOiBiaXRnb0tleWNoYWluLnhwdWIgfV0sXG4gICAgICB9O1xuXG4gICAgICBpZiAocGFyYW1zLmVudGVycHJpc2UpIHtcbiAgICAgICAgd2FsbGV0UGFyYW1zLmVudGVycHJpc2UgPSBwYXJhbXMuZW50ZXJwcmlzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmFtcy5kaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zKSB7XG4gICAgICAgIHdhbGxldFBhcmFtcy5kaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zID0gcGFyYW1zLmRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmFkZCh3YWxsZXRQYXJhbXMpO1xuICAgIH0pXG4gICAgLnRoZW4oZnVuY3Rpb24gKG5ld1dhbGxldCkge1xuICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgIHdhbGxldDogbmV3V2FsbGV0LFxuICAgICAgICB1c2VyS2V5Y2hhaW46IHVzZXJLZXljaGFpbixcbiAgICAgICAgYmFja3VwS2V5Y2hhaW46IGJhY2t1cEtleWNoYWluLFxuICAgICAgICBiaXRnb0tleWNoYWluOiBiaXRnb0tleWNoYWluLFxuICAgICAgfTtcblxuICAgICAgaWYgKGJhY2t1cEtleWNoYWluLnhwcnYpIHtcbiAgICAgICAgcmVzdWx0Lndhcm5pbmcgPSAnQmUgc3VyZSB0byBiYWNrdXAgdGhlIGJhY2t1cCBrZXljaGFpbiAtLSBpdCBpcyBub3Qgc3RvcmVkIGFueXdoZXJlIGVsc2UhJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KVxuICAgIC5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBjcmVhdGVGb3J3YXJkV2FsbGV0XG4vLyBDcmVhdGVzIGEgZm9yd2FyZCB3YWxsZXQgZnJvbSBhIHNpbmdsZSBwcml2YXRlIGtleS5cbi8vIEJpdEdvIHdpbGwgd2F0Y2ggdGhlIHdhbGxldCBhbmQgc2VuZCBhbnkgaW5jb21pbmcgdHJhbnNhY3Rpb25zIHRvIGEgZGVzdGluYXRpb24gbXVsdGktc2lnIHdhbGxldFxuLy8gV0FSTklORzogVEhFIFBSSVZBVEUgS0VZIFdJTEwgQkUgU0VOVCBUTyBCSVRHTy4gWU9VIE1VU1QgQ09OVEFDVCBCSVRHTyBCRUZPUkUgVVNJTkcgVEhJUyBGRUFUVVJFIVxuLy8gV0UgQ0FOTk9UIEdVQVJBTlRFRSBUSEUgU0VDVVJJVFkgT0YgU0lOR0xFLVNJRyBXQUxMRVRTIEFTIENVU1RPRFkgSVMgVU5DTEVBUi5cbi8vXG4vLyBQYXJhbXM6XG4vLyAgICBwcml2S2V5IC0gdGhlIHByaXZhdGUga2V5IG9uIGEgbGVnYWN5IHNpbmdsZS1zaWduYXR1cmUgd2FsbGV0IHRvIGJlIHdhdGNoZWQgKFdJRiBmb3JtYXQpXG4vLyAgICBzb3VyY2VBZGRyZXNzIC0gdGhlIGJpdGNvaW4gYWRkcmVzcyB0byBmb3J3YXJkIGZyb20gKGNvcnJlc3BvbmRzIHRvIHRoZSBwcml2YXRlIGtleSlcbi8vICAgIGRlc3RpbmF0aW9uV2FsbGV0IC0gdGhlIHdhbGxldCBvYmplY3QgdG8gc2VuZCB0aGUgZGVzdGluYXRpb24gY29pbnMgdG8gKHdoZW4gaW5jb21pbmcgdHJhbnNhY3Rpb25zIGFyZSBkZXRlY3RlZClcbi8vICAgIGxhYmVsIC0gbGFiZWwgZm9yIHRoZSB3YWxsZXRcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5jcmVhdGVGb3J3YXJkV2FsbGV0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3ByaXZLZXknLCAnc291cmNlQWRkcmVzcyddLCBbJ2xhYmVsJ10sIGNhbGxiYWNrKTtcblxuICBpZiAoIV8uaXNPYmplY3QocGFyYW1zLmRlc3RpbmF0aW9uV2FsbGV0KSB8fCAhcGFyYW1zLmRlc3RpbmF0aW9uV2FsbGV0LmlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RpbmcgZGVzdGluYXRpb25XYWxsZXQgb2JqZWN0Jyk7XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcblxuICBsZXQgbmV3RGVzdGluYXRpb25BZGRyZXNzO1xuICBsZXQgYWRkcmVzc0Zyb21Qcml2S2V5O1xuXG4gIHRyeSB7XG4gICAgY29uc3Qga2V5ID0gdXR4b2xpYi5FQ1BhaXIuZnJvbVdJRihwYXJhbXMucHJpdktleSwgZ2V0TmV0d29yaygpIGFzIHV0eG9saWIuQml0Y29pbkpTTmV0d29yayk7XG4gICAgYWRkcmVzc0Zyb21Qcml2S2V5ID0gZ2V0QWRkcmVzc1AyUEtIKGtleSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGluZyBhIHZhbGlkIHByaXZLZXknKTtcbiAgfVxuXG4gIGlmIChhZGRyZXNzRnJvbVByaXZLZXkgIT09IHBhcmFtcy5zb3VyY2VBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ3ByaXZLZXkgZG9lcyBub3QgbWF0Y2ggc291cmNlIGFkZHJlc3MgLSBnb3QgJyArIGFkZHJlc3NGcm9tUHJpdktleSArICcgZXhwZWN0ZWQgJyArIHBhcmFtcy5zb3VyY2VBZGRyZXNzXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXMuZGVzdGluYXRpb25XYWxsZXQuY3JlYXRlQWRkcmVzcygpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIC8vIENyZWF0ZSBuZXcgYWRkcmVzcyBvbiB0aGUgZGVzdGluYXRpb24gd2FsbGV0IHRvIHJlY2VpdmUgY29pbnNcbiAgICBuZXdEZXN0aW5hdGlvbkFkZHJlc3MgPSByZXN1bHQuYWRkcmVzcztcblxuICAgIGNvbnN0IHdhbGxldFBhcmFtczogYW55ID0ge1xuICAgICAgdHlwZTogJ2ZvcndhcmQnLFxuICAgICAgc291cmNlQWRkcmVzczogcGFyYW1zLnNvdXJjZUFkZHJlc3MsXG4gICAgICBkZXN0aW5hdGlvbkFkZHJlc3M6IG5ld0Rlc3RpbmF0aW9uQWRkcmVzcyxcbiAgICAgIHByaXZLZXk6IHBhcmFtcy5wcml2S2V5LFxuICAgICAgbGFiZWw6IHBhcmFtcy5sYWJlbCxcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5lbnRlcnByaXNlKSB7XG4gICAgICB3YWxsZXRQYXJhbXMuZW50ZXJwcmlzZSA9IHBhcmFtcy5lbnRlcnByaXNlO1xuICAgIH1cblxuICAgIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHNlbGYuYml0Z28ucG9zdChzZWxmLmJpdGdvLnVybCgnL3dhbGxldCcpKS5zZW5kKHdhbGxldFBhcmFtcykucmVzdWx0KCkpLm5vZGVpZnkoY2FsbGJhY2spO1xuICB9KTtcbn07XG5cbi8qKlxuICogQWRkIGEgbmV3IHdhbGxldCAoYWR2YW5jZWQgbW9kZSkuXG4gKiBUaGlzIGFsbG93cyB5b3UgdG8gbWFudWFsbHkgc3VibWl0IHRoZSBrZXljaGFpbnMsIHR5cGUsIG0gYW5kIG4gb2YgdGhlIHdhbGxldFxuICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsIGxhYmVsIG9mIHRoZSB3YWxsZXQgdG8gYmUgc2hvd24gaW4gVUlcbiAqIEBwYXJhbSB7bnVtYmVyfSBtIG51bWJlciBvZiBrZXlzIHJlcXVpcmVkIHRvIHVubG9jayB3YWxsZXQgKDIpXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2Yga2V5cyBhdmFpbGFibGUgb24gdGhlIHdhbGxldCAoMylcbiAqIEBwYXJhbSB7YXJyYXl9IGtleWNoYWlucyBhcnJheSBvZiBrZXljaGFpbiB4cHVic1xuICogQHBhcmFtIHtzdHJpbmd9IGVudGVycHJpc2UgSUQgb2YgdGhlIGVudGVycHJpc2UgZW50aXR5IHRvIGNyZWF0ZSB0aGlzIHdhbGxldCB1bmRlci5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucyBXaGVuIHNldCB0byB0cnVlIGRpc2FibGVzIG5vdGlmaWNhdGlvbnMgZm9yIHRyYW5zYWN0aW9ucyBvbiB0aGlzIHdhbGxldC5cbiAqL1xuV2FsbGV0cy5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgWydsYWJlbCcsICdlbnRlcnByaXNlJ10sIGNhbGxiYWNrKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMua2V5Y2hhaW5zKSA9PT0gZmFsc2UgfHwgIV8uaXNOdW1iZXIocGFyYW1zLm0pIHx8ICFfLmlzTnVtYmVyKHBhcmFtcy5uKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgLy8gVE9ETzogc3VwcG9ydCBtb3JlIHR5cGVzIG9mIG11bHRpc2lnXG4gIGlmIChwYXJhbXMubSAhPT0gMiB8fCBwYXJhbXMubiAhPT0gMykge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgbXVsdGktc2lnIHR5cGUnKTtcbiAgfVxuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICBjb25zdCBrZXljaGFpbnMgPSBwYXJhbXMua2V5Y2hhaW5zLm1hcChmdW5jdGlvbiAoaykge1xuICAgIHJldHVybiB7IHhwdWI6IGsueHB1YiB9O1xuICB9KTtcbiAgY29uc3Qgd2FsbGV0UGFyYW1zOiBhbnkgPSB7XG4gICAgbGFiZWw6IHBhcmFtcy5sYWJlbCxcbiAgICBtOiBwYXJhbXMubSxcbiAgICBuOiBwYXJhbXMubixcbiAgICBrZXljaGFpbnM6IGtleWNoYWlucyxcbiAgfTtcblxuICBpZiAocGFyYW1zLmVudGVycHJpc2UpIHtcbiAgICB3YWxsZXRQYXJhbXMuZW50ZXJwcmlzZSA9IHBhcmFtcy5lbnRlcnByaXNlO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5kaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zKSB7XG4gICAgd2FsbGV0UGFyYW1zLmRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnMgPSBwYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucztcbiAgfVxuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28ucG9zdCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldCcpKS5zZW5kKHdhbGxldFBhcmFtcykucmVzdWx0KCkpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgIHJldHVybiBuZXcgV2FsbGV0KHNlbGYuYml0Z28sIGJvZHkpO1xuICAgIH0pXG4gICAgLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIGdldFxuLy8gU2hvcnRoYW5kIHRvIGdldFdhbGxldFxuLy8gUGFyYW1ldGVycyBpbmNsdWRlOlxuLy8gICBpZDogdGhlIGlkIG9mIHRoZSB3YWxsZXRcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICByZXR1cm4gdGhpcy5nZXRXYWxsZXQocGFyYW1zLCBjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gcmVtb3ZlXG4vLyBSZW1vdmUgYW4gZXhpc3Rpbmcgd2FsbGV0LlxuLy8gUGFyYW1ldGVycyBpbmNsdWRlOlxuLy8gICBpZDogdGhlIGlkIG9mIHRoZSB3YWxsZXRcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5yZW1vdmUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnaWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZSh0aGlzLmJpdGdvLmRlbCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldC8nICsgcGFyYW1zLmlkKSkucmVzdWx0KCkpLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBXYWxsZXRzO1xuIl19
508
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92MS93YWxsZXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSDtHQUNHO0FBQ0gsRUFBRTtBQUNGLGlCQUFpQjtBQUNqQixzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0YsbURBTzhCO0FBQzlCLG1EQUE2QztBQUM3Qyw4REFBZ0Q7QUFDaEQsb0RBQXVCO0FBQ3ZCLHdEQUFnQztBQUNoQyxNQUFNLEVBQUUsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQztBQUM5QixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFbkMsRUFBRTtBQUNGLGNBQWM7QUFDZCxFQUFFO0FBQ0YsTUFBTSxPQUFPLEdBQUcsVUFBVSxLQUFLO0lBQzdCLHNDQUFzQztJQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNyQixDQUFDLENBQUM7QUFFRixFQUFFO0FBQ0YsT0FBTztBQUNQLDBCQUEwQjtBQUMxQixFQUFFO0FBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUNqRCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRCxNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7SUFFMUIsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFD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O0FBQ0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxNQUFNLEVBQUUsUUFBUTtJQUNuRCxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUN0QixpQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFcEQsT0FBTyxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0csQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBoaWRkZW5cbiAqL1xuXG4vKipcbiAqL1xuLy9cbi8vIFdhbGxldHMgT2JqZWN0XG4vLyBCaXRHbyBhY2Nlc3NvciB0byBhIHVzZXIncyB3YWxsZXRzLlxuLy9cbi8vIENvcHlyaWdodCAyMDE0LCBCaXRHbywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vXG5pbXBvcnQge1xuICBjb21tb24sXG4gIGdldEFkZHJlc3NQMlBLSCxcbiAgZ2V0TmV0d29yayxcbiAgZ2V0U2hhcmVkU2VjcmV0LFxuICBtYWtlUmFuZG9tS2V5LFxuICBzYW5pdGl6ZUxlZ2FjeVBhdGgsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGJpcDMyIH0gZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEJsdWViaXJkIGZyb20gJ2JsdWViaXJkJztcbmNvbnN0IGNvID0gQmx1ZWJpcmQuY29yb3V0aW5lO1xuY29uc3QgV2FsbGV0ID0gcmVxdWlyZSgnLi93YWxsZXQnKTtcblxuLy9cbi8vIENvbnN0cnVjdG9yXG4vL1xuY29uc3QgV2FsbGV0cyA9IGZ1bmN0aW9uIChiaXRnbykge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gbm8gaW1wbGljaXQgdGhpc1xuICB0aGlzLmJpdGdvID0gYml0Z287XG59O1xuXG4vL1xuLy8gbGlzdFxuLy8gTGlzdCB0aGUgdXNlcidzIHdhbGxldHNcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5saXN0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmIChwYXJhbXMuc2tpcCAmJiBwYXJhbXMucHJldklkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIHNraXAgYW5kIHByZXZJZCcpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5saW1pdCkge1xuICAgIGlmICghXy5pc051bWJlcihwYXJhbXMubGltaXQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbGltaXQgYXJndW1lbnQsIGV4cGVjdGluZyBudW1iZXInKTtcbiAgICB9XG4gICAgYXJncy5wdXNoKCdsaW1pdD0nICsgcGFyYW1zLmxpbWl0KTtcbiAgfVxuICBpZiAocGFyYW1zLmdldGJhbGFuY2VzKSB7XG4gICAgaWYgKCFfLmlzQm9vbGVhbihwYXJhbXMuZ2V0YmFsYW5jZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZ2V0YmFsYW5jZXMgYXJndW1lbnQsIGV4cGVjdGluZyBib29sZWFuJyk7XG4gICAgfVxuICAgIGFyZ3MucHVzaCgnZ2V0YmFsYW5jZXM9JyArIHBhcmFtcy5nZXRiYWxhbmNlcyk7XG4gIH1cbiAgaWYgKHBhcmFtcy5za2lwKSB7XG4gICAgaWYgKCFfLmlzTnVtYmVyKHBhcmFtcy5za2lwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNraXAgYXJndW1lbnQsIGV4cGVjdGluZyBudW1iZXInKTtcbiAgICB9XG4gICAgYXJncy5wdXNoKCdza2lwPScgKyBwYXJhbXMuc2tpcCk7XG4gIH0gZWxzZSBpZiAocGFyYW1zLnByZXZJZCkge1xuICAgIGFyZ3MucHVzaCgncHJldklkPScgKyBwYXJhbXMucHJldklkKTtcbiAgfVxuXG4gIGxldCBxdWVyeSA9ICcnO1xuICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICBxdWVyeSA9ICc/JyArIGFyZ3Muam9pbignJicpO1xuICB9XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0JyArIHF1ZXJ5KSkucmVzdWx0KCkpXG4gICAgLnRoZW4oZnVuY3Rpb24gKGJvZHkpIHtcbiAgICAgIGJvZHkud2FsbGV0cyA9IGJvZHkud2FsbGV0cy5tYXAoZnVuY3Rpb24gKHcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBXYWxsZXQoc2VsZi5iaXRnbywgdyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBib2R5O1xuICAgIH0pXG4gICAgLm5vZGVpZnkoY2FsbGJhY2spO1xufTtcblxuV2FsbGV0cy5wcm90b3R5cGUuZ2V0V2FsbGV0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ2lkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgbGV0IHF1ZXJ5ID0gJyc7XG4gIGlmIChwYXJhbXMuZ3BrKSB7XG4gICAgcXVlcnkgPSAnP2dwaz0xJztcbiAgfVxuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0LycgKyBwYXJhbXMuaWQgKyBxdWVyeSkpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uICh3YWxsZXQpIHtcbiAgICAgIHJldHVybiBuZXcgV2FsbGV0KHNlbGYuYml0Z28sIHdhbGxldCk7XG4gICAgfSlcbiAgICAubm9kZWlmeShjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gbGlzdEludml0ZXNcbi8vIExpc3QgdGhlIGludml0ZXMgb24gYSB1c2VyXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUubGlzdEludml0ZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFtdLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0aW52aXRlJykpLnJlc3VsdCgpKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBjYW5jZWxJbnZpdGVcbi8vIGNhbmNlbCBhIHdhbGxldCBpbnZpdGUgdGhhdCBhIHVzZXIgaW5pdGlhdGVkXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuY2FuY2VsSW52aXRlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3dhbGxldEludml0ZUlkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5kZWwodGhpcy5iaXRnby51cmwoJy93YWxsZXRpbnZpdGUvJyArIHBhcmFtcy53YWxsZXRJbnZpdGVJZCkpLnJlc3VsdCgpKS5ub2RlaWZ5KFxuICAgIGNhbGxiYWNrXG4gICk7XG59O1xuXG4vL1xuLy8gbGlzdFNoYXJlc1xuLy8gTGlzdCB0aGUgdXNlcidzIHdhbGxldCBzaGFyZXNcbi8vXG5XYWxsZXRzLnByb3RvdHlwZS5saXN0U2hhcmVzID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZSh0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldHNoYXJlJykpLnJlc3VsdCgpKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyByZXNlbmRTaGFyZUludml0ZVxuLy8gUmVzZW5kIHRoZSBpbnZpdGF0aW9uIGVtYWlsIHdoaWNoIHNoYXJlcyBhIHdhbGxldCB3aXRoIGFub3RoZXIgdXNlclxuLy8gUGFyYW1zOlxuLy8gICAgd2FsbGV0U2hhcmVJZCAtIHRoZSB3YWxsZXQgc2hhcmUgdG8gZ2V0IGluZm9ybWF0aW9uIG9uXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUucmVzZW5kU2hhcmVJbnZpdGUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICByZXR1cm4gY28oZnVuY3Rpb24qICgpIHtcbiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gICAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWyd3YWxsZXRTaGFyZUlkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgICBjb25zdCB1cmxQYXJ0cyA9IHBhcmFtcy53YWxsZXRTaGFyZUlkICsgJy9yZXNlbmRlbWFpbCc7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIG5vIGltcGxpY2l0IHRoaXNcbiAgICByZXR1cm4gdGhpcy5iaXRnby5wb3N0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0c2hhcmUvJyArIHVybFBhcnRzKSkucmVzdWx0KCk7XG4gIH0pXG4gICAgLmNhbGwodGhpcylcbiAgICAuYXNDYWxsYmFjayhjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gZ2V0U2hhcmVcbi8vIEdldHMgYSB3YWxsZXQgc2hhcmUgaW5mb3JtYXRpb24sIGluY2x1ZGluZyB0aGUgZW5jcnlwdGVkIHNoYXJpbmcga2V5Y2hhaW4uIHJlcXVpcmVzIHVubG9jayBpZiBrZXljaGFpbiBpcyBwcmVzZW50LlxuLy8gUGFyYW1zOlxuLy8gICAgd2FsbGV0U2hhcmVJZCAtIHRoZSB3YWxsZXQgc2hhcmUgdG8gZ2V0IGluZm9ybWF0aW9uIG9uXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuZ2V0U2hhcmUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnd2FsbGV0U2hhcmVJZCddLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKHRoaXMuYml0Z28uZ2V0KHRoaXMuYml0Z28udXJsKCcvd2FsbGV0c2hhcmUvJyArIHBhcmFtcy53YWxsZXRTaGFyZUlkKSkucmVzdWx0KCkpLm5vZGVpZnkoXG4gICAgY2FsbGJhY2tcbiAgKTtcbn07XG5cbi8vXG4vLyB1cGRhdGVTaGFyZVxuLy8gdXBkYXRlcyBhIHdhbGxldCBzaGFyZVxuLy8gUGFyYW1zOlxuLy8gICAgd2FsbGV0U2hhcmVJZCAtIHRoZSB3YWxsZXQgc2hhcmUgdG8gdXBkYXRlXG4vLyAgICBzdGF0ZSAtIHRoZSBuZXcgc3RhdGUgb2YgdGhlIHdhbGxldCBzaGFyZVxuLy9cbldhbGxldHMucHJvdG90eXBlLnVwZGF0ZVNoYXJlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3dhbGxldFNoYXJlSWQnXSwgW10sIGNhbGxiYWNrKTtcblxuICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZShcbiAgICB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLnVybCgnL3dhbGxldHNoYXJlLycgKyBwYXJhbXMud2FsbGV0U2hhcmVJZCkpXG4gICAgICAuc2VuZChwYXJhbXMpXG4gICAgICAucmVzdWx0KClcbiAgKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBjYW5jZWxTaGFyZVxuLy8gY2FuY2VscyBhIHdhbGxldCBzaGFyZVxuLy8gUGFyYW1zOlxuLy8gICAgd2FsbGV0U2hhcmVJZCAtIHRoZSB3YWxsZXQgc2hhcmUgdG8gdXBkYXRlXG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuY2FuY2VsU2hhcmUgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG4gIGNvbW1vbi52YWxpZGF0ZVBhcmFtcyhwYXJhbXMsIFsnd2FsbGV0U2hhcmVJZCddLCBbXSwgY2FsbGJhY2spO1xuXG4gIHJldHVybiBCbHVlYmlyZC5yZXNvbHZlKFxuICAgIHRoaXMuYml0Z29cbiAgICAgIC5kZWwodGhpcy5iaXRnby51cmwoJy93YWxsZXRzaGFyZS8nICsgcGFyYW1zLndhbGxldFNoYXJlSWQpKVxuICAgICAgLnNlbmQoKVxuICAgICAgLnJlc3VsdCgpXG4gICkubm9kZWlmeShjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gYWNjZXB0U2hhcmVcbi8vIEFjY2VwdHMgYSB3YWxsZXQgc2hhcmUsIGFkZGluZyB0aGUgd2FsbGV0IHRvIHRoZSB1c2VyJ3MgbGlzdFxuLy8gTmVlZHMgYSB1c2VyJ3MgcGFzc3dvcmQgdG8gZGVjcnlwdCB0aGUgc2hhcmVkIGtleVxuLy8gUGFyYW1zOlxuLy8gICAgd2FsbGV0U2hhcmVJZCAtIHRoZSB3YWxsZXQgc2hhcmUgdG8gYWNjZXB0XG4vLyAgICB1c2VyUGFzc3dvcmQgLSAocmVxdWlyZWQgaWYgbW9yZSBhIGtleWNoYWluIHdhcyBzaGFyZWQpIHVzZXIncyBwYXNzd29yZCB0byBkZWNyeXB0IHRoZSBzaGFyZWQgd2FsbGV0XG4vLyAgICBuZXdXYWxsZXRQYXNzcGhyYXNlIC0gbmV3IHdhbGxldCBwYXNzcGhyYXNlIGZvciBzYXZpbmcgdGhlIHNoYXJlZCB3YWxsZXQgeHBydi5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBsZWZ0IGJsYW5rIGFuZCBhIHdhbGxldCB3aXRoIG1vcmUgdGhhbiB2aWV3IHBlcm1pc3Npb25zIHdhcyBzaGFyZWQsIHRoZW4gdGhlIHVzZXJwYXNzd29yZCBpcyB1c2VkLlxuLy8gICAgb3ZlcnJpZGVFbmNyeXB0ZWRYcHJ2IC0gc2V0IG9ubHkgaWYgdGhlIHhwcnYgd2FzIHJlY2VpdmVkIG91dC1vZi1iYW5kLlxuLy9cbldhbGxldHMucHJvdG90eXBlLmFjY2VwdFNoYXJlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ3dhbGxldFNoYXJlSWQnXSwgWydvdmVycmlkZUVuY3J5cHRlZFhwcnYnXSwgY2FsbGJhY2spO1xuXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xuICBsZXQgZW5jcnlwdGVkWHBydiA9IHBhcmFtcy5vdmVycmlkZUVuY3J5cHRlZFhwcnY7XG5cbiAgcmV0dXJuIHRoaXMuZ2V0U2hhcmUoeyB3YWxsZXRTaGFyZUlkOiBwYXJhbXMud2FsbGV0U2hhcmVJZCB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICh3YWxsZXRTaGFyZSkge1xuICAgICAgLy8gUmV0dXJuIHJpZ2h0IGF3YXkgaWYgdGhlcmUgaXMgbm8ga2V5Y2hhaW4gdG8gZGVjcnlwdCwgb3IgaWYgZXhwbGljaXQgZW5jcnlwdGVkWHBydiB3YXMgcHJvdmlkZWRcbiAgICAgIGlmICghd2FsbGV0U2hhcmUua2V5Y2hhaW4gfHwgIXdhbGxldFNoYXJlLmtleWNoYWluLmVuY3J5cHRlZFhwcnYgfHwgZW5jcnlwdGVkWHBydikge1xuICAgICAgICByZXR1cm4gd2FsbGV0U2hhcmU7XG4gICAgICB9XG5cbiAgICAgIC8vIE1vcmUgdGhhbiB2aWV3aW5nIHdhcyByZXF1ZXN0ZWQsIHNvIHdlIG5lZWQgdG8gcHJvY2VzcyB0aGUgd2FsbGV0IGtleXMgdXNpbmcgdGhlIHNoYXJlZCBlY2RoIHNjaGVtZVxuICAgICAgaWYgKCFwYXJhbXMudXNlclBhc3N3b3JkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndXNlclBhc3N3b3JkIHBhcmFtIG11c3QgYmUgcHJvdmlkZWQgdG8gZGVjcnlwdCBzaGFyZWQga2V5Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLmJpdGdvLmdldEVDREhLZXljaGFpbigpLnRoZW4oZnVuY3Rpb24gKHNoYXJpbmdLZXljaGFpbikge1xuICAgICAgICBpZiAoIXNoYXJpbmdLZXljaGFpbi5lbmNyeXB0ZWRYcHJ2KSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0ZWRYcHJ2IHdhcyBub3QgZm91bmQgb24gc2hhcmluZyBrZXljaGFpbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTm93IHdlIGhhdmUgdGhlIHNoYXJpbmcga2V5Y2hhaW4sIHdlIGNhbiB3b3JrIG91dCB0aGUgc2VjcmV0IHVzZWQgZm9yIHNoYXJpbmcgdGhlIHdhbGxldCB3aXRoIHVzXG4gICAgICAgIHNoYXJpbmdLZXljaGFpbi54cHJ2ID0gc2VsZi5iaXRnby5kZWNyeXB0KHtcbiAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLnVzZXJQYXNzd29yZCxcbiAgICAgICAgICBpbnB1dDogc2hhcmluZ0tleWNoYWluLmVuY3J5cHRlZFhwcnYsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIERlcml2ZSBrZXkgYnkgcGF0aCAod2hpY2ggaXMgdXNlZCBiZXR3ZWVuIHRoZXNlIDIgdXNlcnMgb25seSlcbiAgICAgICAgY29uc3Qgc2VjcmV0ID0gZ2V0U2hhcmVkU2VjcmV0KFxuICAgICAgICAgIGJpcDMyLmZyb21CYXNlNTgoc2hhcmluZ0tleWNoYWluLnhwcnYpLmRlcml2ZVBhdGgoc2FuaXRpemVMZWdhY3lQYXRoKHdhbGxldFNoYXJlLmtleWNoYWluLnBhdGgpKSxcbiAgICAgICAgICBCdWZmZXIuZnJvbSh3YWxsZXRTaGFyZS5rZXljaGFpbi5mcm9tUHViS2V5LCAnaGV4JylcbiAgICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgICAgLy8gWWVzISBXZSBnb3QgdGhlIHNlY3JldCBzdWNjZXNzZnVsbHkgaGVyZSwgbm93IGRlY3J5cHQgdGhlIHNoYXJlZCB3YWxsZXQgeHBydlxuICAgICAgICBjb25zdCBkZWNyeXB0ZWRTaGFyZWRXYWxsZXRYcHJ2ID0gc2VsZi5iaXRnby5kZWNyeXB0KHtcbiAgICAgICAgICBwYXNzd29yZDogc2VjcmV0LFxuICAgICAgICAgIGlucHV0OiB3YWxsZXRTaGFyZS5rZXljaGFpbi5lbmNyeXB0ZWRYcHJ2LFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBXZSB3aWxsIG5vdyByZS1lbmNyeXB0IHRoZSB3YWxsZXQgd2l0aCBvdXIgb3duIHBhc3N3b3JkXG4gICAgICAgIGNvbnN0IG5ld1dhbGxldFBhc3NwaHJhc2UgPSBwYXJhbXMubmV3V2FsbGV0UGFzc3BocmFzZSB8fCBwYXJhbXMudXNlclBhc3N3b3JkO1xuICAgICAgICBlbmNyeXB0ZWRYcHJ2ID0gc2VsZi5iaXRnby5lbmNyeXB0KHsgcGFzc3dvcmQ6IG5ld1dhbGxldFBhc3NwaHJhc2UsIGlucHV0OiBkZWNyeXB0ZWRTaGFyZWRXYWxsZXRYcHJ2IH0pO1xuXG4gICAgICAgIC8vIENhcnJ5IG9uIHRvIHRoZSBuZXh0IGJsb2NrIHdoZXJlIHdlIHdpbGwgcG9zdCB0aGUgYWNjZXB0YW5jZSBvZiB0aGUgc2hhcmUgd2l0aCB0aGUgZW5jcnlwdGVkIHhwcnZcbiAgICAgICAgcmV0dXJuIHdhbGxldFNoYXJlO1xuICAgICAgfSk7XG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAod2FsbGV0U2hhcmUpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVBhcmFtczogYW55ID0ge1xuICAgICAgICB3YWxsZXRTaGFyZUlkOiBwYXJhbXMud2FsbGV0U2hhcmVJZCxcbiAgICAgICAgc3RhdGU6ICdhY2NlcHRlZCcsXG4gICAgICB9O1xuXG4gICAgICBpZiAoZW5jcnlwdGVkWHBydikge1xuICAgICAgICB1cGRhdGVQYXJhbXMuZW5jcnlwdGVkWHBydiA9IGVuY3J5cHRlZFhwcnY7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxmLnVwZGF0ZVNoYXJlKHVwZGF0ZVBhcmFtcyk7XG4gICAgfSlcbiAgICAubm9kZWlmeShjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gY3JlYXRlS2V5XG4vLyBDcmVhdGUgYSBzaW5nbGUgYml0Y29pbiBrZXkuICBUaGlzIHJ1bnMgbG9jYWxseS5cbi8vIFJldHVybnM6IHtcbi8vICAgYWRkcmVzczogPGFkZHJlc3M+XG4vLyAgIGtleTogPGtleSwgaW4gV0lGIGZvcm1hdD5cbi8vIH1cbldhbGxldHMucHJvdG90eXBlLmNyZWF0ZUtleSA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgY29uc3Qga2V5ID0gbWFrZVJhbmRvbUtleSgpO1xuICByZXR1cm4ge1xuICAgIGFkZHJlc3M6IGdldEFkZHJlc3NQMlBLSChrZXkpLFxuICAgIGtleToga2V5LnRvV0lGKCksXG4gIH07XG59O1xuXG4vL1xuLy8gY3JlYXRlV2FsbGV0V2l0aEtleWNoYWluc1xuLy8gQ3JlYXRlIGEgbmV3IDItb2YtMyB3YWxsZXQgYW5kIGl0J3MgYXNzb2NpYXRlZCBrZXljaGFpbnMuXG4vLyBSZXR1cm5zIHRoZSBsb2NhbGx5IGNyZWF0ZWQga2V5cyB3aXRoIHRoZWlyIGVuY3J5cHRlZCB4cHJ2cy5cbi8vICoqV0FSTklORzogQkUgU1VSRSBUTyBCQUNLVVAhIE5PVCBET0lORyBTTyBDQU4gUkVTVUxUIElOIExPU1MgT0YgRlVORFMhKipcbi8vXG4vLyAxLiBDcmVhdGVzIHRoZSB1c2VyIGtleWNoYWluIGxvY2FsbHkgb24gdGhlIGNsaWVudCwgYW5kIGVuY3J5cHRzIGl0IHdpdGggdGhlIHByb3ZpZGVkIHBhc3NwaHJhc2Vcbi8vIDIuIElmIG5vIHhwdWIgd2FzIHByb3ZpZGVkLCBjcmVhdGVzIHRoZSBiYWNrdXAga2V5Y2hhaW4gbG9jYWxseSBvbiB0aGUgY2xpZW50LCBhbmQgZW5jcnlwdHMgaXQgd2l0aCB0aGUgcHJvdmlkZWQgcGFzc3BocmFzZVxuLy8gMy4gVXBsb2FkcyB0aGUgZW5jcnlwdGVkIHVzZXIgYW5kIGJhY2t1cCBrZXljaGFpbnMgdG8gQml0R29cbi8vIDQuIENyZWF0ZXMgdGhlIEJpdEdvIGtleSBvbiB0aGUgc2VydmljZVxuLy8gNS4gQ3JlYXRlcyB0aGUgd2FsbGV0IG9uIEJpdEdvIHdpdGggdGhlIDMgcHVibGljIGtleXMgYWJvdmVcbi8vXG4vLyBQYXJhbWV0ZXJzIGluY2x1ZGU6XG4vLyAgIFwicGFzc3BocmFzZVwiOiB3YWxsZXQgcGFzc3BocmFzZSB0byBlbmNyeXB0IHVzZXIgYW5kIGJhY2t1cCBrZXlzIHdpdGhcbi8vICAgXCJsYWJlbFwiOiB3YWxsZXQgbGFiZWwsIGlzIHNob3duIGluIEJpdEdvIFVJXG4vLyAgIFwiYmFja3VwWHB1YlwiOiBiYWNrdXAga2V5Y2hhaW4geHB1YiwgaXQgaXMgSElHSExZIFJFQ09NTUVOREVEIHlvdSBnZW5lcmF0ZSB0aGlzIG9uIGEgc2VwYXJhdGUgbWFjaGluZSFcbi8vICAgICAgICAgICAgICAgICBCSVRHTyBET0VTIE5PVCBHVUFSQU5URUUgU0FGRVRZIE9GIFdBTExFVFMgV0lUSCBNVUxUSVBMRSBLRVlTIENSRUFURUQgT04gVEhFIFNBTUUgTUFDSElORSAqKlxuLy8gICBcImJhY2t1cFhwdWJQcm92aWRlclwiOiBQcm92aXNpb24gYmFja3VwIGtleSBmcm9tIHRoaXMgcHJvdmlkZXIgKEtSUyksIGUuZy4gXCJrZXl0ZXJuYWxcIi5cbi8vICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmcgdGhpcyB2YWx1ZSB3aWxsIGNyZWF0ZSBhbiBpbnN0YW50LWNhcGFibGUgd2FsbGV0LlxuLy8gICBcInBhc3Njb2RlRW5jcnlwdGlvbkNvZGVcIjogdGhlIGNvZGUgdXNlZCB0byBlbmNyeXB0IHRoZSB3YWxsZXQgcGFzc2NvZGUgdXNlZCBpbiB0aGUgcmVjb3ZlcnkgcHJvY2Vzc1xuLy8gUmV0dXJuczoge1xuLy8gICB3YWxsZXQ6IG5ld2x5IGNyZWF0ZWQgd2FsbGV0IG1vZGVsIG9iamVjdFxuLy8gICB1c2VyS2V5Y2hhaW46IHRoZSBuZXdseSBjcmVhdGVkIHVzZXIga2V5Y2hhaW4sIHdoaWNoIGhhcyBhbiBlbmNyeXB0ZWQgeHBydiBzdG9yZWQgb24gQml0R29cbi8vICAgYmFja3VwS2V5Y2hhaW46IHRoZSBuZXdseSBjcmVhdGVkIGJhY2t1cCBrZXljaGFpblxuLy9cbi8vICoqIEJFIFNVUkUgVE8gQkFDSyBVUCBUSEUgRU5DUllQVEVEIFVTRVIgQU5EIEJBQ0tVUCBLRVlDSEFJTlMhKipcbi8vXG4vLyB9XG5XYWxsZXRzLnByb3RvdHlwZS5jcmVhdGVXYWxsZXRXaXRoS2V5Y2hhaW5zID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMoXG4gICAgcGFyYW1zLFxuICAgIFsncGFzc3BocmFzZSddLFxuICAgIFsnbGFiZWwnLCAnYmFja3VwWHB1YicsICdlbnRlcnByaXNlJywgJ3Bhc3Njb2RlRW5jcnlwdGlvbkNvZGUnXSxcbiAgICBjYWxsYmFja1xuICApO1xuICBjb25zdCBzZWxmID0gdGhpcztcbiAgY29uc3QgbGFiZWwgPSBwYXJhbXMubGFiZWw7XG5cbiAgLy8gQ3JlYXRlIHRoZSB1c2VyIGFuZCBiYWNrdXAga2V5LlxuICBjb25zdCB1c2VyS2V5Y2hhaW4gPSB0aGlzLmJpdGdvLmtleWNoYWlucygpLmNyZWF0ZSgpO1xuICB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkWHBydiA9IHRoaXMuYml0Z28uZW5jcnlwdCh7IHBhc3N3b3JkOiBwYXJhbXMucGFzc3BocmFzZSwgaW5wdXQ6IHVzZXJLZXljaGFpbi54cHJ2IH0pO1xuXG4gIGNvbnN0IGtleWNoYWluRGF0YTogYW55ID0ge1xuICAgIHhwdWI6IHVzZXJLZXljaGFpbi54cHViLFxuICAgIGVuY3J5cHRlZFhwcnY6IHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRYcHJ2LFxuICB9O1xuXG4gIGlmIChwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIGtleWNoYWluRGF0YS5vcmlnaW5hbFBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgPSBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZTtcbiAgfVxuXG4gIGNvbnN0IGhhc0JhY2t1cFhwdWIgPSAhIXBhcmFtcy5iYWNrdXBYcHViO1xuICBjb25zdCBoYXNCYWNrdXBYcHViUHJvdmlkZXIgPSAhIXBhcmFtcy5iYWNrdXBYcHViUHJvdmlkZXI7XG4gIGlmIChoYXNCYWNrdXBYcHViICYmIGhhc0JhY2t1cFhwdWJQcm92aWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHByb3ZpZGUgbW9yZSB0aGFuIG9uZSBiYWNrdXBYcHViIG9yIGJhY2t1cFhwdWJQcm92aWRlciBmbGFnJyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnMgIT09IHVuZGVmaW5lZCAmJiAhXy5pc0Jvb2xlYW4ocGFyYW1zLmRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBkaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zIHRvIGJlIGEgYm9vbGVhbi4gJyk7XG4gIH1cblxuICBsZXQgYmFja3VwS2V5Y2hhaW47XG4gIGxldCBiaXRnb0tleWNoYWluO1xuXG4gIC8vIEFkZCB0aGUgdXNlciBrZXljaGFpblxuICByZXR1cm4gc2VsZi5iaXRnb1xuICAgIC5rZXljaGFpbnMoKVxuICAgIC5hZGQoa2V5Y2hhaW5EYXRhKVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIEFkZCB0aGUgYmFja3VwIGtleWNoYWluXG4gICAgICBpZiAocGFyYW1zLmJhY2t1cFhwdWJQcm92aWRlcikge1xuICAgICAgICAvLyBJZiByZXF1ZXN0ZWQsIHVzZSBhIEtSUyBvciBiYWNrdXAga2V5IHByb3ZpZGVyXG4gICAgICAgIHJldHVybiBzZWxmLmJpdGdvXG4gICAgICAgICAgLmtleWNoYWlucygpXG4gICAgICAgICAgLmNyZWF0ZUJhY2t1cCh7XG4gICAgICAgICAgICBwcm92aWRlcjogcGFyYW1zLmJhY2t1cFhwdWJQcm92aWRlcixcbiAgICAgICAgICAgIGRpc2FibGVLUlNFbWFpbDogcGFyYW1zLmRpc2FibGVLUlNFbWFpbCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChrZXljaGFpbikge1xuICAgICAgICAgICAgYmFja3VwS2V5Y2hhaW4gPSBrZXljaGFpbjtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcmFtcy5iYWNrdXBYcHViKSB7XG4gICAgICAgIC8vIHVzZXIgcHJvdmlkZWQgYmFja3VwIHhwdWJcbiAgICAgICAgYmFja3VwS2V5Y2hhaW4gPSB7IHhwdWI6IHBhcmFtcy5iYWNrdXBYcHViIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBubyBwcm92aWRlZCB4cHViLCBzbyBkZWZhdWx0IHRvIGNyZWF0aW5nIG9uZSBoZXJlXG4gICAgICAgIGJhY2t1cEtleWNoYWluID0gc2VsZi5iaXRnby5rZXljaGFpbnMoKS5jcmVhdGUoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGYuYml0Z28ua2V5Y2hhaW5zKCkuYWRkKGJhY2t1cEtleWNoYWluKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzZWxmLmJpdGdvLmtleWNoYWlucygpLmNyZWF0ZUJpdEdvKCk7XG4gICAgfSlcbiAgICAudGhlbihmdW5jdGlvbiAoa2V5Y2hhaW4pIHtcbiAgICAgIGJpdGdvS2V5Y2hhaW4gPSBrZXljaGFpbjtcbiAgICAgIGNvbnN0IHdhbGxldFBhcmFtczogYW55ID0ge1xuICAgICAgICBsYWJlbDogbGFiZWwsXG4gICAgICAgIG06IDIsXG4gICAgICAgIG46IDMsXG4gICAgICAgIGtleWNoYWluczogW3sgeHB1YjogdXNlcktleWNoYWluLnhwdWIgfSwgeyB4cHViOiBiYWNrdXBLZXljaGFpbi54cHViIH0sIHsgeHB1YjogYml0Z29LZXljaGFpbi54cHViIH1dLFxuICAgICAgfTtcblxuICAgICAgaWYgKHBhcmFtcy5lbnRlcnByaXNlKSB7XG4gICAgICAgIHdhbGxldFBhcmFtcy5lbnRlcnByaXNlID0gcGFyYW1zLmVudGVycHJpc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucykge1xuICAgICAgICB3YWxsZXRQYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucyA9IHBhcmFtcy5kaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZi5hZGQod2FsbGV0UGFyYW1zKTtcbiAgICB9KVxuICAgIC50aGVuKGZ1bmN0aW9uIChuZXdXYWxsZXQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgICB3YWxsZXQ6IG5ld1dhbGxldCxcbiAgICAgICAgdXNlcktleWNoYWluOiB1c2VyS2V5Y2hhaW4sXG4gICAgICAgIGJhY2t1cEtleWNoYWluOiBiYWNrdXBLZXljaGFpbixcbiAgICAgICAgYml0Z29LZXljaGFpbjogYml0Z29LZXljaGFpbixcbiAgICAgIH07XG5cbiAgICAgIGlmIChiYWNrdXBLZXljaGFpbi54cHJ2KSB7XG4gICAgICAgIHJlc3VsdC53YXJuaW5nID0gJ0JlIHN1cmUgdG8gYmFja3VwIHRoZSBiYWNrdXAga2V5Y2hhaW4gLS0gaXQgaXMgbm90IHN0b3JlZCBhbnl3aGVyZSBlbHNlISc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSlcbiAgICAubm9kZWlmeShjYWxsYmFjayk7XG59O1xuXG4vL1xuLy8gY3JlYXRlRm9yd2FyZFdhbGxldFxuLy8gQ3JlYXRlcyBhIGZvcndhcmQgd2FsbGV0IGZyb20gYSBzaW5nbGUgcHJpdmF0ZSBrZXkuXG4vLyBCaXRHbyB3aWxsIHdhdGNoIHRoZSB3YWxsZXQgYW5kIHNlbmQgYW55IGluY29taW5nIHRyYW5zYWN0aW9ucyB0byBhIGRlc3RpbmF0aW9uIG11bHRpLXNpZyB3YWxsZXRcbi8vIFdBUk5JTkc6IFRIRSBQUklWQVRFIEtFWSBXSUxMIEJFIFNFTlQgVE8gQklUR08uIFlPVSBNVVNUIENPTlRBQ1QgQklUR08gQkVGT1JFIFVTSU5HIFRISVMgRkVBVFVSRSFcbi8vIFdFIENBTk5PVCBHVUFSQU5URUUgVEhFIFNFQ1VSSVRZIE9GIFNJTkdMRS1TSUcgV0FMTEVUUyBBUyBDVVNUT0RZIElTIFVOQ0xFQVIuXG4vL1xuLy8gUGFyYW1zOlxuLy8gICAgcHJpdktleSAtIHRoZSBwcml2YXRlIGtleSBvbiBhIGxlZ2FjeSBzaW5nbGUtc2lnbmF0dXJlIHdhbGxldCB0byBiZSB3YXRjaGVkIChXSUYgZm9ybWF0KVxuLy8gICAgc291cmNlQWRkcmVzcyAtIHRoZSBiaXRjb2luIGFkZHJlc3MgdG8gZm9yd2FyZCBmcm9tIChjb3JyZXNwb25kcyB0byB0aGUgcHJpdmF0ZSBrZXkpXG4vLyAgICBkZXN0aW5hdGlvbldhbGxldCAtIHRoZSB3YWxsZXQgb2JqZWN0IHRvIHNlbmQgdGhlIGRlc3RpbmF0aW9uIGNvaW5zIHRvICh3aGVuIGluY29taW5nIHRyYW5zYWN0aW9ucyBhcmUgZGV0ZWN0ZWQpXG4vLyAgICBsYWJlbCAtIGxhYmVsIGZvciB0aGUgd2FsbGV0XG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuY3JlYXRlRm9yd2FyZFdhbGxldCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgWydwcml2S2V5JywgJ3NvdXJjZUFkZHJlc3MnXSwgWydsYWJlbCddLCBjYWxsYmFjayk7XG5cbiAgaWYgKCFfLmlzT2JqZWN0KHBhcmFtcy5kZXN0aW5hdGlvbldhbGxldCkgfHwgIXBhcmFtcy5kZXN0aW5hdGlvbldhbGxldC5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0aW5nIGRlc3RpbmF0aW9uV2FsbGV0IG9iamVjdCcpO1xuICB9XG5cbiAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgbGV0IG5ld0Rlc3RpbmF0aW9uQWRkcmVzcztcbiAgbGV0IGFkZHJlc3NGcm9tUHJpdktleTtcblxuICB0cnkge1xuICAgIGNvbnN0IGtleSA9IHV0eG9saWIuRUNQYWlyLmZyb21XSUYocGFyYW1zLnByaXZLZXksIGdldE5ldHdvcmsoKSBhcyB1dHhvbGliLkJpdGNvaW5KU05ldHdvcmspO1xuICAgIGFkZHJlc3NGcm9tUHJpdktleSA9IGdldEFkZHJlc3NQMlBLSChrZXkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RpbmcgYSB2YWxpZCBwcml2S2V5Jyk7XG4gIH1cblxuICBpZiAoYWRkcmVzc0Zyb21Qcml2S2V5ICE9PSBwYXJhbXMuc291cmNlQWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdwcml2S2V5IGRvZXMgbm90IG1hdGNoIHNvdXJjZSBhZGRyZXNzIC0gZ290ICcgKyBhZGRyZXNzRnJvbVByaXZLZXkgKyAnIGV4cGVjdGVkICcgKyBwYXJhbXMuc291cmNlQWRkcmVzc1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gcGFyYW1zLmRlc3RpbmF0aW9uV2FsbGV0LmNyZWF0ZUFkZHJlc3MoKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAvLyBDcmVhdGUgbmV3IGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIHdhbGxldCB0byByZWNlaXZlIGNvaW5zXG4gICAgbmV3RGVzdGluYXRpb25BZGRyZXNzID0gcmVzdWx0LmFkZHJlc3M7XG5cbiAgICBjb25zdCB3YWxsZXRQYXJhbXM6IGFueSA9IHtcbiAgICAgIHR5cGU6ICdmb3J3YXJkJyxcbiAgICAgIHNvdXJjZUFkZHJlc3M6IHBhcmFtcy5zb3VyY2VBZGRyZXNzLFxuICAgICAgZGVzdGluYXRpb25BZGRyZXNzOiBuZXdEZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICBwcml2S2V5OiBwYXJhbXMucHJpdktleSxcbiAgICAgIGxhYmVsOiBwYXJhbXMubGFiZWwsXG4gICAgfTtcblxuICAgIGlmIChwYXJhbXMuZW50ZXJwcmlzZSkge1xuICAgICAgd2FsbGV0UGFyYW1zLmVudGVycHJpc2UgPSBwYXJhbXMuZW50ZXJwcmlzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZShzZWxmLmJpdGdvLnBvc3Qoc2VsZi5iaXRnby51cmwoJy93YWxsZXQnKSkuc2VuZCh3YWxsZXRQYXJhbXMpLnJlc3VsdCgpKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEFkZCBhIG5ldyB3YWxsZXQgKGFkdmFuY2VkIG1vZGUpLlxuICogVGhpcyBhbGxvd3MgeW91IHRvIG1hbnVhbGx5IHN1Ym1pdCB0aGUga2V5Y2hhaW5zLCB0eXBlLCBtIGFuZCBuIG9mIHRoZSB3YWxsZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYWJlbCBsYWJlbCBvZiB0aGUgd2FsbGV0IHRvIGJlIHNob3duIGluIFVJXG4gKiBAcGFyYW0ge251bWJlcn0gbSBudW1iZXIgb2Yga2V5cyByZXF1aXJlZCB0byB1bmxvY2sgd2FsbGV0ICgyKVxuICogQHBhcmFtIHtudW1iZXJ9IG4gbnVtYmVyIG9mIGtleXMgYXZhaWxhYmxlIG9uIHRoZSB3YWxsZXQgKDMpXG4gKiBAcGFyYW0ge2FycmF5fSBrZXljaGFpbnMgYXJyYXkgb2Yga2V5Y2hhaW4geHB1YnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnRlcnByaXNlIElEIG9mIHRoZSBlbnRlcnByaXNlIGVudGl0eSB0byBjcmVhdGUgdGhpcyB3YWxsZXQgdW5kZXIuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnMgV2hlbiBzZXQgdG8gdHJ1ZSBkaXNhYmxlcyBub3RpZmljYXRpb25zIGZvciB0cmFuc2FjdGlvbnMgb24gdGhpcyB3YWxsZXQuXG4gKi9cbldhbGxldHMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcbiAgY29tbW9uLnZhbGlkYXRlUGFyYW1zKHBhcmFtcywgW10sIFsnbGFiZWwnLCAnZW50ZXJwcmlzZSddLCBjYWxsYmFjayk7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkocGFyYW1zLmtleWNoYWlucykgPT09IGZhbHNlIHx8ICFfLmlzTnVtYmVyKHBhcmFtcy5tKSB8fCAhXy5pc051bWJlcihwYXJhbXMubikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgYXJndW1lbnQnKTtcbiAgfVxuXG4gIC8vIFRPRE86IHN1cHBvcnQgbW9yZSB0eXBlcyBvZiBtdWx0aXNpZ1xuICBpZiAocGFyYW1zLm0gIT09IDIgfHwgcGFyYW1zLm4gIT09IDMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIG11bHRpLXNpZyB0eXBlJyk7XG4gIH1cblxuICBjb25zdCBzZWxmID0gdGhpcztcbiAgY29uc3Qga2V5Y2hhaW5zID0gcGFyYW1zLmtleWNoYWlucy5tYXAoZnVuY3Rpb24gKGspIHtcbiAgICByZXR1cm4geyB4cHViOiBrLnhwdWIgfTtcbiAgfSk7XG4gIGNvbnN0IHdhbGxldFBhcmFtczogYW55ID0ge1xuICAgIGxhYmVsOiBwYXJhbXMubGFiZWwsXG4gICAgbTogcGFyYW1zLm0sXG4gICAgbjogcGFyYW1zLm4sXG4gICAga2V5Y2hhaW5zOiBrZXljaGFpbnMsXG4gIH07XG5cbiAgaWYgKHBhcmFtcy5lbnRlcnByaXNlKSB7XG4gICAgd2FsbGV0UGFyYW1zLmVudGVycHJpc2UgPSBwYXJhbXMuZW50ZXJwcmlzZTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuZGlzYWJsZVRyYW5zYWN0aW9uTm90aWZpY2F0aW9ucykge1xuICAgIHdhbGxldFBhcmFtcy5kaXNhYmxlVHJhbnNhY3Rpb25Ob3RpZmljYXRpb25zID0gcGFyYW1zLmRpc2FibGVUcmFuc2FjdGlvbk5vdGlmaWNhdGlvbnM7XG4gIH1cblxuICByZXR1cm4gQmx1ZWJpcmQucmVzb2x2ZSh0aGlzLmJpdGdvLnBvc3QodGhpcy5iaXRnby51cmwoJy93YWxsZXQnKSkuc2VuZCh3YWxsZXRQYXJhbXMpLnJlc3VsdCgpKVxuICAgIC50aGVuKGZ1bmN0aW9uIChib2R5KSB7XG4gICAgICByZXR1cm4gbmV3IFdhbGxldChzZWxmLmJpdGdvLCBib2R5KTtcbiAgICB9KVxuICAgIC5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbi8vXG4vLyBnZXRcbi8vIFNob3J0aGFuZCB0byBnZXRXYWxsZXRcbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgaWQ6IHRoZSBpZCBvZiB0aGUgd2FsbGV0XG4vL1xuV2FsbGV0cy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0KHBhcmFtcywgY2FsbGJhY2spO1xufTtcblxuLy9cbi8vIHJlbW92ZVxuLy8gUmVtb3ZlIGFuIGV4aXN0aW5nIHdhbGxldC5cbi8vIFBhcmFtZXRlcnMgaW5jbHVkZTpcbi8vICAgaWQ6IHRoZSBpZCBvZiB0aGUgd2FsbGV0XG4vL1xuV2FsbGV0cy5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgcGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuICBjb21tb24udmFsaWRhdGVQYXJhbXMocGFyYW1zLCBbJ2lkJ10sIFtdLCBjYWxsYmFjayk7XG5cbiAgcmV0dXJuIEJsdWViaXJkLnJlc29sdmUodGhpcy5iaXRnby5kZWwodGhpcy5iaXRnby51cmwoJy93YWxsZXQvJyArIHBhcmFtcy5pZCkpLnJlc3VsdCgpKS5ub2RlaWZ5KGNhbGxiYWNrKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gV2FsbGV0cztcbiJdfQ==
package/package.json CHANGED
@@ -1,18 +1,11 @@
1
1
  {
2
2
  "name": "@bitgo-beta/sdk-api",
3
- "version": "1.10.1-beta.78",
3
+ "version": "1.10.1-beta.780",
4
4
  "description": "REST wrapper for BitGoJS",
5
5
  "main": "./dist/src/index.js",
6
6
  "types": "./dist/src/index.d.ts",
7
- "exports": {
8
- "./package.json": "./package.json",
9
- ".": {
10
- "node": "./dist/src/index.js",
11
- "default": "./dist/web/main.js"
12
- }
13
- },
14
7
  "browser": {
15
- "superagent-proxy": false
8
+ "proxy-agent": false
16
9
  },
17
10
  "scripts": {
18
11
  "build": "yarn tsc --build --incremental --verbose .",
@@ -21,12 +14,9 @@
21
14
  "clean": "rm -r ./dist",
22
15
  "lint": "eslint --quiet .",
23
16
  "prepare": "npm run build",
24
- "webpack-dev": "yarn webpack",
25
- "webpack-prod": "yarn webpack --mode=production --node-env=production",
26
- "prepublishOnly": "yarn webpack-prod",
27
17
  "test": "npm run coverage",
28
18
  "coverage": "nyc -- npm run unit-test",
29
- "unit-test": "mocha"
19
+ "unit-test": "mocha 'test/unit/**/*.ts'"
30
20
  },
31
21
  "author": "BitGo SDK Team <sdkteam@bitgo.com>",
32
22
  "license": "MIT",
@@ -50,23 +40,28 @@
50
40
  ]
51
41
  },
52
42
  "dependencies": {
53
- "@bitgo-beta/sdk-core": "8.2.1-beta.78",
54
- "@bitgo-beta/sjcl": "1.0.2-beta.315",
55
- "@bitgo-beta/unspents": "0.13.2-beta.78",
56
- "@bitgo-beta/utxo-lib": "8.0.3-beta.78",
43
+ "@bitgo-beta/sdk-core": "8.2.1-beta.781",
44
+ "@bitgo-beta/sdk-hmac": "1.0.1-beta.147",
45
+ "@bitgo-beta/sjcl": "1.0.2-beta.1019",
46
+ "@bitgo-beta/unspents": "0.13.2-beta.781",
47
+ "@bitgo-beta/utxo-lib": "8.0.3-beta.782",
57
48
  "@types/superagent": "4.1.15",
58
- "bitcoinjs-message": "^2.0.0",
49
+ "bitcoinjs-message": "npm:@bitgo-forks/bitcoinjs-message@1.0.0-master.3",
59
50
  "bluebird": "^3.5.3",
60
- "browser-or-node": "2.0.0",
61
- "bs58": "^2.0.1",
62
51
  "debug": "3.1.0",
63
52
  "eol": "^0.5.0",
64
53
  "lodash": "^4.17.15",
65
- "sanitize-html": "^1.27.5",
66
- "secp256k1": "^4.0.2",
54
+ "proxy-agent": "6.4.0",
55
+ "sanitize-html": "^2.11",
56
+ "secp256k1": "5.0.1",
67
57
  "secrets.js-grempe": "^1.1.0",
68
- "superagent": "3.8.3",
69
- "superagent-proxy": "3.0.0"
58
+ "superagent": "^9.0.1"
59
+ },
60
+ "overrides": {
61
+ "degenerator": "5.0.0"
62
+ },
63
+ "resolutions": {
64
+ "degenerator": "5.0.0"
70
65
  },
71
- "gitHead": "bcd89a8308c87c3ec62567a9c8422eec4f20db95"
66
+ "gitHead": "44cfbdd4229e086d15c6d1a12151c83fcdcbc774"
72
67
  }