@bitgo/sdk-coin-flrp 1.6.1 → 1.7.1

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 (62) hide show
  1. package/dist/src/lib/ExportInCTxBuilder.d.ts +5 -13
  2. package/dist/src/lib/ExportInCTxBuilder.d.ts.map +1 -1
  3. package/dist/src/lib/ExportInCTxBuilder.js +24 -64
  4. package/dist/src/lib/ExportInPTxBuilder.d.ts +8 -26
  5. package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
  6. package/dist/src/lib/ExportInPTxBuilder.js +84 -181
  7. package/dist/src/lib/ImportInCTxBuilder.d.ts +7 -20
  8. package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
  9. package/dist/src/lib/ImportInCTxBuilder.js +80 -167
  10. package/dist/src/lib/ImportInPTxBuilder.d.ts +28 -13
  11. package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
  12. package/dist/src/lib/ImportInPTxBuilder.js +136 -105
  13. package/dist/src/lib/atomicInCTransactionBuilder.d.ts +0 -6
  14. package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/atomicInCTransactionBuilder.js +1 -14
  16. package/dist/src/lib/atomicTransactionBuilder.d.ts +50 -24
  17. package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
  18. package/dist/src/lib/atomicTransactionBuilder.js +127 -187
  19. package/dist/src/lib/iface.d.ts +31 -0
  20. package/dist/src/lib/iface.d.ts.map +1 -1
  21. package/dist/src/lib/iface.js +9 -2
  22. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts +0 -2
  23. package/dist/src/lib/permissionlessValidatorTxBuilder.d.ts.map +1 -1
  24. package/dist/src/lib/permissionlessValidatorTxBuilder.js +1 -7
  25. package/dist/src/lib/transaction.d.ts +10 -6
  26. package/dist/src/lib/transaction.d.ts.map +1 -1
  27. package/dist/src/lib/transaction.js +10 -13
  28. package/dist/src/lib/transactionBuilder.d.ts +24 -16
  29. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  30. package/dist/src/lib/transactionBuilder.js +46 -28
  31. package/dist/src/lib/utils.d.ts +31 -2
  32. package/dist/src/lib/utils.d.ts.map +1 -1
  33. package/dist/src/lib/utils.js +71 -1
  34. package/dist/test/resources/account.d.ts +30 -0
  35. package/dist/test/resources/account.d.ts.map +1 -1
  36. package/dist/test/resources/account.js +27 -2
  37. package/dist/test/resources/transactionData/exportInC.d.ts +30 -0
  38. package/dist/test/resources/transactionData/exportInC.d.ts.map +1 -1
  39. package/dist/test/resources/transactionData/exportInC.js +32 -13
  40. package/dist/test/resources/transactionData/exportInP.d.ts +39 -48
  41. package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
  42. package/dist/test/resources/transactionData/exportInP.js +70 -109
  43. package/dist/test/resources/transactionData/importInC.d.ts +39 -10
  44. package/dist/test/resources/transactionData/importInC.d.ts.map +1 -1
  45. package/dist/test/resources/transactionData/importInC.js +101 -25
  46. package/dist/test/resources/transactionData/importInP.d.ts +46 -15
  47. package/dist/test/resources/transactionData/importInP.d.ts.map +1 -1
  48. package/dist/test/resources/transactionData/importInP.js +65 -39
  49. package/dist/test/unit/flrp.js +15 -12
  50. package/dist/test/unit/lib/exportInCTxBuilder.js +32 -31
  51. package/dist/test/unit/lib/exportInPTxBuilder.js +112 -246
  52. package/dist/test/unit/lib/importInCTxBuilder.js +157 -353
  53. package/dist/test/unit/lib/importInPTxBuilder.js +227 -222
  54. package/dist/test/unit/lib/signFlowTestSuit.d.ts.map +1 -1
  55. package/dist/test/unit/lib/signFlowTestSuit.js +1 -1
  56. package/dist/test/unit/lib/signatureIndex.d.ts +13 -0
  57. package/dist/test/unit/lib/signatureIndex.d.ts.map +1 -0
  58. package/dist/test/unit/lib/signatureIndex.js +591 -0
  59. package/dist/test/unit/lib/transactionBuilderFactory.js +2 -2
  60. package/dist/test/unit/lib/utils.js +94 -32
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +8 -7
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AtomicTransactionBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo/sdk-core");
7
8
  const transactionBuilder_1 = require("./transactionBuilder");
8
9
  const transaction_1 = require("./transaction");
9
10
  const flarejs_1 = require("@flarenetwork/flarejs");
@@ -15,147 +16,11 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
15
16
  this.transaction = new transaction_1.Transaction(_coinConfig);
16
17
  this.transaction._fee.fee = this.fixedFee;
17
18
  }
18
- /**
19
- * Create inputs and outputs from UTXOs
20
- * @param {bigint} amount Amount to transfer
21
- * @return {
22
- * inputs: TransferableInput[];
23
- * outputs: TransferableInput[];
24
- * credentials: Credential[];
25
- * }
26
- * @protected
27
- */
28
- createInputOutput(amount) {
29
- const sender = this.transaction._fromAddresses.slice();
30
- if (this.recoverSigner) {
31
- // switch first and last signer
32
- const tmp = sender.pop();
33
- sender.push(sender[0]);
34
- if (tmp) {
35
- sender[0] = tmp;
36
- }
37
- }
38
- let totalAmount = BigInt(0);
39
- const inputs = [];
40
- const outputs = [];
41
- const credentials = [];
42
- this.transaction._utxos.forEach((utxo) => {
43
- const utxoAmount = BigInt(utxo.amount);
44
- totalAmount += utxoAmount;
45
- // Create input
46
- const input = {
47
- _type: flarejs_1.TypeSymbols.Input,
48
- amount: () => utxoAmount,
49
- sigIndices: sender.map((_, i) => i),
50
- toBytes: () => new Uint8Array(),
51
- };
52
- // Create asset with Amounter interface
53
- const assetId = {
54
- _type: flarejs_1.TypeSymbols.BaseTx,
55
- amount: () => utxoAmount,
56
- toBytes: () => {
57
- const bytes = new Uint8Array(Buffer.from(this.transaction._assetId, 'hex'));
58
- return bytes;
59
- },
60
- };
61
- // Create TransferableInput
62
- const transferableInput = new flarejs_1.TransferableInput({
63
- _type: flarejs_1.TypeSymbols.UTXOID,
64
- txID: new flarejs_1.Id(new Uint8Array(Buffer.from(utxo.txid, 'hex'))),
65
- outputIdx: new flarejs_1.Int(Number(utxo.outputidx)),
66
- ID: () => utxo.txid,
67
- toBytes: () => {
68
- const txIdBytes = new Uint8Array(Buffer.from(utxo.txid, 'hex'));
69
- const outputIdxBytes = new Uint8Array(4);
70
- new DataView(outputIdxBytes.buffer).setInt32(0, Number(utxo.outputidx), true);
71
- return Buffer.concat([txIdBytes, outputIdxBytes]);
72
- },
73
- }, new flarejs_1.Id(new Uint8Array(Buffer.from(utxo.outputidx.toString()))), assetId);
74
- // Set input properties
75
- Object.assign(transferableInput, { input });
76
- inputs.push(transferableInput);
77
- // Create credential with empty signatures for slot identification
78
- // Match avaxp behavior: dynamic ordering based on addressesIndex from UTXO
79
- const hasAddresses = sender && sender.length >= this.transaction._threshold;
80
- if (!hasAddresses) {
81
- // If addresses not available, use all zeros
82
- const emptySignatures = sender.map(() => utils_1.default.createNewSig(''));
83
- credentials.push(new flarejs_1.Credential(emptySignatures));
84
- }
85
- else {
86
- // Compute addressesIndex: position of each _fromAddresses in UTXO's address list
87
- const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
88
- const addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
89
- // either user (0) or recovery (2)
90
- const firstIndex = this.recoverSigner ? 2 : 0;
91
- const bitgoIndex = 1;
92
- // Dynamic ordering based on addressesIndex
93
- let emptySignatures;
94
- if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
95
- // Bitgo comes first in signature order: [zeros, userAddress]
96
- emptySignatures = [
97
- utils_1.default.createNewSig(''),
98
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
99
- ];
100
- }
101
- else {
102
- // User comes first in signature order: [userAddress, zeros]
103
- emptySignatures = [
104
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
105
- utils_1.default.createNewSig(''),
106
- ];
107
- }
108
- credentials.push(new flarejs_1.Credential(emptySignatures));
109
- }
110
- });
111
- // Create output if there is change
112
- if (totalAmount > amount) {
113
- const changeAmount = totalAmount - amount;
114
- const output = {
115
- _type: flarejs_1.TypeSymbols.BaseTx,
116
- amount: () => changeAmount,
117
- addresses: sender,
118
- locktime: this.transaction._locktime,
119
- threshold: this.transaction._threshold,
120
- toBytes: () => new Uint8Array(),
121
- };
122
- // Create asset with Amounter interface
123
- const assetId = {
124
- _type: flarejs_1.TypeSymbols.BaseTx,
125
- amount: () => changeAmount,
126
- toBytes: () => {
127
- const bytes = new Uint8Array(Buffer.from(this.transaction._assetId, 'hex'));
128
- return bytes;
129
- },
130
- };
131
- // Create TransferableOutput
132
- const transferableOutput = new flarejs_1.TransferableInput({
133
- _type: flarejs_1.TypeSymbols.UTXOID,
134
- txID: new flarejs_1.Id(new Uint8Array(32)),
135
- outputIdx: new flarejs_1.Int(0),
136
- ID: () => '',
137
- toBytes: () => {
138
- const txIdBytes = new Uint8Array(32);
139
- const outputIdxBytes = new Uint8Array(4);
140
- return Buffer.concat([txIdBytes, outputIdxBytes]);
141
- },
142
- }, new flarejs_1.Id(new Uint8Array([0])), assetId);
143
- // Set output properties
144
- Object.assign(transferableOutput, { output });
145
- outputs.push(transferableOutput);
146
- }
147
- return {
148
- inputs,
149
- outputs,
150
- credentials,
151
- };
152
- }
153
19
  /** @inheritdoc */
154
20
  async buildImplementation() {
155
- this.buildFlareTransaction();
21
+ await this.buildFlareTransaction();
156
22
  this.setTransactionType(this.transactionType);
157
23
  if (this.hasSigner()) {
158
- // Sign sequentially to ensure proper order
159
24
  for (const keyPair of this._signer) {
160
25
  await this.transaction.sign(keyPair);
161
26
  }
@@ -202,88 +67,163 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
202
67
  return this;
203
68
  }
204
69
  /**
205
- * Create credential with dynamic ordering based on addressesIndex from UTXO
206
- * Matches avaxp behavior: signature order depends on UTXO address positions
70
+ * Set the fee state for dynamic fee calculation (P-chain transactions)
71
+ *
72
+ * @param {FlrpFeeState} state - the fee state from the network
73
+ */
74
+ feeState(state) {
75
+ this.transaction._feeState = state;
76
+ return this;
77
+ }
78
+ /**
79
+ * Set the amount for the transaction
80
+ *
81
+ * @param {bigint | string} value - the amount to transfer
82
+ */
83
+ amount(value) {
84
+ const valueBigInt = typeof value === 'string' ? BigInt(value) : value;
85
+ this.validateAmount(valueBigInt);
86
+ this.transaction._amount = valueBigInt;
87
+ return this;
88
+ }
89
+ /**
90
+ * Compute addressesIndex for UTXOs following AVAX P approach.
91
+ * addressesIndex[senderIdx] = position of sender[senderIdx] in UTXO's address list
92
+ *
93
+ * Example:
94
+ * A = user key, B = hsm key, C = backup key
95
+ * sender (bitgoAddresses) = [ A, B, C ]
96
+ * utxo.addresses (IMS addresses) = [ B, C, A ]
97
+ * addressesIndex = [ 2, 0, 1 ]
98
+ * (sender[0]=A is at position 2 in UTXO, sender[1]=B is at position 0, etc.)
99
+ *
100
+ * @protected
101
+ */
102
+ computeAddressesIndex() {
103
+ const sender = this.transaction._fromAddresses;
104
+ this.transaction._utxos.forEach((utxo) => {
105
+ if (utxo.addressesIndex && utxo.addressesIndex.length > 0) {
106
+ return;
107
+ }
108
+ if (utxo.addresses && utxo.addresses.length > 0) {
109
+ const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
110
+ utxo.addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
111
+ }
112
+ });
113
+ }
114
+ /**
115
+ * Validate UTXOs have consistent addresses.
116
+ * Note: UTXO threshold can differ from transaction threshold - each UTXO has its own
117
+ * signature requirement based on how it was created (e.g., change outputs may have threshold=1).
118
+ * @protected
119
+ */
120
+ validateUtxoAddresses() {
121
+ this.transaction._utxos.forEach((utxo) => {
122
+ if (!utxo) {
123
+ throw new sdk_core_1.BuildTransactionError('Utxo is undefined');
124
+ }
125
+ if (utxo.addressesIndex?.includes(-1)) {
126
+ throw new sdk_core_1.BuildTransactionError('Addresses are inconsistent: ' + utxo.txid);
127
+ }
128
+ if (utxo.threshold !== undefined && utxo.threshold <= 0) {
129
+ throw new sdk_core_1.BuildTransactionError('UTXO threshold must be positive: ' + utxo.txid);
130
+ }
131
+ });
132
+ }
133
+ /**
134
+ * Create credential with dynamic ordering based on addressesIndex from UTXO.
135
+ * Matches AVAX P behavior: signature order depends on UTXO address positions.
136
+ *
137
+ * addressesIndex[senderIdx] = utxoPosition tells us where each sender is in the UTXO.
138
+ * We create signature slots ordered by utxoPosition (smaller position = earlier slot).
139
+ *
207
140
  * @param utxo - The UTXO to create credential for
208
- * @param threshold - Number of signatures required
141
+ * @param threshold - Number of signatures required for this specific UTXO
209
142
  * @returns Credential with empty signatures ordered based on UTXO positions
210
143
  * @protected
211
144
  */
212
145
  createCredentialForUtxo(utxo, threshold) {
213
146
  const sender = this.transaction._fromAddresses;
214
- const hasAddresses = sender && sender.length >= threshold;
215
- if (!hasAddresses || !utxo.addresses || utxo.addresses.length === 0) {
216
- // Fallback: use all zeros if no addresses available
217
- const emptySignatures = [];
218
- for (let i = 0; i < threshold; i++) {
219
- emptySignatures.push(utils_1.default.createNewSig(''));
220
- }
221
- return new flarejs_1.Credential(emptySignatures);
222
- }
223
- // Compute addressesIndex: position of each _fromAddresses in UTXO's address list
224
- const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
225
- const addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
147
+ const addressesIndex = utxo.addressesIndex ?? [];
226
148
  // either user (0) or recovery (2)
227
149
  const firstIndex = this.recoverSigner ? 2 : 0;
228
150
  const bitgoIndex = 1;
229
- // Dynamic ordering based on addressesIndex
230
- let emptySignatures;
231
- if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
232
- // Bitgo comes first in signature order: [zeros, userAddress]
233
- emptySignatures = [
234
- utils_1.default.createNewSig(''),
235
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
236
- ];
151
+ if (threshold === 1) {
152
+ if (sender && sender.length > firstIndex && addressesIndex[firstIndex] !== undefined) {
153
+ return new flarejs_1.Credential([utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex'))]);
154
+ }
155
+ return new flarejs_1.Credential([utils_1.default.createNewSig('')]);
156
+ }
157
+ // If we have valid addressesIndex, use it to determine signature order
158
+ // addressesIndex[senderIdx] = position in UTXO
159
+ // Smaller position = earlier slot in signature array
160
+ if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
161
+ let emptySignatures;
162
+ if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
163
+ emptySignatures = [
164
+ utils_1.default.createNewSig(''),
165
+ utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
166
+ ];
167
+ }
168
+ else {
169
+ emptySignatures = [
170
+ utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
171
+ utils_1.default.createNewSig(''),
172
+ ];
173
+ }
174
+ return new flarejs_1.Credential(emptySignatures);
237
175
  }
238
- else {
239
- // User comes first in signature order: [userAddress, zeros]
240
- emptySignatures = [
241
- utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
242
- utils_1.default.createNewSig(''),
243
- ];
176
+ const emptySignatures = [];
177
+ for (let i = 0; i < threshold; i++) {
178
+ emptySignatures.push(utils_1.default.createNewSig(''));
244
179
  }
245
180
  return new flarejs_1.Credential(emptySignatures);
246
181
  }
247
182
  /**
248
- * Create AddressMap based on signature slot order (matching credential order), not sorted addresses
249
- * This matches the approach used in credentials: addressesIndex determines signature order
250
- * AddressMaps should map addresses to signature slots in the same order as credentials
183
+ * Create AddressMap based on addressesIndex following AVAX P approach.
184
+ * Maps each sender address to its signature slot based on UTXO position ordering.
185
+ *
186
+ * addressesIndex[senderIdx] = utxoPosition
187
+ * Signature slots are ordered by utxoPosition (smaller = earlier slot).
188
+ *
251
189
  * @param utxo - The UTXO to create AddressMap for
252
- * @param threshold - Number of signatures required
190
+ * @param threshold - Number of signatures required for this specific UTXO
253
191
  * @returns AddressMap that maps addresses to signature slots based on UTXO order
254
192
  * @protected
255
193
  */
256
194
  createAddressMapForUtxo(utxo, threshold) {
257
195
  const addressMap = new flarejs_1.utils.AddressMap();
258
196
  const sender = this.transaction._fromAddresses;
259
- // If UTXO has addresses, compute addressesIndex to determine signature order
260
- if (utxo && utxo.addresses && utxo.addresses.length > 0 && sender && sender.length >= threshold) {
261
- const utxoAddresses = utxo.addresses.map((a) => utils_1.default.parseAddress(a));
262
- const addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
263
- const firstIndex = this.recoverSigner ? 2 : 0;
264
- const bitgoIndex = 1;
265
- // Determine signature slot order based on addressesIndex (same logic as credentials)
197
+ const addressesIndex = utxo.addressesIndex ?? [];
198
+ const firstIndex = this.recoverSigner ? 2 : 0;
199
+ const bitgoIndex = 1;
200
+ if (threshold === 1) {
201
+ if (sender && sender.length > firstIndex) {
202
+ addressMap.set(new flarejs_1.Address(sender[firstIndex]), 0);
203
+ }
204
+ else if (sender && sender.length > 0) {
205
+ addressMap.set(new flarejs_1.Address(sender[0]), 0);
206
+ }
207
+ return addressMap;
208
+ }
209
+ if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
266
210
  if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
267
- // Bitgo comes first: slot 0 = bitgo, slot 1 = firstIndex
268
211
  addressMap.set(new flarejs_1.Address(sender[bitgoIndex]), 0);
269
212
  addressMap.set(new flarejs_1.Address(sender[firstIndex]), 1);
270
213
  }
271
214
  else {
272
- // User/recovery comes first: slot 0 = firstIndex, slot 1 = bitgo
273
215
  addressMap.set(new flarejs_1.Address(sender[firstIndex]), 0);
274
216
  addressMap.set(new flarejs_1.Address(sender[bitgoIndex]), 1);
275
217
  }
218
+ return addressMap;
276
219
  }
277
- else {
278
- // Fallback: map addresses sequentially if no UTXO addresses available
279
- if (sender && sender.length >= threshold) {
280
- sender.slice(0, threshold).forEach((addr, i) => {
281
- addressMap.set(new flarejs_1.Address(addr), i);
282
- });
283
- }
220
+ if (sender && sender.length >= threshold) {
221
+ sender.slice(0, threshold).forEach((addr, i) => {
222
+ addressMap.set(new flarejs_1.Address(addr), i);
223
+ });
284
224
  }
285
225
  return addressMap;
286
226
  }
287
227
  }
288
228
  exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsNkRBQTBEO0FBQzFELCtDQUE0QztBQUM1QyxtREFRK0I7QUFFL0Isb0RBQTRCO0FBUzVCLE1BQXNCLHdCQUF5QixTQUFRLHVDQUFrQjtJQUl2RSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhYLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSTlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDTyxpQkFBaUIsQ0FBQyxNQUFjO1FBS3hDLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxXQUEyQixDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4RSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QiwrQkFBK0I7WUFDL0IsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQztR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QUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixzRUFBc0U7WUFDdEUsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUM3QyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQXpVRCw0REF5VUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQge1xuICBUcmFuc2ZlcmFibGVJbnB1dCxcbiAgSW50LFxuICBJZCxcbiAgVHlwZVN5bWJvbHMsXG4gIENyZWRlbnRpYWwsXG4gIEFkZHJlc3MsXG4gIHV0aWxzIGFzIEZsYXJlVXRpbHMsXG59IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG4vLyBJbnRlcmZhY2UgZm9yIG9iamVjdHMgdGhhdCBjYW4gcHJvdmlkZSBhbiBhbW91bnRcbmludGVyZmFjZSBBbW91bnRlciB7XG4gIF90eXBlOiBUeXBlU3ltYm9scztcbiAgYW1vdW50OiAoKSA9PiBiaWdpbnQ7XG4gIHRvQnl0ZXM6ICgpID0+IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX2V4dGVybmFsQ2hhaW5JZDogQnVmZmVyO1xuICBwcm90ZWN0ZWQgcmVjb3ZlclNpZ25lciA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWUuZmVlID0gdGhpcy5maXhlZEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgaW5wdXRzIGFuZCBvdXRwdXRzIGZyb20gVVRYT3NcbiAgICogQHBhcmFtIHtiaWdpbnR9IGFtb3VudCBBbW91bnQgdG8gdHJhbnNmZXJcbiAgICogQHJldHVybiB7XG4gICAqICAgICBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W107XG4gICAqICAgICBvdXRwdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgKiAgICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgICogfVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlSW5wdXRPdXRwdXQoYW1vdW50OiBiaWdpbnQpOiB7XG4gICAgaW5wdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdO1xuICAgIG91dHB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W107XG4gICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXTtcbiAgfSB7XG4gICAgY29uc3Qgc2VuZGVyID0gKHRoaXMudHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb24pLl9mcm9tQWRkcmVzc2VzLnNsaWNlKCk7XG4gICAgaWYgKHRoaXMucmVjb3ZlclNpZ25lcikge1xuICAgICAgLy8gc3dpdGNoIGZpcnN0IGFuZCBsYXN0IHNpZ25lclxuICAgICAgY29uc3QgdG1wID0gc2VuZGVyLnBvcCgpO1xuICAgICAgc2VuZGVyLnB1c2goc2VuZGVyWzBdKTtcbiAgICAgIGlmICh0bXApIHtcbiAgICAgICAgc2VuZGVyWzBdID0gdG1wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCB0b3RhbEFtb3VudCA9IEJpZ0ludCgwKTtcbiAgICBjb25zdCBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10gPSBbXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2ZlcmFibGVJbnB1dFtdID0gW107XG4gICAgY29uc3QgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxbXSA9IFtdO1xuXG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb24pLl91dHhvcy5mb3JFYWNoKCh1dHhvOiBEZWNvZGVkVXR4b09iaikgPT4ge1xuICAgICAgY29uc3QgdXR4b0Ftb3VudCA9IEJpZ0ludCh1dHhvLmFtb3VudCk7XG4gICAgICB0b3RhbEFtb3VudCArPSB1dHhvQW1vdW50O1xuXG4gICAgICAvLyBDcmVhdGUgaW5wdXRcbiAgICAgIGNvbnN0IGlucHV0ID0ge1xuICAgICAgICBfdHlwZTogVHlwZVN5bWJvbHMuSW5wdXQsXG4gICAgICAgIGFtb3VudDogKCkgPT4gdXR4b0Ftb3VudCxcbiAgICAgICAgc2lnSW5kaWNlczogc2VuZGVyLm1hcCgoXywgaSkgPT4gaSksXG4gICAgICAgIHRvQnl0ZXM6ICgpID0+IG5ldyBVaW50OEFycmF5KCksXG4gICAgICB9O1xuXG4gICAgICAvLyBDcmVhdGUgYXNzZXQgd2l0aCBBbW91bnRlciBpbnRlcmZhY2VcbiAgICAgIGNvbnN0IGFzc2V0SWQ6IEFtb3VudGVyID0ge1xuICAgICAgICBfdHlwZTogVHlwZVN5bWJvbHMuQmFzZVR4LFxuICAgICAgICBhbW91bnQ6ICgpID0+IHV0eG9BbW91bnQsXG4gICAgICAgIHRvQnl0ZXM6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKCh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fYXNzZXRJZCwgJ2hleCcpKTtcbiAgICAgICAgICByZXR1cm4gYnl0ZXM7XG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBDcmVhdGUgVHJhbnNmZXJhYmxlSW5wdXRcbiAgICAgIGNvbnN0IHRyYW5zZmVyYWJsZUlucHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KFxuICAgICAgICB7XG4gICAgICAgICAgX3R5cGU6IFR5cGVTeW1ib2xzLlVUWE9JRCxcbiAgICAgICAgICB0eElEOiBuZXcgSWQobmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odXR4by50eGlkLCAnaGV4JykpKSxcbiAgICAgICAgICBvdXRwdXRJZHg6IG5ldyBJbnQoTnVtYmVyKHV0eG8ub3V0cHV0aWR4KSksXG4gICAgICAgICAgSUQ6ICgpID0+IHV0eG8udHhpZCxcbiAgICAgICAgICB0b0J5dGVzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eElkQnl0ZXMgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh1dHhvLnR4aWQsICdoZXgnKSk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXRJZHhCeXRlcyA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICAgICAgbmV3IERhdGFWaWV3KG91dHB1dElkeEJ5dGVzLmJ1ZmZlcikuc2V0SW50MzIoMCwgTnVtYmVyKHV0eG8ub3V0cHV0aWR4KSwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbdHhJZEJ5dGVzLCBvdXRwdXRJZHhCeXRlc10pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBJZChuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh1dHhvLm91dHB1dGlkeC50b1N0cmluZygpKSkpLFxuICAgICAgICBhc3NldElkXG4gICAgICApO1xuXG4gICAgICAvLyBTZXQgaW5wdXQgcHJvcGVydGllc1xuICAgICAgT2JqZWN0LmFzc2lnbih0cmFuc2ZlcmFibGVJbnB1dCwgeyBpbnB1dCB9KTtcbiAgICAgIGlucHV0cy5wdXNoKHRyYW5zZmVyYWJsZUlucHV0KTtcblxuICAgICAgLy8gQ3JlYXRlIGNyZWRlbnRpYWwgd2l0aCBlbXB0eSBzaWduYXR1cmVzIGZvciBzbG90IGlkZW50aWZpY2F0aW9uXG4gICAgICAvLyBNYXRjaCBhdmF4cCBiZWhhdmlvcjogZHluYW1pYyBvcmRlcmluZyBiYXNlZCBvbiBhZGRyZXNzZXNJbmRleCBmcm9tIFVUWE9cbiAgICAgIGNvbnN0IGhhc0FkZHJlc3NlcyA9IHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49ICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fdGhyZXNob2xkO1xuXG4gICAgICBpZiAoIWhhc0FkZHJlc3Nlcykge1xuICAgICAgICAvLyBJZiBhZGRyZXNzZXMgbm90IGF2YWlsYWJsZSwgdXNlIGFsbCB6ZXJvc1xuICAgICAgICBjb25zdCBlbXB0eVNpZ25hdHVyZXMgPSBzZW5kZXIubWFwKCgpID0+IHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgICBjcmVkZW50aWFscy5wdXNoKG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ29tcHV0ZSBhZGRyZXNzZXNJbmRleDogcG9zaXRpb24gb2YgZWFjaCBfZnJvbUFkZHJlc3NlcyBpbiBVVFhPJ3MgYWRkcmVzcyBsaXN0XG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXMgPSB1dHhvLmFkZHJlc3Nlcy5tYXAoKGE6IHN0cmluZykgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSBzZW5kZXIubWFwKChhKSA9PlxuICAgICAgICAgIHV0eG9BZGRyZXNzZXMuZmluZEluZGV4KCh1KSA9PiBCdWZmZXIuY29tcGFyZShCdWZmZXIuZnJvbSh1KSwgQnVmZmVyLmZyb20oYSkpID09PSAwKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGVpdGhlciB1c2VyICgwKSBvciByZWNvdmVyeSAoMilcbiAgICAgICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgICAgICAvLyBEeW5hbWljIG9yZGVyaW5nIGJhc2VkIG9uIGFkZHJlc3Nlc0luZGV4XG4gICAgICAgIGxldCBlbXB0eVNpZ25hdHVyZXM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXTtcbiAgICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgICAgICAvLyBCaXRnbyBjb21lcyBmaXJzdCBpbiBzaWduYXR1cmUgb3JkZXI6IFt6ZXJvcywgdXNlckFkZHJlc3NdXG4gICAgICAgICAgZW1wdHlTaWduYXR1cmVzID0gW1xuICAgICAgICAgICAgdXRpbHMuY3JlYXRlTmV3U2lnKCcnKSxcbiAgICAgICAgICAgIHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpLFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVXNlciBjb21lcyBmaXJzdCBpbiBzaWduYXR1cmUgb3JkZXI6IFt1c2VyQWRkcmVzcywgemVyb3NdXG4gICAgICAgICAgZW1wdHlTaWduYXR1cmVzID0gW1xuICAgICAgICAgICAgdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgICAgICB1dGlscy5jcmVhdGVOZXdTaWcoJycpLFxuICAgICAgICAgIF07XG4gICAgICAgIH1cbiAgICAgICAgY3JlZGVudGlhbHMucHVzaChuZXcgQ3JlZGVudGlhbChlbXB0eVNpZ25hdHVyZXMpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSBvdXRwdXQgaWYgdGhlcmUgaXMgY2hhbmdlXG4gICAgaWYgKHRvdGFsQW1vdW50ID4gYW1vdW50KSB7XG4gICAgICBjb25zdCBjaGFuZ2VBbW91bnQgPSB0b3RhbEFtb3VudCAtIGFtb3VudDtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHtcbiAgICAgICAgX3R5cGU6IFR5cGVTeW1ib2xzLkJhc2VUeCxcbiAgICAgICAgYW1vdW50OiAoKSA9PiBjaGFuZ2VBbW91bnQsXG4gICAgICAgIGFkZHJlc3Nlczogc2VuZGVyLFxuICAgICAgICBsb2NrdGltZTogKHRoaXMudHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb24pLl9sb2NrdGltZSxcbiAgICAgICAgdGhyZXNob2xkOiAodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX3RocmVzaG9sZCxcbiAgICAgICAgdG9CeXRlczogKCkgPT4gbmV3IFVpbnQ4QXJyYXkoKSxcbiAgICAgIH07XG5cbiAgICAgIC8vIENyZWF0ZSBhc3NldCB3aXRoIEFtb3VudGVyIGludGVyZmFjZVxuICAgICAgY29uc3QgYXNzZXRJZDogQW1vdW50ZXIgPSB7XG4gICAgICAgIF90eXBlOiBUeXBlU3ltYm9scy5CYXNlVHgsXG4gICAgICAgIGFtb3VudDogKCkgPT4gY2hhbmdlQW1vdW50LFxuICAgICAgICB0b0J5dGVzOiAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSgodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX2Fzc2V0SWQsICdoZXgnKSk7XG4gICAgICAgICAgcmV0dXJuIGJ5dGVzO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgLy8gQ3JlYXRlIFRyYW5zZmVyYWJsZU91dHB1dFxuICAgICAgY29uc3QgdHJhbnNmZXJhYmxlT3V0cHV0ID0gbmV3IFRyYW5zZmVyYWJsZUlucHV0KFxuICAgICAgICB7XG4gICAgICAgICAgX3R5cGU6IFR5cGVTeW1ib2xzLlVUWE9JRCxcbiAgICAgICAgICB0eElEOiBuZXcgSWQobmV3IFVpbnQ4QXJyYXkoMzIpKSxcbiAgICAgICAgICBvdXRwdXRJZHg6IG5ldyBJbnQoMCksXG4gICAgICAgICAgSUQ6ICgpID0+ICcnLFxuICAgICAgICAgIHRvQnl0ZXM6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR4SWRCeXRlcyA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICAgICAgICAgIGNvbnN0IG91dHB1dElkeEJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgICAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbdHhJZEJ5dGVzLCBvdXRwdXRJZHhCeXRlc10pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldyBJZChuZXcgVWludDhBcnJheShbMF0pKSxcbiAgICAgICAgYXNzZXRJZFxuICAgICAgKTtcblxuICAgICAgLy8gU2V0IG91dHB1dCBwcm9wZXJ0aWVzXG4gICAgICBPYmplY3QuYXNzaWduKHRyYW5zZmVyYWJsZU91dHB1dCwgeyBvdXRwdXQgfSk7XG4gICAgICBvdXRwdXRzLnB1c2godHJhbnNmZXJhYmxlT3V0cHV0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW5wdXRzLFxuICAgICAgb3V0cHV0cyxcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICAvLyBTaWduIHNlcXVlbnRpYWxseSB0byBlbnN1cmUgcHJvcGVyIG9yZGVyXG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBGbGFyZSB0cmFuc2FjdGlvbi4gVHJhbnNhY3Rpb24gZmllbGQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIEZlZSBpcyBmaXggZm9yIEFWTSBhdG9taWMgdHguXG4gICAqXG4gICAqIEByZXR1cm5zIG5ldHdvcmsudHhGZWVcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBmaXhlZEZlZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uLl9uZXR3b3JrLnR4RmVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldFxuICAgKi9cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJuYWwgY2hhaW4gaXMgdGhlIG9uZSBzZXQgZm9yIHRoZSBjb2luIGluIGNvaW5Db25maWcubmV0d29yay4gVGhlIGV4dGVybmFsIGNoYWluIGlzIHRoZSBvdGhlciBjaGFpbiBpbnZvbHZlZC5cbiAgICogVGhlIGV4dGVybmFsIGNoYWluIGlkIGlzIHRoZSBzb3VyY2Ugb24gaW1wb3J0IGFuZCB0aGUgZGVzdGluYXRpb24gb24gZXhwb3J0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhaW5JZCAtIGlkIG9mIHRoZSBleHRlcm5hbCBjaGFpblxuICAgKi9cbiAgZXh0ZXJuYWxDaGFpbklkKGNoYWluSWQ6IHN0cmluZyB8IEJ1ZmZlcik6IHRoaXMge1xuICAgIGNvbnN0IG5ld1RhcmdldENoYWluSWQgPSB0eXBlb2YgY2hhaW5JZCA9PT0gJ3N0cmluZycgPyB1dGlscy5jYjU4RGVjb2RlKGNoYWluSWQpIDogQnVmZmVyLmZyb20oY2hhaW5JZCk7XG4gICAgdGhpcy52YWxpZGF0ZUNoYWluSWQobmV3VGFyZ2V0Q2hhaW5JZCk7XG4gICAgdGhpcy5fZXh0ZXJuYWxDaGFpbklkID0gbmV3VGFyZ2V0Q2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIGZlZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGJpZ2ludH0gZmVlVmFsdWUgLSB0aGUgZmVlIHZhbHVlXG4gICAqL1xuICBmZWUoZmVlVmFsdWU6IHN0cmluZyB8IGJpZ2ludCk6IHRoaXMge1xuICAgIGNvbnN0IGZlZSA9IHR5cGVvZiBmZWVWYWx1ZSA9PT0gJ3N0cmluZycgPyBmZWVWYWx1ZSA6IGZlZVZhbHVlLnRvU3RyaW5nKCk7XG4gICAgKHRoaXMudHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb24pLl9mZWUuZmVlID0gZmVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBjcmVkZW50aWFsIHdpdGggZHluYW1pYyBvcmRlcmluZyBiYXNlZCBvbiBhZGRyZXNzZXNJbmRleCBmcm9tIFVUWE9cbiAgICogTWF0Y2hlcyBhdmF4cCBiZWhhdmlvcjogc2lnbmF0dXJlIG9yZGVyIGRlcGVuZHMgb24gVVRYTyBhZGRyZXNzIHBvc2l0aW9uc1xuICAgKiBAcGFyYW0gdXR4byAtIFRoZSBVVFhPIHRvIGNyZWF0ZSBjcmVkZW50aWFsIGZvclxuICAgKiBAcGFyYW0gdGhyZXNob2xkIC0gTnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWRcbiAgICogQHJldHVybnMgQ3JlZGVudGlhbCB3aXRoIGVtcHR5IHNpZ25hdHVyZXMgb3JkZXJlZCBiYXNlZCBvbiBVVFhPIHBvc2l0aW9uc1xuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQ3JlZGVudGlhbEZvclV0eG8odXR4bzogRGVjb2RlZFV0eG9PYmosIHRocmVzaG9sZDogbnVtYmVyKTogQ3JlZGVudGlhbCB7XG4gICAgY29uc3Qgc2VuZGVyID0gKHRoaXMudHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb24pLl9mcm9tQWRkcmVzc2VzO1xuICAgIGNvbnN0IGhhc0FkZHJlc3NlcyA9IHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZDtcblxuICAgIGlmICghaGFzQWRkcmVzc2VzIHx8ICF1dHhvLmFkZHJlc3NlcyB8fCB1dHhvLmFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIEZhbGxiYWNrOiB1c2UgYWxsIHplcm9zIGlmIG5vIGFkZHJlc3NlcyBhdmFpbGFibGVcbiAgICAgIGNvbnN0IGVtcHR5U2lnbmF0dXJlczogUmV0dXJuVHlwZTx0eXBlb2YgdXRpbHMuY3JlYXRlTmV3U2lnPltdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRocmVzaG9sZDsgaSsrKSB7XG4gICAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcyk7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBhZGRyZXNzZXNJbmRleDogcG9zaXRpb24gb2YgZWFjaCBfZnJvbUFkZHJlc3NlcyBpbiBVVFhPJ3MgYWRkcmVzcyBsaXN0XG4gICAgY29uc3QgdXR4b0FkZHJlc3NlcyA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHNlbmRlci5tYXAoKGEpID0+XG4gICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICApO1xuXG4gICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIC8vIER5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXhcbiAgICBsZXQgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W107XG4gICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgIC8vIEJpdGdvIGNvbWVzIGZpcnN0IGluIHNpZ25hdHVyZSBvcmRlcjogW3plcm9zLCB1c2VyQWRkcmVzc11cbiAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgdXRpbHMuY3JlYXRlTmV3U2lnKCcnKSxcbiAgICAgICAgdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2VyIGNvbWVzIGZpcnN0IGluIHNpZ25hdHVyZSBvcmRlcjogW3VzZXJBZGRyZXNzLCB6ZXJvc11cbiAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHV0aWxzLmNyZWF0ZU5ld1NpZygnJyksXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWRkcmVzc01hcCBiYXNlZCBvbiBzaWduYXR1cmUgc2xvdCBvcmRlciAobWF0Y2hpbmcgY3JlZGVudGlhbCBvcmRlciksIG5vdCBzb3J0ZWQgYWRkcmVzc2VzXG4gICAqIFRoaXMgbWF0Y2hlcyB0aGUgYXBwcm9hY2ggdXNlZCBpbiBjcmVkZW50aWFsczogYWRkcmVzc2VzSW5kZXggZGV0ZXJtaW5lcyBzaWduYXR1cmUgb3JkZXJcbiAgICogQWRkcmVzc01hcHMgc2hvdWxkIG1hcCBhZGRyZXNzZXMgdG8gc2lnbmF0dXJlIHNsb3RzIGluIHRoZSBzYW1lIG9yZGVyIGFzIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIEFkZHJlc3NNYXAgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZFxuICAgKiBAcmV0dXJucyBBZGRyZXNzTWFwIHRoYXQgbWFwcyBhZGRyZXNzZXMgdG8gc2lnbmF0dXJlIHNsb3RzIGJhc2VkIG9uIFVUWE8gb3JkZXJcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG86IERlY29kZWRVdHhvT2JqLCB0aHJlc2hvbGQ6IG51bWJlcik6IEZsYXJlVXRpbHMuQWRkcmVzc01hcCB7XG4gICAgY29uc3QgYWRkcmVzc01hcCA9IG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXAoKTtcbiAgICBjb25zdCBzZW5kZXIgPSAodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX2Zyb21BZGRyZXNzZXM7XG5cbiAgICAvLyBJZiBVVFhPIGhhcyBhZGRyZXNzZXMsIGNvbXB1dGUgYWRkcmVzc2VzSW5kZXggdG8gZGV0ZXJtaW5lIHNpZ25hdHVyZSBvcmRlclxuICAgIGlmICh1dHhvICYmIHV0eG8uYWRkcmVzc2VzICYmIHV0eG8uYWRkcmVzc2VzLmxlbmd0aCA+IDAgJiYgc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCB1dHhvQWRkcmVzc2VzID0gdXR4by5hZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSBzZW5kZXIubWFwKChhKSA9PlxuICAgICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuXG4gICAgICAvLyBEZXRlcm1pbmUgc2lnbmF0dXJlIHNsb3Qgb3JkZXIgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXggKHNhbWUgbG9naWMgYXMgY3JlZGVudGlhbHMpXG4gICAgICBpZiAoYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF0gPCBhZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSkge1xuICAgICAgICAvLyBCaXRnbyBjb21lcyBmaXJzdDogc2xvdCAwID0gYml0Z28sIHNsb3QgMSA9IGZpcnN0SW5kZXhcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2JpdGdvSW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltmaXJzdEluZGV4XSksIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXNlci9yZWNvdmVyeSBjb21lcyBmaXJzdDogc2xvdCAwID0gZmlyc3RJbmRleCwgc2xvdCAxID0gYml0Z29cbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2ZpcnN0SW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltiaXRnb0luZGV4XSksIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjazogbWFwIGFkZHJlc3NlcyBzZXF1ZW50aWFsbHkgaWYgbm8gVVRYTyBhZGRyZXNzZXMgYXZhaWxhYmxlXG4gICAgICBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICAgIHNlbmRlci5zbGljZSgwLCB0aHJlc2hvbGQpLmZvckVhY2goKGFkZHIsIGkpID0+IHtcbiAgICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhhZGRyKSwgaSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRyZXNzTWFwO1xuICB9XG59XG4iXX0=
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsOENBQXlFO0FBQ3pFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFDNUMsbURBQWlGO0FBR2pGLG9EQUE0QjtBQUU1QixNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFJdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUk5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBU0Q7Ozs7O09BS0c7SUFDSCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFD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LEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQXRQRCw0REFzUEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENyZWRlbnRpYWwsIEFkZHJlc3MsIHV0aWxzIGFzIEZsYXJlVXRpbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZscnBGZWVTdGF0ZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIHJlY292ZXJTaWduZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMuZml4ZWRGZWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGF3YWl0IHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBGbGFyZSB0cmFuc2FjdGlvbi4gVHJhbnNhY3Rpb24gZmllbGQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBGZWUgaXMgZml4IGZvciBBVk0gYXRvbWljIHR4LlxuICAgKlxuICAgKiBAcmV0dXJucyBuZXR3b3JrLnR4RmVlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZml4ZWRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGNoYWluIGlzIHRoZSBvbmUgc2V0IGZvciB0aGUgY29pbiBpbiBjb2luQ29uZmlnLm5ldHdvcmsuIFRoZSBleHRlcm5hbCBjaGFpbiBpcyB0aGUgb3RoZXIgY2hhaW4gaW52b2x2ZWQuXG4gICAqIFRoZSBleHRlcm5hbCBjaGFpbiBpZCBpcyB0aGUgc291cmNlIG9uIGltcG9ydCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9uIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluSWQgLSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2hhaW5cbiAgICovXG4gIGV4dGVybmFsQ2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCBCdWZmZXIpOiB0aGlzIHtcbiAgICBjb25zdCBuZXdUYXJnZXRDaGFpbklkID0gdHlwZW9mIGNoYWluSWQgPT09ICdzdHJpbmcnID8gdXRpbHMuY2I1OERlY29kZShjaGFpbklkKSA6IEJ1ZmZlci5mcm9tKGNoYWluSWQpO1xuICAgIHRoaXMudmFsaWRhdGVDaGFpbklkKG5ld1RhcmdldENoYWluSWQpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IG5ld1RhcmdldENoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBiaWdpbnR9IGZlZVZhbHVlIC0gdGhlIGZlZSB2YWx1ZVxuICAgKi9cbiAgZmVlKGZlZVZhbHVlOiBzdHJpbmcgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCBmZWUgPSB0eXBlb2YgZmVlVmFsdWUgPT09ICdzdHJpbmcnID8gZmVlVmFsdWUgOiBmZWVWYWx1ZS50b1N0cmluZygpO1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fZmVlLmZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBzdGF0ZSBmb3IgZHluYW1pYyBmZWUgY2FsY3VsYXRpb24gKFAtY2hhaW4gdHJhbnNhY3Rpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge0ZscnBGZWVTdGF0ZX0gc3RhdGUgLSB0aGUgZmVlIHN0YXRlIGZyb20gdGhlIG5ldHdvcmtcbiAgICovXG4gIGZlZVN0YXRlKHN0YXRlOiBGbHJwRmVlU3RhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWVTdGF0ZSA9IHN0YXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnQgfCBzdHJpbmd9IHZhbHVlIC0gdGhlIGFtb3VudCB0byB0cmFuc2ZlclxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBCaWdJbnQodmFsdWUpIDogdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBhZGRyZXNzZXNJbmRleCBmb3IgVVRYT3MgZm9sbG93aW5nIEFWQVggUCBhcHByb2FjaC5cbiAgICogYWRkcmVzc2VzSW5kZXhbc2VuZGVySWR4XSA9IHBvc2l0aW9uIG9mIHNlbmRlcltzZW5kZXJJZHhdIGluIFVUWE8ncyBhZGRyZXNzIGxpc3RcbiAgICpcbiAgICogRXhhbXBsZTpcbiAgICogICBBID0gdXNlciBrZXksIEIgPSBoc20ga2V5LCBDID0gYmFja3VwIGtleVxuICAgKiAgIHNlbmRlciAoYml0Z29BZGRyZXNzZXMpID0gWyBBLCBCLCBDIF1cbiAgICogICB1dHhvLmFkZHJlc3NlcyAoSU1TIGFkZHJlc3NlcykgPSBbIEIsIEMsIEEgXVxuICAgKiAgIGFkZHJlc3Nlc0luZGV4ID0gWyAyLCAwLCAxIF1cbiAgICogICAoc2VuZGVyWzBdPUEgaXMgYXQgcG9zaXRpb24gMiBpbiBVVFhPLCBzZW5kZXJbMV09QiBpcyBhdCBwb3NpdGlvbiAwLCBldGMuKVxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY29tcHV0ZUFkZHJlc3Nlc0luZGV4KCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleCAmJiB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodXR4by5hZGRyZXNzZXMgJiYgdXR4by5hZGRyZXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB1dHhvQWRkcmVzc2VzID0gdXR4by5hZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gc2VuZGVyLm1hcCgoYSkgPT5cbiAgICAgICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBVVFhPcyBoYXZlIGNvbnNpc3RlbnQgYWRkcmVzc2VzLlxuICAgKiBOb3RlOiBVVFhPIHRocmVzaG9sZCBjYW4gZGlmZmVyIGZyb20gdHJhbnNhY3Rpb24gdGhyZXNob2xkIC0gZWFjaCBVVFhPIGhhcyBpdHMgb3duXG4gICAqIHNpZ25hdHVyZSByZXF1aXJlbWVudCBiYXNlZCBvbiBob3cgaXQgd2FzIGNyZWF0ZWQgKGUuZy4sIGNoYW5nZSBvdXRwdXRzIG1heSBoYXZlIHRocmVzaG9sZD0xKS5cbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlVXR4b0FkZHJlc3NlcygpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl91dHhvcy5mb3JFYWNoKCh1dHhvKSA9PiB7XG4gICAgICBpZiAoIXV0eG8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVXR4byBpcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIGlmICh1dHhvLmFkZHJlc3Nlc0luZGV4Py5pbmNsdWRlcygtMSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignQWRkcmVzc2VzIGFyZSBpbmNvbnNpc3RlbnQ6ICcgKyB1dHhvLnR4aWQpO1xuICAgICAgfVxuICAgICAgaWYgKHV0eG8udGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdXR4by50aHJlc2hvbGQgPD0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVVFhPIHRocmVzaG9sZCBtdXN0IGJlIHBvc2l0aXZlOiAnICsgdXR4by50eGlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgY3JlZGVudGlhbCB3aXRoIGR5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXggZnJvbSBVVFhPLlxuICAgKiBNYXRjaGVzIEFWQVggUCBiZWhhdmlvcjogc2lnbmF0dXJlIG9yZGVyIGRlcGVuZHMgb24gVVRYTyBhZGRyZXNzIHBvc2l0aW9ucy5cbiAgICpcbiAgICogYWRkcmVzc2VzSW5kZXhbc2VuZGVySWR4XSA9IHV0eG9Qb3NpdGlvbiB0ZWxscyB1cyB3aGVyZSBlYWNoIHNlbmRlciBpcyBpbiB0aGUgVVRYTy5cbiAgICogV2UgY3JlYXRlIHNpZ25hdHVyZSBzbG90cyBvcmRlcmVkIGJ5IHV0eG9Qb3NpdGlvbiAoc21hbGxlciBwb3NpdGlvbiA9IGVhcmxpZXIgc2xvdCkuXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIGNyZWRlbnRpYWwgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBVVFhPXG4gICAqIEByZXR1cm5zIENyZWRlbnRpYWwgd2l0aCBlbXB0eSBzaWduYXR1cmVzIG9yZGVyZWQgYmFzZWQgb24gVVRYTyBwb3NpdGlvbnNcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG86IERlY29kZWRVdHhvT2JqLCB0aHJlc2hvbGQ6IG51bWJlcik6IENyZWRlbnRpYWwge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIGlmICh0aHJlc2hvbGQgPT09IDEpIHtcbiAgICAgIGlmIChzZW5kZXIgJiYgc2VuZGVyLmxlbmd0aCA+IGZpcnN0SW5kZXggJiYgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZU5ld1NpZygnJyldKTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHZhbGlkIGFkZHJlc3Nlc0luZGV4LCB1c2UgaXQgdG8gZGV0ZXJtaW5lIHNpZ25hdHVyZSBvcmRlclxuICAgIC8vIGFkZHJlc3Nlc0luZGV4W3NlbmRlcklkeF0gPSBwb3NpdGlvbiBpbiBVVFhPXG4gICAgLy8gU21hbGxlciBwb3NpdGlvbiA9IGVhcmxpZXIgc2xvdCBpbiBzaWduYXR1cmUgYXJyYXlcbiAgICBpZiAoYWRkcmVzc2VzSW5kZXgubGVuZ3RoID49IDIgJiYgc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBsZXQgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W107XG5cbiAgICAgIGlmIChhZGRyZXNzZXNJbmRleFtiaXRnb0luZGV4XSA8IGFkZHJlc3Nlc0luZGV4W2ZpcnN0SW5kZXhdKSB7XG4gICAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgICB1dGlscy5jcmVhdGVOZXdTaWcoJycpLFxuICAgICAgICAgIHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpLFxuICAgICAgICBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW1wdHlTaWduYXR1cmVzID0gW1xuICAgICAgICAgIHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpLFxuICAgICAgICAgIHV0aWxzLmNyZWF0ZU5ld1NpZygnJyksXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbXB0eVNpZ25hdHVyZXM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhyZXNob2xkOyBpKyspIHtcbiAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWRkcmVzc01hcCBiYXNlZCBvbiBhZGRyZXNzZXNJbmRleCBmb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoLlxuICAgKiBNYXBzIGVhY2ggc2VuZGVyIGFkZHJlc3MgdG8gaXRzIHNpZ25hdHVyZSBzbG90IGJhc2VkIG9uIFVUWE8gcG9zaXRpb24gb3JkZXJpbmcuXG4gICAqXG4gICAqIGFkZHJlc3Nlc0luZGV4W3NlbmRlcklkeF0gPSB1dHhvUG9zaXRpb25cbiAgICogU2lnbmF0dXJlIHNsb3RzIGFyZSBvcmRlcmVkIGJ5IHV0eG9Qb3NpdGlvbiAoc21hbGxlciA9IGVhcmxpZXIgc2xvdCkuXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIEFkZHJlc3NNYXAgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZCBmb3IgdGhpcyBzcGVjaWZpYyBVVFhPXG4gICAqIEByZXR1cm5zIEFkZHJlc3NNYXAgdGhhdCBtYXBzIGFkZHJlc3NlcyB0byBzaWduYXR1cmUgc2xvdHMgYmFzZWQgb24gVVRYTyBvcmRlclxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQWRkcmVzc01hcEZvclV0eG8odXR4bzogRGVjb2RlZFV0eG9PYmosIHRocmVzaG9sZDogbnVtYmVyKTogRmxhcmVVdGlscy5BZGRyZXNzTWFwIHtcbiAgICBjb25zdCBhZGRyZXNzTWFwID0gbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcCgpO1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuXG4gICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuXG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMSkge1xuICAgICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID4gZmlyc3RJbmRleCkge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbZmlyc3RJbmRleF0pLCAwKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPiAwKSB7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlclswXSksIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKGFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+PSAyICYmIHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2JpdGdvSW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltmaXJzdEluZGV4XSksIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2ZpcnN0SW5kZXhdKSwgMCk7XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltiaXRnb0luZGV4XSksIDEpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgc2VuZGVyLnNsaWNlKDAsIHRocmVzaG9sZCkuZm9yRWFjaCgoYWRkciwgaSkgPT4ge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhhZGRyKSwgaSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWRkcmVzc01hcDtcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import { TransactionExplanation as BaseTransactionExplanation, Entry, SignTransactionOptions, TransactionParams, TransactionPrebuild as BaseTransactionPrebuild, TransactionType, VerifyTransactionOptions, TransactionRecipient } from '@bitgo/sdk-core';
2
+ import { FlrpFeeState } from '@bitgo/public-types';
2
3
  import { pvmSerial, UnsignedTx, TransferableOutput, evmSerial } from '@flarenetwork/flarejs';
3
4
  /**
4
5
  * Enum for Flare transaction types
@@ -93,4 +94,34 @@ export interface FlrpExplainTransactionOptions {
93
94
  };
94
95
  publicKeys?: string[];
95
96
  }
97
+ export interface FeeConfig {
98
+ weights: Dimensions;
99
+ maxCapacity: bigint;
100
+ maxPerSecond: bigint;
101
+ targetPerSecond: bigint;
102
+ /** Minimum gas price */
103
+ minPrice: bigint;
104
+ excessConversionConstant: bigint;
105
+ }
106
+ export declare enum FeeDimensions {
107
+ Bandwidth = 0,
108
+ DBRead = 1,
109
+ DBWrite = 2,
110
+ Compute = 3
111
+ }
112
+ export interface FlrpTransactionFee {
113
+ fee: string;
114
+ type?: string;
115
+ feeState?: FlrpFeeState;
116
+ }
117
+ type DimensionValue = number;
118
+ export type Dimensions = Record<FeeDimensions, DimensionValue>;
119
+ /**
120
+ * Options for EVM export transactions
121
+ */
122
+ export interface ExportEVMOptions {
123
+ threshold: number;
124
+ locktime: bigint;
125
+ }
126
+ export {};
96
127
  //# sourceMappingURL=iface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ADDRESS_SEPARATOR = exports.SECP256K1_Transfer_Output = exports.FlareTransactionType = void 0;
3
+ exports.FeeDimensions = exports.ADDRESS_SEPARATOR = exports.SECP256K1_Transfer_Output = exports.FlareTransactionType = void 0;
4
4
  /**
5
5
  * Enum for Flare transaction types
6
6
  */
@@ -18,4 +18,11 @@ var FlareTransactionType;
18
18
  */
19
19
  exports.SECP256K1_Transfer_Output = 7;
20
20
  exports.ADDRESS_SEPARATOR = '~';
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBOztHQUVHO0FBQ0gsSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzlCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0FBQzlCLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQTRDRDs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFOUIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGFzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBFbnRyeSxcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25QYXJhbXMsXG4gIFRyYW5zYWN0aW9uUHJlYnVpbGQgYXMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IHB2bVNlcmlhbCwgVW5zaWduZWRUeCwgVHJhbnNmZXJhYmxlT3V0cHV0LCBldm1TZXJpYWwgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuXG4vKipcbiAqIEVudW0gZm9yIEZsYXJlIHRyYW5zYWN0aW9uIHR5cGVzXG4gKi9cbmV4cG9ydCBlbnVtIEZsYXJlVHJhbnNhY3Rpb25UeXBlIHtcbiAgRXZtRXhwb3J0VHggPSAnZXZtLkV4cG9ydFR4JyxcbiAgRXZtSW1wb3J0VHggPSAnZXZtLkltcG9ydFR4JyxcbiAgUHZtRXhwb3J0VHggPSAncHZtLkV4cG9ydFR4JyxcbiAgUHZtSW1wb3J0VHggPSAncHZtLkltcG9ydFR4Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHJld2FyZEFkZHJlc3Nlczogc3RyaW5nW107XG4gIGlucHV0czogRW50cnlbXTtcbn1cblxuLyoqXG4gKiBUaGUgdHJhbnNhY3Rpb24gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSB0b0pzb24oKSBmdW5jdGlvbiBvZiBhIHRyYW5zYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHhEYXRhIHtcbiAgaWQ6IHN0cmluZztcbiAgaW5wdXRzOiBFbnRyeVtdO1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIGZyb21BZGRyZXNzZXM6IHN0cmluZ1tdO1xuICB0aHJlc2hvbGQ6IG51bWJlcjtcbiAgbG9ja3RpbWU6IHN0cmluZztcbiAgc2lnbmF0dXJlczogc3RyaW5nW107XG4gIG91dHB1dHM6IEVudHJ5W107XG4gIGNoYW5nZU91dHB1dHM6IEVudHJ5W107XG4gIHNvdXJjZUNoYWluPzogc3RyaW5nO1xuICBkZXN0aW5hdGlvbkNoYWluPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlY29kZWQgVVRYTyBvYmplY3QuIFRoaXMgaXMgZm9yIGEgc2luZ2xlIHV0eG9cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gb3V0cHV0SURcbiAqIEBwYXJhbSB7c3RyaW5nfSBhbW91bnQgQW1vdW50IGFzIGEgQmlnIE51bWJlciBzdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eGlkIFRyYW5zYWN0aW9uIElEIGVuY29kZWQgYXMgY2I1OFxuICogQHBhcmFtIHtzdHJpbmd9IG91dHB1dGlkeCBPdXRwdXQgaW5kZXggYXMgYSBzdHJpbmdcbiAqL1xuZXhwb3J0IHR5cGUgRGVjb2RlZFV0eG9PYmogPSB7XG4gIG91dHB1dElEOiBudW1iZXI7XG4gIGxvY2t0aW1lPzogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xuICBvdXRwdXRpZHg6IHN0cmluZztcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGFkZHJlc3Nlczogc3RyaW5nW107XG4gIGFkZHJlc3Nlc0luZGV4PzogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIFR5cGVJZCB2YWx1ZSBmb3IgU0VDUDI1NksxIFRyYW5zZmVyIE91dHB1dFxuICpcbiAqIFNpbWlsYXIgdG8gQXZhbGFuY2hlIFAtQ2hhaW4ncyBTRUNQMjU2SzEgVHJhbnNmZXIgT3V0cHV0XG4gKi9cbmV4cG9ydCBjb25zdCBTRUNQMjU2SzFfVHJhbnNmZXJfT3V0cHV0ID0gNztcblxuZXhwb3J0IGNvbnN0IEFERFJFU1NfU0VQQVJBVE9SID0gJ34nO1xuXG4vLyBTaW1wbGlmaWVkIHR5cGUgZGVmaW5pdGlvbnMgZm9yIEZsYXJlXG5leHBvcnQgdHlwZSBUeCA9XG4gIHwgcHZtU2VyaWFsLkJhc2VUeFxuICB8IFVuc2lnbmVkVHhcbiAgfCBldm1TZXJpYWwuRXhwb3J0VHhcbiAgfCBldm1TZXJpYWwuSW1wb3J0VHhcbiAgfCBwdm1TZXJpYWwuRXhwb3J0VHhcbiAgfCBwdm1TZXJpYWwuSW1wb3J0VHg7XG5cbmV4cG9ydCB0eXBlIFNlcmlhbGl6ZWRUeCA9IGV2bVNlcmlhbC5FeHBvcnRUeCB8IGV2bVNlcmlhbC5JbXBvcnRUeCB8IHB2bVNlcmlhbC5FeHBvcnRUeCB8IHB2bVNlcmlhbC5JbXBvcnRUeDtcbmV4cG9ydCB0eXBlIEJhc2VUeCA9IHB2bVNlcmlhbC5CYXNlVHg7XG5leHBvcnQgdHlwZSBPdXRwdXQgPSBUcmFuc2ZlcmFibGVPdXRwdXQ7XG5leHBvcnQgaW50ZXJmYWNlIEZscnBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMgZXh0ZW5kcyBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFBhcmFtczogRmxycFRyYW5zYWN0aW9uUGFyYW1zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBUcmFuc2FjdGlvblBhcmFtcyBleHRlbmRzIFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHlwZTogc3RyaW5nO1xuICBsb2NrdGltZT86IG51bWJlcjtcbiAgdW5zcGVudHM/OiBzdHJpbmdbXTtcbiAgc291cmNlQ2hhaW4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxycEVudHJ5IGV4dGVuZHMgRW50cnkge1xuICBpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4UHJlYnVpbGQ6IFRyYW5zYWN0aW9uUHJlYnVpbGQ7XG4gIHBydjogc3RyaW5nIHwgc3RyaW5nW107XG4gIHB1YktleXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uUHJlYnVpbGQge1xuICB0eEhleDogc3RyaW5nO1xuICB0eEluZm86IFR4SW5mbztcbiAgc291cmNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHhJbmZvIHtcbiAgcmVjaXBpZW50czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXTtcbiAgZnJvbTogc3RyaW5nO1xuICB0eGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxycEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eEhleD86IHN0cmluZztcbiAgaGFsZlNpZ25lZD86IHtcbiAgICB0eEhleDogc3RyaW5nO1xuICB9O1xuICBwdWJsaWNLZXlzPzogc3RyaW5nW107XG59XG4iXX0=
21
+ var FeeDimensions;
22
+ (function (FeeDimensions) {
23
+ FeeDimensions[FeeDimensions["Bandwidth"] = 0] = "Bandwidth";
24
+ FeeDimensions[FeeDimensions["DBRead"] = 1] = "DBRead";
25
+ FeeDimensions[FeeDimensions["DBWrite"] = 2] = "DBWrite";
26
+ FeeDimensions[FeeDimensions["Compute"] = 3] = "Compute";
27
+ })(FeeDimensions || (exports.FeeDimensions = FeeDimensions = {}));
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWFBOztHQUVHO0FBQ0gsSUFBWSxvQkFLWDtBQUxELFdBQVksb0JBQW9CO0lBQzlCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0lBQzVCLG9EQUE0QixDQUFBO0FBQzlCLENBQUMsRUFMVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUsvQjtBQTRDRDs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFOUIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFpRXJDLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUN2QiwyREFBYSxDQUFBO0lBQ2IscURBQVUsQ0FBQTtJQUNWLHVEQUFXLENBQUE7SUFDWCx1REFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGFBQWEsNkJBQWIsYUFBYSxRQUt4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIEVudHJ5LFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblBhcmFtcyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCBhcyBCYXNlVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgRmxycEZlZVN0YXRlIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBwdm1TZXJpYWwsIFVuc2lnbmVkVHgsIFRyYW5zZmVyYWJsZU91dHB1dCwgZXZtU2VyaWFsIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcblxuLyoqXG4gKiBFbnVtIGZvciBGbGFyZSB0cmFuc2FjdGlvbiB0eXBlc1xuICovXG5leHBvcnQgZW51bSBGbGFyZVRyYW5zYWN0aW9uVHlwZSB7XG4gIEV2bUV4cG9ydFR4ID0gJ2V2bS5FeHBvcnRUeCcsXG4gIEV2bUltcG9ydFR4ID0gJ2V2bS5JbXBvcnRUeCcsXG4gIFB2bUV4cG9ydFR4ID0gJ3B2bS5FeHBvcnRUeCcsXG4gIFB2bUltcG9ydFR4ID0gJ3B2bS5JbXBvcnRUeCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICByZXdhcmRBZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBpbnB1dHM6IEVudHJ5W107XG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRW50cnlbXTtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBmcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBzdHJpbmc7XG4gIHNpZ25hdHVyZXM6IHN0cmluZ1tdO1xuICBvdXRwdXRzOiBFbnRyeVtdO1xuICBjaGFuZ2VPdXRwdXRzOiBFbnRyeVtdO1xuICBzb3VyY2VDaGFpbj86IHN0cmluZztcbiAgZGVzdGluYXRpb25DaGFpbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGVkIFVUWE8gb2JqZWN0LiBUaGlzIGlzIGZvciBhIHNpbmdsZSB1dHhvXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IG91dHB1dElEXG4gKiBAcGFyYW0ge3N0cmluZ30gYW1vdW50IEFtb3VudCBhcyBhIEJpZyBOdW1iZXIgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gdHhpZCBUcmFuc2FjdGlvbiBJRCBlbmNvZGVkIGFzIGNiNThcbiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRpZHggT3V0cHV0IGluZGV4IGFzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCB0eXBlIERlY29kZWRVdHhvT2JqID0ge1xuICBvdXRwdXRJRDogbnVtYmVyO1xuICBsb2NrdGltZT86IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHR4aWQ6IHN0cmluZztcbiAgb3V0cHV0aWR4OiBzdHJpbmc7XG4gIHRocmVzaG9sZDogbnVtYmVyO1xuICBhZGRyZXNzZXM6IHN0cmluZ1tdO1xuICBhZGRyZXNzZXNJbmRleD86IG51bWJlcltdO1xufTtcblxuLyoqXG4gKiBUeXBlSWQgdmFsdWUgZm9yIFNFQ1AyNTZLMSBUcmFuc2ZlciBPdXRwdXRcbiAqXG4gKiBTaW1pbGFyIHRvIEF2YWxhbmNoZSBQLUNoYWluJ3MgU0VDUDI1NksxIFRyYW5zZmVyIE91dHB1dFxuICovXG5leHBvcnQgY29uc3QgU0VDUDI1NksxX1RyYW5zZmVyX091dHB1dCA9IDc7XG5cbmV4cG9ydCBjb25zdCBBRERSRVNTX1NFUEFSQVRPUiA9ICd+JztcblxuLy8gU2ltcGxpZmllZCB0eXBlIGRlZmluaXRpb25zIGZvciBGbGFyZVxuZXhwb3J0IHR5cGUgVHggPVxuICB8IHB2bVNlcmlhbC5CYXNlVHhcbiAgfCBVbnNpZ25lZFR4XG4gIHwgZXZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgZXZtU2VyaWFsLkltcG9ydFR4XG4gIHwgcHZtU2VyaWFsLkV4cG9ydFR4XG4gIHwgcHZtU2VyaWFsLkltcG9ydFR4O1xuXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkVHggPSBldm1TZXJpYWwuRXhwb3J0VHggfCBldm1TZXJpYWwuSW1wb3J0VHggfCBwdm1TZXJpYWwuRXhwb3J0VHggfCBwdm1TZXJpYWwuSW1wb3J0VHg7XG5leHBvcnQgdHlwZSBCYXNlVHggPSBwdm1TZXJpYWwuQmFzZVR4O1xuZXhwb3J0IHR5cGUgT3V0cHV0ID0gVHJhbnNmZXJhYmxlT3V0cHV0O1xuZXhwb3J0IGludGVyZmFjZSBGbHJwVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgVmVyaWZ5VHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQYXJhbXM6IEZscnBUcmFuc2FjdGlvblBhcmFtcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwVHJhbnNhY3Rpb25QYXJhbXMgZXh0ZW5kcyBUcmFuc2FjdGlvblBhcmFtcyB7XG4gIHR5cGU6IHN0cmluZztcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHVuc3BlbnRzPzogc3RyaW5nW107XG4gIHNvdXJjZUNoYWluPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBFbnRyeSBleHRlbmRzIEVudHJ5IHtcbiAgaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbHJwU2lnblRyYW5zYWN0aW9uT3B0aW9ucyBleHRlbmRzIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJLZXlzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25QcmVidWlsZCBleHRlbmRzIEJhc2VUcmFuc2FjdGlvblByZWJ1aWxkIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgdHhJbmZvOiBUeEluZm87XG4gIHNvdXJjZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR4SW5mbyB7XG4gIHJlY2lwaWVudHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIGZyb206IHN0cmluZztcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhIZXg/OiBzdHJpbmc7XG4gIGhhbGZTaWduZWQ/OiB7XG4gICAgdHhIZXg6IHN0cmluZztcbiAgfTtcbiAgcHVibGljS2V5cz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZlZUNvbmZpZyB7XG4gIHdlaWdodHM6IERpbWVuc2lvbnM7XG4gIG1heENhcGFjaXR5OiBiaWdpbnQ7XG4gIG1heFBlclNlY29uZDogYmlnaW50O1xuICB0YXJnZXRQZXJTZWNvbmQ6IGJpZ2ludDtcbiAgLyoqIE1pbmltdW0gZ2FzIHByaWNlICovXG4gIG1pblByaWNlOiBiaWdpbnQ7XG4gIGV4Y2Vzc0NvbnZlcnNpb25Db25zdGFudDogYmlnaW50O1xufVxuXG5leHBvcnQgZW51bSBGZWVEaW1lbnNpb25zIHtcbiAgQmFuZHdpZHRoID0gMCxcbiAgREJSZWFkID0gMSxcbiAgREJXcml0ZSA9IDIsXG4gIENvbXB1dGUgPSAzLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZscnBUcmFuc2FjdGlvbkZlZSB7XG4gIGZlZTogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBmZWVTdGF0ZT86IEZscnBGZWVTdGF0ZTtcbn1cblxudHlwZSBEaW1lbnNpb25WYWx1ZSA9IG51bWJlcjtcblxuZXhwb3J0IHR5cGUgRGltZW5zaW9ucyA9IFJlY29yZDxGZWVEaW1lbnNpb25zLCBEaW1lbnNpb25WYWx1ZT47XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgRVZNIGV4cG9ydCB0cmFuc2FjdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHBvcnRFVk1PcHRpb25zIHtcbiAgdGhyZXNob2xkOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBiaWdpbnQ7XG59XG4iXX0=
@@ -1,7 +1,6 @@
1
1
  import { TypeSymbols } from '@flarenetwork/flarejs';
2
2
  import { TransactionType } from '@bitgo/sdk-core';
3
3
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
4
- import { DecodedUtxoObj } from './iface';
5
4
  import { Transaction } from './transaction';
6
5
  import { TransactionBuilder } from './transactionBuilder';
7
6
  export declare class PermissionlessValidatorTxBuilder extends TransactionBuilder {
@@ -16,7 +15,6 @@ export declare class PermissionlessValidatorTxBuilder extends TransactionBuilder
16
15
  protected get transactionType(): TransactionType;
17
16
  validateLocktime(locktime: bigint): void;
18
17
  validateDelegationFeeRate(delegationFeeRate: number): void;
19
- validateUtxo(value: DecodedUtxoObj): void;
20
18
  validateNodeID(nodeID: string): void;
21
19
  validateStakeDuration(startTime: bigint, endTime: bigint): void;
22
20
  validateStakeAmount(amount: bigint): void;
@@ -1 +1 @@
1
- {"version":3,"file":"permissionlessValidatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/permissionlessValidatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAmE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAEzB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAGD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ1D,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQzC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;cAOzB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAW3D;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI/C,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;CACF"}
1
+ {"version":3,"file":"permissionlessValidatorTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/permissionlessValidatorTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAmE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,gCAAiC,SAAQ,kBAAkB;IACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;gBAEzB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAGD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC,yBAAyB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAQ1D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAM/D,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQzC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAMjD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAMxC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMtC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;cAOzB,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAW3D;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAI/C,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,WAAW,CAEvC;IAED,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,WAAW,EAEjD;CACF"}