@bitgo/account-lib 2.18.0-rc.10 → 2.18.0-rc.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/LICENSE +191 -0
  2. package/dist/browser/bitgo-account-lib.js +1 -1
  3. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +40 -0
  4. package/dist/package.json +8 -5
  5. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +1 -1
  6. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -1
  7. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +1 -1
  8. package/dist/src/coin/baseCoin/enum.d.ts +3 -1
  9. package/dist/src/coin/baseCoin/enum.d.ts.map +1 -1
  10. package/dist/src/coin/baseCoin/enum.js +5 -1
  11. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -1
  12. package/dist/src/coin/cspr/delegateBuilder.js +13 -13
  13. package/dist/src/coin/cspr/ifaces.d.ts +5 -5
  14. package/dist/src/coin/cspr/ifaces.d.ts.map +1 -1
  15. package/dist/src/coin/cspr/ifaces.js +1 -1
  16. package/dist/src/coin/cspr/keyPair.d.ts +2 -5
  17. package/dist/src/coin/cspr/keyPair.d.ts.map +1 -1
  18. package/dist/src/coin/cspr/keyPair.js +1 -1
  19. package/dist/src/coin/cspr/transaction.d.ts +1 -1
  20. package/dist/src/coin/cspr/transaction.d.ts.map +1 -1
  21. package/dist/src/coin/cspr/transaction.js +24 -19
  22. package/dist/src/coin/cspr/transactionBuilder.js +10 -10
  23. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -1
  24. package/dist/src/coin/cspr/transactionBuilderFactory.js +7 -6
  25. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -1
  26. package/dist/src/coin/cspr/transferBuilder.js +5 -7
  27. package/dist/src/coin/cspr/undelegateBuilder.js +13 -13
  28. package/dist/src/coin/cspr/utils.d.ts +1 -1
  29. package/dist/src/coin/cspr/utils.d.ts.map +1 -1
  30. package/dist/src/coin/cspr/utils.js +54 -21
  31. package/dist/src/coin/cspr/walletInitializationBuilder.js +18 -18
  32. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -1
  33. package/dist/src/coin/dot/addressInitializationBuilder.js +1 -1
  34. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +47 -0
  35. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -0
  36. package/dist/src/coin/dot/batchTransactionBuilder.js +145 -0
  37. package/dist/src/coin/dot/iface.d.ts +24 -2
  38. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  39. package/dist/src/coin/dot/iface.js +3 -1
  40. package/dist/src/coin/dot/index.d.ts +2 -0
  41. package/dist/src/coin/dot/index.d.ts.map +1 -1
  42. package/dist/src/coin/dot/index.js +6 -2
  43. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  44. package/dist/src/coin/dot/transaction.js +16 -6
  45. package/dist/src/coin/dot/transactionBuilder.d.ts +12 -10
  46. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  47. package/dist/src/coin/dot/transactionBuilder.js +39 -33
  48. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +5 -3
  49. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  50. package/dist/src/coin/dot/transactionBuilderFactory.js +28 -21
  51. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  52. package/dist/src/coin/dot/transferBuilder.js +3 -5
  53. package/dist/src/coin/dot/txnSchema.d.ts +1 -0
  54. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  55. package/dist/src/coin/dot/txnSchema.js +7 -2
  56. package/dist/src/coin/dot/unnominateBuilder.d.ts +24 -0
  57. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -0
  58. package/dist/src/coin/dot/unnominateBuilder.js +72 -0
  59. package/dist/src/coin/dot/utils.d.ts +11 -3
  60. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  61. package/dist/src/coin/dot/utils.js +31 -7
  62. package/dist/src/coin/near/index.d.ts +5 -0
  63. package/dist/src/coin/near/index.d.ts.map +1 -0
  64. package/dist/src/coin/near/index.js +29 -0
  65. package/dist/src/coin/near/keyPair.d.ts +19 -0
  66. package/dist/src/coin/near/keyPair.d.ts.map +1 -0
  67. package/dist/src/coin/near/keyPair.js +76 -0
  68. package/dist/src/coin/near/transaction.d.ts +11 -0
  69. package/dist/src/coin/near/transaction.d.ts.map +1 -0
  70. package/dist/src/coin/near/transaction.js +41 -0
  71. package/dist/src/coin/near/transactionBuilder.d.ts +28 -0
  72. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -0
  73. package/dist/src/coin/near/transactionBuilder.js +68 -0
  74. package/dist/src/coin/near/transactionBuilderFactory.d.ts +24 -0
  75. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -0
  76. package/dist/src/coin/near/transactionBuilderFactory.js +56 -0
  77. package/dist/src/coin/near/transferBuilder.d.ts +14 -0
  78. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -0
  79. package/dist/src/coin/near/transferBuilder.js +81 -0
  80. package/dist/src/coin/near/utils.d.ts +18 -0
  81. package/dist/src/coin/near/utils.d.ts.map +1 -0
  82. package/dist/src/coin/near/utils.js +37 -0
  83. package/dist/src/coin/near/walletInitializationBuilder.d.ts +14 -0
  84. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -0
  85. package/dist/src/coin/near/walletInitializationBuilder.js +81 -0
  86. package/dist/src/coin/sol/constants.d.ts +30 -5
  87. package/dist/src/coin/sol/constants.d.ts.map +1 -1
  88. package/dist/src/coin/sol/constants.js +38 -8
  89. package/dist/src/coin/sol/iface.d.ts +27 -3
  90. package/dist/src/coin/sol/iface.d.ts.map +1 -1
  91. package/dist/src/coin/sol/iface.js +1 -1
  92. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -1
  93. package/dist/src/coin/sol/instructionParamsFactory.js +103 -4
  94. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -1
  95. package/dist/src/coin/sol/solInstructionFactory.js +73 -1
  96. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +41 -0
  97. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -0
  98. package/dist/src/coin/sol/stakingActivateBuilder.js +162 -0
  99. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +23 -0
  100. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -0
  101. package/dist/src/coin/sol/stakingDeactivateBuilder.js +130 -0
  102. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +31 -0
  103. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -0
  104. package/dist/src/coin/sol/stakingWithdrawBuilder.js +146 -0
  105. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  106. package/dist/src/coin/sol/transaction.js +50 -1
  107. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  108. package/dist/src/coin/sol/transactionBuilder.js +4 -10
  109. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +34 -0
  110. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  111. package/dist/src/coin/sol/transactionBuilderFactory.js +47 -1
  112. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
  113. package/dist/src/coin/sol/transferBuilder.js +2 -4
  114. package/dist/src/coin/sol/utils.d.ts +23 -1
  115. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  116. package/dist/src/coin/sol/utils.js +63 -11
  117. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
  118. package/dist/src/coin/sol/walletInitializationBuilder.js +2 -4
  119. package/dist/src/index.d.ts +2 -0
  120. package/dist/src/index.d.ts.map +1 -1
  121. package/dist/src/index.js +5 -2
  122. package/package.json +8 -5
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.Transaction = void 0;
38
38
  var _ = __importStar(require("lodash"));
39
- var casper_client_sdk_1 = require("casper-client-sdk");
39
+ var casper_js_sdk_1 = require("casper-js-sdk");
40
40
  var baseCoin_1 = require("../baseCoin");
41
41
  var errors_1 = require("../baseCoin/errors");
42
42
  var keyPair_1 = require("./keyPair");
@@ -59,8 +59,8 @@ var Transaction = /** @class */ (function (_super) {
59
59
  if (this._deploy.approvals.some(function (ap) { return !ap.signer.startsWith(constants_1.SECP256K1_PREFIX) || !utils_1.isValidPublicKey(utils_1.removeAlgoPrefixFromHexValue(ap.signer)); })) {
60
60
  throw new errors_1.SigningError('Invalid deploy. Already signed with an invalid key');
61
61
  }
62
- var secpKeys = new casper_client_sdk_1.Keys.Secp256K1(Uint8Array.from(Buffer.from(keys.pub, 'hex')), Uint8Array.from(Buffer.from(keys.prv, 'hex')));
63
- var signedDeploy = casper_client_sdk_1.DeployUtil.signDeploy(this._deploy, secpKeys);
62
+ var secpKeys = new casper_js_sdk_1.Keys.Secp256K1(Uint8Array.from(Buffer.from(keys.pub, 'hex')), Uint8Array.from(Buffer.from(keys.prv, 'hex')));
63
+ var signedDeploy = casper_js_sdk_1.DeployUtil.signDeploy(this._deploy, secpKeys);
64
64
  this._signatures.push(signedDeploy.approvals[signedDeploy.approvals.length - 1].signature);
65
65
  };
66
66
  /**
@@ -73,12 +73,12 @@ var Transaction = /** @class */ (function (_super) {
73
73
  var pub = keyPair.getKeys().pub;
74
74
  var signatureBuffer = Uint8Array.from(Buffer.from(signature, 'hex'));
75
75
  var pubKeyBuffer = Uint8Array.from(Buffer.from(pub, 'hex'));
76
- var parsedPublicKey = casper_client_sdk_1.Keys.Secp256K1.parsePublicKey(pubKeyBuffer, 'raw');
77
- var pubKeyHex = casper_client_sdk_1.Keys.Secp256K1.accountHex(parsedPublicKey);
76
+ var parsedPublicKey = casper_js_sdk_1.Keys.Secp256K1.parsePublicKey(pubKeyBuffer, 'raw');
77
+ var pubKeyHex = casper_js_sdk_1.Keys.Secp256K1.accountHex(parsedPublicKey);
78
78
  if (utils_1.removeAlgoPrefixFromHexValue(pubKeyHex) !== pub) {
79
79
  throw new errors_1.SigningError('Signer does not match signature');
80
80
  }
81
- var signedDeploy = casper_client_sdk_1.DeployUtil.setSignature(this._deploy, signatureBuffer, casper_client_sdk_1.PublicKey.fromSecp256K1(parsedPublicKey));
81
+ var signedDeploy = casper_js_sdk_1.DeployUtil.setSignature(this._deploy, signatureBuffer, casper_js_sdk_1.CLPublicKey.fromSecp256K1(parsedPublicKey));
82
82
  var approval = _.last(signedDeploy.approvals);
83
83
  if (utils_1.removeAlgoPrefixFromHexValue(approval.signature) !== signature) {
84
84
  throw new errors_1.SigningError('Invalid signature');
@@ -90,7 +90,11 @@ var Transaction = /** @class */ (function (_super) {
90
90
  if (!this.casperTx) {
91
91
  throw new errors_1.InvalidTransactionError('Empty transaction');
92
92
  }
93
- var txJson = casper_client_sdk_1.DeployUtil.deployToJson(this.casperTx);
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ var txJson = casper_js_sdk_1.DeployUtil.deployToJson(this.casperTx);
95
+ // The new casper lib is converting the TTL from miliseconds to another date format, in this case 1 day
96
+ // we need to leave it as ms for the HSM to be able to parse it
97
+ txJson.deploy.header.ttl = this.casperTx.header.ttl + "ms";
94
98
  this.setOwnersInJson(txJson);
95
99
  this.setTransfersFieldsInJson(txJson);
96
100
  this.setDelegateFieldsInJson(txJson);
@@ -98,22 +102,23 @@ var Transaction = /** @class */ (function (_super) {
98
102
  };
99
103
  /** @inheritdoc */
100
104
  Transaction.prototype.toJson = function () {
101
- var deployPayment = this._deploy.payment.asModuleBytes().getArgByName('amount');
105
+ var _a;
106
+ var deployPayment = (_a = this._deploy.payment.asModuleBytes()) === null || _a === void 0 ? void 0 : _a.getArgByName('amount');
102
107
  if (!deployPayment) {
103
108
  throw new errors_1.InvalidTransactionError('Undefined fee');
104
109
  }
105
110
  var owner1Index = 0;
106
111
  var owner2Index = 1;
107
112
  var owner3Index = 2;
108
- var sourcePublicKey = Buffer.from(this._deploy.header.account.rawPublicKey).toString('hex');
113
+ var sourcePublicKey = Buffer.from(this._deploy.header.account.value()).toString('hex');
109
114
  var sourceAddress = new keyPair_1.KeyPair({ pub: sourcePublicKey }).getAddress();
110
115
  var result = {
111
116
  hash: Buffer.from(this._deploy.hash).toString('hex'),
112
- fee: { gasLimit: deployPayment.asBigNumber().toString(), gasPrice: this._deploy.header.gasPrice.toString() },
117
+ fee: { gasLimit: deployPayment.value().toString(), gasPrice: this._deploy.header.gasPrice.toString() },
113
118
  from: sourceAddress,
114
119
  startTime: new Date(this._deploy.header.timestamp).toISOString(),
115
120
  expiration: this._deploy.header.ttl,
116
- deployType: this._deploy.session.getArgByName(constants_1.TRANSACTION_TYPE).asString(),
121
+ deployType: this._deploy.session.getArgByName(constants_1.TRANSACTION_TYPE).value(),
117
122
  };
118
123
  var transactionType = utils_1.getDeployType(this._deploy.session);
119
124
  switch (transactionType) {
@@ -123,9 +128,9 @@ var Transaction = /** @class */ (function (_super) {
123
128
  result.transferId = utils_1.getTransferId(this._deploy.session);
124
129
  break;
125
130
  case baseCoin_1.TransactionType.WalletInitialization:
126
- result.owner1 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner1Index).asString();
127
- result.owner2 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner2Index).asString();
128
- result.owner3 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner3Index).asString();
131
+ result.owner1 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner1Index).value();
132
+ result.owner2 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner2Index).value();
133
+ result.owner3 = this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + owner3Index).value();
129
134
  break;
130
135
  case baseCoin_1.TransactionType.StakingLock:
131
136
  result.fromDelegate = utils_1.getDelegatorAddress(this.casperTx.session);
@@ -173,9 +178,9 @@ var Transaction = /** @class */ (function (_super) {
173
178
  var owner1 = 1;
174
179
  var owner2 = 2;
175
180
  var ownersValues_1 = new Map();
176
- ownersValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).asString());
181
+ ownersValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
177
182
  [owner0, owner1, owner2].forEach(function (index) {
178
- ownersValues_1.set(constants_1.OWNER_PREFIX + index, _this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + index).asString());
183
+ ownersValues_1.set(constants_1.OWNER_PREFIX + index, _this.casperTx.session.getArgByName(constants_1.OWNER_PREFIX + index).value());
179
184
  });
180
185
  txJson['deploy']['session']['ModuleBytes']['args'].forEach(function (arg) {
181
186
  if (ownersValues_1.has(arg[argName_1])) {
@@ -194,7 +199,7 @@ var Transaction = /** @class */ (function (_super) {
194
199
  var argName_2 = 0;
195
200
  var argValue_2 = 1;
196
201
  var transferValues_1 = new Map();
197
- transferValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).asString());
202
+ transferValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
198
203
  transferValues_1.set('amount', utils_1.getTransferAmount(this.casperTx.session));
199
204
  transferValues_1.set('to_address', utils_1.getTransferDestinationAddress(this.casperTx.session));
200
205
  var transferId = utils_1.getTransferId(this.casperTx.session);
@@ -219,7 +224,7 @@ var Transaction = /** @class */ (function (_super) {
219
224
  var argName_3 = 0;
220
225
  var argValue_3 = 1;
221
226
  var delegateValues_1 = new Map();
222
- delegateValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).asString());
227
+ delegateValues_1.set(constants_1.TRANSACTION_TYPE, this.casperTx.session.getArgByName(constants_1.TRANSACTION_TYPE).value());
223
228
  delegateValues_1.set('amount', utils_1.getDelegateAmount(this.casperTx.session));
224
229
  delegateValues_1.set(constants_1.DELEGATE_FROM_ADDRESS, utils_1.getDelegatorAddress(this.casperTx.session));
225
230
  delegateValues_1.set(constants_1.DELEGATE_VALIDATOR, utils_1.getValidatorAddress(this.casperTx.session));
@@ -243,4 +248,4 @@ var Transaction = /** @class */ (function (_super) {
243
248
  return Transaction;
244
249
  }(baseCoin_1.BaseTransaction));
245
250
  exports.Transaction = Transaction;
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9jc3ByL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBNEI7QUFFNUIsdURBQXlFO0FBQ3pFLHdDQUErRDtBQUUvRCw2Q0FBMkU7QUFDM0UscUNBQW9DO0FBRXBDLHlDQU1xQjtBQUNyQixpQ0FVaUI7QUFFakI7SUFBaUMsK0JBQWU7SUFJOUMscUJBQVksV0FBaUM7ZUFDM0Msa0JBQU0sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUCxVQUFRLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMEJBQUksR0FBSixVQUFLLE9BQWdCO1FBQ25CLElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDekIsVUFBQyxFQUFFLElBQUssT0FBQSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLDRCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxvQ0FBNEIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBckcsQ0FBcUcsQ0FDOUcsRUFDRDtZQUNBLE1BQU0sSUFBSSxxQkFBWSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFNLFFBQVEsR0FBRyxJQUFJLHdCQUFJLENBQUMsU0FBUyxDQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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cEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDeEIsQ0FBQzs7O09BSkE7SUFPSCxrQkFBQztBQUFELENBQUMsQUFsUEQsQ0FBaUMsMEJBQWUsR0FrUC9DO0FBbFBZLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzL2Rpc3Qvc3JjL2Jhc2UnO1xuaW1wb3J0IHsgQ0xWYWx1ZSwgUHVibGljS2V5LCBEZXBsb3lVdGlsLCBLZXlzIH0gZnJvbSAnY2FzcGVyLWNsaWVudC1zZGsnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmltcG9ydCB7IENhc3BlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi9pZmFjZXMnO1xuaW1wb3J0IHtcbiAgREVMRUdBVEVfRlJPTV9BRERSRVNTLFxuICBERUxFR0FURV9WQUxJREFUT1IsXG4gIE9XTkVSX1BSRUZJWCxcbiAgU0VDUDI1NksxX1BSRUZJWCxcbiAgVFJBTlNBQ1RJT05fVFlQRSxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgZ2V0VHJhbnNmZXJBbW91bnQsXG4gIGdldFRyYW5zZmVyRGVzdGluYXRpb25BZGRyZXNzLFxuICBnZXRUcmFuc2ZlcklkLFxuICBpc1ZhbGlkUHVibGljS2V5LFxuICByZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlLFxuICBnZXREZXBsb3lUeXBlLFxuICBnZXREZWxlZ2F0b3JBZGRyZXNzLFxuICBnZXRWYWxpZGF0b3JBZGRyZXNzLFxuICBnZXREZWxlZ2F0ZUFtb3VudCxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcm90ZWN0ZWQgX2RlcGxveTogRGVwbG95VXRpbC5EZXBsb3k7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzaWduKGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlzID0ga2V5UGFpci5nZXRLZXlzKCk7XG4gICAgaWYgKCFrZXlzLnBydikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLl9kZXBsb3kuYXBwcm92YWxzLnNvbWUoXG4gICAgICAgIChhcCkgPT4gIWFwLnNpZ25lci5zdGFydHNXaXRoKFNFQ1AyNTZLMV9QUkVGSVgpIHx8ICFpc1ZhbGlkUHVibGljS2V5KHJlbW92ZUFsZ29QcmVmaXhGcm9tSGV4VmFsdWUoYXAuc2lnbmVyKSksXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdJbnZhbGlkIGRlcGxveS4gQWxyZWFkeSBzaWduZWQgd2l0aCBhbiBpbnZhbGlkIGtleScpO1xuICAgIH1cbiAgICBjb25zdCBzZWNwS2V5cyA9IG5ldyBLZXlzLlNlY3AyNTZLMShcbiAgICAgIFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShrZXlzLnB1YiwgJ2hleCcpKSxcbiAgICAgIFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShrZXlzLnBydiwgJ2hleCcpKSxcbiAgICApO1xuICAgIGNvbnN0IHNpZ25lZERlcGxveSA9IERlcGxveVV0aWwuc2lnbkRlcGxveSh0aGlzLl9kZXBsb3ksIHNlY3BLZXlzKTtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmVkRGVwbG95LmFwcHJvdmFsc1tzaWduZWREZXBsb3kuYXBwcm92YWxzLmxlbmd0aCAtIDFdLnNpZ25hdHVyZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2lnbmF0dXJlIHRvIHRoaXMgdHJhbnNhY3Rpb24gYW5kIHRvIGFuZCBpdHMgZGVwbG95XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byBhZGQsIGluIHN0cmluZyBoZXggZm9ybWF0XG4gICAqIEBwYXJhbSB7S2V5UGFpcn0ga2V5UGFpciBUaGUga2V5IHBhaXIgdGhhdCBjcmVhdGVkIHRoZSBzaWduYXR1cmVcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5UGFpcjogS2V5UGFpcik6IHZvaWQge1xuICAgIGNvbnN0IHB1YiA9IGtleVBhaXIuZ2V0S2V5cygpLnB1YjtcbiAgICBjb25zdCBzaWduYXR1cmVCdWZmZXIgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JykpO1xuICAgIGNvbnN0IHB1YktleUJ1ZmZlciA9IFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgY29uc3QgcGFyc2VkUHVibGljS2V5ID0gS2V5cy5TZWNwMjU2SzEucGFyc2VQdWJsaWNLZXkocHViS2V5QnVmZmVyLCAncmF3Jyk7XG4gICAgY29uc3QgcHViS2V5SGV4ID0gS2V5cy5TZWNwMjU2SzEuYWNjb3VudEhleChwYXJzZWRQdWJsaWNLZXkpO1xuICAgIGlmIChyZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKHB1YktleUhleCkgIT09IHB1Yikge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignU2lnbmVyIGRvZXMgbm90IG1hdGNoIHNpZ25hdHVyZScpO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWREZXBsb3kgPSBEZXBsb3lVdGlsLnNldFNpZ25hdHVyZShcbiAgICAgIHRoaXMuX2RlcGxveSxcbiAgICAgIHNpZ25hdHVyZUJ1ZmZlcixcbiAgICAgIFB1YmxpY0tleS5mcm9tU2VjcDI1NksxKHBhcnNlZFB1YmxpY0tleSksXG4gICAgKTtcbiAgICBjb25zdCBhcHByb3ZhbCA9IF8ubGFzdChzaWduZWREZXBsb3kuYXBwcm92YWxzKSBhcyBEZXBsb3lVdGlsLkFwcHJvdmFsO1xuICAgIGlmIChyZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKGFwcHJvdmFsLnNpZ25hdHVyZSkgIT09IHNpZ25hdHVyZSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBzaWduYXR1cmUnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY2FzcGVyVHgpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gICAgY29uc3QgdHhKc29uID0gRGVwbG95VXRpbC5kZXBsb3lUb0pzb24odGhpcy5jYXNwZXJUeCk7XG4gICAgdGhpcy5zZXRPd25lcnNJbkpzb24odHhKc29uKTtcbiAgICB0aGlzLnNldFRyYW5zZmVyc0ZpZWxkc0luSnNvbih0eEpzb24pO1xuICAgIHRoaXMuc2V0RGVsZWdhdGVGaWVsZHNJbkpzb24odHhKc29uKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodHhKc29uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogQ2FzcGVyVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IGRlcGxveVBheW1lbnQgPSB0aGlzLl9kZXBsb3kucGF5bWVudC5hc01vZHVsZUJ5dGVzKCkhLmdldEFyZ0J5TmFtZSgnYW1vdW50Jyk7XG4gICAgaWYgKCFkZXBsb3lQYXltZW50KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1VuZGVmaW5lZCBmZWUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvd25lcjFJbmRleCA9IDA7XG4gICAgY29uc3Qgb3duZXIySW5kZXggPSAxO1xuICAgIGNvbnN0IG93bmVyM0luZGV4ID0gMjtcbiAgICBjb25zdCBzb3VyY2VQdWJsaWNLZXkgPSBCdWZmZXIuZnJvbSh0aGlzLl9kZXBsb3kuaGVhZGVyLmFjY291bnQucmF3UHVibGljS2V5KS50b1N0cmluZygnaGV4Jyk7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IG5ldyBLZXlQYWlyKHsgcHViOiBzb3VyY2VQdWJsaWNLZXkgfSkuZ2V0QWRkcmVzcygpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBDYXNwZXJUcmFuc2FjdGlvbiA9IHtcbiAgICAgIGhhc2g6IEJ1ZmZlci5mcm9tKHRoaXMuX2RlcGxveS5oYXNoKS50b1N0cmluZygnaGV4JyksXG4gICAgICBmZWU6IHsgZ2FzTGltaXQ6IGRlcGxveVBheW1lbnQuYXNCaWdOdW1iZXIoKS50b1N0cmluZygpLCBnYXNQcmljZTogdGhpcy5fZGVwbG95LmhlYWRlci5nYXNQcmljZS50b1N0cmluZygpIH0sXG4gICAgICBmcm9tOiBzb3VyY2VBZGRyZXNzLFxuICAgICAgc3RhcnRUaW1lOiBuZXcgRGF0ZSh0aGlzLl9kZXBsb3kuaGVhZGVyLnRpbWVzdGFtcCkudG9JU09TdHJpbmcoKSxcbiAgICAgIGV4cGlyYXRpb246IHRoaXMuX2RlcGxveS5oZWFkZXIudHRsLFxuICAgICAgZGVwbG95VHlwZTogKHRoaXMuX2RlcGxveS5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFZhbHVlKS5hc1N0cmluZygpLFxuICAgIH07XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvblR5cGUgPSBnZXREZXBsb3lUeXBlKHRoaXMuX2RlcGxveS5zZXNzaW9uKTtcblxuICAgIHN3aXRjaCAodHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXN1bHQudG8gPSBnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0aGlzLl9kZXBsb3kuc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC5hbW91bnQgPSBnZXRUcmFuc2ZlckFtb3VudCh0aGlzLl9kZXBsb3kuc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC50cmFuc2ZlcklkID0gZ2V0VHJhbnNmZXJJZCh0aGlzLl9kZXBsb3kuc2Vzc2lvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICAgIHJlc3VsdC5vd25lcjEgPSAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShPV05FUl9QUkVGSVggKyBvd25lcjFJbmRleCkgYXMgQ0xWYWx1ZSkuYXNTdHJpbmcoKTtcbiAgICAgICAgcmVzdWx0Lm93bmVyMiA9ICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVyMkluZGV4KSBhcyBDTFZhbHVlKS5hc1N0cmluZygpO1xuICAgICAgICByZXN1bHQub3duZXIzID0gKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoT1dORVJfUFJFRklYICsgb3duZXIzSW5kZXgpIGFzIENMVmFsdWUpLmFzU3RyaW5nKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0xvY2s6XG4gICAgICAgIHJlc3VsdC5mcm9tRGVsZWdhdGUgPSBnZXREZWxlZ2F0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC52YWxpZGF0b3IgPSBnZXRWYWxpZGF0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC5hbW91bnQgPSBnZXREZWxlZ2F0ZUFtb3VudCh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICAgIHJlc3VsdC5mcm9tRGVsZWdhdGUgPSBnZXREZWxlZ2F0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC52YWxpZGF0b3IgPSBnZXRWYWxpZGF0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIHJlc3VsdC5hbW91bnQgPSBnZXREZWxlZ2F0ZUFtb3VudCh0aGlzLmNhc3BlclR4LnNlc3Npb24pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgc2lnbmF0dXJlcyBmcm9tIHRoZSBkZXBsb3kgaW5zdGFuY2UgYW5kIGxvYWQgdGhlbSBpbnRvIHRoZSBzaWduYXR1cmVzIGxpc3RcbiAgICovXG4gIGxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2RlcGxveS5hcHByb3ZhbHMgJiYgdGhpcy5fZGVwbG95LmFwcHJvdmFscy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9kZXBsb3kuYXBwcm92YWxzLmZvckVhY2goKGFwcHJvdmFsKSA9PiB7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChhcHByb3ZhbC5zaWduYXR1cmUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBvd25lcnMgaW5zaWRlIGEganNvbiByZXByZXNlbnRpbmcgYSB3YWxsZXQgaW5pdGlhbGl6YXRpb24gdHguXG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdHhKc29uIGpzb24gdG8gbW9kaWZ5XG4gICAqL1xuICBzZXRPd25lcnNJbkpzb24odHhKc29uOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZCB7XG4gICAgaWYgKGdldERlcGxveVR5cGUodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSA9PT0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKSB7XG4gICAgICBjb25zdCBhcmdOYW1lID0gMDtcbiAgICAgIGNvbnN0IGFyZ1ZhbHVlID0gMTtcbiAgICAgIGNvbnN0IG93bmVyMCA9IDA7XG4gICAgICBjb25zdCBvd25lcjEgPSAxO1xuICAgICAgY29uc3Qgb3duZXIyID0gMjtcblxuICAgICAgY29uc3Qgb3duZXJzVmFsdWVzID0gbmV3IE1hcCgpO1xuXG4gICAgICBvd25lcnNWYWx1ZXMuc2V0KFRSQU5TQUNUSU9OX1RZUEUsICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKFRSQU5TQUNUSU9OX1RZUEUpIGFzIENMVmFsdWUpLmFzU3RyaW5nKCkpO1xuXG4gICAgICBbb3duZXIwLCBvd25lcjEsIG93bmVyMl0uZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgb3duZXJzVmFsdWVzLnNldChcbiAgICAgICAgICBPV05FUl9QUkVGSVggKyBpbmRleCxcbiAgICAgICAgICAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShPV05FUl9QUkVGSVggKyBpbmRleCkgYXMgQ0xWYWx1ZSkuYXNTdHJpbmcoKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICB0eEpzb25bJ2RlcGxveSddIVsnc2Vzc2lvbiddWydNb2R1bGVCeXRlcyddWydhcmdzJ10uZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAgIGlmIChvd25lcnNWYWx1ZXMuaGFzKGFyZ1thcmdOYW1lXSkpIHtcbiAgICAgICAgICBhcmdbYXJnVmFsdWVdWydwYXJzZWQnXSA9IG93bmVyc1ZhbHVlcy5nZXQoYXJnW2FyZ05hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0cmFuc2ZlciBmaWVsZHMgaW5zaWRlIGEganNvbiByZXByZXNlbnRpbmcgYSB0cmFuc2ZlciB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0eEpzb24ganNvbiB0byBtb2RpZnlcbiAgICovXG4gIHNldFRyYW5zZmVyc0ZpZWxkc0luSnNvbih0eEpzb246IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBpZiAoZ2V0RGVwbG95VHlwZSh0aGlzLmNhc3BlclR4LnNlc3Npb24pID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IDA7XG4gICAgICBjb25zdCBhcmdWYWx1ZSA9IDE7XG5cbiAgICAgIGNvbnN0IHRyYW5zZmVyVmFsdWVzID0gbmV3IE1hcCgpO1xuICAgICAgdHJhbnNmZXJWYWx1ZXMuc2V0KFxuICAgICAgICBUUkFOU0FDVElPTl9UWVBFLFxuICAgICAgICAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFZhbHVlKS5hc1N0cmluZygpLFxuICAgICAgKTtcbiAgICAgIHRyYW5zZmVyVmFsdWVzLnNldCgnYW1vdW50JywgZ2V0VHJhbnNmZXJBbW91bnQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgICB0cmFuc2ZlclZhbHVlcy5zZXQoJ3RvX2FkZHJlc3MnLCBnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICBpZiAodHJhbnNmZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRyYW5zZmVyVmFsdWVzLnNldCgnaWQnLCB0cmFuc2ZlcklkLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICB0eEpzb25bJ2RlcGxveSddIVsnc2Vzc2lvbiddWydUcmFuc2ZlciddWydhcmdzJ10uZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAgIGlmICh0cmFuc2ZlclZhbHVlcy5oYXMoYXJnW2FyZ05hbWVdKSkge1xuICAgICAgICAgIGFyZ1thcmdWYWx1ZV1bJ3BhcnNlZCddID0gdHJhbnNmZXJWYWx1ZXMuZ2V0KGFyZ1thcmdOYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGVsZWdhdGUgLyB1bmRlbGVnYXRlIGZpZWxkcyBpbnNpZGUgYSBqc29uIHJlcHJlc2VudGluZyB0aGUgdHguXG4gICAqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gdHhKc29uIGpzb24gdG8gbW9kaWZ5XG4gICAqL1xuICBzZXREZWxlZ2F0ZUZpZWxkc0luSnNvbih0eEpzb246IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICBnZXREZXBsb3lUeXBlKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jayB8fFxuICAgICAgZ2V0RGVwbG95VHlwZSh0aGlzLmNhc3BlclR4LnNlc3Npb24pID09PSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9ja1xuICAgICkge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IDA7XG4gICAgICBjb25zdCBhcmdWYWx1ZSA9IDE7XG5cbiAgICAgIGNvbnN0IGRlbGVnYXRlVmFsdWVzID0gbmV3IE1hcCgpO1xuICAgICAgZGVsZWdhdGVWYWx1ZXMuc2V0KFxuICAgICAgICBUUkFOU0FDVElPTl9UWVBFLFxuICAgICAgICAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShUUkFOU0FDVElPTl9UWVBFKSBhcyBDTFZhbHVlKS5hc1N0cmluZygpLFxuICAgICAgKTtcbiAgICAgIGRlbGVnYXRlVmFsdWVzLnNldCgnYW1vdW50JywgZ2V0RGVsZWdhdGVBbW91bnQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgICBkZWxlZ2F0ZVZhbHVlcy5zZXQoREVMRUdBVEVfRlJPTV9BRERSRVNTLCBnZXREZWxlZ2F0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgICAgZGVsZWdhdGVWYWx1ZXMuc2V0KERFTEVHQVRFX1ZBTElEQVRPUiwgZ2V0VmFsaWRhdG9yQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcblxuICAgICAgdHhKc29uLmRlcGxveS5zZXNzaW9uLk1vZHVsZUJ5dGVzLmFyZ3MuZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAgIGlmIChkZWxlZ2F0ZVZhbHVlcy5oYXMoYXJnW2FyZ05hbWVdKSkge1xuICAgICAgICAgIGFyZ1thcmdWYWx1ZV1bJ3BhcnNlZCddID0gZGVsZWdhdGVWYWx1ZXMuZ2V0KGFyZ1thcmdOYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldCBjYXNwZXJUeCgpOiBEZXBsb3lVdGlsLkRlcGxveSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlcGxveTtcbiAgfVxuXG4gIHNldCBjYXNwZXJUeChkZXBsb3k6IERlcGxveVV0aWwuRGVwbG95KSB7XG4gICAgdGhpcy5fZGVwbG95ID0gZGVwbG95O1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9jc3ByL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBNEI7QUFFNUIsK0NBQTZGO0FBQzdGLHdDQUErRDtBQUUvRCw2Q0FBMkU7QUFDM0UscUNBQW9DO0FBRXBDLHlDQU1xQjtBQUNyQixpQ0FVaUI7QUFFakI7SUFBaUMsK0JBQWU7SUFJOUMscUJBQVksV0FBaUM7ZUFDM0Msa0JBQU0sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQU8sR0FBUCxVQUFRLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsMEJBQUksR0FBSixVQUFLLE9BQWdCO1FBQ25CLElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sSUFBSSxxQkFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDL0M7UUFDRCxJQUNFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDekIsVUFBQyxFQUFFLElBQUssT0FBQSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLDRCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBZ0IsQ0FBQyxvQ0FBNEIsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBckcsQ0FBcUcsQ0FDOUcsRUFDRDtZQUNBLE1BQU0sSUFBSSxxQkFBWSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7U0FDOUU7UUFDRCxJQUFNLFFBQVEsR0FBRyxJQUFJLG9CQUFJLENBQUMsU0FBUyxDQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFD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LENBQUMsQ0FBQyxDQUFDO2lCQUM1RDtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsc0JBQUksaUNBQVE7YUFBWjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBYSxNQUF5QjtZQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN4QixDQUFDOzs7T0FKQTtJQU9ILGtCQUFDO0FBQUQsQ0FBQyxBQWhQRCxDQUFpQywwQkFBZSxHQWdQL0M7QUFoUFksa0NBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MvZGlzdC9zcmMvYmFzZSc7XG5pbXBvcnQgeyBDTFB1YmxpY0tleSBhcyBQdWJsaWNLZXksIERlcGxveVV0aWwsIEtleXMsIENMU3RyaW5nLCBDTFU1MTIgfSBmcm9tICdjYXNwZXItanMtc2RrJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgQmFzZUtleSB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBTaWduaW5nRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBDYXNwZXJUcmFuc2FjdGlvbiB9IGZyb20gJy4vaWZhY2VzJztcbmltcG9ydCB7XG4gIERFTEVHQVRFX0ZST01fQUREUkVTUyxcbiAgREVMRUdBVEVfVkFMSURBVE9SLFxuICBPV05FUl9QUkVGSVgsXG4gIFNFQ1AyNTZLMV9QUkVGSVgsXG4gIFRSQU5TQUNUSU9OX1RZUEUsXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGdldFRyYW5zZmVyQW1vdW50LFxuICBnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyxcbiAgZ2V0VHJhbnNmZXJJZCxcbiAgaXNWYWxpZFB1YmxpY0tleSxcbiAgcmVtb3ZlQWxnb1ByZWZpeEZyb21IZXhWYWx1ZSxcbiAgZ2V0RGVwbG95VHlwZSxcbiAgZ2V0RGVsZWdhdG9yQWRkcmVzcyxcbiAgZ2V0VmFsaWRhdG9yQWRkcmVzcyxcbiAgZ2V0RGVsZWdhdGVBbW91bnQsXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcm90ZWN0ZWQgX3R5cGU6IFRyYW5zYWN0aW9uVHlwZTtcbiAgcHJvdGVjdGVkIF9kZXBsb3k6IERlcGxveVV0aWwuRGVwbG95O1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2lnbihrZXlQYWlyOiBLZXlQYWlyKTogdm9pZCB7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5fZGVwbG95LmFwcHJvdmFscy5zb21lKFxuICAgICAgICAoYXApID0+ICFhcC5zaWduZXIuc3RhcnRzV2l0aChTRUNQMjU2SzFfUFJFRklYKSB8fCAhaXNWYWxpZFB1YmxpY0tleShyZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKGFwLnNpZ25lcikpLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignSW52YWxpZCBkZXBsb3kuIEFscmVhZHkgc2lnbmVkIHdpdGggYW4gaW52YWxpZCBrZXknKTtcbiAgICB9XG4gICAgY29uc3Qgc2VjcEtleXMgPSBuZXcgS2V5cy5TZWNwMjU2SzEoXG4gICAgICBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oa2V5cy5wdWIsICdoZXgnKSksXG4gICAgICBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20oa2V5cy5wcnYsICdoZXgnKSksXG4gICAgKTtcbiAgICBjb25zdCBzaWduZWREZXBsb3kgPSBEZXBsb3lVdGlsLnNpZ25EZXBsb3kodGhpcy5fZGVwbG95LCBzZWNwS2V5cyk7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25lZERlcGxveS5hcHByb3ZhbHNbc2lnbmVkRGVwbG95LmFwcHJvdmFscy5sZW5ndGggLSAxXS5zaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNpZ25hdHVyZSB0byB0aGlzIHRyYW5zYWN0aW9uIGFuZCB0byBhbmQgaXRzIGRlcGxveVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIFRoZSBzaWduYXR1cmUgdG8gYWRkLCBpbiBzdHJpbmcgaGV4IGZvcm1hdFxuICAgKiBAcGFyYW0ge0tleVBhaXJ9IGtleVBhaXIgVGhlIGtleSBwYWlyIHRoYXQgY3JlYXRlZCB0aGUgc2lnbmF0dXJlXG4gICAqL1xuICBhZGRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcsIGtleVBhaXI6IEtleVBhaXIpOiB2b2lkIHtcbiAgICBjb25zdCBwdWIgPSBrZXlQYWlyLmdldEtleXMoKS5wdWI7XG4gICAgY29uc3Qgc2lnbmF0dXJlQnVmZmVyID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHNpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICBjb25zdCBwdWJLZXlCdWZmZXIgPSBVaW50OEFycmF5LmZyb20oQnVmZmVyLmZyb20ocHViLCAnaGV4JykpO1xuICAgIGNvbnN0IHBhcnNlZFB1YmxpY0tleSA9IEtleXMuU2VjcDI1NksxLnBhcnNlUHVibGljS2V5KHB1YktleUJ1ZmZlciwgJ3JhdycpO1xuICAgIGNvbnN0IHB1YktleUhleCA9IEtleXMuU2VjcDI1NksxLmFjY291bnRIZXgocGFyc2VkUHVibGljS2V5KTtcbiAgICBpZiAocmVtb3ZlQWxnb1ByZWZpeEZyb21IZXhWYWx1ZShwdWJLZXlIZXgpICE9PSBwdWIpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1NpZ25lciBkb2VzIG5vdCBtYXRjaCBzaWduYXR1cmUnKTtcbiAgICB9XG4gICAgY29uc3Qgc2lnbmVkRGVwbG95ID0gRGVwbG95VXRpbC5zZXRTaWduYXR1cmUoXG4gICAgICB0aGlzLl9kZXBsb3ksXG4gICAgICBzaWduYXR1cmVCdWZmZXIsXG4gICAgICBQdWJsaWNLZXkuZnJvbVNlY3AyNTZLMShwYXJzZWRQdWJsaWNLZXkpLFxuICAgICk7XG4gICAgY29uc3QgYXBwcm92YWwgPSBfLmxhc3Qoc2lnbmVkRGVwbG95LmFwcHJvdmFscykgYXMgRGVwbG95VXRpbC5BcHByb3ZhbDtcbiAgICBpZiAocmVtb3ZlQWxnb1ByZWZpeEZyb21IZXhWYWx1ZShhcHByb3ZhbC5zaWduYXR1cmUpICE9PSBzaWduYXR1cmUpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlJyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNhc3BlclR4KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgdHhKc29uOiBhbnkgPSBEZXBsb3lVdGlsLmRlcGxveVRvSnNvbih0aGlzLmNhc3BlclR4KTtcbiAgICAvLyBUaGUgbmV3IGNhc3BlciBsaWIgaXMgY29udmVydGluZyB0aGUgVFRMIGZyb20gbWlsaXNlY29uZHMgdG8gYW5vdGhlciBkYXRlIGZvcm1hdCwgaW4gdGhpcyBjYXNlIDEgZGF5XG4gICAgLy8gd2UgbmVlZCB0byBsZWF2ZSBpdCBhcyBtcyBmb3IgdGhlIEhTTSB0byBiZSBhYmxlIHRvIHBhcnNlIGl0XG4gICAgdHhKc29uLmRlcGxveS5oZWFkZXIudHRsID0gYCR7dGhpcy5jYXNwZXJUeC5oZWFkZXIudHRsfW1zYDtcbiAgICB0aGlzLnNldE93bmVyc0luSnNvbih0eEpzb24pO1xuICAgIHRoaXMuc2V0VHJhbnNmZXJzRmllbGRzSW5Kc29uKHR4SnNvbik7XG4gICAgdGhpcy5zZXREZWxlZ2F0ZUZpZWxkc0luSnNvbih0eEpzb24pO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0eEpzb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBDYXNwZXJUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgZGVwbG95UGF5bWVudCA9IHRoaXMuX2RlcGxveS5wYXltZW50LmFzTW9kdWxlQnl0ZXMoKT8uZ2V0QXJnQnlOYW1lKCdhbW91bnQnKSBhcyBDTFU1MTI7XG4gICAgaWYgKCFkZXBsb3lQYXltZW50KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1VuZGVmaW5lZCBmZWUnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvd25lcjFJbmRleCA9IDA7XG4gICAgY29uc3Qgb3duZXIySW5kZXggPSAxO1xuICAgIGNvbnN0IG93bmVyM0luZGV4ID0gMjtcbiAgICBjb25zdCBzb3VyY2VQdWJsaWNLZXkgPSBCdWZmZXIuZnJvbSh0aGlzLl9kZXBsb3kuaGVhZGVyLmFjY291bnQudmFsdWUoKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IHNvdXJjZUFkZHJlc3MgPSBuZXcgS2V5UGFpcih7IHB1Yjogc291cmNlUHVibGljS2V5IH0pLmdldEFkZHJlc3MoKTtcblxuICAgIGNvbnN0IHJlc3VsdDogQ2FzcGVyVHJhbnNhY3Rpb24gPSB7XG4gICAgICBoYXNoOiBCdWZmZXIuZnJvbSh0aGlzLl9kZXBsb3kuaGFzaCkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgZmVlOiB7IGdhc0xpbWl0OiBkZXBsb3lQYXltZW50LnZhbHVlKCkudG9TdHJpbmcoKSwgZ2FzUHJpY2U6IHRoaXMuX2RlcGxveS5oZWFkZXIuZ2FzUHJpY2UudG9TdHJpbmcoKSB9LFxuICAgICAgZnJvbTogc291cmNlQWRkcmVzcyxcbiAgICAgIHN0YXJ0VGltZTogbmV3IERhdGUodGhpcy5fZGVwbG95LmhlYWRlci50aW1lc3RhbXApLnRvSVNPU3RyaW5nKCksXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLl9kZXBsb3kuaGVhZGVyLnR0bCxcbiAgICAgIGRlcGxveVR5cGU6ICh0aGlzLl9kZXBsb3kuc2Vzc2lvbi5nZXRBcmdCeU5hbWUoVFJBTlNBQ1RJT05fVFlQRSkgYXMgQ0xTdHJpbmcpLnZhbHVlKCksXG4gICAgfTtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uVHlwZSA9IGdldERlcGxveVR5cGUodGhpcy5fZGVwbG95LnNlc3Npb24pO1xuXG4gICAgc3dpdGNoICh0cmFuc2FjdGlvblR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJlc3VsdC50byA9IGdldFRyYW5zZmVyRGVzdGluYXRpb25BZGRyZXNzKHRoaXMuX2RlcGxveS5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGdldFRyYW5zZmVyQW1vdW50KHRoaXMuX2RlcGxveS5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LnRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHRoaXMuX2RlcGxveS5zZXNzaW9uKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmVzdWx0Lm93bmVyMSA9ICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVyMUluZGV4KSBhcyBDTFN0cmluZykudmFsdWUoKTtcbiAgICAgICAgcmVzdWx0Lm93bmVyMiA9ICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVyMkluZGV4KSBhcyBDTFN0cmluZykudmFsdWUoKTtcbiAgICAgICAgcmVzdWx0Lm93bmVyMyA9ICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKE9XTkVSX1BSRUZJWCArIG93bmVyM0luZGV4KSBhcyBDTFN0cmluZykudmFsdWUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jazpcbiAgICAgICAgcmVzdWx0LmZyb21EZWxlZ2F0ZSA9IGdldERlbGVnYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LnZhbGlkYXRvciA9IGdldFZhbGlkYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGdldERlbGVnYXRlQW1vdW50KHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgcmVzdWx0LmZyb21EZWxlZ2F0ZSA9IGdldERlbGVnYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LnZhbGlkYXRvciA9IGdldFZhbGlkYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICAgICAgcmVzdWx0LmFtb3VudCA9IGdldERlbGVnYXRlQW1vdW50KHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBzaWduYXR1cmVzIGZyb20gdGhlIGRlcGxveSBpbnN0YW5jZSBhbmQgbG9hZCB0aGVtIGludG8gdGhlIHNpZ25hdHVyZXMgbGlzdFxuICAgKi9cbiAgbG9hZFByZXZpb3VzU2lnbmF0dXJlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGVwbG95LmFwcHJvdmFscyAmJiB0aGlzLl9kZXBsb3kuYXBwcm92YWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX2RlcGxveS5hcHByb3ZhbHMuZm9yRWFjaCgoYXBwcm92YWwpID0+IHtcbiAgICAgICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKGFwcHJvdmFsLnNpZ25hdHVyZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IG93bmVycyBpbnNpZGUgYSBqc29uIHJlcHJlc2VudGluZyBhIHdhbGxldCBpbml0aWFsaXphdGlvbiB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0eEpzb24ganNvbiB0byBtb2RpZnlcbiAgICovXG4gIHNldE93bmVyc0luSnNvbih0eEpzb246IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBpZiAoZ2V0RGVwbG95VHlwZSh0aGlzLmNhc3BlclR4LnNlc3Npb24pID09PSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24pIHtcbiAgICAgIGNvbnN0IGFyZ05hbWUgPSAwO1xuICAgICAgY29uc3QgYXJnVmFsdWUgPSAxO1xuICAgICAgY29uc3Qgb3duZXIwID0gMDtcbiAgICAgIGNvbnN0IG93bmVyMSA9IDE7XG4gICAgICBjb25zdCBvd25lcjIgPSAyO1xuXG4gICAgICBjb25zdCBvd25lcnNWYWx1ZXMgPSBuZXcgTWFwKCk7XG5cbiAgICAgIG93bmVyc1ZhbHVlcy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoVFJBTlNBQ1RJT05fVFlQRSkgYXMgQ0xTdHJpbmcpLnZhbHVlKCkpO1xuXG4gICAgICBbb3duZXIwLCBvd25lcjEsIG93bmVyMl0uZm9yRWFjaCgoaW5kZXgpID0+IHtcbiAgICAgICAgb3duZXJzVmFsdWVzLnNldChcbiAgICAgICAgICBPV05FUl9QUkVGSVggKyBpbmRleCxcbiAgICAgICAgICAodGhpcy5jYXNwZXJUeC5zZXNzaW9uLmdldEFyZ0J5TmFtZShPV05FUl9QUkVGSVggKyBpbmRleCkgYXMgQ0xTdHJpbmcpLnZhbHVlKCksXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgdHhKc29uWydkZXBsb3knXVsnc2Vzc2lvbiddWydNb2R1bGVCeXRlcyddWydhcmdzJ10uZm9yRWFjaCgoYXJnKSA9PiB7XG4gICAgICAgIGlmIChvd25lcnNWYWx1ZXMuaGFzKGFyZ1thcmdOYW1lXSkpIHtcbiAgICAgICAgICBhcmdbYXJnVmFsdWVdWydwYXJzZWQnXSA9IG93bmVyc1ZhbHVlcy5nZXQoYXJnW2FyZ05hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0cmFuc2ZlciBmaWVsZHMgaW5zaWRlIGEganNvbiByZXByZXNlbnRpbmcgYSB0cmFuc2ZlciB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0eEpzb24ganNvbiB0byBtb2RpZnlcbiAgICovXG4gIHNldFRyYW5zZmVyc0ZpZWxkc0luSnNvbih0eEpzb246IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICBpZiAoZ2V0RGVwbG95VHlwZSh0aGlzLmNhc3BlclR4LnNlc3Npb24pID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZCkge1xuICAgICAgY29uc3QgYXJnTmFtZSA9IDA7XG4gICAgICBjb25zdCBhcmdWYWx1ZSA9IDE7XG5cbiAgICAgIGNvbnN0IHRyYW5zZmVyVmFsdWVzID0gbmV3IE1hcCgpO1xuICAgICAgdHJhbnNmZXJWYWx1ZXMuc2V0KFRSQU5TQUNUSU9OX1RZUEUsICh0aGlzLmNhc3BlclR4LnNlc3Npb24uZ2V0QXJnQnlOYW1lKFRSQU5TQUNUSU9OX1RZUEUpIGFzIENMU3RyaW5nKS52YWx1ZSgpKTtcbiAgICAgIHRyYW5zZmVyVmFsdWVzLnNldCgnYW1vdW50JywgZ2V0VHJhbnNmZXJBbW91bnQodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgICB0cmFuc2ZlclZhbHVlcy5zZXQoJ3RvX2FkZHJlc3MnLCBnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHRoaXMuY2FzcGVyVHguc2Vzc2lvbik7XG4gICAgICBpZiAodHJhbnNmZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRyYW5zZmVyVmFsdWVzLnNldCgnaWQnLCB0cmFuc2ZlcklkLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuXG4gICAgICB0eEpzb25bJ2RlcGxveSddWydzZXNzaW9uJ11bJ1RyYW5zZmVyJ11bJ2FyZ3MnXS5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgICAgaWYgKHRyYW5zZmVyVmFsdWVzLmhhcyhhcmdbYXJnTmFtZV0pKSB7XG4gICAgICAgICAgYXJnW2FyZ1ZhbHVlXVsncGFyc2VkJ10gPSB0cmFuc2ZlclZhbHVlcy5nZXQoYXJnW2FyZ05hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkZWxlZ2F0ZSAvIHVuZGVsZWdhdGUgZmllbGRzIGluc2lkZSBhIGpzb24gcmVwcmVzZW50aW5nIHRoZSB0eC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB0eEpzb24ganNvbiB0byBtb2RpZnlcbiAgICovXG4gIHNldERlbGVnYXRlRmllbGRzSW5Kc29uKHR4SnNvbjogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIGdldERlcGxveVR5cGUodGhpcy5jYXNwZXJUeC5zZXNzaW9uKSA9PT0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrIHx8XG4gICAgICBnZXREZXBsb3lUeXBlKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikgPT09IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVW5sb2NrXG4gICAgKSB7XG4gICAgICBjb25zdCBhcmdOYW1lID0gMDtcbiAgICAgIGNvbnN0IGFyZ1ZhbHVlID0gMTtcblxuICAgICAgY29uc3QgZGVsZWdhdGVWYWx1ZXMgPSBuZXcgTWFwKCk7XG4gICAgICBkZWxlZ2F0ZVZhbHVlcy5zZXQoVFJBTlNBQ1RJT05fVFlQRSwgKHRoaXMuY2FzcGVyVHguc2Vzc2lvbi5nZXRBcmdCeU5hbWUoVFJBTlNBQ1RJT05fVFlQRSkgYXMgQ0xTdHJpbmcpLnZhbHVlKCkpO1xuICAgICAgZGVsZWdhdGVWYWx1ZXMuc2V0KCdhbW91bnQnLCBnZXREZWxlZ2F0ZUFtb3VudCh0aGlzLmNhc3BlclR4LnNlc3Npb24pKTtcbiAgICAgIGRlbGVnYXRlVmFsdWVzLnNldChERUxFR0FURV9GUk9NX0FERFJFU1MsIGdldERlbGVnYXRvckFkZHJlc3ModGhpcy5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgICBkZWxlZ2F0ZVZhbHVlcy5zZXQoREVMRUdBVEVfVkFMSURBVE9SLCBnZXRWYWxpZGF0b3JBZGRyZXNzKHRoaXMuY2FzcGVyVHguc2Vzc2lvbikpO1xuXG4gICAgICB0eEpzb24uZGVwbG95LnNlc3Npb24uTW9kdWxlQnl0ZXMuYXJncy5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgICAgaWYgKGRlbGVnYXRlVmFsdWVzLmhhcyhhcmdbYXJnTmFtZV0pKSB7XG4gICAgICAgICAgYXJnW2FyZ1ZhbHVlXVsncGFyc2VkJ10gPSBkZWxlZ2F0ZVZhbHVlcy5nZXQoYXJnW2FyZ05hbWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNhc3BlclR4KCk6IERlcGxveVV0aWwuRGVwbG95IHtcbiAgICByZXR1cm4gdGhpcy5fZGVwbG95O1xuICB9XG5cbiAgc2V0IGNhc3BlclR4KGRlcGxveTogRGVwbG95VXRpbC5EZXBsb3kpIHtcbiAgICB0aGlzLl9kZXBsb3kgPSBkZXBsb3k7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -56,7 +56,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
56
56
  Object.defineProperty(exports, "__esModule", { value: true });
57
57
  exports.TransactionBuilder = exports.DEFAULT_N = exports.DEFAULT_M = void 0;
58
58
  var bignumber_js_1 = __importDefault(require("bignumber.js"));
59
- var casper_client_sdk_1 = require("casper-client-sdk");
59
+ var casper_js_sdk_1 = require("casper-js-sdk");
60
60
  var lodash_1 = __importDefault(require("lodash"));
61
61
  var baseCoin_1 = require("../baseCoin");
62
62
  var errors_1 = require("../baseCoin/errors");
@@ -84,13 +84,13 @@ var TransactionBuilder = /** @class */ (function (_super) {
84
84
  return __generator(this, function (_a) {
85
85
  deployParams = this.getDeployParams();
86
86
  session = this.getSession();
87
- payment = casper_client_sdk_1.DeployUtil.standardPayment(lodash_1.default.parseInt(this._fee.gasLimit));
88
- cTransaction = this.transaction.casperTx || casper_client_sdk_1.DeployUtil.makeDeploy(deployParams, session, payment);
87
+ payment = casper_js_sdk_1.DeployUtil.standardPayment(lodash_1.default.parseInt(this._fee.gasLimit));
88
+ cTransaction = this.transaction.casperTx || casper_js_sdk_1.DeployUtil.makeDeploy(deployParams, session, payment);
89
89
  // Cannot add arguments to an already signed deploy.
90
90
  if (cTransaction.approvals.length === 0) {
91
91
  this._session.extraArguments.forEach(function (extraArgument, extraArgumentName) {
92
92
  if (!cTransaction.session.getArgByName(extraArgumentName)) {
93
- cTransaction = casper_client_sdk_1.DeployUtil.addArgToDeploy(cTransaction, extraArgumentName, extraArgument);
93
+ cTransaction = casper_js_sdk_1.DeployUtil.addArgToDeploy(cTransaction, extraArgumentName, extraArgument);
94
94
  }
95
95
  });
96
96
  }
@@ -104,7 +104,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
104
104
  TransactionBuilder.prototype.fromImplementation = function (rawTransaction) {
105
105
  var tx = new transaction_1.Transaction(this._coinConfig);
106
106
  var jsonTransaction = JSON.parse(rawTransaction);
107
- tx.casperTx = casper_client_sdk_1.DeployUtil.deployFromJson(jsonTransaction);
107
+ tx.casperTx = casper_js_sdk_1.DeployUtil.deployFromJson(jsonTransaction).unwrap();
108
108
  this.initBuilder(tx);
109
109
  return this.transaction;
110
110
  };
@@ -213,7 +213,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
213
213
  throw new errors_1.InvalidTransactionError('Raw transaction is empty');
214
214
  }
215
215
  try {
216
- casper_client_sdk_1.DeployUtil.deployFromJson(JSON.parse(rawTransaction));
216
+ casper_js_sdk_1.DeployUtil.deployFromJson(JSON.parse(rawTransaction));
217
217
  }
218
218
  catch (e) {
219
219
  throw new errors_1.ParseTransactionError('There was an error parsing the JSON string');
@@ -318,7 +318,7 @@ var TransactionBuilder = /** @class */ (function (_super) {
318
318
  */
319
319
  TransactionBuilder.prototype.getDeployParams = function () {
320
320
  var gasPrice = this._fee.gasPrice ? lodash_1.default.parseInt(this._fee.gasPrice) : undefined;
321
- return new casper_client_sdk_1.DeployUtil.DeployParams(casper_client_sdk_1.PublicKey.fromHex(this._source.address), this._chainName, gasPrice, this._expiration || constants_1.TRANSACTION_EXPIRATION);
321
+ return new casper_js_sdk_1.DeployUtil.DeployParams(casper_js_sdk_1.CLPublicKey.fromHex(this._source.address), this._chainName, gasPrice, this._expiration || constants_1.TRANSACTION_EXPIRATION);
322
322
  };
323
323
  /**
324
324
  * Generate the session for the Deploy according to the transactionType.
@@ -330,13 +330,13 @@ var TransactionBuilder = /** @class */ (function (_super) {
330
330
  switch (this.transaction.type) {
331
331
  case baseCoin_1.TransactionType.Send:
332
332
  var transferSession = this._session;
333
- session = casper_client_sdk_1.DeployUtil.ExecutableDeployItem.newTransfer(transferSession.amount, transferSession.target, undefined, transferSession.id);
333
+ session = casper_js_sdk_1.DeployUtil.ExecutableDeployItem.newTransferWithOptionalTransferId(transferSession.amount, transferSession.target, undefined, transferSession.id);
334
334
  break;
335
335
  case baseCoin_1.TransactionType.WalletInitialization:
336
336
  case baseCoin_1.TransactionType.StakingLock:
337
337
  case baseCoin_1.TransactionType.StakingUnlock:
338
338
  var moduleBytesSession = this._session;
339
- session = casper_client_sdk_1.DeployUtil.ExecutableDeployItem.newModuleBytes(moduleBytesSession.moduleBytes, moduleBytesSession.args);
339
+ session = casper_js_sdk_1.DeployUtil.ExecutableDeployItem.newModuleBytes(moduleBytesSession.moduleBytes, moduleBytesSession.args);
340
340
  break;
341
341
  default:
342
342
  throw new errors_1.BuildTransactionError('Transaction Type error');
@@ -380,4 +380,4 @@ var TransactionBuilder = /** @class */ (function (_super) {
380
380
  return TransactionBuilder;
381
381
  }(baseCoin_1.BaseTransactionBuilder));
382
382
  exports.TransactionBuilder = TransactionBuilder;
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY3Nwci90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQXFDO0FBRXJDLHVEQUEwRDtBQUMxRCxrREFBdUI7QUFDdkIsd0NBQXNFO0FBRXRFLDZDQUs0QjtBQUM1Qiw2Q0FBNEM7QUFDNUMscUNBQW9DO0FBUXBDLGlDQUF1RTtBQUN2RSx5Q0FBMEU7QUFFN0QsUUFBQSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsUUFBQSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0lBQWlELHNDQUFzQjtJQVVyRSw0QkFBWSxXQUFpQztRQUE3QyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQUtuQjtRQUpDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELEtBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsS0FBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLCtCQUFtQixDQUFDLE9BQU8sQ0FBQzs7SUFDM0csQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDRixnREFBbUIsR0FBbkM7Ozs7Z0JBQ1EsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFNUIsT0FBTyxHQUFHLDhCQUFVLENBQUMsZUFBZSxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFFdkUsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxJQUFJLDhCQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRXRHLG9EQUFvRDtnQkFDcEQsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFDLGFBQWEsRUFBRSxpQkFBaUI7d0JBQ3BFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFOzRCQUN6RCxZQUFZLEdBQUcsOEJBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxDQUFDO3lCQUMxRjtvQkFDSCxDQUFDLENBQUMsQ0FBQztpQkFDSjtnQkFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7Z0JBRXpDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFFdEIsc0JBQU8sSUFBSSxDQUFDLFdBQVcsRUFBQzs7O0tBQ3pCO0lBRUQsa0JBQWtCO0lBQ1IsK0NBQWtCLEdBQTVCLFVBQTZCLGNBQXNCO1FBQ2pELElBQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNuRCxFQUFFLENBQUMsUUFBUSxHQUFHLDhCQUFVLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBc0IsQ0FBQztRQUM5RSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsK0NBQWtCLEdBQTVCLFVBQTZCLEdBQVk7UUFDdkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQU0sTUFBTSxHQUFHLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU3QyxpRkFBaUY7UUFDakYsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsd0NBQVcsR0FBWCxVQUFZLEVBQWU7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzFDLElBQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxrQ0FBc0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFRCxZQUFZO0lBRVosZ0NBQWdDO0lBRWhDOzs7OztPQUtHO0lBQ0gsZ0NBQUcsR0FBSCxVQUFJLEdBQVE7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG1DQUFNLEdBQU4sVUFBTyxPQUFvQjtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsdUNBQVUsR0FBVixVQUFXLGNBQXNCO1FBQy9CLElBQU0scUJBQXFCLEdBQUcsSUFBSSxzQkFBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLGtDQUFzQixDQUFDLEVBQUU7WUFDaEcsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQ0FBUyxHQUFULFVBQVUsU0FBaUIsRUFBRSxPQUFnQjtRQUMzQyxtRUFBbUU7UUFDbkUsS0FBMkIsVUFBZ0IsRUFBaEIsS0FBQSxJQUFJLENBQUMsV0FBVyxFQUFoQixjQUFnQixFQUFoQixJQUFnQixFQUFFO1lBQXhDLElBQU0sWUFBWSxTQUFBO1lBQ3JCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRTtnQkFDaEUsWUFBWSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQ25DLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsV0FBQSxFQUFFLE9BQU8sU0FBQSxFQUFFLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCwwQ0FBYSxHQUFiLFVBQWMsU0FBaUI7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWTtJQUVaLG9CQUFvQjtJQUNwQixrQkFBa0I7SUFDbEIsNENBQWUsR0FBZixVQUFnQixPQUFvQjtRQUNsQyxJQUFJLENBQUMsc0JBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDcEMsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQVcsR0FBWCxVQUFZLEdBQVk7UUFDdEIsSUFBSSxDQUFDLElBQUksaUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksOEJBQXFCLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1EQUFzQixHQUF0QixVQUF1QixjQUFzQjtRQUMzQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBSTtZQUNGLDhCQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLDhCQUFxQixDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0U7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGdEQUFtQixHQUFuQixVQUFvQixXQUF5QjtRQUMzQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDBDQUFhLEdBQWIsVUFBYyxLQUFnQjtRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLDhCQUFxQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvREFBdUIsR0FBdkI7UUFDRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7T0FFRztJQUNLLHdDQUFXLEdBQW5CO1FBQ0UsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUMzQixNQUFNLElBQUksOEJBQXFCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUNyRTtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN2QixNQUFNLElBQUksOEJBQXFCLENBQUMsd0NBQXdDLENBQUMsQ0FBQztTQUMzRTtRQUNELElBQUk7WUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksc0JBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3REO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMkNBQWMsR0FBdEI7UUFDRSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQzlCLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnREFBbUIsR0FBM0IsVUFBNEIsR0FBWTtRQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFVBQUMsY0FBYztZQUMvQyxJQUFJLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDNUMsTUFBTSxJQUFJLHFCQUFZLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3JEO1lBQ0QscURBQXFEO1lBQ3JELElBQUksSUFBSSxDQUFDO1lBQ1QsSUFBSTtnQkFDRixJQUFJLEdBQUcsY0FBYyxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQzthQUM5QztZQUFDLE9BQU8sR0FBRyxFQUFFO2dCQUNaLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUM1QixNQUFNLElBQUkscUJBQVksQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFNRCxzQkFBYywyQ0FBVztRQUp6QixZQUFZO1FBRVosNkJBQTZCO1FBQzdCLGtCQUFrQjthQUNsQjtZQUNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMzQixDQUFDO1FBRUQsa0JBQWtCO2FBQ2xCLFVBQTBCLFdBQXdCO1lBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLENBQUM7OztPQUxBO0lBVUQsc0JBQVcseUNBQVM7UUFIcEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDOzs7T0FBQTtJQUNELFlBQVk7SUFFWiwwQkFBMEI7SUFDMUI7Ozs7T0FJRztJQUNLLDRDQUFlLEdBQXZCO1FBQ0UsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNqRixPQUFPLElBQUksOEJBQVUsQ0FBQyxZQUFZLENBQ2hDLDZCQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ3ZDLElBQUksQ0FBQyxVQUFVLEVBQ2YsUUFBUSxFQUNSLElBQUksQ0FBQyxXQUFXLElBQUksa0NBQXNCLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHVDQUFVLEdBQWxCO1FBQ0UsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFO1lBQzdCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixJQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBcUMsQ0FBQztnQkFDbkUsT0FBTyxHQUFHLDhCQUFVLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUNuRCxlQUFlLENBQUMsTUFBTSxFQUN0QixlQUFlLENBQUMsTUFBTSxFQUN0QixTQUFTLEVBQ1QsZUFBZSxDQUFDLEVBQUUsQ0FDbkIsQ0FBQztnQkFDRixNQUFNO1lBQ1IsS0FBSywwQkFBZSxDQUFDLG9CQUFvQixDQUFDO1lBQzFDLEtBQUssMEJBQWUsQ0FBQyxXQUFXLENBQUM7WUFDakMsS0FBSywwQkFBZSxDQUFDLGFBQWE7Z0JBQ2hDLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFFBQXdDLENBQUM7Z0JBQ3pFLE9BQU8sR0FBRyw4QkFBVSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FDdEQsa0JBQWtCLENBQUMsV0FBVyxFQUM5QixrQkFBa0IsQ0FBQyxJQUFJLENBQ3hCLENBQUM7Z0JBQ0YsTUFBTTtZQUNSO2dCQUNFLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHFEQUF3QixHQUFoQyxVQUFpQyxHQUFXO1FBQzFDLE9BQU8sQ0FDTCxnQkFBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsVUFBQyxRQUFRO1lBQ3hELElBQU0sY0FBYyxHQUFHLG9DQUE0QixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyRSxPQUFPLGNBQWMsS0FBSyxHQUFHLENBQUM7UUFDaEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssMkNBQWMsR0FBdEI7UUFDRSxLQUFzQixVQUF5QixFQUF6QixLQUFBLElBQUksQ0FBQyxvQkFBb0IsRUFBekIsY0FBeUIsRUFBekIsSUFBeUIsRUFBRTtZQUE1QyxJQUFNLE9BQU8sU0FBQTtZQUNoQixrREFBa0Q7WUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7UUFDRCxLQUFxQyxVQUFnQixFQUFoQixLQUFBLElBQUksQ0FBQyxXQUFXLEVBQWhCLGNBQWdCLEVBQWhCLElBQWdCLEVBQUU7WUFBNUMsSUFBQSxXQUFzQixFQUFwQixTQUFTLGVBQUEsRUFBRSxPQUFPLGFBQUE7WUFDN0Isa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7YUFDbkQ7U0FDRjtJQUNILENBQUM7SUFFSCx5QkFBQztBQUFELENBQUMsQUFoV0QsQ0FBaUQsaUNBQXNCLEdBZ1d0RTtBQWhXcUIsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzL2Rpc3Qvc3JjL2Jhc2UnO1xuaW1wb3J0IHsgRGVwbG95VXRpbCwgUHVibGljS2V5IH0gZnJvbSAnY2FzcGVyLWNsaWVudC1zZGsnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG59IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBGZWUsXG4gIENhc3Blck1vZHVsZUJ5dGVzVHJhbnNhY3Rpb24sXG4gIENhc3BlclRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gIENhc3BlckRlbGVnYXRlVHJhbnNhY3Rpb24sXG4gIFNpZ25hdHVyZURhdGEsXG59IGZyb20gJy4vaWZhY2VzJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCByZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBERUZBVUxUX0NIQUlOX05BTUVTLCBUUkFOU0FDVElPTl9FWFBJUkFUSU9OIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NID0gMztcbmV4cG9ydCBjb25zdCBERUZBVUxUX04gPSAyO1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3NvdXJjZTogQmFzZUFkZHJlc3M7XG4gIHByb3RlY3RlZCBfZmVlOiBGZWU7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zZXNzaW9uOiBDYXNwZXJUcmFuc2ZlclRyYW5zYWN0aW9uIHwgQ2FzcGVyTW9kdWxlQnl0ZXNUcmFuc2FjdGlvbiB8IENhc3BlckRlbGVnYXRlVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfZXhwaXJhdGlvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX211bHRpU2lnbmVyS2V5UGFpcnM6IEtleVBhaXJbXTtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmVzOiBTaWduYXR1cmVEYXRhW107XG4gIHByb3RlY3RlZCBfY2hhaW5OYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG4gICAgdGhpcy5fY2hhaW5OYW1lID0gdGhpcy5jb2luTmFtZSgpID09PSAnY3NwcicgPyBERUZBVUxUX0NIQUlOX05BTUVTLm1haW5uZXQgOiBERUZBVUxUX0NIQUlOX05BTUVTLnRlc3RuZXQ7XG4gIH1cblxuICAvLyByZWdpb24gQmFzZSBCdWlsZGVyXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZGVwbG95UGFyYW1zID0gdGhpcy5nZXREZXBsb3lQYXJhbXMoKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5nZXRTZXNzaW9uKCk7XG5cbiAgICBjb25zdCBwYXltZW50ID0gRGVwbG95VXRpbC5zdGFuZGFyZFBheW1lbnQoXy5wYXJzZUludCh0aGlzLl9mZWUuZ2FzTGltaXQpKTtcblxuICAgIGxldCBjVHJhbnNhY3Rpb24gPSB0aGlzLnRyYW5zYWN0aW9uLmNhc3BlclR4IHx8IERlcGxveVV0aWwubWFrZURlcGxveShkZXBsb3lQYXJhbXMsIHNlc3Npb24sIHBheW1lbnQpO1xuXG4gICAgLy8gQ2Fubm90IGFkZCBhcmd1bWVudHMgdG8gYW4gYWxyZWFkeSBzaWduZWQgZGVwbG95LlxuICAgIGlmIChjVHJhbnNhY3Rpb24uYXBwcm92YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fc2Vzc2lvbi5leHRyYUFyZ3VtZW50cy5mb3JFYWNoKChleHRyYUFyZ3VtZW50LCBleHRyYUFyZ3VtZW50TmFtZSkgPT4ge1xuICAgICAgICBpZiAoIWNUcmFuc2FjdGlvbi5zZXNzaW9uLmdldEFyZ0J5TmFtZShleHRyYUFyZ3VtZW50TmFtZSkpIHtcbiAgICAgICAgICBjVHJhbnNhY3Rpb24gPSBEZXBsb3lVdGlsLmFkZEFyZ1RvRGVwbG95KGNUcmFuc2FjdGlvbiwgZXh0cmFBcmd1bWVudE5hbWUsIGV4dHJhQXJndW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNhc3BlclR4ID0gY1RyYW5zYWN0aW9uO1xuXG4gICAgdGhpcy5wcm9jZXNzU2lnbmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIGNvbnN0IGpzb25UcmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgIHR4LmNhc3BlclR4ID0gRGVwbG95VXRpbC5kZXBsb3lGcm9tSnNvbihqc29uVHJhbnNhY3Rpb24pIGFzIERlcGxveVV0aWwuRGVwbG95O1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkS2V5cyhrZXkpO1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuXG4gICAgLy8gU2lnbmluZyB0aGUgdHJhbnNhY3Rpb24gaXMgYW4gb3BlcmF0aW9uIHRoYXQgcmVsaWVzIG9uIGFsbCB0aGUgZGF0YSBiZWluZyBzZXQsXG4gICAgLy8gc28gd2Ugc2V0IHRoZSBzb3VyY2UgaGVyZSBhbmQgbGVhdmUgdGhlIGFjdHVhbCBzaWduaW5nIGZvciB0aGUgYnVpbGQgc3RlcFxuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMucHVzaChzaWduZXIpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLmZlZSh0eERhdGEuZmVlKTtcbiAgICB0aGlzLnNvdXJjZSh7IGFkZHJlc3M6IHR4RGF0YS5mcm9tIH0pO1xuICAgIHRoaXMuZXhwaXJhdGlvbih0eERhdGEuZXhwaXJhdGlvbiB8fCBUUkFOU0FDVElPTl9FWFBJUkFUSU9OKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gZmVlc1xuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VGZWV9IGZlZSBUaGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZmVlKGZlZTogRmVlKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmdhc0xpbWl0KSk7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gc291cmNlXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IGFkZHJlc3MgVGhlIHNvdXJjZSBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc291cmNlKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5fc291cmNlID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGV4cGlyYXRpb25UaW1lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHBpcmF0aW9uVGltZSBUaGUgdHJhbnNhY3Rpb24gZXhwaXJhdGlvblRpbWVcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBleHBpcmF0aW9uKGV4cGlyYXRpb25UaW1lOiBudW1iZXIpOiB0aGlzIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGlyYXRpb24gPSBuZXcgQmlnTnVtYmVyKGV4cGlyYXRpb25UaW1lKTtcbiAgICBpZiAodHJhbnNhY3Rpb25FeHBpcmF0aW9uLmlzTmFOKCkgfHwgdHJhbnNhY3Rpb25FeHBpcmF0aW9uLmlzR3JlYXRlclRoYW4oVFJBTlNBQ1RJT05fRVhQSVJBVElPTikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gZXhwaXJhdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodHJhbnNhY3Rpb25FeHBpcmF0aW9uKTtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gdHJhbnNhY3Rpb25FeHBpcmF0aW9uLnRvTnVtYmVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFuIGV4dGVybmFsIHRyYW5zYWN0aW9uIHNpZ25hdHVyZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBzdHJpbmdcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFRoZSBwdWJsaWMga2V5IGtleXBhaXIgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHNpZ25hdHVyZVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5UGFpcjogS2V5UGFpcik6IHRoaXMge1xuICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHNpZ25hdHVyZSBmb3IgdGhpcyBrZXkgcGFpciwganVzdCB1cGRhdGUgaXRcbiAgICBmb3IgKGNvbnN0IG9sZFNpZ25hdHVyZSBvZiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICBpZiAob2xkU2lnbmF0dXJlLmtleVBhaXIuZ2V0S2V5cygpLnB1YiA9PT0ga2V5UGFpci5nZXRLZXlzKCkucHViKSB7XG4gICAgICAgIG9sZFNpZ25hdHVyZS5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG90aGVyd2lzZSBhZGQgdGhlIG5ldyBzaWduYXR1cmVcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBzaWduYXR1cmUsIGtleVBhaXIgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBub2RlQ2hhaW5OYW1lKGNoYWluTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fY2hhaW5OYW1lID0gY2hhaW5OYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBpZiAoIW5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgRGVwbG95VXRpbC5kZXBsb3lGcm9tSnNvbihKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIHBhcnNpbmcgdGhlIEpTT04gc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBtYW5kYXRvcnkgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlRmVlKCk7XG4gICAgdGhpcy52YWxpZGF0ZVNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBmZWUgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZlZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZmVlLmdhc0xpbWl0KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGdhcyBsaW1pdCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodGhpcy5fZmVlLmdhc0xpbWl0KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgbGltaXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIHNvdXJjZSBmaWVsZCBpcyBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU291cmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzb3VyY2UnKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3ModGhpcy5fc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgZ2l2ZW4ga2V5IGlzIG5vdCBhbHJlYWR5IGluIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlS2V5fSBrZXkgLSBUaGUga2V5IHRvIGNoZWNrXG4gICAqL1xuICBwcml2YXRlIGNoZWNrRHVwbGljYXRlZEtleXMoa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycy5mb3JFYWNoKChfc291cmNlS2V5UGFpcikgPT4ge1xuICAgICAgaWYgKF9zb3VyY2VLZXlQYWlyLmdldEtleXMoKS5wcnYgPT09IGtleS5rZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignUmVwZWF0ZWQgc2lnbjogJyArIGtleS5rZXkpO1xuICAgICAgfVxuICAgICAgLy8gVHJ5IHRvIGdldCBleHRlbmRlZCBrZXlzIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZW1cbiAgICAgIGxldCB4cHJ2O1xuICAgICAgdHJ5IHtcbiAgICAgICAgeHBydiA9IF9zb3VyY2VLZXlQYWlyLmdldEV4dGVuZGVkS2V5cygpLnhwcnY7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHhwcnYgJiYgeHBydiA9PT0ga2V5LmtleSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdSZXBlYXRlZCBzaWduOiAnICsga2V5LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNoYWluIG5hbWUgZm9yIHRoZSBjb2luIGVudmlyb25tZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0IGNoYWluTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFpbk5hbWU7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGF1eGlsaWFyeU1ldGhvZHNcbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgRGVwbG95UGFyYW1zIGluc3RhbmNlIHdpdGggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge0RlcGxveVV0aWwuRGVwbG95UGFyYW1zfVxuICAgKi9cbiAgcHJpdmF0ZSBnZXREZXBsb3lQYXJhbXMoKTogRGVwbG95VXRpbC5EZXBsb3lQYXJhbXMge1xuICAgIGNvbnN0IGdhc1ByaWNlID0gdGhpcy5fZmVlLmdhc1ByaWNlID8gXy5wYXJzZUludCh0aGlzLl9mZWUuZ2FzUHJpY2UpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgRGVwbG95VXRpbC5EZXBsb3lQYXJhbXMoXG4gICAgICBQdWJsaWNLZXkuZnJvbUhleCh0aGlzLl9zb3VyY2UuYWRkcmVzcyksXG4gICAgICB0aGlzLl9jaGFpbk5hbWUsXG4gICAgICBnYXNQcmljZSxcbiAgICAgIHRoaXMuX2V4cGlyYXRpb24gfHwgVFJBTlNBQ1RJT05fRVhQSVJBVElPTixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBzZXNzaW9uIGZvciB0aGUgRGVwbG95IGFjY29yZGluZyB0byB0aGUgdHJhbnNhY3Rpb25UeXBlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RGVwbG95VXRpbC5FeGVjdXRhYmxlRGVwbG95SXRlbX1cbiAgICovXG4gIHByaXZhdGUgZ2V0U2Vzc2lvbigpOiBEZXBsb3lVdGlsLkV4ZWN1dGFibGVEZXBsb3lJdGVtIHtcbiAgICBsZXQgc2Vzc2lvbjtcbiAgICBzd2l0Y2ggKHRoaXMudHJhbnNhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgY29uc3QgdHJhbnNmZXJTZXNzaW9uID0gdGhpcy5fc2Vzc2lvbiBhcyBDYXNwZXJUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgICBzZXNzaW9uID0gRGVwbG95VXRpbC5FeGVjdXRhYmxlRGVwbG95SXRlbS5uZXdUcmFuc2ZlcihcbiAgICAgICAgICB0cmFuc2ZlclNlc3Npb24uYW1vdW50LFxuICAgICAgICAgIHRyYW5zZmVyU2Vzc2lvbi50YXJnZXQsXG4gICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIHRyYW5zZmVyU2Vzc2lvbi5pZCxcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgY29uc3QgbW9kdWxlQnl0ZXNTZXNzaW9uID0gdGhpcy5fc2Vzc2lvbiBhcyBDYXNwZXJNb2R1bGVCeXRlc1RyYW5zYWN0aW9uO1xuICAgICAgICBzZXNzaW9uID0gRGVwbG95VXRpbC5FeGVjdXRhYmxlRGVwbG95SXRlbS5uZXdNb2R1bGVCeXRlcyhcbiAgICAgICAgICBtb2R1bGVCeXRlc1Nlc3Npb24ubW9kdWxlQnl0ZXMsXG4gICAgICAgICAgbW9kdWxlQnl0ZXNTZXNzaW9uLmFyZ3MsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gVHlwZSBlcnJvcicpO1xuICAgIH1cbiAgICByZXR1cm4gc2Vzc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciB0aGUgdHJhbnNhY3Rpb24gaGFzIHRoZSBvd25lciBzaWduYXR1cmVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHB1YiAtIHB1YmxpYyBrZXkgb2YgdGhlIHNpZ25lclxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgcHViIGtleSBhbHJlYWR5IHNpZ25lZCB0aCB0cmFuc2FjdGlvblxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1RyYW5zYWN0aW9uU2lnbmVkQnlQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgXy5maW5kSW5kZXgodGhpcy50cmFuc2FjdGlvbi5jYXNwZXJUeC5hcHByb3ZhbHMsIChhcHByb3ZhbCkgPT4ge1xuICAgICAgICBjb25zdCBhcHByb3ZhbFNpZ25lciA9IHJlbW92ZUFsZ29QcmVmaXhGcm9tSGV4VmFsdWUoYXBwcm92YWwuc2lnbmVyKTtcbiAgICAgICAgcmV0dXJuIGFwcHJvdmFsU2lnbmVyID09PSBwdWI7XG4gICAgICB9KSAhPT0gLTFcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBzaWduYXR1cmVzIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBwcm9jZXNzU2lnbmluZygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycykge1xuICAgICAgLy8gQWRkIHNpZ25hdHVyZSBpZiBpdCdzIG5vdCBhbHJlYWR5IGluIHRoZSBkZXBsb3lcbiAgICAgIGlmICghdGhpcy5pc1RyYW5zYWN0aW9uU2lnbmVkQnlQdWIoa2V5UGFpci5nZXRLZXlzKCkucHViKSkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oa2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgeyBzaWduYXR1cmUsIGtleVBhaXIgfSBvZiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICAvLyBBZGQgc2lnbmF0dXJlIGlmIGl0J3Mgbm90IGFscmVhZHkgaW4gdGhlIGRlcGxveVxuICAgICAgaWYgKCF0aGlzLmlzVHJhbnNhY3Rpb25TaWduZWRCeVB1YihrZXlQYWlyLmdldEtleXMoKS5wdWIpKSB7XG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb24uYWRkU2lnbmF0dXJlKHNpZ25hdHVyZSwga2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
383
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY3Nwci90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOERBQXFDO0FBRXJDLCtDQUFxRTtBQUNyRSxrREFBdUI7QUFDdkIsd0NBQXNFO0FBRXRFLDZDQUs0QjtBQUM1Qiw2Q0FBNEM7QUFDNUMscUNBQW9DO0FBUXBDLGlDQUF1RTtBQUN2RSx5Q0FBMEU7QUFFN0QsUUFBQSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsUUFBQSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0lBQWlELHNDQUFzQjtJQVVyRSw0QkFBWSxXQUFpQztRQUE3QyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQUtuQjtRQUpDLEtBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELEtBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7UUFDL0IsS0FBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsS0FBSSxDQUFDLFVBQVUsR0FBRyxLQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLCtCQUFtQixDQUFDLE9BQU8sQ0FBQzs7SUFDM0csQ0FBQztJQUVELHNCQUFzQjtJQUN0QixrQkFBa0I7SUFDRixnREFBbUIsR0FBbkM7Ozs7Z0JBQ1EsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFFNUIsT0FBTyxHQUFHLDBCQUFVLENBQUMsZUFBZSxDQUFDLGdCQUFDLENBQUMsUUFBUSxD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QUFDLENBQUM7WUFDckUsT0FBTyxjQUFjLEtBQUssR0FBRyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNWLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDJDQUFjLEdBQXRCO1FBQ0UsS0FBc0IsVUFBeUIsRUFBekIsS0FBQSxJQUFJLENBQUMsb0JBQW9CLEVBQXpCLGNBQXlCLEVBQXpCLElBQXlCLEVBQUU7WUFBNUMsSUFBTSxPQUFPLFNBQUE7WUFDaEIsa0RBQWtEO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNoQztTQUNGO1FBQ0QsS0FBcUMsVUFBZ0IsRUFBaEIsS0FBQSxJQUFJLENBQUMsV0FBVyxFQUFoQixjQUFnQixFQUFoQixJQUFnQixFQUFFO1lBQTVDLElBQUEsV0FBc0IsRUFBcEIsU0FBUyxlQUFBLEVBQUUsT0FBTyxhQUFBO1lBQzdCLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2FBQ25EO1NBQ0Y7SUFDSCxDQUFDO0lBRUgseUJBQUM7QUFBRCxDQUFDLEFBaFdELENBQWlELGlDQUFzQixHQWdXdEU7QUFoV3FCLGdEQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcy9kaXN0L3NyYy9iYXNlJztcbmltcG9ydCB7IERlcGxveVV0aWwsIENMUHVibGljS2V5IGFzIFB1YmxpY0tleSB9IGZyb20gJ2Nhc3Blci1qcy1zZGsnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEJhc2VBZGRyZXNzLCBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHtcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBTaWduaW5nRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG59IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQge1xuICBGZWUsXG4gIENhc3Blck1vZHVsZUJ5dGVzVHJhbnNhY3Rpb24sXG4gIENhc3BlclRyYW5zZmVyVHJhbnNhY3Rpb24sXG4gIENhc3BlckRlbGVnYXRlVHJhbnNhY3Rpb24sXG4gIFNpZ25hdHVyZURhdGEsXG59IGZyb20gJy4vaWZhY2VzJztcbmltcG9ydCB7IGlzVmFsaWRBZGRyZXNzLCByZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBERUZBVUxUX0NIQUlOX05BTUVTLCBUUkFOU0FDVElPTl9FWFBJUkFUSU9OIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NID0gMztcbmV4cG9ydCBjb25zdCBERUZBVUxUX04gPSAyO1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3NvdXJjZTogQmFzZUFkZHJlc3M7XG4gIHByb3RlY3RlZCBfZmVlOiBGZWU7XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zZXNzaW9uOiBDYXNwZXJUcmFuc2ZlclRyYW5zYWN0aW9uIHwgQ2FzcGVyTW9kdWxlQnl0ZXNUcmFuc2FjdGlvbiB8IENhc3BlckRlbGVnYXRlVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfZXhwaXJhdGlvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX211bHRpU2lnbmVyS2V5UGFpcnM6IEtleVBhaXJbXTtcbiAgcHJvdGVjdGVkIF9zaWduYXR1cmVzOiBTaWduYXR1cmVEYXRhW107XG4gIHByb3RlY3RlZCBfY2hhaW5OYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzID0gW107XG4gICAgdGhpcy5fY2hhaW5OYW1lID0gdGhpcy5jb2luTmFtZSgpID09PSAnY3NwcicgPyBERUZBVUxUX0NIQUlOX05BTUVTLm1haW5uZXQgOiBERUZBVUxUX0NIQUlOX05BTUVTLnRlc3RuZXQ7XG4gIH1cblxuICAvLyByZWdpb24gQmFzZSBCdWlsZGVyXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgZGVwbG95UGFyYW1zID0gdGhpcy5nZXREZXBsb3lQYXJhbXMoKTtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5nZXRTZXNzaW9uKCk7XG5cbiAgICBjb25zdCBwYXltZW50ID0gRGVwbG95VXRpbC5zdGFuZGFyZFBheW1lbnQoXy5wYXJzZUludCh0aGlzLl9mZWUuZ2FzTGltaXQpKTtcblxuICAgIGxldCBjVHJhbnNhY3Rpb24gPSB0aGlzLnRyYW5zYWN0aW9uLmNhc3BlclR4IHx8IERlcGxveVV0aWwubWFrZURlcGxveShkZXBsb3lQYXJhbXMsIHNlc3Npb24sIHBheW1lbnQpO1xuXG4gICAgLy8gQ2Fubm90IGFkZCBhcmd1bWVudHMgdG8gYW4gYWxyZWFkeSBzaWduZWQgZGVwbG95LlxuICAgIGlmIChjVHJhbnNhY3Rpb24uYXBwcm92YWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5fc2Vzc2lvbi5leHRyYUFyZ3VtZW50cy5mb3JFYWNoKChleHRyYUFyZ3VtZW50LCBleHRyYUFyZ3VtZW50TmFtZSkgPT4ge1xuICAgICAgICBpZiAoIWNUcmFuc2FjdGlvbi5zZXNzaW9uLmdldEFyZ0J5TmFtZShleHRyYUFyZ3VtZW50TmFtZSkpIHtcbiAgICAgICAgICBjVHJhbnNhY3Rpb24gPSBEZXBsb3lVdGlsLmFkZEFyZ1RvRGVwbG95KGNUcmFuc2FjdGlvbiwgZXh0cmFBcmd1bWVudE5hbWUsIGV4dHJhQXJndW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmNhc3BlclR4ID0gY1RyYW5zYWN0aW9uO1xuXG4gICAgdGhpcy5wcm9jZXNzU2lnbmluZygpO1xuXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIGNvbnN0IGpzb25UcmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgIHR4LmNhc3BlclR4ID0gRGVwbG95VXRpbC5kZXBsb3lGcm9tSnNvbihqc29uVHJhbnNhY3Rpb24pLnVud3JhcCgpO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzaWduSW1wbGVtZW50YXRpb24oa2V5OiBCYXNlS2V5KTogVHJhbnNhY3Rpb24ge1xuICAgIHRoaXMuY2hlY2tEdXBsaWNhdGVkS2V5cyhrZXkpO1xuICAgIGNvbnN0IHNpZ25lciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuXG4gICAgLy8gU2lnbmluZyB0aGUgdHJhbnNhY3Rpb24gaXMgYW4gb3BlcmF0aW9uIHRoYXQgcmVsaWVzIG9uIGFsbCB0aGUgZGF0YSBiZWluZyBzZXQsXG4gICAgLy8gc28gd2Ugc2V0IHRoZSBzb3VyY2UgaGVyZSBhbmQgbGVhdmUgdGhlIGFjdHVhbCBzaWduaW5nIGZvciB0aGUgYnVpbGQgc3RlcFxuICAgIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMucHVzaChzaWduZXIpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIHRyYW5zYWN0aW9uIGJ1aWxkZXIgZmllbGRzIHVzaW5nIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0eDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRQcmV2aW91c1NpZ25hdHVyZXMoKTtcbiAgICBjb25zdCB0eERhdGEgPSB0eC50b0pzb24oKTtcbiAgICB0aGlzLmZlZSh0eERhdGEuZmVlKTtcbiAgICB0aGlzLnNvdXJjZSh7IGFkZHJlc3M6IHR4RGF0YS5mcm9tIH0pO1xuICAgIHRoaXMuZXhwaXJhdGlvbih0eERhdGEuZXhwaXJhdGlvbiB8fCBUUkFOU0FDVElPTl9FWFBJUkFUSU9OKTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxuXG4gIC8vIHJlZ2lvbiBDb21tb24gYnVpbGRlciBtZXRob2RzXG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gZmVlc1xuICAgKlxuICAgKiBAcGFyYW0ge0Jhc2VGZWV9IGZlZSBUaGUgbWF4aW11bSBnYXMgdG8gcGF5XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZmVlKGZlZTogRmVlKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIoZmVlLmdhc0xpbWl0KSk7XG4gICAgdGhpcy5fZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gc291cmNlXG4gICAqXG4gICAqIEBwYXJhbSB7QmFzZUFkZHJlc3N9IGFkZHJlc3MgVGhlIHNvdXJjZSBhY2NvdW50XG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc291cmNlKGFkZHJlc3M6IEJhc2VBZGRyZXNzKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgdGhpcy5fc291cmNlID0gYWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGV4cGlyYXRpb25UaW1lXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHBpcmF0aW9uVGltZSBUaGUgdHJhbnNhY3Rpb24gZXhwaXJhdGlvblRpbWVcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBleHBpcmF0aW9uKGV4cGlyYXRpb25UaW1lOiBudW1iZXIpOiB0aGlzIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbkV4cGlyYXRpb24gPSBuZXcgQmlnTnVtYmVyKGV4cGlyYXRpb25UaW1lKTtcbiAgICBpZiAodHJhbnNhY3Rpb25FeHBpcmF0aW9uLmlzTmFOKCkgfHwgdHJhbnNhY3Rpb25FeHBpcmF0aW9uLmlzR3JlYXRlclRoYW4oVFJBTlNBQ1RJT05fRVhQSVJBVElPTikpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb24gZXhwaXJhdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodHJhbnNhY3Rpb25FeHBpcmF0aW9uKTtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gdHJhbnNhY3Rpb25FeHBpcmF0aW9uLnRvTnVtYmVyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGFuIGV4dGVybmFsIHRyYW5zYWN0aW9uIHNpZ25hdHVyZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIEhleCBlbmNvZGVkIHNpZ25hdHVyZSBzdHJpbmdcbiAgICogQHBhcmFtIHtLZXlQYWlyfSBrZXlQYWlyIFRoZSBwdWJsaWMga2V5IGtleXBhaXIgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHNpZ25hdHVyZVxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIHNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZywga2V5UGFpcjogS2V5UGFpcik6IHRoaXMge1xuICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHNpZ25hdHVyZSBmb3IgdGhpcyBrZXkgcGFpciwganVzdCB1cGRhdGUgaXRcbiAgICBmb3IgKGNvbnN0IG9sZFNpZ25hdHVyZSBvZiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICBpZiAob2xkU2lnbmF0dXJlLmtleVBhaXIuZ2V0S2V5cygpLnB1YiA9PT0ga2V5UGFpci5nZXRLZXlzKCkucHViKSB7XG4gICAgICAgIG9sZFNpZ25hdHVyZS5zaWduYXR1cmUgPSBzaWduYXR1cmU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG90aGVyd2lzZSBhZGQgdGhlIG5ldyBzaWduYXR1cmVcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBzaWduYXR1cmUsIGtleVBhaXIgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBub2RlQ2hhaW5OYW1lKGNoYWluTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgdGhpcy5fY2hhaW5OYW1lID0gY2hhaW5OYW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBCYXNlQWRkcmVzcyk6IHZvaWQge1xuICAgIGlmICghaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBhZGRyZXNzICcgKyBhZGRyZXNzLmFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBpZiAoIW5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIGtleScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgRGVwbG95VXRpbC5kZXBsb3lGcm9tSnNvbihKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignVGhlcmUgd2FzIGFuIGVycm9yIHBhcnNpbmcgdGhlIEpTT04gc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBtYW5kYXRvcnkgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICB2YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRlRmVlKCk7XG4gICAgdGhpcy52YWxpZGF0ZVNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGF0IHRoZSBmZWUgZmllbGQgaXMgZGVmaW5lZFxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZlZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZmVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgZmVlJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fZmVlLmdhc0xpbWl0KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIGdhcyBsaW1pdCcpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKG5ldyBCaWdOdW1iZXIodGhpcy5fZmVlLmdhc0xpbWl0KSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBnYXMgbGltaXQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoYXQgdGhlIHNvdXJjZSBmaWVsZCBpcyBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlU291cmNlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBzb3VyY2UnKTtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZUFkZHJlc3ModGhpcy5fc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgZ2l2ZW4ga2V5IGlzIG5vdCBhbHJlYWR5IGluIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnNcbiAgICpcbiAgICogQHBhcmFtIHtCYXNlS2V5fSBrZXkgLSBUaGUga2V5IHRvIGNoZWNrXG4gICAqL1xuICBwcml2YXRlIGNoZWNrRHVwbGljYXRlZEtleXMoa2V5OiBCYXNlS2V5KSB7XG4gICAgdGhpcy5fbXVsdGlTaWduZXJLZXlQYWlycy5mb3JFYWNoKChfc291cmNlS2V5UGFpcikgPT4ge1xuICAgICAgaWYgKF9zb3VyY2VLZXlQYWlyLmdldEtleXMoKS5wcnYgPT09IGtleS5rZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignUmVwZWF0ZWQgc2lnbjogJyArIGtleS5rZXkpO1xuICAgICAgfVxuICAgICAgLy8gVHJ5IHRvIGdldCBleHRlbmRlZCBrZXlzIGluIG9yZGVyIHRvIHZhbGlkYXRlIHRoZW1cbiAgICAgIGxldCB4cHJ2O1xuICAgICAgdHJ5IHtcbiAgICAgICAgeHBydiA9IF9zb3VyY2VLZXlQYWlyLmdldEV4dGVuZGVkS2V5cygpLnhwcnY7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHhwcnYgJiYgeHBydiA9PT0ga2V5LmtleSkge1xuICAgICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdSZXBlYXRlZCBzaWduOiAnICsga2V5LmtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBlbmRyZWdpb25cblxuICAvLyByZWdpb24gR2V0dGVycyBhbmQgU2V0dGVyc1xuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvbigpOiBUcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKSB7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGNoYWluIG5hbWUgZm9yIHRoZSBjb2luIGVudmlyb25tZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0IGNoYWluTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFpbk5hbWU7XG4gIH1cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIGF1eGlsaWFyeU1ldGhvZHNcbiAgLyoqXG4gICAqIEdlbmVyYXRlIGEgRGVwbG95UGFyYW1zIGluc3RhbmNlIHdpdGggdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHJldHVybnMge0RlcGxveVV0aWwuRGVwbG95UGFyYW1zfVxuICAgKi9cbiAgcHJpdmF0ZSBnZXREZXBsb3lQYXJhbXMoKTogRGVwbG95VXRpbC5EZXBsb3lQYXJhbXMge1xuICAgIGNvbnN0IGdhc1ByaWNlID0gdGhpcy5fZmVlLmdhc1ByaWNlID8gXy5wYXJzZUludCh0aGlzLl9mZWUuZ2FzUHJpY2UpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBuZXcgRGVwbG95VXRpbC5EZXBsb3lQYXJhbXMoXG4gICAgICBQdWJsaWNLZXkuZnJvbUhleCh0aGlzLl9zb3VyY2UuYWRkcmVzcyksXG4gICAgICB0aGlzLl9jaGFpbk5hbWUsXG4gICAgICBnYXNQcmljZSxcbiAgICAgIHRoaXMuX2V4cGlyYXRpb24gfHwgVFJBTlNBQ1RJT05fRVhQSVJBVElPTixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRoZSBzZXNzaW9uIGZvciB0aGUgRGVwbG95IGFjY29yZGluZyB0byB0aGUgdHJhbnNhY3Rpb25UeXBlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RGVwbG95VXRpbC5FeGVjdXRhYmxlRGVwbG95SXRlbX1cbiAgICovXG4gIHByaXZhdGUgZ2V0U2Vzc2lvbigpOiBEZXBsb3lVdGlsLkV4ZWN1dGFibGVEZXBsb3lJdGVtIHtcbiAgICBsZXQgc2Vzc2lvbjtcbiAgICBzd2l0Y2ggKHRoaXMudHJhbnNhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgY29uc3QgdHJhbnNmZXJTZXNzaW9uID0gdGhpcy5fc2Vzc2lvbiBhcyBDYXNwZXJUcmFuc2ZlclRyYW5zYWN0aW9uO1xuICAgICAgICBzZXNzaW9uID0gRGVwbG95VXRpbC5FeGVjdXRhYmxlRGVwbG95SXRlbS5uZXdUcmFuc2ZlcldpdGhPcHRpb25hbFRyYW5zZmVySWQoXG4gICAgICAgICAgdHJhbnNmZXJTZXNzaW9uLmFtb3VudCxcbiAgICAgICAgICB0cmFuc2ZlclNlc3Npb24udGFyZ2V0LFxuICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICB0cmFuc2ZlclNlc3Npb24uaWQsXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nTG9jazpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s6XG4gICAgICAgIGNvbnN0IG1vZHVsZUJ5dGVzU2Vzc2lvbiA9IHRoaXMuX3Nlc3Npb24gYXMgQ2FzcGVyTW9kdWxlQnl0ZXNUcmFuc2FjdGlvbjtcbiAgICAgICAgc2Vzc2lvbiA9IERlcGxveVV0aWwuRXhlY3V0YWJsZURlcGxveUl0ZW0ubmV3TW9kdWxlQnl0ZXMoXG4gICAgICAgICAgbW9kdWxlQnl0ZXNTZXNzaW9uLm1vZHVsZUJ5dGVzLFxuICAgICAgICAgIG1vZHVsZUJ5dGVzU2Vzc2lvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIFR5cGUgZXJyb3InKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlc3Npb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIHRyYW5zYWN0aW9uIGhhcyB0aGUgb3duZXIgc2lnbmF0dXJlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgLSBwdWJsaWMga2V5IG9mIHRoZSBzaWduZXJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIHB1YiBrZXkgYWxyZWFkeSBzaWduZWQgdGggdHJhbnNhY3Rpb25cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaXNUcmFuc2FjdGlvblNpZ25lZEJ5UHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIF8uZmluZEluZGV4KHRoaXMudHJhbnNhY3Rpb24uY2FzcGVyVHguYXBwcm92YWxzLCAoYXBwcm92YWwpID0+IHtcbiAgICAgICAgY29uc3QgYXBwcm92YWxTaWduZXIgPSByZW1vdmVBbGdvUHJlZml4RnJvbUhleFZhbHVlKGFwcHJvdmFsLnNpZ25lcik7XG4gICAgICAgIHJldHVybiBhcHByb3ZhbFNpZ25lciA9PT0gcHViO1xuICAgICAgfSkgIT09IC0xXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc2lnbmF0dXJlcyB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1NpZ25pbmcoKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBrZXlQYWlyIG9mIHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMpIHtcbiAgICAgIC8vIEFkZCBzaWduYXR1cmUgaWYgaXQncyBub3QgYWxyZWFkeSBpbiB0aGUgZGVwbG95XG4gICAgICBpZiAoIXRoaXMuaXNUcmFuc2FjdGlvblNpZ25lZEJ5UHViKGtleVBhaXIuZ2V0S2V5cygpLnB1YikpIHtcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbi5zaWduKGtleVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IHsgc2lnbmF0dXJlLCBrZXlQYWlyIH0gb2YgdGhpcy5fc2lnbmF0dXJlcykge1xuICAgICAgLy8gQWRkIHNpZ25hdHVyZSBpZiBpdCdzIG5vdCBhbHJlYWR5IGluIHRoZSBkZXBsb3lcbiAgICAgIGlmICghdGhpcy5pc1RyYW5zYWN0aW9uU2lnbmVkQnlQdWIoa2V5UGFpci5nZXRLZXlzKCkucHViKSkge1xuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUsIGtleVBhaXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBlbmRyZWdpb25cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,6BAA6B,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,iBAAiB;IAIzD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IA2BrC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAU/B"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,6BAA6B,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,8BAA8B,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,2BAA2B;IAI7E;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,iBAAiB;IAIzD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,kBAAkB,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,eAAe;IAIrD,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAyBrC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;CAU/B"}
@@ -16,7 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TransactionBuilderFactory = void 0;
19
- var casper_client_sdk_1 = require("casper-client-sdk");
19
+ var casper_js_sdk_1 = require("casper-js-sdk");
20
20
  var errors_1 = require("../baseCoin/errors");
21
21
  var baseCoin_1 = require("../baseCoin");
22
22
  var walletInitializationBuilder_1 = require("./walletInitializationBuilder");
@@ -61,11 +61,12 @@ var TransactionBuilderFactory = /** @class */ (function (_super) {
61
61
  this.validateRawTransaction(raw);
62
62
  var tx = new transaction_1.Transaction(this._coinConfig);
63
63
  var deployJson = JSON.parse(raw);
64
- var deployObject = casper_client_sdk_1.DeployUtil.deployFromJson(deployJson);
65
- if (!deployObject) {
66
- throw new errors_1.InvalidTransactionError('Invalid transaction: ' + deployObject);
64
+ try {
65
+ tx.casperTx = casper_js_sdk_1.DeployUtil.deployFromJson(deployJson).unwrap();
66
+ }
67
+ catch (e) {
68
+ throw new errors_1.InvalidTransactionError('Invalid transaction: ' + e);
67
69
  }
68
- tx.casperTx = deployObject;
69
70
  var casperDeployType = utils_1.getDeployType(tx.casperTx.session);
70
71
  switch (casperDeployType) {
71
72
  case baseCoin_1.TransactionType.Send:
@@ -112,4 +113,4 @@ var TransactionBuilderFactory = /** @class */ (function (_super) {
112
113
  return TransactionBuilderFactory;
113
114
  }(baseCoin_1.BaseTransactionBuilderFactory));
114
115
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2NzcHIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBK0M7QUFDL0MsNkNBQW9GO0FBQ3BGLHdDQUE2RTtBQUM3RSw2RUFBNEU7QUFDNUUscURBQW9EO0FBRXBELDZDQUE0QztBQUM1QyxpQ0FBd0M7QUFDeEMscURBQW9EO0FBQ3BELHlEQUF3RDtBQUV4RDtJQUErQyw2Q0FBNkI7SUFDMUUsbUNBQVksV0FBaUM7ZUFDM0Msa0JBQU0sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0VBQThCLEdBQTlCLFVBQStCLEVBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHlEQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdEQUFvQixHQUFwQixVQUFxQixFQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzREFBa0IsR0FBbEIsVUFBbUIsRUFBZ0I7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNEQUFrQixHQUFsQixVQUFtQixFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQUksR0FBSixVQUFLLEdBQVc7UUFDZCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBTSxFQUFFLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQU0sWUFBWSxHQUFHLDhCQUFVLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakIsTUFBTSxJQUFJLGdDQUF1QixDQUFDLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxDQUFDO1NBQzNFO1FBRUQsRUFBRSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7UUFFM0IsSUFBTSxnQkFBZ0IsR0FBRyxxQkFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsUUFBUSxnQkFBZ0IsRUFBRTtZQUN4QixLQUFLLDBCQUFlLENBQUMsSUFBSTtnQkFDdkIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckMsS0FBSywwQkFBZSxDQUFDLG9CQUFvQjtnQkFDdkMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsS0FBSywwQkFBZSxDQUFDLFdBQVc7Z0JBQzlCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLEtBQUssMEJBQWUsQ0FBQyxhQUFhO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QztnQkFDRSxNQUFNLElBQUksZ0NBQXVCLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzNFO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLHFEQUFpQixHQUF6QixVQUF3RCxFQUEyQixFQUFFLE9BQVU7UUFDN0YsSUFBSSxFQUFFLEVBQUU7WUFDTixPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSywwREFBc0IsR0FBOUIsVUFBK0IsY0FBbUI7UUFDaEQsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixNQUFNLElBQUksOEJBQXFCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUk7WUFDRixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzVCO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksOEJBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFDSCxnQ0FBQztBQUFELENBQUMsQUE1RkQsQ0FBK0Msd0NBQTZCLEdBNEYzRTtBQTVGWSw4REFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MvZGlzdC9zcmMvYmFzZSc7XG5pbXBvcnQgeyBEZXBsb3lVdGlsIH0gZnJvbSAnY2FzcGVyLWNsaWVudC1zZGsnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFBhcnNlVHJhbnNhY3Rpb25FcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldERlcGxveVR5cGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERlbGVnYXRlQnVpbGRlciB9IGZyb20gJy4vZGVsZWdhdGVCdWlsZGVyJztcbmltcG9ydCB7IFVuZGVsZWdhdGVCdWlsZGVyIH0gZnJvbSAnLi91bmRlbGVnYXRlQnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBXYWxsZXRJbml0aWFsaXphdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGFuIHVuZGVsZWdhdGUgYnVpbGRlclxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uIHwgdW5kZWZpbmVkfSB0eCAtIHRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGJ1aWxkZXJcbiAgICogQHJldHVybnMge1VuZGVsZWdhdGVCdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFVuZGVsZWdhdGVCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFVuZGVsZWdhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGFuIGRlbGVnYXRlIGJ1aWxkZXJcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEByZXR1cm5zIHtEZWxlZ2F0ZUJ1aWxkZXJ9IHRoZSBidWlsZGVyIGluaXRpYWxpemVkXG4gICAqL1xuICBnZXREZWxlZ2F0ZUJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IERlbGVnYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBEZWxlZ2F0ZUJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldFRyYW5zZmVyQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgY29uc3QgZGVwbG95SnNvbiA9IEpTT04ucGFyc2UocmF3KTtcbiAgICBjb25zdCBkZXBsb3lPYmplY3QgPSBEZXBsb3lVdGlsLmRlcGxveUZyb21Kc29uKGRlcGxveUpzb24pO1xuXG4gICAgaWYgKCFkZXBsb3lPYmplY3QpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogJyArIGRlcGxveU9iamVjdCk7XG4gICAgfVxuXG4gICAgdHguY2FzcGVyVHggPSBkZXBsb3lPYmplY3Q7XG5cbiAgICBjb25zdCBjYXNwZXJEZXBsb3lUeXBlID0gZ2V0RGVwbG95VHlwZSh0eC5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICBzd2l0Y2ggKGNhc3BlckRlcGxveVR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXREZWxlZ2F0ZUJ1aWxkZXIodHgpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIodHgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uICcgKyB0eC5jYXNwZXJUeCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gcmF3VHJhbnNhY3Rpb24gLSBUcmFuc2FjdGlvbiBpbiBhbnkgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IGFueSkge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uIGZvcm1hdCcpO1xuICAgIH1cbiAgfVxufVxuIl19
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL2NzcHIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrQ0FBMkM7QUFDM0MsNkNBQW9GO0FBQ3BGLHdDQUE2RTtBQUM3RSw2RUFBNEU7QUFDNUUscURBQW9EO0FBRXBELDZDQUE0QztBQUM1QyxpQ0FBd0M7QUFDeEMscURBQW9EO0FBQ3BELHlEQUF3RDtBQUV4RDtJQUErQyw2Q0FBNkI7SUFDMUUsbUNBQVksV0FBaUM7ZUFDM0Msa0JBQU0sV0FBVyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsa0VBQThCLEdBQTlCLFVBQStCLEVBQWdCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLHlEQUEyQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdEQUFvQixHQUFwQixVQUFxQixFQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxzREFBa0IsR0FBbEIsVUFBbUIsRUFBZ0I7UUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHNEQUFrQixHQUFsQixVQUFtQixFQUFnQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxpQ0FBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQUksR0FBSixVQUFLLEdBQVc7UUFDZCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBTSxFQUFFLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUk7WUFDRixFQUFFLENBQUMsUUFBUSxHQUFHLDBCQUFVLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzlEO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixNQUFNLElBQUksZ0NBQXVCLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEU7UUFFRCxJQUFNLGdCQUFnQixHQUFHLHFCQUFhLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxRQUFRLGdCQUFnQixFQUFFO1lBQ3hCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQyxLQUFLLDBCQUFlLENBQUMsb0JBQW9CO2dCQUN2QyxPQUFPLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxLQUFLLDBCQUFlLENBQUMsV0FBVztnQkFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckMsS0FBSywwQkFBZSxDQUFDLGFBQWE7Z0JBQ2hDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDO2dCQUNFLE1BQU0sSUFBSSxnQ0FBdUIsQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0U7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0sscURBQWlCLEdBQXpCLFVBQXdELEVBQTJCLEVBQUUsT0FBVTtRQUM3RixJQUFJLEVBQUUsRUFBRTtZQUNOLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLDBEQUFzQixHQUE5QixVQUErQixjQUFzQjtRQUNuRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ25CLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1NBQ3ZFO1FBQ0QsSUFBSTtZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDNUI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSw4QkFBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUNILGdDQUFDO0FBQUQsQ0FBQyxBQTFGRCxDQUErQyx3Q0FBNkIsR0EwRjNFO0FBMUZZLDhEQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcy9kaXN0L3NyYy9iYXNlJztcbmltcG9ydCB7IERlcGxveVV0aWwgfSBmcm9tICdjYXNwZXItanMtc2RrJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgQmFzZVRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlciB9IGZyb20gJy4vd2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4vdHJhbnNmZXJCdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBnZXREZXBsb3lUeXBlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEZWxlZ2F0ZUJ1aWxkZXIgfSBmcm9tICcuL2RlbGVnYXRlQnVpbGRlcic7XG5pbXBvcnQgeyBVbmRlbGVnYXRlQnVpbGRlciB9IGZyb20gJy4vdW5kZWxlZ2F0ZUJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0eD86IFRyYW5zYWN0aW9uKTogV2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbml0aWFsaXplQnVpbGRlcih0eCwgbmV3IFdhbGxldEluaXRpYWxpemF0aW9uQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhbiB1bmRlbGVnYXRlIGJ1aWxkZXJcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEByZXR1cm5zIHtVbmRlbGVnYXRlQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIGdldFVuZGVsZWdhdGVCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBVbmRlbGVnYXRlQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBVbmRlbGVnYXRlQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBhbiBkZWxlZ2F0ZSBidWlsZGVyXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb24gfCB1bmRlZmluZWR9IHR4IC0gdGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlclxuICAgKiBAcmV0dXJucyB7RGVsZWdhdGVCdWlsZGVyfSB0aGUgYnVpbGRlciBpbml0aWFsaXplZFxuICAgKi9cbiAgZ2V0RGVsZWdhdGVCdWlsZGVyKHR4PzogVHJhbnNhY3Rpb24pOiBEZWxlZ2F0ZUJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVCdWlsZGVyKHR4LCBuZXcgRGVsZWdhdGVCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIodHg/OiBUcmFuc2FjdGlvbik6IFRyYW5zZmVyQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbGl6ZUJ1aWxkZXIodHgsIG5ldyBUcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZykpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGZyb20ocmF3OiBzdHJpbmcpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgIGNvbnN0IGRlcGxveUpzb24gPSBKU09OLnBhcnNlKHJhdyk7XG4gICAgdHJ5IHtcbiAgICAgIHR4LmNhc3BlclR4ID0gRGVwbG95VXRpbC5kZXBsb3lGcm9tSnNvbihkZXBsb3lKc29uKS51bndyYXAoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246ICcgKyBlKTtcbiAgICB9XG5cbiAgICBjb25zdCBjYXNwZXJEZXBsb3lUeXBlID0gZ2V0RGVwbG95VHlwZSh0eC5jYXNwZXJUeC5zZXNzaW9uKTtcbiAgICBzd2l0Y2ggKGNhc3BlckRlcGxveVR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcih0eCk7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKHR4KTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdMb2NrOlxuICAgICAgICByZXR1cm4gdGhpcy5nZXREZWxlZ2F0ZUJ1aWxkZXIodHgpO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ1VubG9jazpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VW5kZWxlZ2F0ZUJ1aWxkZXIodHgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uICcgKyB0eC5jYXNwZXJUeCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvbiB8IHVuZGVmaW5lZH0gdHggLSB0aGUgdHJhbnNhY3Rpb24gdXNlZCB0byBpbml0aWFsaXplIHRoZSBidWlsZGVyXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25CdWlsZGVyfSBidWlsZGVyIC0gdGhlIGJ1aWxkZXIgdG8gYmUgaW5pdGlhbGl6ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gdGhlIGJ1aWxkZXIgaW5pdGlhbGl6ZWRcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUJ1aWxkZXI8VCBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlcj4odHg6IFRyYW5zYWN0aW9uIHwgdW5kZWZpbmVkLCBidWlsZGVyOiBUKTogVCB7XG4gICAgaWYgKHR4KSB7XG4gICAgICBidWlsZGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgdGhlIHJhdyB0cmFuc2FjdGlvbiBoYXMgYSB2YWxpZCBmb3JtYXQgaW4gdGhlIGJsb2NrY2hhaW4gY29udGV4dCwgdGhyb3cgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gcmF3VHJhbnNhY3Rpb24gLSBUcmFuc2FjdGlvbiBpbiBhbnkgZm9ybWF0XG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZykge1xuICAgIGlmICghcmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uOiBVbmRlZmluZWQnKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcmF3IHRyYW5zYWN0aW9uIGZvcm1hdCcpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAa,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAkB3D,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAWlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAQvD;;;;;OAKG;IACH,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAW5B,uBAAuB,IAAI,IAAI;CAgBhC"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/cspr/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAa,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAW5C,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAgB3D,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAWlC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAQvD;;;;;OAKG;IACH,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAW5B,uBAAuB,IAAI,IAAI;CAgBhC"}
@@ -52,7 +52,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
52
52
  };
53
53
  Object.defineProperty(exports, "__esModule", { value: true });
54
54
  exports.TransferBuilder = void 0;
55
- var casper_client_sdk_1 = require("casper-client-sdk");
55
+ var casper_js_sdk_1 = require("casper-js-sdk");
56
56
  var errors_1 = require("../baseCoin/errors");
57
57
  var baseCoin_1 = require("../baseCoin");
58
58
  var transactionBuilder_1 = require("./transactionBuilder");
@@ -72,14 +72,12 @@ var TransferBuilder = /** @class */ (function (_super) {
72
72
  case 0:
73
73
  extraArguments = new Map();
74
74
  if (this._toAddress) {
75
- extraArguments.set(constants_1.TRANSACTION_TYPE, casper_client_sdk_1.CLValue.string(baseCoin_1.TransactionType[baseCoin_1.TransactionType.Send]));
76
- // TODO(STLX-1691): We are sending the destination address as string until impediment STLX-1691 is fixed.
77
- // After that we will change this to send an instance of PublicKey instead.
78
- extraArguments.set(constants_1.TRANSFER_TO_ADDRESS, casper_client_sdk_1.CLValue.string(this._toAddress));
75
+ extraArguments.set(constants_1.TRANSACTION_TYPE, casper_js_sdk_1.CLValueBuilder.string(baseCoin_1.TransactionType[baseCoin_1.TransactionType.Send]));
76
+ extraArguments.set(constants_1.TRANSFER_TO_ADDRESS, casper_js_sdk_1.CLValueBuilder.string(this._toAddress));
79
77
  }
80
78
  this._session = {
81
79
  amount: this._amount,
82
- target: casper_client_sdk_1.PublicKey.fromHex(this._toAddress),
80
+ target: casper_js_sdk_1.CLPublicKey.fromHex(this._toAddress),
83
81
  id: this._transferId,
84
82
  extraArguments: extraArguments,
85
83
  };
@@ -168,4 +166,4 @@ var TransferBuilder = /** @class */ (function (_super) {
168
166
  return TransferBuilder;
169
167
  }(transactionBuilder_1.TransactionBuilder));
170
168
  exports.TransferBuilder = TransferBuilder;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY3Nwci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsdURBQXVEO0FBQ3ZELDZDQUFxRztBQUVyRyx3Q0FBOEM7QUFDOUMsMkRBQXFFO0FBRXJFLHlDQUFvRTtBQUNwRSxpQ0FPaUI7QUFFakI7SUFBcUMsbUNBQWtCO0lBS3JELHlCQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQsa0JBQWtCO0lBQ0YsNkNBQW1CLEdBQW5DOzs7Ozs7d0JBQ1EsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO3dCQUNsRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7NEJBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsNEJBQWdCLEVBQUUsMkJBQU8sQ0FBQyxNQUFNLENBQUMsMEJBQWUsQ0FBQywwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDNUYseUdBQXlHOzRCQUN6RywyRUFBMkU7NEJBQzNFLGNBQWMsQ0FBQyxHQUFHLENBQUMsK0JBQW1CLEVBQUUsMkJBQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7eUJBQzFFO3dCQUNELElBQUksQ0FBQyxRQUFRLEdBQUc7NEJBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNwQixNQUFNLEVBQUUsNkJBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzs0QkFDMUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXOzRCQUNwQixjQUFjLEVBQUUsY0FBYzt5QkFDL0IsQ0FBQzt3QkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLDBCQUFl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TSx1QkFBdUIsV0FBRSxDQUFDO0lBQ2xDLENBQUM7SUFFSCxzQkFBQztBQUFELENBQUMsQUE5R0QsQ0FBcUMsdUNBQWtCLEdBOEd0RDtBQTlHWSwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcy9kaXN0L3NyYy9iYXNlJztcbmltcG9ydCB7IENMVmFsdWUsIFB1YmxpY0tleSB9IGZyb20gJ2Nhc3Blci1jbGllbnQtc2RrJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsIFNpZ25pbmdFcnJvciB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBCYXNlS2V5IH0gZnJvbSAnLi4vYmFzZUNvaW4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnLi4vYmFzZUNvaW4nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyLCBERUZBVUxUX00gfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVFJBTlNBQ1RJT05fVFlQRSwgVFJBTlNGRVJfVE9fQUREUkVTUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGlzVmFsaWRUcmFuc2ZlckFtb3VudCxcbiAgaXNWYWxpZFRyYW5zZmVySWQsXG4gIGdldFRyYW5zZmVyRGVzdGluYXRpb25BZGRyZXNzLFxuICBnZXRUcmFuc2ZlckFtb3VudCxcbiAgZ2V0VHJhbnNmZXJJZCxcbiAgaXNWYWxpZEFkZHJlc3MsXG59IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdG9BZGRyZXNzOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Ftb3VudDogc3RyaW5nO1xuICBwcml2YXRlIF90cmFuc2ZlcklkOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBleHRyYUFyZ3VtZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBDTFZhbHVlPigpO1xuICAgIGlmICh0aGlzLl90b0FkZHJlc3MpIHtcbiAgICAgIGV4dHJhQXJndW1lbnRzLnNldChUUkFOU0FDVElPTl9UWVBFLCBDTFZhbHVlLnN0cmluZyhUcmFuc2FjdGlvblR5cGVbVHJhbnNhY3Rpb25UeXBlLlNlbmRdKSk7XG4gICAgICAvLyBUT0RPKFNUTFgtMTY5MSk6IFdlIGFyZSBzZW5kaW5nIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGFzIHN0cmluZyB1bnRpbCBpbXBlZGltZW50IFNUTFgtMTY5MSBpcyBmaXhlZC5cbiAgICAgIC8vIEFmdGVyIHRoYXQgd2Ugd2lsbCBjaGFuZ2UgdGhpcyB0byBzZW5kIGFuIGluc3RhbmNlIG9mIFB1YmxpY0tleSBpbnN0ZWFkLlxuICAgICAgZXh0cmFBcmd1bWVudHMuc2V0KFRSQU5TRkVSX1RPX0FERFJFU1MsIENMVmFsdWUuc3RyaW5nKHRoaXMuX3RvQWRkcmVzcykpO1xuICAgIH1cbiAgICB0aGlzLl9zZXNzaW9uID0ge1xuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICB0YXJnZXQ6IFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3RvQWRkcmVzcyksXG4gICAgICBpZDogdGhpcy5fdHJhbnNmZXJJZCxcbiAgICAgIGV4dHJhQXJndW1lbnRzOiBleHRyYUFyZ3VtZW50cyxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgdGhpcy50byhnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0eC5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgdGhpcy5hbW91bnQoZ2V0VHJhbnNmZXJBbW91bnQodHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIGNvbnN0IHRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHR4LmNhc3BlclR4LnNlc3Npb24pO1xuICAgIGlmICh0cmFuc2ZlcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNmZXJJZCh0cmFuc2ZlcklkKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIGNhbiBzaWduIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ25JbXBsZW1lbnRhdGlvbihrZXkpO1xuICB9XG5cbiAgLy8gcmVnaW9uIFRyYW5zZmVyIGZpZWxkc1xuICAvKipcbiAgICogU2V0IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdoZXJlIHRoZSBmdW5kcyB3aWxsIGJlIHNlbnQsXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIGZ1bmRzIHRvXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB0byhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl90b0FkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgYW1vdW50IHRvIHRyYW5zZmVyIGluIG1vdGVzICgxIENzcHIgZXF1YWxzIDEsMDAwLDAwMCwwMDAgbW90ZXMpXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRUcmFuc2ZlckFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdHJhbnNmZXIgaWQgdGhhdCBhY3RzIGFzIGEgdHJhbnNhY3Rpb24gaWRlbnRpZmllciAoc2ltaWxhciB0byBtZW1vIGlkIGZvciBTdGVsbGFyKVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgdHJhbnNmZXIgaWRcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHRyYW5zZmVySWQoaWQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFRyYW5zZmVySWQoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdHJhbnNmZXIgaWQnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNmZXJJZCA9IGlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90b0FkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG8nKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyh0aGlzLl90b0FkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdG8gYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBhbW91bnQnKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkVHJhbnNmZXJBbW91bnQodGhpcy5fYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFtb3VudCcpO1xuICAgIH1cbiAgICBzdXBlci52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vY3Nwci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsK0NBQWtGO0FBQ2xGLDZDQUFxRztBQUVyRyx3Q0FBOEM7QUFDOUMsMkRBQXFFO0FBRXJFLHlDQUFvRTtBQUNwRSxpQ0FPaUI7QUFFakI7SUFBcUMsbUNBQWtCO0lBS3JELHlCQUFZLFdBQWlDO2VBQzNDLGtCQUFNLFdBQVcsQ0FBQztJQUNwQixDQUFDO0lBRUQsa0JBQWtCO0lBQ0YsNkNBQW1CLEdBQW5DOzs7Ozs7d0JBQ1EsY0FBYyxHQUFHLElBQUksR0FBRyxFQUFtQixDQUFDO3dCQUNsRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7NEJBQ25CLGNBQWMsQ0FBQyxHQUFHLENBQUMsNEJBQWdCLEVBQUUsOEJBQWMsQ0FBQyxNQUFNLENBQUMsMEJBQWUsQ0FBQywwQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbkcsY0FBYyxDQUFDLEdBQUcsQ0FBQywrQkFBbUIsRUFBRSw4QkFBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQzt5QkFDakY7d0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRzs0QkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87NEJBQ3BCLE1BQU0sRUFBRSwyQkFBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDOzRCQUMxQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVc7NEJBQ3BCLGNBQWMsRUFBRSxjQUFjO3lCQUMvQixDQUFDO3dCQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDbkQs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QztJQUVILHNCQUFDO0FBQUQsQ0FBQyxBQTVHRCxDQUFxQyx1Q0FBa0IsR0E0R3REO0FBNUdZLDBDQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzL2Rpc3Qvc3JjL2Jhc2UnO1xuaW1wb3J0IHsgQ0xWYWx1ZSwgQ0xQdWJsaWNLZXkgYXMgUHVibGljS2V5LCBDTFZhbHVlQnVpbGRlciB9IGZyb20gJ2Nhc3Blci1qcy1zZGsnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBJbnZhbGlkUGFyYW1ldGVyVmFsdWVFcnJvciwgU2lnbmluZ0Vycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IEJhc2VLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIsIERFRkFVTFRfTSB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUUkFOU0FDVElPTl9UWVBFLCBUUkFOU0ZFUl9UT19BRERSRVNTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgaXNWYWxpZFRyYW5zZmVyQW1vdW50LFxuICBpc1ZhbGlkVHJhbnNmZXJJZCxcbiAgZ2V0VHJhbnNmZXJEZXN0aW5hdGlvbkFkZHJlc3MsXG4gIGdldFRyYW5zZmVyQW1vdW50LFxuICBnZXRUcmFuc2ZlcklkLFxuICBpc1ZhbGlkQWRkcmVzcyxcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF90b0FkZHJlc3M6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW1vdW50OiBzdHJpbmc7XG4gIHByaXZhdGUgX3RyYW5zZmVySWQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGV4dHJhQXJndW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIENMVmFsdWU+KCk7XG4gICAgaWYgKHRoaXMuX3RvQWRkcmVzcykge1xuICAgICAgZXh0cmFBcmd1bWVudHMuc2V0KFRSQU5TQUNUSU9OX1RZUEUsIENMVmFsdWVCdWlsZGVyLnN0cmluZyhUcmFuc2FjdGlvblR5cGVbVHJhbnNhY3Rpb25UeXBlLlNlbmRdKSk7XG4gICAgICBleHRyYUFyZ3VtZW50cy5zZXQoVFJBTlNGRVJfVE9fQUREUkVTUywgQ0xWYWx1ZUJ1aWxkZXIuc3RyaW5nKHRoaXMuX3RvQWRkcmVzcykpO1xuICAgIH1cbiAgICB0aGlzLl9zZXNzaW9uID0ge1xuICAgICAgYW1vdW50OiB0aGlzLl9hbW91bnQsXG4gICAgICB0YXJnZXQ6IFB1YmxpY0tleS5mcm9tSGV4KHRoaXMuX3RvQWRkcmVzcyksXG4gICAgICBpZDogdGhpcy5fdHJhbnNmZXJJZCxcbiAgICAgIGV4dHJhQXJndW1lbnRzOiBleHRyYUFyZ3VtZW50cyxcbiAgICB9O1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFRyYW5zYWN0aW9uVHlwZShUcmFuc2FjdGlvblR5cGUuU2VuZCk7XG4gICAgdGhpcy50byhnZXRUcmFuc2ZlckRlc3RpbmF0aW9uQWRkcmVzcyh0eC5jYXNwZXJUeC5zZXNzaW9uKSk7XG4gICAgdGhpcy5hbW91bnQoZ2V0VHJhbnNmZXJBbW91bnQodHguY2FzcGVyVHguc2Vzc2lvbikpO1xuICAgIGNvbnN0IHRyYW5zZmVySWQgPSBnZXRUcmFuc2ZlcklkKHR4LmNhc3BlclR4LnNlc3Npb24pO1xuICAgIGlmICh0cmFuc2ZlcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudHJhbnNmZXJJZCh0cmFuc2ZlcklkKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKHRoaXMuX211bHRpU2lnbmVyS2V5UGFpcnMubGVuZ3RoID49IERFRkFVTFRfTSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignQSBtYXhpbXVtIG9mICcgKyBERUZBVUxUX00gKyAnIGNhbiBzaWduIHRoZSB0cmFuc2FjdGlvbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNpZ25JbXBsZW1lbnRhdGlvbihrZXkpO1xuICB9XG5cbiAgLy8gcmVnaW9uIFRyYW5zZmVyIGZpZWxkc1xuICAvKipcbiAgICogU2V0IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdoZXJlIHRoZSBmdW5kcyB3aWxsIGJlIHNlbnQsXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIHRoZSBhZGRyZXNzIHRvIHRyYW5zZmVyIGZ1bmRzIHRvXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICB0byhhZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYWRkcmVzcycpO1xuICAgIH1cbiAgICB0aGlzLl90b0FkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgYW1vdW50IHRvIHRyYW5zZmVyIGluIG1vdGVzICgxIENzcHIgZXF1YWxzIDEsMDAwLDAwMCwwMDAgbW90ZXMpXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckJ1aWxkZXJ9IHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlzVmFsaWRUcmFuc2ZlckFtb3VudChhbW91bnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgYW1vdW50Jyk7XG4gICAgfVxuICAgIHRoaXMuX2Ftb3VudCA9IGFtb3VudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdHJhbnNmZXIgaWQgdGhhdCBhY3RzIGFzIGEgdHJhbnNhY3Rpb24gaWRlbnRpZmllciAoc2ltaWxhciB0byBtZW1vIGlkIGZvciBTdGVsbGFyKVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgdHJhbnNmZXIgaWRcbiAgICogQHJldHVybnMge1RyYW5zZmVyQnVpbGRlcn0gdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHRyYW5zZmVySWQoaWQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghaXNWYWxpZFRyYW5zZmVySWQoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdHJhbnNmZXIgaWQnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhbnNmZXJJZCA9IGlkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG5cbiAgLy8gcmVnaW9uIFZhbGlkYXRvcnNcbiAgdmFsaWRhdGVNYW5kYXRvcnlGaWVsZHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90b0FkZHJlc3MpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgdG8nKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkQWRkcmVzcyh0aGlzLl90b0FkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0ludmFsaWQgdG8gYWRkcmVzcycpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBhbW91bnQnKTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkVHJhbnNmZXJBbW91bnQodGhpcy5fYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdJbnZhbGlkIGFtb3VudCcpO1xuICAgIH1cbiAgICBzdXBlci52YWxpZGF0ZU1hbmRhdG9yeUZpZWxkcygpO1xuICB9XG4gIC8vIGVuZHJlZ2lvblxufVxuIl19