@bitgo-beta/sdk-coin-trx 1.2.3-alpha.49 → 1.2.3-alpha.490

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 (133) hide show
  1. package/dist/resources/protobuf/Contract.proto +32 -0
  2. package/dist/resources/protobuf/tron.d.ts +1478 -214
  3. package/dist/resources/protobuf/tron.js +6312 -2600
  4. package/dist/resources/protobuf/tron.proto +6 -0
  5. package/dist/src/index.js +6 -2
  6. package/dist/src/lib/constants.d.ts +3 -0
  7. package/dist/src/lib/constants.d.ts.map +1 -0
  8. package/dist/src/lib/constants.js +6 -0
  9. package/dist/src/lib/contractCallBuilder.d.ts +1 -35
  10. package/dist/src/lib/contractCallBuilder.d.ts.map +1 -1
  11. package/dist/src/lib/contractCallBuilder.js +12 -75
  12. package/dist/src/lib/delegateResourceTxBuilder.d.ts +27 -0
  13. package/dist/src/lib/delegateResourceTxBuilder.d.ts.map +1 -0
  14. package/dist/src/lib/delegateResourceTxBuilder.js +104 -0
  15. package/dist/src/lib/enum.d.ts +36 -1
  16. package/dist/src/lib/enum.d.ts.map +1 -1
  17. package/dist/src/lib/enum.js +40 -4
  18. package/dist/src/lib/freezeBalanceTxBuilder.d.ts +71 -0
  19. package/dist/src/lib/freezeBalanceTxBuilder.d.ts.map +1 -0
  20. package/dist/src/lib/freezeBalanceTxBuilder.js +217 -0
  21. package/dist/src/lib/iface.d.ts +220 -2
  22. package/dist/src/lib/iface.d.ts.map +1 -1
  23. package/dist/src/lib/iface.js +1 -1
  24. package/dist/src/lib/index.js +23 -9
  25. package/dist/src/lib/keyPair.d.ts +0 -1
  26. package/dist/src/lib/keyPair.d.ts.map +1 -1
  27. package/dist/src/lib/keyPair.js +31 -18
  28. package/dist/src/lib/resourceManagementTxBuilder.d.ts +72 -0
  29. package/dist/src/lib/resourceManagementTxBuilder.d.ts.map +1 -0
  30. package/dist/src/lib/resourceManagementTxBuilder.js +150 -0
  31. package/dist/src/lib/tokenTransferBuilder.d.ts +1 -1
  32. package/dist/src/lib/tokenTransferBuilder.js +3 -3
  33. package/dist/src/lib/transaction.d.ts +3 -0
  34. package/dist/src/lib/transaction.d.ts.map +1 -1
  35. package/dist/src/lib/transaction.js +108 -6
  36. package/dist/src/lib/transactionBuilder.d.ts +53 -6
  37. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  38. package/dist/src/lib/transactionBuilder.js +114 -21
  39. package/dist/src/lib/undelegateResourceTxBuilder.d.ts +27 -0
  40. package/dist/src/lib/undelegateResourceTxBuilder.d.ts.map +1 -0
  41. package/dist/src/lib/undelegateResourceTxBuilder.js +104 -0
  42. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts +65 -0
  43. package/dist/src/lib/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/unfreezeBalanceTxBuilder.js +210 -0
  45. package/dist/src/lib/utils.d.ts +85 -4
  46. package/dist/src/lib/utils.d.ts.map +1 -1
  47. package/dist/src/lib/utils.js +444 -47
  48. package/dist/src/lib/voteWitnessTxBuilder.d.ts +62 -0
  49. package/dist/src/lib/voteWitnessTxBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/voteWitnessTxBuilder.js +219 -0
  51. package/dist/src/lib/withdrawBuilder.d.ts +49 -0
  52. package/dist/src/lib/withdrawBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/withdrawBuilder.js +167 -0
  54. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts +49 -0
  55. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/withdrawExpireUnfreezeTxBuilder.js +167 -0
  57. package/dist/src/lib/wrappedBuilder.d.ts +59 -1
  58. package/dist/src/lib/wrappedBuilder.d.ts.map +1 -1
  59. package/dist/src/lib/wrappedBuilder.js +101 -4
  60. package/dist/src/trx.d.ts +93 -4
  61. package/dist/src/trx.d.ts.map +1 -1
  62. package/dist/src/trx.js +500 -147
  63. package/dist/src/trxToken.d.ts +2 -2
  64. package/dist/src/trxToken.d.ts.map +1 -1
  65. package/dist/src/trxToken.js +14 -6
  66. package/dist/test/fixtures.d.ts +40 -0
  67. package/dist/test/fixtures.d.ts.map +1 -0
  68. package/dist/test/fixtures.js +46 -0
  69. package/dist/test/resources.d.ts +586 -0
  70. package/dist/test/resources.d.ts.map +1 -0
  71. package/dist/test/resources.js +746 -0
  72. package/dist/test/unit/index.d.ts +2 -0
  73. package/dist/test/unit/index.d.ts.map +1 -0
  74. package/dist/test/unit/index.js +19 -0
  75. package/dist/test/unit/keyPair.d.ts +2 -0
  76. package/dist/test/unit/keyPair.d.ts.map +1 -0
  77. package/dist/test/unit/keyPair.js +163 -0
  78. package/dist/test/unit/transaction.d.ts +2 -0
  79. package/dist/test/unit/transaction.d.ts.map +1 -0
  80. package/dist/test/unit/transaction.js +38 -0
  81. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts +2 -0
  82. package/dist/test/unit/transactionBuilder/contractCallBuilder.d.ts.map +1 -0
  83. package/dist/test/unit/transactionBuilder/contractCallBuilder.js +315 -0
  84. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts +2 -0
  85. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.d.ts.map +1 -0
  86. package/dist/test/unit/transactionBuilder/delegateResourceTxBuilder.js +339 -0
  87. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts +2 -0
  88. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/transactionBuilder/freezeBalanceTxBuilder.js +365 -0
  90. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  91. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  92. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +55 -0
  93. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts +2 -0
  94. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.d.ts.map +1 -0
  95. package/dist/test/unit/transactionBuilder/undelegateResourceTxBuilder.js +339 -0
  96. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts +2 -0
  97. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.d.ts.map +1 -0
  98. package/dist/test/unit/transactionBuilder/unfreezeBalanceTxBuilder.js +336 -0
  99. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts +2 -0
  100. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.d.ts.map +1 -0
  101. package/dist/test/unit/transactionBuilder/voteWitnessTxBuilder.js +277 -0
  102. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts +2 -0
  103. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.d.ts.map +1 -0
  104. package/dist/test/unit/transactionBuilder/withdrawBalanceBuilder.js +213 -0
  105. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts +2 -0
  106. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.d.ts.map +1 -0
  107. package/dist/test/unit/transactionBuilder/withdrawExpireUnfreezeTxBuilder.js +213 -0
  108. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts +2 -0
  109. package/dist/test/unit/transactionBuilder/wrappedBuilder.d.ts.map +1 -0
  110. package/dist/test/unit/transactionBuilder/wrappedBuilder.js +50 -0
  111. package/dist/test/unit/transactionBuilder.d.ts +2 -0
  112. package/dist/test/unit/transactionBuilder.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder.js +178 -0
  114. package/dist/test/unit/trx.d.ts +2 -0
  115. package/dist/test/unit/trx.d.ts.map +1 -0
  116. package/dist/test/unit/trx.js +639 -0
  117. package/dist/test/unit/util.d.ts +2 -0
  118. package/dist/test/unit/util.d.ts.map +1 -0
  119. package/dist/test/unit/util.js +141 -0
  120. package/dist/test/unit/verifyTransaction.d.ts +2 -0
  121. package/dist/test/unit/verifyTransaction.d.ts.map +1 -0
  122. package/dist/test/unit/verifyTransaction.js +573 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -0
  124. package/package.json +22 -16
  125. package/.eslintignore +0 -5
  126. package/.mocharc.yml +0 -8
  127. package/CHANGELOG.md +0 -134
  128. package/resources/README.md +0 -31
  129. package/resources/protobuf/Contract.proto +0 -256
  130. package/resources/protobuf/Discover.proto +0 -44
  131. package/resources/protobuf/tron.d.ts +0 -11205
  132. package/resources/protobuf/tron.js +0 -33480
  133. package/resources/protobuf/tron.proto +0 -677
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
21
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
22
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
37
  };
@@ -42,6 +56,63 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
42
56
  constructor(_coinConfig) {
43
57
  super(_coinConfig);
44
58
  }
59
+ /** @inheritdoc */
60
+ get transaction() {
61
+ return this._transaction;
62
+ }
63
+ /** @inheritdoc */
64
+ set transaction(transaction) {
65
+ this._transaction = transaction;
66
+ }
67
+ /**
68
+ * Set the source address for the transaction
69
+ *
70
+ * @param {Address} address The source address
71
+ * @returns the builder with the new parameter set
72
+ */
73
+ source(address) {
74
+ this.validateAddress(address);
75
+ this._ownerAddress = (0, utils_1.getHexAddressFromBase58Address)(address.address);
76
+ return this;
77
+ }
78
+ /**
79
+ * Set the timestamp for the transaction
80
+ *
81
+ * @param {number} time the timestamp in milliseconds
82
+ * @returns the builder with the new parameter set
83
+ */
84
+ timestamp(time) {
85
+ this._timestamp = time;
86
+ return this;
87
+ }
88
+ /**
89
+ * Set the block values,
90
+ *
91
+ * @param {Block} block the object containing number and hash of the block
92
+ * @returns the builder with the new parameter set
93
+ */
94
+ block(block) {
95
+ const blockBytes = Buffer.alloc(8);
96
+ blockBytes.writeInt32BE(block.number, 4);
97
+ this._refBlockBytes = blockBytes.slice(6, 8).toString('hex');
98
+ this._refBlockHash = Buffer.from(block.hash, 'hex').slice(8, 16).toString('hex');
99
+ return this;
100
+ }
101
+ /**
102
+ * Set the expiration time for the transaction, set timestamp if it was not set previously
103
+ *
104
+ * @param {number} time the expiration time in milliseconds
105
+ * @returns the builder with the new parameter set
106
+ */
107
+ expiration(time) {
108
+ if (this.transaction.id) {
109
+ throw new sdk_core_1.ExtendTransactionError('Expiration is already set, it can only be extended');
110
+ }
111
+ this._timestamp = this._timestamp || Date.now();
112
+ this.validateExpirationTime(time);
113
+ this._expiration = time;
114
+ return this;
115
+ }
45
116
  /**
46
117
  * Parse transaction takes in raw JSON directly from the node.
47
118
  *
@@ -79,7 +150,7 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
79
150
  const keyPair = new keyPair_1.KeyPair({ prv: key.key });
80
151
  // Since the key pair was generated using a private key, it will always have a prv attribute,
81
152
  // hence it is safe to use non-null operator
82
- signedTransaction = utils_1.signTransaction(keyPair.getKeys().prv, this.transaction.toJson());
153
+ signedTransaction = (0, utils_1.signTransaction)(keyPair.getKeys().prv, this.transaction.toJson());
83
154
  }
84
155
  catch (e) {
85
156
  throw new sdk_core_1.SigningError('Failed to sign transaction via helper.');
@@ -90,6 +161,10 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
90
161
  }
91
162
  return new transaction_1.Transaction(this._coinConfig, signedTransaction);
92
163
  }
164
+ /** @inheritDoc */
165
+ addSignature(publicKey, signature) {
166
+ this.transaction.addSignature(signature);
167
+ }
93
168
  /** @inheritdoc */
94
169
  async buildImplementation() {
95
170
  // This is a no-op since Tron transactions are built from
@@ -123,10 +198,19 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
123
198
  /** @inheritdoc */
124
199
  validateAddress(address) {
125
200
  // assumes a base 58 address for our addresses
126
- if (!utils_1.isBase58Address(address.address)) {
201
+ if (!(0, utils_1.isBase58Address)(address.address)) {
127
202
  throw new Error(address.address + ' is not a valid base58 address.');
128
203
  }
129
204
  }
205
+ /**
206
+ * Helper method to validate the resource type
207
+ * @param resource The resource type to be validated
208
+ */
209
+ validateResource(resource) {
210
+ if (!utils_1.VALID_RESOURCE_TYPES.includes(resource)) {
211
+ throw new Error(resource + ' is not a valid resource type.');
212
+ }
213
+ }
130
214
  /** @inheritdoc */
131
215
  validateKey(key) {
132
216
  try {
@@ -171,13 +255,13 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
171
255
  else {
172
256
  throw new sdk_core_1.InvalidTransactionError('Transaction is not an object or stringified json');
173
257
  }
174
- const decodedRawDataHex = utils_1.decodeTransaction(currTransaction.raw_data_hex);
258
+ const decodedRawDataHex = (0, utils_1.decodeTransaction)(currTransaction.raw_data_hex);
175
259
  if (!currTransaction.txID) {
176
260
  throw new sdk_core_1.InvalidTransactionError('Transaction ID is empty');
177
261
  }
178
262
  // Validate the transaction ID from the raw data hex
179
263
  const hexBuffer = Buffer.from(currTransaction.raw_data_hex, 'hex');
180
- const currTxID = crypto_1.createHash('sha256').update(hexBuffer).digest('hex');
264
+ const currTxID = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
181
265
  if (currTransaction.txID !== currTxID) {
182
266
  throw new sdk_core_1.InvalidTransactionError('Transaction has not have a valid id');
183
267
  }
@@ -197,19 +281,28 @@ class TransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
197
281
  /** @inheritdoc */
198
282
  validateTransaction(transaction) {
199
283
  const hexBuffer = Buffer.from(transaction.toJson().raw_data_hex, 'hex');
200
- const txId = crypto_1.createHash('sha256').update(hexBuffer).digest('hex');
284
+ const txId = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
201
285
  if (transaction.id !== txId) {
202
286
  throw new sdk_core_1.InvalidTransactionError(transaction.id + ' is not a valid transaction id. Expecting: ' + txId);
203
287
  }
204
288
  }
205
- /** @inheritdoc */
206
- get transaction() {
207
- return this._transaction;
208
- }
209
- /** @inheritdoc */
210
- set transaction(transaction) {
211
- this._transaction = transaction;
289
+ /**
290
+ * Validate the expiration time of the transaction
291
+ *
292
+ * @param {number} value The expiration time in milliseconds
293
+ * @throws {InvalidParameterValueError} If the expiration time is invalid
294
+ */
295
+ validateExpirationTime(value) {
296
+ if (value < this._timestamp) {
297
+ throw new sdk_core_1.InvalidParameterValueError('Expiration must be greater than timestamp');
298
+ }
299
+ if (value < Date.now()) {
300
+ throw new sdk_core_1.InvalidParameterValueError('Expiration must be greater than current time');
301
+ }
302
+ if (value - this._timestamp > utils_1.TRANSACTION_MAX_EXPIRATION) {
303
+ throw new sdk_core_1.InvalidParameterValueError('Expiration must not be greater than one day');
304
+ }
212
305
  }
213
306
  }
214
307
  exports.TransactionBuilder = TransactionBuilder;
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQUFvQztBQUNwQywwQ0FBNEI7QUFDNUIsZ0VBQXFDO0FBRXJDLG1EQU84QjtBQUc5QixtQ0FBOEU7QUFDOUUsK0NBQTRDO0FBQzVDLHVDQUFvQztBQUVwQzs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsaUNBQXNCO0lBRzVEOzs7O09BSUc7SUFDSCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDTyxrQkFBa0IsQ0FBQyxjQUEyQztRQUN0RSxJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBQ3RDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0MsRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxFQUFFLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQkFBa0I7SUFDUixrQkFBa0IsQ0FBQyxHQUFZO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM1QixNQUFNLElBQUksdUJBQVksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQ3JEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO1lBQzdCLE1BQU0sSUFBSSx1QkFBWSxDQUFDLDZCQUE2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V0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQTlMRCxnREE4TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgU2lnbmluZ0Vycm9yLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuL2FkZHJlc3MnO1xuaW1wb3J0IHsgc2lnblRyYW5zYWN0aW9uLCBpc0Jhc2U1OEFkZHJlc3MsIGRlY29kZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5cbi8qKlxuICogVHJvbiB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIHRyYW5zYWN0aW9uIGJlaW5nIGJ1aWx0XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHtDb2luQ29uZmlnfSBfY29pbkNvbmZpZyBDb25maWd1cmF0aW9uIG9iamVjdFxuICAgKi9cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIHRyYW5zYWN0aW9uIHRha2VzIGluIHJhdyBKU09OIGRpcmVjdGx5IGZyb20gdGhlIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25SZWNlaXB0fSByYXdUcmFuc2FjdGlvbiBUaGUgVHJvbiB0cmFuc2FjdGlvbiBpbiBKU09OIGZvcm1hdCBhcyByZXR1cm5lZCBieSB0aGUgVHJvbiBsaWIgb3IgYSBzdHJpbmdpZnllZCB2ZXJzaW9uIG9mIHN1Y2ggSlNPTi5cbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9ufSBUcm9uIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmcpOiBUcmFuc2FjdGlvbiB7XG4gICAgbGV0IHR4O1xuICAgIGlmICh0eXBlb2YgcmF3VHJhbnNhY3Rpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCB0cmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgdHJhbnNhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCByYXdUcmFuc2FjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2lnbkltcGxlbWVudGF0aW9uKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaW5wdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gc2VuZGVyJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1RyYW5zYWN0aW9uIGhhcyBubyByZWNlaXZlcicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hcHBseVNpZ25hdHVyZShrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFwcGx5U2lnbmF0dXJlKGtleTogQmFzZUtleSk6IFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBvbGRUcmFuc2FjdGlvbiA9IHRoaXMudHJhbnNhY3Rpb24udG9Kc29uKCk7XG4gICAgLy8gU3RvcmUgdGhlIG9yaWdpbmFsIHNpZ25hdHVyZXMgdG8gY29tcGFyZSB0aGVtIHdpdGggdGhlIG5ldyBvbmVzIGluIGEgbGF0ZXIgc3RlcC4gU2lnbmF0dXJlc1xuICAgIC8vIGNhbiBiZSB1bmRlZmluZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgc2lnbmVkXG4gICAgY29uc3Qgb2xkU2lnbmF0dXJlQ291bnQgPSBvbGRUcmFuc2FjdGlvbi5zaWduYXR1cmUgPyBvbGRUcmFuc2FjdGlvbi5zaWduYXR1cmUubGVuZ3RoIDogMDtcbiAgICBsZXQgc2lnbmVkVHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgICAgLy8gU2luY2UgdGhlIGtleSBwYWlyIHdhcyBnZW5lcmF0ZWQgdXNpbmcgYSBwcml2YXRlIGtleSwgaXQgd2lsbCBhbHdheXMgaGF2ZSBhIHBydiBhdHRyaWJ1dGUsXG4gICAgICAvLyBoZW5jZSBpdCBpcyBzYWZlIHRvIHVzZSBub24tbnVsbCBvcGVyYXRvclxuICAgICAgc2lnbmVkVHJhbnNhY3Rpb24gPSBzaWduVHJhbnNhY3Rpb24oa2V5UGFpci5nZXRLZXlzKCkucHJ2ISwgdGhpcy50cmFuc2FjdGlvbi50b0pzb24oKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignRmFpbGVkIHRvIHNpZ24gdHJhbnNhY3Rpb24gdmlhIGhlbHBlci4nKTtcbiAgICB9XG5cbiAgICAvLyBFbnN1cmUgdGhhdCB3ZSBoYXZlIG1vcmUgc2lnbmF0dXJlcyB0aGFuIHdoYXQgd2Ugc3RhcnRlZCB3aXRoXG4gICAgaWYgKCFzaWduZWRUcmFuc2FjdGlvbi5zaWduYXR1cmUgfHwgb2xkU2lnbmF0dXJlQ291bnQgPj0gc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gc2lnbmluZyBkaWQgbm90IHJldHVybiBhbiBhZGRpdGlvbmFsIHNpZ25hdHVyZS4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHNpZ25lZFRyYW5zYWN0aW9uKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgLy8gVGhpcyBpcyBhIG5vLW9wIHNpbmNlIFRyb24gdHJhbnNhY3Rpb25zIGFyZSBidWlsdCBmcm9tXG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBIHZhbGlkIHRyYW5zYWN0aW9uIG11c3QgaGF2ZSBhbiBpZCcpO1xuICAgIH1cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMudHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZykge1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbih0eCk7XG4gIH1cblxuICAvKipcbiAgICogRXh0ZW5kIHRoZSB2YWxpZGl0eSBvZiB0aGlzIHRyYW5zYWN0aW9uIGJ5IHRoZSBnaXZlbiBhbW91bnQgb2YgdGltZVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZXh0ZW5zaW9uTXMgVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZXh0ZW5kIHRoZSB2YWxpZFRvIHRpbWVcbiAgICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAgICovXG4gIGV4dGVuZFZhbGlkVG8oZXh0ZW5zaW9uTXM6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uZXh0ZW5kRXhwaXJhdGlvbihleHRlbnNpb25Ncyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogQmlnTnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlLmlzTGVzc1RoYW5PckVxdWFsVG8oMCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVmFsdWUgY2Fubm90IGJlIGJlbG93IHplcm8uJyk7XG4gICAgfVxuXG4gICAgLy8gbWF4IGxvbmcgaW4gSmF2YSAtIGFzc3VtZWQgdXBwZXIgbGltaXQgZm9yIGEgVFJYIHRyYW5zYWN0aW9uXG4gICAgaWYgKHZhbHVlLmlzR3JlYXRlclRoYW4obmV3IEJpZ051bWJlcignOTIyMzM3MjAzNjg1NDc3NTgwNycpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIGhhbmRsZWQgYnkgdGhlIGphdmF0cm9uIG5vZGUuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogdm9pZCB7XG4gICAgLy8gYXNzdW1lcyBhIGJhc2UgNTggYWRkcmVzcyBmb3Igb3VyIGFkZHJlc3Nlc1xuICAgIGlmICghaXNCYXNlNThBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihhZGRyZXNzLmFkZHJlc3MgKyAnIGlzIG5vdCBhIHZhbGlkIGJhc2U1OCBhZGRyZXNzLicpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgbmV3IEtleVBhaXIoeyBwcnY6IGtleS5rZXkgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBwcm92aWRlZCBrZXkgaXMgbm90IHZhbGlkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiBhIHJhdyB0cmFuc2FjdGlvbi4gVGhlIHZhbGlkYXRpb25cbiAgICogcGhhc2UgaXMgdG8gY29tcGFyZSB0aGUgcmF3LWRhdGEtaGV4IHRvIHRoZSByYXctZGF0YSBvZiB0aGVcbiAgICogdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRoZSBjb250ZW50cyB0byBiZSB2YWxpZGF0ZWQgYXJlXG4gICAqIDEuIFRoZSB0cmFuc2FjdGlvbiBpZFxuICAgKiAyLiBUaGUgZXhwaXJhdGlvbiBkYXRlXG4gICAqIDMuIFRoZSB0aW1lc3RhbXBcbiAgICogNC4gVGhlIGNvbnRyYWN0XG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nfSByYXdUcmFuc2FjdGlvbiBUaGUgcmF3IHRyYW5zYWN0aW9uIHRvIGJlIHZhbGlkYXRlZFxuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVE9ETzogVmFsaWRhdGlvbiBvZiBzaWduYXR1cmVcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1JhdyB0cmFuc2FjdGlvbiBpcyBlbXB0eScpO1xuICAgIH1cbiAgICBsZXQgY3VyclRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQ7XG4gICAgLy8gcmF3VHJhbnNhY3Rpb24gY2FuIGJlIGVpdGhlciBTdHJpbmdpZmllZCBKU09OIE9SXG4gICAgLy8gaXQgY2FuIGJlIGEgcmVndWxhciBKU09OIG9iamVjdCAobm90IHN0cmluZ2lmaWVkKS5cbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY3VyclRyYW5zYWN0aW9uID0gSlNPTi5wYXJzZShyYXdUcmFuc2FjdGlvbik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ1RoZXJlIHdhcyBlcnJvciBpbiBwYXJzaW5nIHRoZSBKU09OIHN0cmluZycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXy5pc09iamVjdChyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIGN1cnJUcmFuc2FjdGlvbiA9IHJhd1RyYW5zYWN0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGlzIG5vdCBhbiBvYmplY3Qgb3Igc3RyaW5naWZpZWQganNvbicpO1xuICAgIH1cbiAgICBjb25zdCBkZWNvZGVkUmF3RGF0YUhleCA9IGRlY29kZVRyYW5zYWN0aW9uKGN1cnJUcmFuc2FjdGlvbi5yYXdfZGF0YV9oZXgpO1xuICAgIGlmICghY3VyclRyYW5zYWN0aW9uLnR4SUQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gSUQgaXMgZW1wdHknKTtcbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uIElEIGZyb20gdGhlIHJhdyBkYXRhIGhleFxuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGN1cnJUcmFuc2FjdGlvbi5yYXdfZGF0YV9oZXgsICdoZXgnKTtcbiAgICBjb25zdCBjdXJyVHhJRCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShoZXhCdWZmZXIpLmRpZ2VzdCgnaGV4Jyk7XG4gICAgaWYgKGN1cnJUcmFuc2FjdGlvbi50eElEICE9PSBjdXJyVHhJRCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm90IGhhdmUgYSB2YWxpZCBpZCcpO1xuICAgIH1cbiAgICAvLyBWYWxpZGF0ZSB0aGUgZXhwaXJhdGlvbiB0aW1lIGZyb20gdGhlIHJhdy1kYXRhLWhleFxuICAgIGlmIChjdXJyVHJhbnNhY3Rpb24ucmF3X2RhdGEuZXhwaXJhdGlvbiAhPT0gZGVjb2RlZFJhd0RhdGFIZXguZXhwaXJhdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm90IGhhdmUgYSB2YWxpZCBleHBpcmF0aW9uJyk7XG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIHRoZSB0aW1lc3RhbXAgZnJvbSB0aGUgcmF3LWRhdGEtaGV4XG4gICAgaWYgKGN1cnJUcmFuc2FjdGlvbi5yYXdfZGF0YS50aW1lc3RhbXAgIT09IGRlY29kZWRSYXdEYXRhSGV4LnRpbWVzdGFtcCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm90IGhhdmUgYSB2YWxpZCB0aW1ldGFtcCcpO1xuICAgIH1cbiAgICAvLyBUcmFuc2FjdGlvbiBjb250cmFjdCBtdXN0IGV4aXN0XG4gICAgaWYgKCFjdXJyVHJhbnNhY3Rpb24ucmF3X2RhdGEuY29udHJhY3QpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gY29udHJhY3RzIGFyZSBlbXB0eScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGhleEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRyYW5zYWN0aW9uLnRvSnNvbigpLnJhd19kYXRhX2hleCwgJ2hleCcpO1xuICAgIGNvbnN0IHR4SWQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGV4QnVmZmVyKS5kaWdlc3QoJ2hleCcpO1xuICAgIGlmICh0cmFuc2FjdGlvbi5pZCAhPT0gdHhJZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKHRyYW5zYWN0aW9uLmlkICsgJyBpcyBub3QgYSB2YWxpZCB0cmFuc2FjdGlvbiBpZC4gRXhwZWN0aW5nOiAnICsgdHhJZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgc2V0IHRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbikge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW9DO0FBQ3BDLDBDQUE0QjtBQUM1QixnRUFBcUM7QUFFckMsbURBVThCO0FBRzlCLG1DQU9pQjtBQUNqQiwrQ0FBNEM7QUFDNUMsdUNBQW9DO0FBRXBDOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxpQ0FBc0I7SUFTNUQ7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQXdCO1FBQ2hELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFnQjtRQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBQSxzQ0FBOEIsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUFZO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpGLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLElBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxpQ0FBc0IsQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNPLGtCQUFrQixDQUFDLGNBQTJDO1FBQ3RFLElBQUksRUFBRSxDQUFDO1FBQ1AsSUFBSSxPQUFPLGNBQWMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9DLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksdUJBQVksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM5QixNQUFNLElBQUksdUJBQVksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxHQUFZO1FBQ25DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakQsOEZBQThGO1FBQzlGLDZFQUE2RTtRQUM3RSxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsSUFBSSxpQkFBcUMsQ0FBQztRQUMxQyxJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUMsNkZBQTZGO1lBQzdGLDRDQUE0QztZQUM1QyxpQkFBaUIsR0FBRyxJQUFBLHVCQUFlLEVBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDekYsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksdUJBQVksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUYsTUFBTSxJQUFJLHVCQUFZLENBQUMsNkRBQTZELENBQUMsQ0FBQztRQUN4RixDQUFDO1FBRUQsT0FBTyxJQUFJLHlCQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMseURBQXlEO1FBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBK0I7UUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLFdBQW1CO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixhQUFhLENBQUMsS0FBZ0I7UUFDNUIsSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELCtEQUErRDtRQUMvRCxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxzQkFBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlELE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlLENBQUMsT0FBZ0I7UUFDOUIsOENBQThDO1FBQzlDLElBQUksQ0FBQyxJQUFBLHVCQUFlLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLGlDQUFpQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxRQUFnQjtRQUMvQixJQUFJLENBQUMsNEJBQW9CLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsZ0NBQWdDLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXLENBQUMsR0FBWTtRQUN0QixJQUFJLENBQUM7WUFDSCxJQUFJLGlCQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxzQkFBc0IsQ0FBQyxjQUEyQztRQUNoRSxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLGVBQW1DLENBQUM7UUFDeEMsbURBQW1EO1FBQ25ELHFEQUFxRDtRQUNyRCxJQUFJLE9BQU8sY0FBYyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQztnQkFDSCxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksZ0NBQXFCLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUNoRixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3RDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksa0NBQXVCLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLHlCQUFpQixFQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxvREFBb0Q7UUFDcEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLElBQUksZUFBZSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksa0NBQXVCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QscURBQXFEO1FBQ3JELElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEtBQUssaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDekUsTUFBTSxJQUFJLGtDQUF1QixDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUNELCtDQUErQztRQUMvQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFDRCxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsV0FBd0I7UUFDMUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xFLElBQUksV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksa0NBQXVCLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyw2Q0FBNkMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMzRyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsc0JBQXNCLENBQUMsS0FBYTtRQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUVELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxxQ0FBMEIsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLGtDQUEwQixFQUFFLENBQUM7WUFDekQsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTdSRCxnREE2UkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIsXG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFBhcnNlVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5IGFzIEJhc2VQdWJsaWNLZXksXG4gIFNpZ25pbmdFcnJvcixcbiAgRXh0ZW5kVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVjZWlwdCwgQmxvY2sgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEFkZHJlc3MgfSBmcm9tICcuL2FkZHJlc3MnO1xuaW1wb3J0IHtcbiAgc2lnblRyYW5zYWN0aW9uLFxuICBpc0Jhc2U1OEFkZHJlc3MsXG4gIGRlY29kZVRyYW5zYWN0aW9uLFxuICBWQUxJRF9SRVNPVVJDRV9UWVBFUyxcbiAgZ2V0SGV4QWRkcmVzc0Zyb21CYXNlNThBZGRyZXNzLFxuICBUUkFOU0FDVElPTl9NQVhfRVhQSVJBVElPTixcbn0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5cbi8qKlxuICogVHJvbiB0cmFuc2FjdGlvbiBidWlsZGVyLlxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIC8vIHRyYW5zYWN0aW9uIGJlaW5nIGJ1aWx0XG4gIHByaXZhdGUgX3RyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9vd25lckFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9yZWZCbG9ja0J5dGVzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcmVmQmxvY2tIYXNoOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZXhwaXJhdGlvbjogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RpbWVzdGFtcDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29pbkNvbmZpZ30gX2NvaW5Db25maWcgQ29uZmlndXJhdGlvbiBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge0FkZHJlc3N9IGFkZHJlc3MgVGhlIHNvdXJjZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHRoZSBidWlsZGVyIHdpdGggdGhlIG5ldyBwYXJhbWV0ZXIgc2V0XG4gICAqL1xuICBzb3VyY2UoYWRkcmVzczogQWRkcmVzcyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKGFkZHJlc3MpO1xuICAgIHRoaXMuX293bmVyQWRkcmVzcyA9IGdldEhleEFkZHJlc3NGcm9tQmFzZTU4QWRkcmVzcyhhZGRyZXNzLmFkZHJlc3MpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdGltZXN0YW1wIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWUgdGhlIHRpbWVzdGFtcCBpbiBtaWxsaXNlY29uZHNcbiAgICogQHJldHVybnMgdGhlIGJ1aWxkZXIgd2l0aCB0aGUgbmV3IHBhcmFtZXRlciBzZXRcbiAgICovXG4gIHRpbWVzdGFtcCh0aW1lOiBudW1iZXIpOiB0aGlzIHtcbiAgICB0aGlzLl90aW1lc3RhbXAgPSB0aW1lO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYmxvY2sgdmFsdWVzLFxuICAgKlxuICAgKiBAcGFyYW0ge0Jsb2NrfSBibG9jayB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgbnVtYmVyIGFuZCBoYXNoIG9mIHRoZSBibG9ja1xuICAgKiBAcmV0dXJucyB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgYmxvY2soYmxvY2s6IEJsb2NrKTogdGhpcyB7XG4gICAgY29uc3QgYmxvY2tCeXRlcyA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBibG9ja0J5dGVzLndyaXRlSW50MzJCRShibG9jay5udW1iZXIsIDQpO1xuICAgIHRoaXMuX3JlZkJsb2NrQnl0ZXMgPSBibG9ja0J5dGVzLnNsaWNlKDYsIDgpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICB0aGlzLl9yZWZCbG9ja0hhc2ggPSBCdWZmZXIuZnJvbShibG9jay5oYXNoLCAnaGV4Jykuc2xpY2UoOCwgMTYpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZXhwaXJhdGlvbiB0aW1lIGZvciB0aGUgdHJhbnNhY3Rpb24sIHNldCB0aW1lc3RhbXAgaWYgaXQgd2FzIG5vdCBzZXQgcHJldmlvdXNseVxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZSB0aGUgZXhwaXJhdGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kc1xuICAgKiBAcmV0dXJucyB0aGUgYnVpbGRlciB3aXRoIHRoZSBuZXcgcGFyYW1ldGVyIHNldFxuICAgKi9cbiAgZXhwaXJhdGlvbih0aW1lOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pZCkge1xuICAgICAgdGhyb3cgbmV3IEV4dGVuZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGlyYXRpb24gaXMgYWxyZWFkeSBzZXQsIGl0IGNhbiBvbmx5IGJlIGV4dGVuZGVkJyk7XG4gICAgfVxuICAgIHRoaXMuX3RpbWVzdGFtcCA9IHRoaXMuX3RpbWVzdGFtcCB8fCBEYXRlLm5vdygpO1xuICAgIHRoaXMudmFsaWRhdGVFeHBpcmF0aW9uVGltZSh0aW1lKTtcbiAgICB0aGlzLl9leHBpcmF0aW9uID0gdGltZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSB0cmFuc2FjdGlvbiB0YWtlcyBpbiByYXcgSlNPTiBkaXJlY3RseSBmcm9tIHRoZSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUmVjZWlwdH0gcmF3VHJhbnNhY3Rpb24gVGhlIFRyb24gdHJhbnNhY3Rpb24gaW4gSlNPTiBmb3JtYXQgYXMgcmV0dXJuZWQgYnkgdGhlIFRyb24gbGliIG9yIGEgc3RyaW5naWZ5ZWQgdmVyc2lvbiBvZiBzdWNoIEpTT04uXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbn0gVHJvbiB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGxldCB0eDtcbiAgICBpZiAodHlwZW9mIHJhd1RyYW5zYWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgdHJhbnNhY3Rpb24gPSBKU09OLnBhcnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIHR4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcsIHRyYW5zYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHggPSBuZXcgVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZywgcmF3VHJhbnNhY3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIHNlbmRlcicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICB0aHJvdyBuZXcgU2lnbmluZ0Vycm9yKCdUcmFuc2FjdGlvbiBoYXMgbm8gcmVjZWl2ZXInKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlTaWduYXR1cmUoa2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhcHBseVNpZ25hdHVyZShrZXk6IEJhc2VLZXkpOiBUcmFuc2FjdGlvbiB7XG4gICAgY29uc3Qgb2xkVHJhbnNhY3Rpb24gPSB0aGlzLnRyYW5zYWN0aW9uLnRvSnNvbigpO1xuICAgIC8vIFN0b3JlIHRoZSBvcmlnaW5hbCBzaWduYXR1cmVzIHRvIGNvbXBhcmUgdGhlbSB3aXRoIHRoZSBuZXcgb25lcyBpbiBhIGxhdGVyIHN0ZXAuIFNpZ25hdHVyZXNcbiAgICAvLyBjYW4gYmUgdW5kZWZpbmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGJlaW5nIHNpZ25lZFxuICAgIGNvbnN0IG9sZFNpZ25hdHVyZUNvdW50ID0gb2xkVHJhbnNhY3Rpb24uc2lnbmF0dXJlID8gb2xkVHJhbnNhY3Rpb24uc2lnbmF0dXJlLmxlbmd0aCA6IDA7XG4gICAgbGV0IHNpZ25lZFRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlY2VpcHQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGtleVBhaXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICAgIC8vIFNpbmNlIHRoZSBrZXkgcGFpciB3YXMgZ2VuZXJhdGVkIHVzaW5nIGEgcHJpdmF0ZSBrZXksIGl0IHdpbGwgYWx3YXlzIGhhdmUgYSBwcnYgYXR0cmlidXRlLFxuICAgICAgLy8gaGVuY2UgaXQgaXMgc2FmZSB0byB1c2Ugbm9uLW51bGwgb3BlcmF0b3JcbiAgICAgIHNpZ25lZFRyYW5zYWN0aW9uID0gc2lnblRyYW5zYWN0aW9uKGtleVBhaXIuZ2V0S2V5cygpLnBydiEsIHRoaXMudHJhbnNhY3Rpb24udG9Kc29uKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ0ZhaWxlZCB0byBzaWduIHRyYW5zYWN0aW9uIHZpYSBoZWxwZXIuJyk7XG4gICAgfVxuXG4gICAgLy8gRW5zdXJlIHRoYXQgd2UgaGF2ZSBtb3JlIHNpZ25hdHVyZXMgdGhhbiB3aGF0IHdlIHN0YXJ0ZWQgd2l0aFxuICAgIGlmICghc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmF0dXJlIHx8IG9sZFNpZ25hdHVyZUNvdW50ID49IHNpZ25lZFRyYW5zYWN0aW9uLnNpZ25hdHVyZS5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ1RyYW5zYWN0aW9uIHNpZ25pbmcgZGlkIG5vdCByZXR1cm4gYW4gYWRkaXRpb25hbCBzaWduYXR1cmUuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCBzaWduZWRUcmFuc2FjdGlvbik7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogQmFzZVB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICAvLyBUaGlzIGlzIGEgbm8tb3Agc2luY2UgVHJvbiB0cmFuc2FjdGlvbnMgYXJlIGJ1aWx0IGZyb21cbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24uaWQpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0EgdmFsaWQgdHJhbnNhY3Rpb24gbXVzdCBoYXZlIGFuIGlkJyk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy50cmFuc2FjdGlvbik7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb25SZWNlaXB0IHwgc3RyaW5nKSB7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHRoaXMuZnJvbUltcGxlbWVudGF0aW9uKHR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgdGhlIHZhbGlkaXR5IG9mIHRoaXMgdHJhbnNhY3Rpb24gYnkgdGhlIGdpdmVuIGFtb3VudCBvZiB0aW1lXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBleHRlbnNpb25NcyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBleHRlbmQgdGhlIHZhbGlkVG8gdGltZVxuICAgKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0ZW5kVmFsaWRUbyhleHRlbnNpb25NczogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5leHRlbmRFeHBpcmF0aW9uKGV4dGVuc2lvbk1zKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBjYW5ub3QgYmUgYmVsb3cgemVyby4nKTtcbiAgICB9XG5cbiAgICAvLyBtYXggbG9uZyBpbiBKYXZhIC0gYXNzdW1lZCB1cHBlciBsaW1pdCBmb3IgYSBUUlggdHJhbnNhY3Rpb25cbiAgICBpZiAodmFsdWUuaXNHcmVhdGVyVGhhbihuZXcgQmlnTnVtYmVyKCc5MjIzMzcyMDM2ODU0Nzc1ODA3JykpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFuZGxlZCBieSB0aGUgamF2YXRyb24gbm9kZS4nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVBZGRyZXNzKGFkZHJlc3M6IEFkZHJlc3MpOiB2b2lkIHtcbiAgICAvLyBhc3N1bWVzIGEgYmFzZSA1OCBhZGRyZXNzIGZvciBvdXIgYWRkcmVzc2VzXG4gICAgaWYgKCFpc0Jhc2U1OEFkZHJlc3MoYWRkcmVzcy5hZGRyZXNzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGFkZHJlc3MuYWRkcmVzcyArICcgaXMgbm90IGEgdmFsaWQgYmFzZTU4IGFkZHJlc3MuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gdmFsaWRhdGUgdGhlIHJlc291cmNlIHR5cGVcbiAgICogQHBhcmFtIHJlc291cmNlIFRoZSByZXNvdXJjZSB0eXBlIHRvIGJlIHZhbGlkYXRlZFxuICAgKi9cbiAgdmFsaWRhdGVSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFWQUxJRF9SRVNPVVJDRV9UWVBFUy5pbmNsdWRlcyhyZXNvdXJjZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihyZXNvdXJjZSArICcgaXMgbm90IGEgdmFsaWQgcmVzb3VyY2UgdHlwZS4nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVLZXkoa2V5OiBCYXNlS2V5KTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgcHJvdmlkZWQga2V5IGlzIG5vdCB2YWxpZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgY29udGVudHMgb2YgYSByYXcgdHJhbnNhY3Rpb24uIFRoZSB2YWxpZGF0aW9uXG4gICAqIHBoYXNlIGlzIHRvIGNvbXBhcmUgdGhlIHJhdy1kYXRhLWhleCB0byB0aGUgcmF3LWRhdGEgb2YgdGhlXG4gICAqIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBUaGUgY29udGVudHMgdG8gYmUgdmFsaWRhdGVkIGFyZVxuICAgKiAxLiBUaGUgdHJhbnNhY3Rpb24gaWRcbiAgICogMi4gVGhlIGV4cGlyYXRpb24gZGF0ZVxuICAgKiAzLiBUaGUgdGltZXN0YW1wXG4gICAqIDQuIFRoZSBjb250cmFjdFxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZ30gcmF3VHJhbnNhY3Rpb24gVGhlIHJhdyB0cmFuc2FjdGlvbiB0byBiZSB2YWxpZGF0ZWRcbiAgICovXG4gIHZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIFRPRE86IFZhbGlkYXRpb24gb2Ygc2lnbmF0dXJlXG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdSYXcgdHJhbnNhY3Rpb24gaXMgZW1wdHknKTtcbiAgICB9XG4gICAgbGV0IGN1cnJUcmFuc2FjdGlvbjogVHJhbnNhY3Rpb25SZWNlaXB0O1xuICAgIC8vIHJhd1RyYW5zYWN0aW9uIGNhbiBiZSBlaXRoZXIgU3RyaW5naWZpZWQgSlNPTiBPUlxuICAgIC8vIGl0IGNhbiBiZSBhIHJlZ3VsYXIgSlNPTiBvYmplY3QgKG5vdCBzdHJpbmdpZmllZCkuXG4gICAgaWYgKHR5cGVvZiByYXdUcmFuc2FjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGN1cnJUcmFuc2FjdGlvbiA9IEpTT04ucGFyc2UocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdUaGVyZSB3YXMgZXJyb3IgaW4gcGFyc2luZyB0aGUgSlNPTiBzdHJpbmcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKF8uaXNPYmplY3QocmF3VHJhbnNhY3Rpb24pKSB7XG4gICAgICBjdXJyVHJhbnNhY3Rpb24gPSByYXdUcmFuc2FjdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiBpcyBub3QgYW4gb2JqZWN0IG9yIHN0cmluZ2lmaWVkIGpzb24nKTtcbiAgICB9XG4gICAgY29uc3QgZGVjb2RlZFJhd0RhdGFIZXggPSBkZWNvZGVUcmFuc2FjdGlvbihjdXJyVHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4KTtcbiAgICBpZiAoIWN1cnJUcmFuc2FjdGlvbi50eElEKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIElEIGlzIGVtcHR5Jyk7XG4gICAgfVxuICAgIC8vIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbiBJRCBmcm9tIHRoZSByYXcgZGF0YSBoZXhcbiAgICBjb25zdCBoZXhCdWZmZXIgPSBCdWZmZXIuZnJvbShjdXJyVHJhbnNhY3Rpb24ucmF3X2RhdGFfaGV4LCAnaGV4Jyk7XG4gICAgY29uc3QgY3VyclR4SUQgPSBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoaGV4QnVmZmVyKS5kaWdlc3QoJ2hleCcpO1xuICAgIGlmIChjdXJyVHJhbnNhY3Rpb24udHhJRCAhPT0gY3VyclR4SUQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vdCBoYXZlIGEgdmFsaWQgaWQnKTtcbiAgICB9XG4gICAgLy8gVmFsaWRhdGUgdGhlIGV4cGlyYXRpb24gdGltZSBmcm9tIHRoZSByYXctZGF0YS1oZXhcbiAgICBpZiAoY3VyclRyYW5zYWN0aW9uLnJhd19kYXRhLmV4cGlyYXRpb24gIT09IGRlY29kZWRSYXdEYXRhSGV4LmV4cGlyYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vdCBoYXZlIGEgdmFsaWQgZXhwaXJhdGlvbicpO1xuICAgIH1cbiAgICAvLyBWYWxpZGF0ZSB0aGUgdGltZXN0YW1wIGZyb20gdGhlIHJhdy1kYXRhLWhleFxuICAgIGlmIChjdXJyVHJhbnNhY3Rpb24ucmF3X2RhdGEudGltZXN0YW1wICE9PSBkZWNvZGVkUmF3RGF0YUhleC50aW1lc3RhbXApIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vdCBoYXZlIGEgdmFsaWQgdGltZXRhbXAnKTtcbiAgICB9XG4gICAgLy8gVHJhbnNhY3Rpb24gY29udHJhY3QgbXVzdCBleGlzdFxuICAgIGlmICghY3VyclRyYW5zYWN0aW9uLnJhd19kYXRhLmNvbnRyYWN0KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ1RyYW5zYWN0aW9uIGNvbnRyYWN0cyBhcmUgZW1wdHknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBoZXhCdWZmZXIgPSBCdWZmZXIuZnJvbSh0cmFuc2FjdGlvbi50b0pzb24oKS5yYXdfZGF0YV9oZXgsICdoZXgnKTtcbiAgICBjb25zdCB0eElkID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGhleEJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbiAgICBpZiAodHJhbnNhY3Rpb24uaWQgIT09IHR4SWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcih0cmFuc2FjdGlvbi5pZCArICcgaXMgbm90IGEgdmFsaWQgdHJhbnNhY3Rpb24gaWQuIEV4cGVjdGluZzogJyArIHR4SWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZXhwaXJhdGlvbiB0aW1lIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIGV4cGlyYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICogQHRocm93cyB7SW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3J9IElmIHRoZSBleHBpcmF0aW9uIHRpbWUgaXMgaW52YWxpZFxuICAgKi9cbiAgdmFsaWRhdGVFeHBpcmF0aW9uVGltZSh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlIDwgdGhpcy5fdGltZXN0YW1wKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0V4cGlyYXRpb24gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGltZXN0YW1wJyk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlIDwgRGF0ZS5ub3coKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdFeHBpcmF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIGN1cnJlbnQgdGltZScpO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAtIHRoaXMuX3RpbWVzdGFtcCA+IFRSQU5TQUNUSU9OX01BWF9FWFBJUkFUSU9OKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ0V4cGlyYXRpb24gbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG9uZSBkYXknKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionReceipt } from './iface';
4
+ import { ResourceManagementTxBuilder } from './resourceManagementTxBuilder';
5
+ export declare class UndelegateResourceTxBuilder extends ResourceManagementTxBuilder {
6
+ constructor(_coinConfig: Readonly<CoinConfig>);
7
+ /** @inheritdoc */
8
+ protected get transactionType(): TransactionType;
9
+ /**
10
+ * Initialize the transaction builder fields using the transaction data
11
+ *
12
+ * @param {TransactionReceipt | string} rawTransaction the transaction data in a string or JSON format
13
+ * @returns {DelegateResourceTxBuilder} the builder with the transaction data set
14
+ */
15
+ initBuilder(rawTransaction: TransactionReceipt | string): this;
16
+ /**
17
+ * Helper method to create the undelegate resource transaction
18
+ */
19
+ protected createResourceManagementTransaction(): void;
20
+ /**
21
+ * Helper method to get the undelegate resource transaction raw data hex
22
+ *
23
+ * @returns {string} the undelegate resource transaction raw data hex
24
+ */
25
+ protected getResourceManagementTxRawDataHex(): string;
26
+ }
27
+ //# sourceMappingURL=undelegateResourceTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undelegateResourceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/undelegateResourceTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAG7D,OAAO,EAAE,kBAAkB,EAA8B,MAAM,SAAS,CAAC;AAIzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAI5E,qBAAa,2BAA4B,SAAQ,2BAA2B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;OAKG;IACH,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAgB9D;;OAEG;IACH,SAAS,CAAC,mCAAmC,IAAI,IAAI;IAsBrD;;;;OAIG;IACH,SAAS,CAAC,iCAAiC,IAAI,MAAM;CAwCtD"}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UndelegateResourceTxBuilder = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
6
+ const transaction_1 = require("./transaction");
7
+ const constants_1 = require("./constants");
8
+ const utils_1 = require("./utils");
9
+ const tron_1 = require("../../resources/protobuf/tron");
10
+ const resourceManagementTxBuilder_1 = require("./resourceManagementTxBuilder");
11
+ var ContractType = tron_1.protocol.Transaction.Contract.ContractType;
12
+ class UndelegateResourceTxBuilder extends resourceManagementTxBuilder_1.ResourceManagementTxBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ }
16
+ /** @inheritdoc */
17
+ get transactionType() {
18
+ return sdk_core_1.TransactionType.UnDelegateResource;
19
+ }
20
+ /**
21
+ * Initialize the transaction builder fields using the transaction data
22
+ *
23
+ * @param {TransactionReceipt | string} rawTransaction the transaction data in a string or JSON format
24
+ * @returns {DelegateResourceTxBuilder} the builder with the transaction data set
25
+ */
26
+ initBuilder(rawTransaction) {
27
+ this.validateRawTransaction(rawTransaction);
28
+ const tx = this.fromImplementation(rawTransaction);
29
+ this.transaction = tx;
30
+ this._signingKeys = [];
31
+ const rawData = tx.toJson().raw_data;
32
+ this._refBlockBytes = rawData.ref_block_bytes;
33
+ this._refBlockHash = rawData.ref_block_hash;
34
+ this._expiration = rawData.expiration;
35
+ this._timestamp = rawData.timestamp;
36
+ this.transaction.setTransactionType(sdk_core_1.TransactionType.UnDelegateResource);
37
+ const contractCall = rawData.contract[0];
38
+ this.initResourceManagementContractCall(contractCall);
39
+ return this;
40
+ }
41
+ /**
42
+ * Helper method to create the undelegate resource transaction
43
+ */
44
+ createResourceManagementTransaction() {
45
+ const rawDataHex = this.getResourceManagementTxRawDataHex();
46
+ const rawData = (0, utils_1.decodeTransaction)(rawDataHex);
47
+ const contract = rawData.contract[0];
48
+ const contractParameter = contract.parameter;
49
+ contractParameter.value.owner_address = this._ownerAddress.toLocaleLowerCase();
50
+ contractParameter.value.balance = Number(this._balance);
51
+ contractParameter.value.receiver_address = this._receiverAddress.toLocaleLowerCase();
52
+ contractParameter.value.resource = this._resource;
53
+ contractParameter.type_url = constants_1.UNDELEGATION_TYPE_URL;
54
+ contract.type = 'UnDelegateResourceContract';
55
+ const hexBuffer = Buffer.from(rawDataHex, 'hex');
56
+ const id = (0, crypto_1.createHash)('sha256').update(hexBuffer).digest('hex');
57
+ const txReceipt = {
58
+ raw_data: rawData,
59
+ raw_data_hex: rawDataHex,
60
+ txID: id,
61
+ signature: this.transaction.signature,
62
+ };
63
+ this.transaction = new transaction_1.Transaction(this._coinConfig, txReceipt);
64
+ }
65
+ /**
66
+ * Helper method to get the undelegate resource transaction raw data hex
67
+ *
68
+ * @returns {string} the undelegate resource transaction raw data hex
69
+ */
70
+ getResourceManagementTxRawDataHex() {
71
+ const rawContract = {
72
+ ownerAddress: (0, utils_1.getByteArrayFromHexAddress)(this._ownerAddress),
73
+ receiverAddress: (0, utils_1.getByteArrayFromHexAddress)(this._receiverAddress),
74
+ balance: this._balance,
75
+ };
76
+ // Only include resource if it's not BANDWIDTH (the default value = 0)
77
+ // In protobuf3, default values are typically not encoded in the wire format.
78
+ // TRON's node re-serializes transactions and omits default values,
79
+ // so we must match that behavior to ensure consistent transaction hashes.
80
+ if (this._resource !== 'BANDWIDTH') {
81
+ rawContract.resource = this._resource;
82
+ }
83
+ const undelegateResourceContract = tron_1.protocol.UnDelegateResourceContract.fromObject(rawContract);
84
+ const undelegateResourceContractBytes = tron_1.protocol.UnDelegateResourceContract.encode(undelegateResourceContract).finish();
85
+ const txContract = {
86
+ type: ContractType.UnDelegateResourceContract,
87
+ parameter: {
88
+ value: undelegateResourceContractBytes,
89
+ type_url: constants_1.UNDELEGATION_TYPE_URL,
90
+ },
91
+ };
92
+ const raw = {
93
+ refBlockBytes: Buffer.from(this._refBlockBytes, 'hex'),
94
+ refBlockHash: Buffer.from(this._refBlockHash, 'hex'),
95
+ expiration: this._expiration || Date.now() + utils_1.TRANSACTION_DEFAULT_EXPIRATION,
96
+ timestamp: this._timestamp || Date.now(),
97
+ contract: [txContract],
98
+ };
99
+ const rawTx = tron_1.protocol.Transaction.raw.create(raw);
100
+ return Buffer.from(tron_1.protocol.Transaction.raw.encode(rawTx).finish()).toString('hex');
101
+ }
102
+ }
103
+ exports.UndelegateResourceTxBuilder = UndelegateResourceTxBuilder;
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bmRlbGVnYXRlUmVzb3VyY2VUeEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQW9DO0FBQ3BDLG1EQUF1RDtBQUd2RCwrQ0FBNEM7QUFFNUMsMkNBQW9EO0FBQ3BELG1DQUF3RztBQUN4Ryx3REFBeUQ7QUFDekQsK0VBQTRFO0FBRTVFLElBQU8sWUFBWSxHQUFHLGVBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUVqRSxNQUFhLDJCQUE0QixTQUFRLHlEQUEyQjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLGNBQTJDO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM1QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9B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QUFRLEVBQUUsaUNBQXFCO2FBQ2hDO1NBQ0YsQ0FBQztRQUNGLE1BQU0sR0FBRyxHQUFHO1lBQ1YsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUM7WUFDdEQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUM7WUFDcEQsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLHNDQUE4QjtZQUMzRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3hDLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQztTQUN2QixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsZUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEYsQ0FBQztDQUNGO0FBdEdELGtFQXNHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZWNlaXB0LCBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVU5ERUxFR0FUSU9OX1RZUEVfVVJMIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZGVjb2RlVHJhbnNhY3Rpb24sIGdldEJ5dGVBcnJheUZyb21IZXhBZGRyZXNzLCBUUkFOU0FDVElPTl9ERUZBVUxUX0VYUElSQVRJT04gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHByb3RvY29sIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzL3Byb3RvYnVmL3Ryb24nO1xuaW1wb3J0IHsgUmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyIH0gZnJvbSAnLi9yZXNvdXJjZU1hbmFnZW1lbnRUeEJ1aWxkZXInO1xuXG5pbXBvcnQgQ29udHJhY3RUeXBlID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24uQ29udHJhY3QuQ29udHJhY3RUeXBlO1xuXG5leHBvcnQgY2xhc3MgVW5kZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyIGV4dGVuZHMgUmVzb3VyY2VNYW5hZ2VtZW50VHhCdWlsZGVyIHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5VbkRlbGVnYXRlUmVzb3VyY2U7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblJlY2VpcHQgfCBzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGEgc3RyaW5nIG9yIEpTT04gZm9ybWF0XG4gICAqIEByZXR1cm5zIHtEZWxlZ2F0ZVJlc291cmNlVHhCdWlsZGVyfSB0aGUgYnVpbGRlciB3aXRoIHRoZSB0cmFuc2FjdGlvbiBkYXRhIHNldFxuICAgKi9cbiAgaW5pdEJ1aWxkZXIocmF3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uUmVjZWlwdCB8IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgdHggPSB0aGlzLmZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHR4O1xuICAgIHRoaXMuX3NpZ25pbmdLZXlzID0gW107XG4gICAgY29uc3QgcmF3RGF0YSA9IHR4LnRvSnNvbigpLnJhd19kYXRhO1xuICAgIHRoaXMuX3JlZkJsb2NrQnl0ZXMgPSByYXdEYXRhLnJlZl9ibG9ja19ieXRlcztcbiAgICB0aGlzLl9yZWZCbG9ja0hhc2ggPSByYXdEYXRhLnJlZl9ibG9ja19oYXNoO1xuICAgIHRoaXMuX2V4cGlyYXRpb24gPSByYXdEYXRhLmV4cGlyYXRpb247XG4gICAgdGhpcy5fdGltZXN0YW1wID0gcmF3RGF0YS50aW1lc3RhbXA7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLlVuRGVsZWdhdGVSZXNvdXJjZSk7XG4gICAgY29uc3QgY29udHJhY3RDYWxsID0gcmF3RGF0YS5jb250cmFjdFswXSBhcyBSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdDtcbiAgICB0aGlzLmluaXRSZXNvdXJjZU1hbmFnZW1lbnRDb250cmFjdENhbGwoY29udHJhY3RDYWxsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGNyZWF0ZSB0aGUgdW5kZWxlZ2F0ZSByZXNvdXJjZSB0cmFuc2FjdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlc291cmNlTWFuYWdlbWVudFRyYW5zYWN0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHJhd0RhdGFIZXggPSB0aGlzLmdldFJlc291cmNlTWFuYWdlbWVudFR4UmF3RGF0YUhleCgpO1xuICAgIGNvbnN0IHJhd0RhdGEgPSBkZWNvZGVUcmFuc2FjdGlvbihyYXdEYXRhSGV4KTtcbiAgICBjb25zdCBjb250cmFjdCA9IHJhd0RhdGEuY29udHJhY3RbMF0gYXMgUmVzb3VyY2VNYW5hZ2VtZW50Q29udHJhY3Q7XG4gICAgY29uc3QgY29udHJhY3RQYXJhbWV0ZXIgPSBjb250cmFjdC5wYXJhbWV0ZXI7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUub3duZXJfYWRkcmVzcyA9IHRoaXMuX293bmVyQWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLmJhbGFuY2UgPSBOdW1iZXIodGhpcy5fYmFsYW5jZSk7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudmFsdWUucmVjZWl2ZXJfYWRkcmVzcyA9IHRoaXMuX3JlY2VpdmVyQWRkcmVzcy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnRyYWN0UGFyYW1ldGVyLnZhbHVlLnJlc291cmNlID0gdGhpcy5fcmVzb3VyY2U7XG4gICAgY29udHJhY3RQYXJhbWV0ZXIudHlwZV91cmwgPSBVTkRFTEVHQVRJT05fVFlQRV9VUkw7XG4gICAgY29udHJhY3QudHlwZSA9ICdVbkRlbGVnYXRlUmVzb3VyY2VDb250cmFjdCc7XG4gICAgY29uc3QgaGV4QnVmZmVyID0gQnVmZmVyLmZyb20ocmF3RGF0YUhleCwgJ2hleCcpO1xuICAgIGNvbnN0IGlkID0gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGhleEJ1ZmZlcikuZGlnZXN0KCdoZXgnKTtcbiAgICBjb25zdCB0eFJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICAgIHJhd19kYXRhOiByYXdEYXRhLFxuICAgICAgcmF3X2RhdGFfaGV4OiByYXdEYXRhSGV4LFxuICAgICAgdHhJRDogaWQsXG4gICAgICBzaWduYXR1cmU6IHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlLFxuICAgIH07XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnLCB0eFJlY2VpcHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gZ2V0IHRoZSB1bmRlbGVnYXRlIHJlc291cmNlIHRyYW5zYWN0aW9uIHJhdyBkYXRhIGhleFxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgdW5kZWxlZ2F0ZSByZXNvdXJjZSB0cmFuc2FjdGlvbiByYXcgZGF0YSBoZXhcbiAgICovXG4gIHByb3RlY3RlZCBnZXRSZXNvdXJjZU1hbmFnZW1lbnRUeFJhd0RhdGFIZXgoKTogc3RyaW5nIHtcbiAgICBjb25zdCByYXdDb250cmFjdDoge1xuICAgICAgb3duZXJBZGRyZXNzOiBudW1iZXJbXTtcbiAgICAgIHJlY2VpdmVyQWRkcmVzczogbnVtYmVyW107XG4gICAgICBiYWxhbmNlOiBzdHJpbmc7XG4gICAgICByZXNvdXJjZT86IHN0cmluZztcbiAgICB9ID0ge1xuICAgICAgb3duZXJBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9vd25lckFkZHJlc3MpLFxuICAgICAgcmVjZWl2ZXJBZGRyZXNzOiBnZXRCeXRlQXJyYXlGcm9tSGV4QWRkcmVzcyh0aGlzLl9yZWNlaXZlckFkZHJlc3MpLFxuICAgICAgYmFsYW5jZTogdGhpcy5fYmFsYW5jZSxcbiAgICB9O1xuXG4gICAgLy8gT25seSBpbmNsdWRlIHJlc291cmNlIGlmIGl0J3Mgbm90IEJBTkRXSURUSCAodGhlIGRlZmF1bHQgdmFsdWUgPSAwKVxuICAgIC8vIEluIHByb3RvYnVmMywgZGVmYXVsdCB2YWx1ZXMgYXJlIHR5cGljYWxseSBub3QgZW5jb2RlZCBpbiB0aGUgd2lyZSBmb3JtYXQuXG4gICAgLy8gVFJPTidzIG5vZGUgcmUtc2VyaWFsaXplcyB0cmFuc2FjdGlvbnMgYW5kIG9taXRzIGRlZmF1bHQgdmFsdWVzLFxuICAgIC8vIHNvIHdlIG11c3QgbWF0Y2ggdGhhdCBiZWhhdmlvciB0byBlbnN1cmUgY29uc2lzdGVudCB0cmFuc2FjdGlvbiBoYXNoZXMuXG4gICAgaWYgKHRoaXMuX3Jlc291cmNlICE9PSAnQkFORFdJRFRIJykge1xuICAgICAgcmF3Q29udHJhY3QucmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZTtcbiAgICB9XG5cbiAgICBjb25zdCB1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdCA9IHByb3RvY29sLlVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LmZyb21PYmplY3QocmF3Q29udHJhY3QpO1xuICAgIGNvbnN0IHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0Qnl0ZXMgPVxuICAgICAgcHJvdG9jb2wuVW5EZWxlZ2F0ZVJlc291cmNlQ29udHJhY3QuZW5jb2RlKHVuZGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0KS5maW5pc2goKTtcbiAgICBjb25zdCB0eENvbnRyYWN0ID0ge1xuICAgICAgdHlwZTogQ29udHJhY3RUeXBlLlVuRGVsZWdhdGVSZXNvdXJjZUNvbnRyYWN0LFxuICAgICAgcGFyYW1ldGVyOiB7XG4gICAgICAgIHZhbHVlOiB1bmRlbGVnYXRlUmVzb3VyY2VDb250cmFjdEJ5dGVzLFxuICAgICAgICB0eXBlX3VybDogVU5ERUxFR0FUSU9OX1RZUEVfVVJMLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IHJhdyA9IHtcbiAgICAgIHJlZkJsb2NrQnl0ZXM6IEJ1ZmZlci5mcm9tKHRoaXMuX3JlZkJsb2NrQnl0ZXMsICdoZXgnKSxcbiAgICAgIHJlZkJsb2NrSGFzaDogQnVmZmVyLmZyb20odGhpcy5fcmVmQmxvY2tIYXNoLCAnaGV4JyksXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLl9leHBpcmF0aW9uIHx8IERhdGUubm93KCkgKyBUUkFOU0FDVElPTl9ERUZBVUxUX0VYUElSQVRJT04sXG4gICAgICB0aW1lc3RhbXA6IHRoaXMuX3RpbWVzdGFtcCB8fCBEYXRlLm5vdygpLFxuICAgICAgY29udHJhY3Q6IFt0eENvbnRyYWN0XSxcbiAgICB9O1xuICAgIGNvbnN0IHJhd1R4ID0gcHJvdG9jb2wuVHJhbnNhY3Rpb24ucmF3LmNyZWF0ZShyYXcpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShwcm90b2NvbC5UcmFuc2FjdGlvbi5yYXcuZW5jb2RlKHJhd1R4KS5maW5pc2goKSkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,65 @@
1
+ import { TransactionType, BaseKey } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction';
5
+ import { TransactionReceipt, UnfreezeBalanceV2Contract } from './iface';
6
+ export declare class UnfreezeBalanceTxBuilder extends TransactionBuilder {
7
+ protected _signingKeys: BaseKey[];
8
+ private _unfreezeBalance;
9
+ private _resource;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /** @inheritdoc */
12
+ protected get transactionType(): TransactionType;
13
+ /**
14
+ * Set the unfrozen balance amount
15
+ *
16
+ * @param amount amount in TRX to unfreeze
17
+ * @returns the builder with the new parameter set
18
+ */
19
+ setUnfreezeBalance(amount: string): this;
20
+ /**
21
+ * Set the resource type
22
+ *
23
+ * @param resource resource type to unfreeze
24
+ * @returns the builder with the new parameter set
25
+ */
26
+ setResource(resource: string): this;
27
+ /** @inheritdoc */
28
+ extendValidTo(extensionMs: number): void;
29
+ initBuilder(rawTransaction: TransactionReceipt | string): this;
30
+ /**
31
+ * Initialize the freeze contract call specific data
32
+ *
33
+ * @param {UnfreezeBalanceV2Contract} unfreezeContractCall object with freeze txn data
34
+ */
35
+ protected initUnfreezeContractCall(unfreezeContractCall: UnfreezeBalanceV2Contract): void;
36
+ protected buildImplementation(): Promise<Transaction>;
37
+ /**
38
+ * Helper method to create the freeze balance transaction
39
+ */
40
+ private createUnfreezeBalanceTransaction;
41
+ /**
42
+ * Helper method to get the unfreeze balance transaction raw data hex
43
+ *
44
+ * @returns {string} the freeze balance transaction raw data hex
45
+ */
46
+ private getUnfreezeRawDataHex;
47
+ /** @inheritdoc */
48
+ protected signImplementation(key: BaseKey): Transaction;
49
+ private applySignatures;
50
+ /**
51
+ * Validates the transaction
52
+ *
53
+ * @param {Transaction} transaction - The transaction to validate
54
+ * @throws {BuildTransactionError} when the transaction is invalid
55
+ */
56
+ validateTransaction(transaction: Transaction): void;
57
+ /**
58
+ * Validates if the transaction is a valid unfreeze transaction
59
+ *
60
+ * @param {TransactionReceipt} transaction - The transaction to validate
61
+ * @throws {BuildTransactionError} when the transaction is invalid
62
+ */
63
+ private validateFreezeTransactionFields;
64
+ }
65
+ //# sourceMappingURL=unfreezeBalanceTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unfreezeBalanceTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/unfreezeBalanceTxBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAA+D,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAYxE,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAM7C,kBAAkB;IAClB,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxC;;;;;OAKG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMnC,kBAAkB;IAClB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAoBxC,WAAW,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI;IAiB9D;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,CAAC,oBAAoB,EAAE,yBAAyB,GAAG,IAAI;cAezE,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAc3D;;OAEG;IACH,OAAO,CAAC,gCAAgC;IAqBxC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAsC7B,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW;IAUvD,OAAO,CAAC,eAAe;IAQvB;;;;;OAKG;IACH,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAInD;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;CAiBxC"}