@bitgo/sdk-coin-sui 5.22.0 → 5.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/lib/iface.d.ts +19 -1
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +8 -1
- package/dist/src/lib/mystenlab/builder/Inputs.d.ts +31 -2
- package/dist/src/lib/mystenlab/builder/Inputs.d.ts.map +1 -1
- package/dist/src/lib/mystenlab/builder/Inputs.js +43 -3
- package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts +29 -0
- package/dist/src/lib/mystenlab/builder/TransactionBlock.d.ts.map +1 -1
- package/dist/src/lib/mystenlab/builder/TransactionBlock.js +23 -1
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts +21 -0
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.d.ts.map +1 -1
- package/dist/src/lib/mystenlab/builder/TransactionDataBlock.js +6 -2
- package/dist/src/lib/mystenlab/types/coin.d.ts +4 -2
- package/dist/src/lib/mystenlab/types/coin.d.ts.map +1 -1
- package/dist/src/lib/mystenlab/types/coin.js +3 -2
- package/dist/src/lib/mystenlab/types/sui-bcs.d.ts +18 -0
- package/dist/src/lib/mystenlab/types/sui-bcs.d.ts.map +1 -1
- package/dist/src/lib/mystenlab/types/sui-bcs.js +13 -1
- package/dist/src/lib/tokenTransferBuilder.d.ts +30 -2
- package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -1
- package/dist/src/lib/tokenTransferBuilder.js +82 -12
- package/dist/src/lib/tokenTransferTransaction.d.ts +3 -1
- package/dist/src/lib/tokenTransferTransaction.d.ts.map +1 -1
- package/dist/src/lib/tokenTransferTransaction.js +26 -12
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +23 -1
- package/dist/src/lib/transactionBuilder.d.ts +7 -1
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +15 -2
- package/dist/src/lib/transferBuilder.d.ts +44 -1
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +118 -2
- package/dist/src/lib/transferTransaction.d.ts.map +1 -1
- package/dist/src/lib/transferTransaction.js +17 -9
- package/dist/src/lib/utils.d.ts +11 -2
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +26 -2
- package/dist/src/sui.d.ts +2 -2
- package/dist/src/sui.d.ts.map +1 -1
- package/dist/src/sui.js +35 -7
- package/dist/test/unit/sui.js +64 -40
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +107 -1
- package/dist/test/unit/transactionBuilder/transferBuilder.js +131 -1
- package/dist/test/unit/utils.js +106 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -12,9 +12,18 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
12
12
|
const builder_1 = require("./mystenlab/builder");
|
|
13
13
|
const utils_1 = __importDefault(require("./utils"));
|
|
14
14
|
const constants_1 = require("./constants");
|
|
15
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
15
16
|
class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
16
17
|
constructor(_coinConfig) {
|
|
17
18
|
super(_coinConfig);
|
|
19
|
+
/**
|
|
20
|
+
* Balance held in the Sui address balance system (not in coin objects).
|
|
21
|
+
* When set, this amount is included in the total available balance for transfer.
|
|
22
|
+
* At execution time, Sui's GasCoin automatically draws from both coin objects
|
|
23
|
+
* (gasData.payment) and address balance, so SplitCoins(GasCoin, [amount])
|
|
24
|
+
* can spend funds from either source.
|
|
25
|
+
*/
|
|
26
|
+
this._fundsInAddressBalance = new bignumber_js_1.default(0);
|
|
18
27
|
this._transaction = new transferTransaction_1.TransferTransaction(_coinConfig);
|
|
19
28
|
}
|
|
20
29
|
get transactionType() {
|
|
@@ -25,6 +34,26 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
25
34
|
this._recipients = recipients;
|
|
26
35
|
return this;
|
|
27
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the amount of funds held in the Sui address balance system for this sender.
|
|
39
|
+
* This is the `fundsInAddressBalance` value from the `suix_getBalance` RPC response.
|
|
40
|
+
* It is added to the coin object balances when computing total available funds.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} amount - amount in MIST held in address balance
|
|
43
|
+
*/
|
|
44
|
+
fundsInAddressBalance(amount) {
|
|
45
|
+
this._fundsInAddressBalance = new bignumber_js_1.default(amount);
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns the total available balance: sum of all gas payment coin object
|
|
50
|
+
* balances plus any funds held in the address balance system.
|
|
51
|
+
*
|
|
52
|
+
* @param {BigNumber} coinObjectsBalance - sum of balances from gasData.payment coin objects
|
|
53
|
+
*/
|
|
54
|
+
totalAvailableBalance(coinObjectsBalance) {
|
|
55
|
+
return coinObjectsBalance.plus(this._fundsInAddressBalance);
|
|
56
|
+
}
|
|
28
57
|
/** @inheritdoc */
|
|
29
58
|
validateTransaction(transaction) {
|
|
30
59
|
if (!transaction.suiTransaction) {
|
|
@@ -72,9 +101,21 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
72
101
|
this.type(iface_1.SuiTransactionType.Transfer);
|
|
73
102
|
this.sender(txData.sender);
|
|
74
103
|
this.gasData(txData.gasData);
|
|
104
|
+
if (txData.expiration && !('None' in txData.expiration)) {
|
|
105
|
+
this._expiration = txData.expiration;
|
|
106
|
+
}
|
|
75
107
|
if (txData.inputObjects) {
|
|
76
108
|
this.inputObjects(txData.inputObjects);
|
|
77
109
|
}
|
|
110
|
+
// Reconstruct fundsInAddressBalance from BalanceWithdrawal input if present.
|
|
111
|
+
// After BCS deserialization inputs are CallArg format: { BalanceWithdrawal: {...} }
|
|
112
|
+
// During building they are TransactionBlockInput format: { kind:'Input', value: { BalanceWithdrawal: {...} } }
|
|
113
|
+
const withdrawalInput = tx.suiTransaction?.tx?.inputs?.find((input) => (input !== null && typeof input === 'object' && 'BalanceWithdrawal' in input) ||
|
|
114
|
+
(input?.value !== null && typeof input?.value === 'object' && 'BalanceWithdrawal' in (input.value ?? {})));
|
|
115
|
+
if (withdrawalInput) {
|
|
116
|
+
const bw = withdrawalInput.BalanceWithdrawal ?? withdrawalInput.value?.BalanceWithdrawal;
|
|
117
|
+
this._fundsInAddressBalance = new bignumber_js_1.default(String(bw.amount));
|
|
118
|
+
}
|
|
78
119
|
const recipients = utils_1.default.getRecipients(tx.suiTransaction);
|
|
79
120
|
this.send(recipients);
|
|
80
121
|
}
|
|
@@ -91,9 +132,36 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
91
132
|
if (this._inputObjects && this._inputObjects.length > 0) {
|
|
92
133
|
this.validateInputObjectsBase(this._inputObjects);
|
|
93
134
|
}
|
|
135
|
+
// When fundsInAddressBalance is set, validate that total recipient amount
|
|
136
|
+
// does not exceed available address balance. Coin object balances are not
|
|
137
|
+
// stored in the builder (gasData.payment holds only ObjectRefs), so only
|
|
138
|
+
// the address balance portion can be cross-checked here.
|
|
139
|
+
if (this._fundsInAddressBalance.gt(0)) {
|
|
140
|
+
const totalRecipientAmount = this._recipients.reduce((acc, r) => acc.plus(new bignumber_js_1.default(r.amount)), new bignumber_js_1.default(0));
|
|
141
|
+
(0, assert_1.default)(totalRecipientAmount.gt(0), new sdk_core_1.BuildTransactionError('total recipient amount must be greater than 0'));
|
|
142
|
+
}
|
|
94
143
|
}
|
|
95
144
|
/**
|
|
96
|
-
* Build transfer programmable transaction
|
|
145
|
+
* Build transfer programmable transaction.
|
|
146
|
+
*
|
|
147
|
+
* Three build paths:
|
|
148
|
+
*
|
|
149
|
+
* Path 1a — Sponsored with coin objects (sender ≠ gasData.owner, inputObjects provided):
|
|
150
|
+
* [optional withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>]
|
|
151
|
+
* MergeCoins(inputObject[0], [inputObject[1..], addrCoin?])
|
|
152
|
+
* SplitCoins(mergedObject, [amount]) → TransferObjects
|
|
153
|
+
* Handles Cases 4 (coins only), 6 (coins, sponsor addr-bal gas), 8 (coins+addr-bal).
|
|
154
|
+
*
|
|
155
|
+
* Path 1b — Sponsored, address balance only (sender ≠ gasData.owner, no inputObjects):
|
|
156
|
+
* withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI>
|
|
157
|
+
* SplitCoins(addrCoin, [amount]) → TransferObjects
|
|
158
|
+
* Handles Case 5 (sponsor coin-object gas) and Case 7/Phase-4b (sponsor addr-bal gas).
|
|
159
|
+
* Caller must set ValidDuring expiration when gasData.payment = [] (Cases 7, 9).
|
|
160
|
+
*
|
|
161
|
+
* Path 2 — Self-pay (sender === gasData.owner):
|
|
162
|
+
* SplitCoins(GasCoin, [amount]) → TransferObjects
|
|
163
|
+
* GasCoin at Sui execution time = gasData.payment objects merged + fundsInAddressBalance.
|
|
164
|
+
* Handles Case 1 (coins), Case 2 (addr-bal only, caller sets ValidDuring), Case 3 (mixed).
|
|
97
165
|
*
|
|
98
166
|
* @protected
|
|
99
167
|
*/
|
|
@@ -101,7 +169,21 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
101
169
|
this.validateTransactionFields();
|
|
102
170
|
const programmableTxBuilder = new builder_1.TransactionBlock();
|
|
103
171
|
if (this._sender !== this._gasData.owner && this._inputObjects && this._inputObjects.length > 0) {
|
|
172
|
+
// Path 1: sponsored transaction.
|
|
173
|
+
// The fee payer (gasData.owner) pays gas. The sender's funds come from:
|
|
174
|
+
// - coin objects (inputObjects)
|
|
175
|
+
// - address balance via tx.withdrawal() + 0x2::coin::redeem_funds
|
|
104
176
|
const inputObjects = this._inputObjects.map((object) => programmableTxBuilder.object(builder_1.Inputs.ObjectRef(object)));
|
|
177
|
+
// If the sender also has address balance, withdraw it as a Coin<SUI> and
|
|
178
|
+
// merge it into the coin-object pool before splitting for recipients.
|
|
179
|
+
if (this._fundsInAddressBalance.gt(0)) {
|
|
180
|
+
const [addrCoin] = programmableTxBuilder.moveCall({
|
|
181
|
+
target: '0x2::coin::redeem_funds',
|
|
182
|
+
typeArguments: ['0x2::sui::SUI'],
|
|
183
|
+
arguments: [programmableTxBuilder.withdrawal({ amount: BigInt(this._fundsInAddressBalance.toFixed()) })],
|
|
184
|
+
});
|
|
185
|
+
inputObjects.push(addrCoin);
|
|
186
|
+
}
|
|
105
187
|
const mergedObject = inputObjects.shift();
|
|
106
188
|
if (inputObjects.length > 0) {
|
|
107
189
|
programmableTxBuilder.mergeCoins(mergedObject, inputObjects);
|
|
@@ -123,6 +205,38 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
123
205
|
gasData: {
|
|
124
206
|
...this._gasData,
|
|
125
207
|
},
|
|
208
|
+
expiration: this._expiration,
|
|
209
|
+
fundsInAddressBalance: this._fundsInAddressBalance.gt(0) ? this._fundsInAddressBalance.toFixed() : undefined,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
else if (this._sender !== this._gasData.owner && this._fundsInAddressBalance.gt(0)) {
|
|
213
|
+
// Path 1b: sponsored, address balance only — no coin inputObjects.
|
|
214
|
+
// Sender's funds come entirely from address balance; gas is paid by the sponsor.
|
|
215
|
+
// withdrawal(fundsInAddressBalance) → redeem_funds → Coin<SUI> → SplitCoins → TransferObjects
|
|
216
|
+
const [addrCoin] = programmableTxBuilder.moveCall({
|
|
217
|
+
target: '0x2::coin::redeem_funds',
|
|
218
|
+
typeArguments: ['0x2::sui::SUI'],
|
|
219
|
+
arguments: [programmableTxBuilder.withdrawal({ amount: BigInt(this._fundsInAddressBalance.toFixed()) })],
|
|
220
|
+
});
|
|
221
|
+
this._recipients.forEach((recipient) => {
|
|
222
|
+
const splitObject = programmableTxBuilder.splitCoins(addrCoin, [
|
|
223
|
+
programmableTxBuilder.pure(Number(recipient.amount)),
|
|
224
|
+
]);
|
|
225
|
+
programmableTxBuilder.transferObjects([splitObject], programmableTxBuilder.object(recipient.address));
|
|
226
|
+
});
|
|
227
|
+
const txData1b = programmableTxBuilder.blockData;
|
|
228
|
+
return {
|
|
229
|
+
type: this._type,
|
|
230
|
+
sender: this._sender,
|
|
231
|
+
tx: {
|
|
232
|
+
inputs: [...txData1b.inputs],
|
|
233
|
+
transactions: [...txData1b.transactions],
|
|
234
|
+
},
|
|
235
|
+
gasData: {
|
|
236
|
+
...this._gasData,
|
|
237
|
+
},
|
|
238
|
+
expiration: this._expiration,
|
|
239
|
+
fundsInAddressBalance: this._fundsInAddressBalance.toFixed(),
|
|
126
240
|
};
|
|
127
241
|
}
|
|
128
242
|
else {
|
|
@@ -158,9 +272,11 @@ class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
158
272
|
...this._gasData,
|
|
159
273
|
payment: this._gasData.payment.slice(0, constants_1.MAX_GAS_OBJECTS - 1),
|
|
160
274
|
},
|
|
275
|
+
expiration: this._expiration,
|
|
276
|
+
fundsInAddressBalance: this._fundsInAddressBalance.gt(0) ? this._fundsInAddressBalance.toFixed() : undefined,
|
|
161
277
|
};
|
|
162
278
|
}
|
|
163
279
|
}
|
|
164
280
|
}
|
|
165
281
|
exports.TransferBuilder = TransferBuilder;
|
|
166
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELDhDQUE2RjtBQUM3RixtQ0FBOEY7QUFFOUYsK0RBQTREO0FBQzVELG9EQUE0QjtBQUM1QixpREFLNkI7QUFDN0Isb0RBQTRCO0FBQzVCLDJDQUFnRTtBQUVoRSxNQUFhLGVBQWdCLFNBQVEsdUNBQW1EO0lBR3RGLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSx5Q0FBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksQ0FBQyxVQUF1QjtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLFdBQWdDO1FBQ2xELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFZO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNSLGtCQUFrQixDQUFDLGNB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O0FBcExELDBDQW9MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFN1aVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvblR5cGUsIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIElucHV0cyxcbiAgVHJhbnNhY3Rpb25zIGFzIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLFxuICBUcmFuc2FjdGlvbkJsb2NrIGFzIFByb2dyYW1taW5nVHJhbnNhY3Rpb25CbG9ja0J1aWxkZXIsXG4gIFRyYW5zYWN0aW9uQXJndW1lbnQsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTUFYX0NPTU1BTkRfQVJHUywgTUFYX0dBU19PQkpFQ1RTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIF9yZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50czogUmVjaXBpZW50W10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBUcmFuc2ZlclRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbi5zdWlUcmFuc2FjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBzaWduKGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0U3VpVHJhbnNhY3Rpb24odGhpcy5idWlsZFN1aVRyYW5zYWN0aW9uKCkpO1xuICAgIHN1cGVyLnNpZ24oa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICB0aGlzLnZhbGlkYXRlUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5pbml0QnVpbGRlcih0eCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPj4ge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0U3VpVHJhbnNhY3Rpb24odGhpcy5idWlsZFN1aVRyYW5zYWN0aW9uKCkpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcblxuICAgIGlmICh0aGlzLl9zaWduZXIpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbih0aGlzLl9zaWduZXIpO1xuICAgIH1cblxuICAgIHRoaXMuX3NpZ25hdHVyZXMuZm9yRWFjaCgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLmFkZFNpZ25hdHVyZShzaWduYXR1cmUucHVibGljS2V5LCBzaWduYXR1cmUuc2lnbmF0dXJlKTtcbiAgICB9KTtcblxuICAgIHRoaXMudHJhbnNhY3Rpb24ubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSB0cmFuc2FjdGlvbiBidWlsZGVyIGZpZWxkcyB1c2luZyB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHR4IHRoZSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNmZXJUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG5cbiAgICBpZiAodHguc2lnbmF0dXJlICYmIHR4LnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzID0gW3R4LnN1aVNpZ25hdHVyZV07XG4gICAgfVxuXG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgdGhpcy50eXBlKFN1aVRyYW5zYWN0aW9uVHlwZS5UcmFuc2Zlcik7XG4gICAgdGhpcy5zZW5kZXIodHhEYXRhLnNlbmRlcik7XG4gICAgdGhpcy5nYXNEYXRhKHR4RGF0YS5nYXNEYXRhKTtcblxuICAgIGlmICh0eERhdGEuaW5wdXRPYmplY3RzKSB7XG4gICAgICB0aGlzLmlucHV0T2JqZWN0cyh0eERhdGEuaW5wdXRPYmplY3RzKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMuZ2V0UmVjaXBpZW50cyh0eC5zdWlUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5zZW5kKHJlY2lwaWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgYXNzZXJ0KHRoaXMuX3R5cGUsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3R5cGUgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KFxuICAgICAgdGhpcy5fcmVjaXBpZW50cyAmJiB0aGlzLl9yZWNpcGllbnRzLmxlbmd0aCA+IDAsXG4gICAgICBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhdCBsZWFzdCBvbmUgcmVjaXBpZW50IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpXG4gICAgKTtcbiAgICBhc3NlcnQodGhpcy5fZ2FzRGF0YSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZ2FzRGF0YSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEodGhpcy5fZ2FzRGF0YSk7XG5cbiAgICAvLyBJZiBpbnB1dE9iamVjdHMgYXJlIHByb3ZpZGVkLCB2YWxpZGF0ZSB0aGVtXG4gICAgaWYgKHRoaXMuX2lucHV0T2JqZWN0cyAmJiB0aGlzLl9pbnB1dE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy52YWxpZGF0ZUlucHV0T2JqZWN0c0Jhc2UodGhpcy5faW5wdXRPYmplY3RzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdHJhbnNmZXIgcHJvZ3JhbW1hYmxlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBidWlsZFN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTtcbiAgICBjb25zdCBwcm9ncmFtbWFibGVUeEJ1aWxkZXIgPSBuZXcgUHJvZ3JhbW1pbmdUcmFuc2FjdGlvbkJsb2NrQnVpbGRlcigpO1xuXG4gICAgaWYgKHRoaXMuX3NlbmRlciAhPT0gdGhpcy5fZ2FzRGF0YS5vd25lciAmJiB0aGlzLl9pbnB1dE9iamVjdHMgJiYgdGhpcy5faW5wdXRPYmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGlucHV0T2JqZWN0cyA9IHRoaXMuX2lucHV0T2JqZWN0cy5tYXAoKG9iamVjdCkgPT4gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChJbnB1dHMuT2JqZWN0UmVmKG9iamVjdCkpKTtcbiAgICAgIGNvbnN0IG1lcmdlZE9iamVjdCA9IGlucHV0T2JqZWN0cy5zaGlmdCgpIGFzIFRyYW5zYWN0aW9uQXJndW1lbnQ7XG4gICAgICBpZiAoaW5wdXRPYmplY3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm1lcmdlQ29pbnMobWVyZ2VkT2JqZWN0LCBpbnB1dE9iamVjdHMpO1xuICAgICAgfVxuICAgICAgdGhpcy5fcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgY29uc3Qgc3BsaXRPYmplY3QgPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuc3BsaXRDb2lucyhtZXJnZWRPYmplY3QsIFtcbiAgICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIucHVyZShOdW1iZXIocmVjaXBpZW50LmFtb3VudCkpLFxuICAgICAgICBdKTtcbiAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnRyYW5zZmVyT2JqZWN0cyhbc3BsaXRPYmplY3RdLCBwcm9ncmFtbWFibGVUeEJ1aWxkZXIub2JqZWN0KHJlY2lwaWVudC5hZGRyZXNzKSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHR4RGF0YSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgdHg6IHtcbiAgICAgICAgICBpbnB1dHM6IFsuLi50eERhdGEuaW5wdXRzXSxcbiAgICAgICAgICB0cmFuc2FjdGlvbnM6IFsuLi50eERhdGEudHJhbnNhY3Rpb25zXSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2FzRGF0YToge1xuICAgICAgICAgIC4uLnRoaXMuX2dhc0RhdGEsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBudW1iZXIgb2Ygb2JqZWN0cyBwYXNzZWQgYXMgZ2FzIHBheW1lbnQgc2hvdWxkIGJlIHN0cmljdGx5IGxlc3MgdGhhbiBgTUFYX0dBU19PQkpFQ1RTYC4gV2hlbiB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIHJlcXVpcmVzIGEgbGFyZ2VyIG51bWJlciBvZiBpbnB1dHMgd2UgdXNlIHRoZSBtZXJnZSBjb21tYW5kIHRvIG1lcmdlIHRoZSByZXN0IG9mIHRoZSBvYmplY3RzIGludG8gdGhlIGdhc0NvaW5cbiAgICAgIGlmICh0aGlzLl9nYXNEYXRhLnBheW1lbnQubGVuZ3RoID49IE1BWF9HQVNfT0JKRUNUUykge1xuICAgICAgICBjb25zdCBnYXNQYXltZW50T2JqZWN0cyA9IHRoaXMuX2dhc0RhdGEucGF5bWVudFxuICAgICAgICAgIC5zbGljZShNQVhfR0FTX09CSkVDVFMgLSAxKVxuICAgICAgICAgIC5tYXAoKG9iamVjdCkgPT4gSW5wdXRzLk9iamVjdFJlZihvYmplY3QpKTtcblxuICAgICAgICAvLyBsaW1pdCBmb3IgdG90YWwgbnVtYmVyIG9mIGBhcmdzOiBDYWxsQXJnW11gIGZvciBhIHNpbmdsZSBjb21tYW5kIGlzIE1BWF9DT01NQU5EX0FSR1Mgc28gdGhlIG1heCBsZW5ndGggb2ZcbiAgICAgICAgLy8gYHNvdXJjZXNbXWAgZm9yIGEgYG1lcmdlQ29pbnMoZGVzdGluYXRpb24sIHNvdXJjZXNbXSlgIGNvbW1hbmQgaXMgTUFYX0NPTU1BTkRfQVJHUyAtIDEgKDEgdXNlZCB1cCBmb3JcbiAgICAgICAgLy8gYGRlc3RpbmF0aW9uYCkuIFdlIG5lZWQgdG8gY3JlYXRlIGEgdG90YWwgb2YgYGdhc1BheW1lbnRPYmplY3RzLyhNQVhfQ09NTUFORF9BUkdTIC0gMSlgIG1lcmdlIGNvbW1hbmRzIHRvXG4gICAgICAgIC8vIG1lcmdlIGFsbCB0aGUgb2JqZWN0c1xuICAgICAgICB3aGlsZSAoZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5tZXJnZUNvaW5zKFxuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcyxcbiAgICAgICAgICAgIGdhc1BheW1lbnRPYmplY3RzLnNwbGljZSgwLCBNQVhfQ09NTUFORF9BUkdTIC0gMSkubWFwKChvYmplY3QpID0+IHByb2dyYW1tYWJsZVR4QnVpbGRlci5vYmplY3Qob2JqZWN0KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvaW4gPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYWRkKFxuICAgICAgICAgIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLlNwbGl0Q29pbnMocHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcywgW1xuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnB1cmUoTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKSxcbiAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYWRkKFxuICAgICAgICAgIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLlRyYW5zZmVyT2JqZWN0cyhbY29pbl0sIHByb2dyYW1tYWJsZVR4QnVpbGRlci5vYmplY3QocmVjaXBpZW50LmFkZHJlc3MpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBjb25zdCB0eERhdGEgPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYmxvY2tEYXRhO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogdGhpcy5fdHlwZSxcbiAgICAgICAgc2VuZGVyOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgIHR4OiB7XG4gICAgICAgICAgaW5wdXRzOiBbLi4udHhEYXRhLmlucHV0c10sXG4gICAgICAgICAgdHJhbnNhY3Rpb25zOiBbLi4udHhEYXRhLnRyYW5zYWN0aW9uc10sXG4gICAgICAgIH0sXG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICAuLi50aGlzLl9nYXNEYXRhLFxuICAgICAgICAgIHBheW1lbnQ6IHRoaXMuX2dhc0RhdGEucGF5bWVudC5zbGljZSgwLCBNQVhfR0FTX09CSkVDVFMgLSAxKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTBEO0FBRTFELDhDQUE2RjtBQUM3RixtQ0FBOEY7QUFFOUYsK0RBQTREO0FBQzVELG9EQUE0QjtBQUM1QixpREFLNkI7QUFDN0Isb0RBQTRCO0FBQzVCLDJDQUFnRTtBQUNoRSxnRUFBcUM7QUFFckMsTUFBYSxlQUFnQixTQUFRLHVDQUFtRDtJQVd0RixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQVZyQjs7Ozs7O1dBTUc7UUFDTywyQkFBc0IsR0FBYyxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFJN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxDQUFDLFVBQXVCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxNQUFjO1FBQ2xDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxxQkFBcUIsQ0FBQyxrQkFBNkI7UUFDakQsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELGtCQUFrQjtJ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Q0osQ0FBQyxDQUFDLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUM7WUFDL0MsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2hCLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDcEIsRUFBRSxFQUFFO29CQUNGLE1BQU0sRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztvQkFDMUIsWUFBWSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO2lCQUN2QztnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsR0FBRyxJQUFJLENBQUMsUUFBUTtvQkFDaEIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsMkJBQWUsR0FBRyxDQUFDLENBQUM7aUJBQzdEO2dCQUNELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDNUIscUJBQXFCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQzdHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBclRELDBDQXFUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBCYXNlS2V5LCBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFN1aVRyYW5zYWN0aW9uLCBTdWlUcmFuc2FjdGlvblR5cGUsIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2ZlclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2ZlclRyYW5zYWN0aW9uJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIElucHV0cyxcbiAgVHJhbnNhY3Rpb25zIGFzIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLFxuICBUcmFuc2FjdGlvbkJsb2NrIGFzIFByb2dyYW1taW5nVHJhbnNhY3Rpb25CbG9ja0J1aWxkZXIsXG4gIFRyYW5zYWN0aW9uQXJndW1lbnQsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTUFYX0NPTU1BTkRfQVJHUywgTUFYX0dBU19PQkpFQ1RTIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIF9yZWNpcGllbnRzOiBSZWNpcGllbnRbXTtcbiAgLyoqXG4gICAqIEJhbGFuY2UgaGVsZCBpbiB0aGUgU3VpIGFkZHJlc3MgYmFsYW5jZSBzeXN0ZW0gKG5vdCBpbiBjb2luIG9iamVjdHMpLlxuICAgKiBXaGVuIHNldCwgdGhpcyBhbW91bnQgaXMgaW5jbHVkZWQgaW4gdGhlIHRvdGFsIGF2YWlsYWJsZSBiYWxhbmNlIGZvciB0cmFuc2Zlci5cbiAgICogQXQgZXhlY3V0aW9uIHRpbWUsIFN1aSdzIEdhc0NvaW4gYXV0b21hdGljYWxseSBkcmF3cyBmcm9tIGJvdGggY29pbiBvYmplY3RzXG4gICAqIChnYXNEYXRhLnBheW1lbnQpIGFuZCBhZGRyZXNzIGJhbGFuY2UsIHNvIFNwbGl0Q29pbnMoR2FzQ29pbiwgW2Ftb3VudF0pXG4gICAqIGNhbiBzcGVuZCBmdW5kcyBmcm9tIGVpdGhlciBzb3VyY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZTogQmlnTnVtYmVyID0gbmV3IEJpZ051bWJlcigwKTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNmZXJUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50czogUmVjaXBpZW50W10pOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlUmVjaXBpZW50cyhyZWNpcGllbnRzKTtcbiAgICB0aGlzLl9yZWNpcGllbnRzID0gcmVjaXBpZW50cztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCBvZiBmdW5kcyBoZWxkIGluIHRoZSBTdWkgYWRkcmVzcyBiYWxhbmNlIHN5c3RlbSBmb3IgdGhpcyBzZW5kZXIuXG4gICAqIFRoaXMgaXMgdGhlIGBmdW5kc0luQWRkcmVzc0JhbGFuY2VgIHZhbHVlIGZyb20gdGhlIGBzdWl4X2dldEJhbGFuY2VgIFJQQyByZXNwb25zZS5cbiAgICogSXQgaXMgYWRkZWQgdG8gdGhlIGNvaW4gb2JqZWN0IGJhbGFuY2VzIHdoZW4gY29tcHV0aW5nIHRvdGFsIGF2YWlsYWJsZSBmdW5kcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudCAtIGFtb3VudCBpbiBNSVNUIGhlbGQgaW4gYWRkcmVzcyBiYWxhbmNlXG4gICAqL1xuICBmdW5kc0luQWRkcmVzc0JhbGFuY2UoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UgPSBuZXcgQmlnTnVtYmVyKGFtb3VudCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdG90YWwgYXZhaWxhYmxlIGJhbGFuY2U6IHN1bSBvZiBhbGwgZ2FzIHBheW1lbnQgY29pbiBvYmplY3RcbiAgICogYmFsYW5jZXMgcGx1cyBhbnkgZnVuZHMgaGVsZCBpbiB0aGUgYWRkcmVzcyBiYWxhbmNlIHN5c3RlbS5cbiAgICpcbiAgICogQHBhcmFtIHtCaWdOdW1iZXJ9IGNvaW5PYmplY3RzQmFsYW5jZSAtIHN1bSBvZiBiYWxhbmNlcyBmcm9tIGdhc0RhdGEucGF5bWVudCBjb2luIG9iamVjdHNcbiAgICovXG4gIHRvdGFsQXZhaWxhYmxlQmFsYW5jZShjb2luT2JqZWN0c0JhbGFuY2U6IEJpZ051bWJlcik6IEJpZ051bWJlciB7XG4gICAgcmV0dXJuIGNvaW5PYmplY3RzQmFsYW5jZS5wbHVzKHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogVHJhbnNmZXJUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24uc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgc2lnbihrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFN1aVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRTdWlUcmFuc2FjdGlvbigpKTtcbiAgICBzdXBlci5zaWduKGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zZmVyVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgdGhpcy52YWxpZGF0ZVJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgIHRoaXMuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNldFN1aVRyYW5zYWN0aW9uKHRoaXMuYnVpbGRTdWlUcmFuc2FjdGlvbigpKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSh0aGlzLnRyYW5zYWN0aW9uVHlwZSk7XG5cbiAgICBpZiAodGhpcy5fc2lnbmVyKSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ24odGhpcy5fc2lnbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zaWduYXR1cmVzLmZvckVhY2goKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5hZGRTaWduYXR1cmUoc2lnbmF0dXJlLnB1YmxpY0tleSwgc2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnRyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gYnVpbGRlciBmaWVsZHMgdXNpbmcgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0eCB0aGUgdHJhbnNhY3Rpb24gZGF0YVxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zZmVyVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHR4O1xuXG4gICAgaWYgKHR4LnNpZ25hdHVyZSAmJiB0eC5zaWduYXR1cmUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2lnbmF0dXJlcyA9IFt0eC5zdWlTaWduYXR1cmVdO1xuICAgIH1cblxuICAgIGNvbnN0IHR4RGF0YSA9IHR4LnRvSnNvbigpO1xuICAgIHRoaXMudHlwZShTdWlUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXIpO1xuICAgIHRoaXMuc2VuZGVyKHR4RGF0YS5zZW5kZXIpO1xuICAgIHRoaXMuZ2FzRGF0YSh0eERhdGEuZ2FzRGF0YSk7XG5cbiAgICBpZiAodHhEYXRhLmV4cGlyYXRpb24gJiYgISgnTm9uZScgaW4gdHhEYXRhLmV4cGlyYXRpb24pKSB7XG4gICAgICB0aGlzLl9leHBpcmF0aW9uID0gdHhEYXRhLmV4cGlyYXRpb247XG4gICAgfVxuXG4gICAgaWYgKHR4RGF0YS5pbnB1dE9iamVjdHMpIHtcbiAgICAgIHRoaXMuaW5wdXRPYmplY3RzKHR4RGF0YS5pbnB1dE9iamVjdHMpO1xuICAgIH1cblxuICAgIC8vIFJlY29uc3RydWN0IGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSBmcm9tIEJhbGFuY2VXaXRoZHJhd2FsIGlucHV0IGlmIHByZXNlbnQuXG4gICAgLy8gQWZ0ZXIgQkNTIGRlc2VyaWFsaXphdGlvbiBpbnB1dHMgYXJlIENhbGxBcmcgZm9ybWF0OiB7IEJhbGFuY2VXaXRoZHJhd2FsOiB7Li4ufSB9XG4gICAgLy8gRHVyaW5nIGJ1aWxkaW5nIHRoZXkgYXJlIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCBmb3JtYXQ6IHsga2luZDonSW5wdXQnLCB2YWx1ZTogeyBCYWxhbmNlV2l0aGRyYXdhbDogey4uLn0gfSB9XG4gICAgY29uc3Qgd2l0aGRyYXdhbElucHV0ID0gKHR4LnN1aVRyYW5zYWN0aW9uPy50eD8uaW5wdXRzIGFzIGFueVtdKT8uZmluZChcbiAgICAgIChpbnB1dDogYW55KSA9PlxuICAgICAgICAoaW5wdXQgIT09IG51bGwgJiYgdHlwZW9mIGlucHV0ID09PSAnb2JqZWN0JyAmJiAnQmFsYW5jZVdpdGhkcmF3YWwnIGluIGlucHV0KSB8fFxuICAgICAgICAoaW5wdXQ/LnZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBpbnB1dD8udmFsdWUgPT09ICdvYmplY3QnICYmICdCYWxhbmNlV2l0aGRyYXdhbCcgaW4gKGlucHV0LnZhbHVlID8/IHt9KSlcbiAgICApO1xuICAgIGlmICh3aXRoZHJhd2FsSW5wdXQpIHtcbiAgICAgIGNvbnN0IGJ3ID0gd2l0aGRyYXdhbElucHV0LkJhbGFuY2VXaXRoZHJhd2FsID8/IHdpdGhkcmF3YWxJbnB1dC52YWx1ZT8uQmFsYW5jZVdpdGhkcmF3YWw7XG4gICAgICB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UgPSBuZXcgQmlnTnVtYmVyKFN0cmluZyhidy5hbW91bnQpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMuZ2V0UmVjaXBpZW50cyh0eC5zdWlUcmFuc2FjdGlvbik7XG4gICAgdGhpcy5zZW5kKHJlY2lwaWVudHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbGwgZmllbGRzIGFyZSBkZWZpbmVkXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVHJhbnNhY3Rpb25GaWVsZHMoKTogdm9pZCB7XG4gICAgYXNzZXJ0KHRoaXMuX3R5cGUsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3R5cGUgaXMgcmVxdWlyZWQgYmVmb3JlIGJ1aWxkaW5nJykpO1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KFxuICAgICAgdGhpcy5fcmVjaXBpZW50cyAmJiB0aGlzLl9yZWNpcGllbnRzLmxlbmd0aCA+IDAsXG4gICAgICBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhdCBsZWFzdCBvbmUgcmVjaXBpZW50IGlzIHJlcXVpcmVkIGJlZm9yZSBidWlsZGluZycpXG4gICAgKTtcbiAgICBhc3NlcnQodGhpcy5fZ2FzRGF0YSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignZ2FzRGF0YSBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgdGhpcy52YWxpZGF0ZUdhc0RhdGEodGhpcy5fZ2FzRGF0YSk7XG5cbiAgICAvLyBJZiBpbnB1dE9iamVjdHMgYXJlIHByb3ZpZGVkLCB2YWxpZGF0ZSB0aGVtXG4gICAgaWYgKHRoaXMuX2lucHV0T2JqZWN0cyAmJiB0aGlzLl9pbnB1dE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy52YWxpZGF0ZUlucHV0T2JqZWN0c0Jhc2UodGhpcy5faW5wdXRPYmplY3RzKTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSBpcyBzZXQsIHZhbGlkYXRlIHRoYXQgdG90YWwgcmVjaXBpZW50IGFtb3VudFxuICAgIC8vIGRvZXMgbm90IGV4Y2VlZCBhdmFpbGFibGUgYWRkcmVzcyBiYWxhbmNlLiBDb2luIG9iamVjdCBiYWxhbmNlcyBhcmUgbm90XG4gICAgLy8gc3RvcmVkIGluIHRoZSBidWlsZGVyIChnYXNEYXRhLnBheW1lbnQgaG9sZHMgb25seSBPYmplY3RSZWZzKSwgc28gb25seVxuICAgIC8vIHRoZSBhZGRyZXNzIGJhbGFuY2UgcG9ydGlvbiBjYW4gYmUgY3Jvc3MtY2hlY2tlZCBoZXJlLlxuICAgIGlmICh0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UuZ3QoMCkpIHtcbiAgICAgIGNvbnN0IHRvdGFsUmVjaXBpZW50QW1vdW50ID0gdGhpcy5fcmVjaXBpZW50cy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHIpID0+IGFjYy5wbHVzKG5ldyBCaWdOdW1iZXIoci5hbW91bnQpKSxcbiAgICAgICAgbmV3IEJpZ051bWJlcigwKVxuICAgICAgKTtcbiAgICAgIGFzc2VydCh0b3RhbFJlY2lwaWVudEFtb3VudC5ndCgwKSwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndG90YWwgcmVjaXBpZW50IGFtb3VudCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJykpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0cmFuc2ZlciBwcm9ncmFtbWFibGUgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFRocmVlIGJ1aWxkIHBhdGhzOlxuICAgKlxuICAgKiBQYXRoIDFhIOKAlCBTcG9uc29yZWQgd2l0aCBjb2luIG9iamVjdHMgKHNlbmRlciDiiaAgZ2FzRGF0YS5vd25lciwgaW5wdXRPYmplY3RzIHByb3ZpZGVkKTpcbiAgICogICBbb3B0aW9uYWwgd2l0aGRyYXdhbChmdW5kc0luQWRkcmVzc0JhbGFuY2UpIOKGkiByZWRlZW1fZnVuZHMg4oaSIENvaW48U1VJPl1cbiAgICogICBNZXJnZUNvaW5zKGlucHV0T2JqZWN0WzBdLCBbaW5wdXRPYmplY3RbMS4uXSwgYWRkckNvaW4/XSlcbiAgICogICBTcGxpdENvaW5zKG1lcmdlZE9iamVjdCwgW2Ftb3VudF0pIOKGkiBUcmFuc2Zlck9iamVjdHNcbiAgICogICBIYW5kbGVzIENhc2VzIDQgKGNvaW5zIG9ubHkpLCA2IChjb2lucywgc3BvbnNvciBhZGRyLWJhbCBnYXMpLCA4IChjb2lucythZGRyLWJhbCkuXG4gICAqXG4gICAqIFBhdGggMWIg4oCUIFNwb25zb3JlZCwgYWRkcmVzcyBiYWxhbmNlIG9ubHkgKHNlbmRlciDiiaAgZ2FzRGF0YS5vd25lciwgbm8gaW5wdXRPYmplY3RzKTpcbiAgICogICB3aXRoZHJhd2FsKGZ1bmRzSW5BZGRyZXNzQmFsYW5jZSkg4oaSIHJlZGVlbV9mdW5kcyDihpIgQ29pbjxTVUk+XG4gICAqICAgU3BsaXRDb2lucyhhZGRyQ29pbiwgW2Ftb3VudF0pIOKGkiBUcmFuc2Zlck9iamVjdHNcbiAgICogICBIYW5kbGVzIENhc2UgNSAoc3BvbnNvciBjb2luLW9iamVjdCBnYXMpIGFuZCBDYXNlIDcvUGhhc2UtNGIgKHNwb25zb3IgYWRkci1iYWwgZ2FzKS5cbiAgICogICBDYWxsZXIgbXVzdCBzZXQgVmFsaWREdXJpbmcgZXhwaXJhdGlvbiB3aGVuIGdhc0RhdGEucGF5bWVudCA9IFtdIChDYXNlcyA3LCA5KS5cbiAgICpcbiAgICogUGF0aCAyIOKAlCBTZWxmLXBheSAoc2VuZGVyID09PSBnYXNEYXRhLm93bmVyKTpcbiAgICogICBTcGxpdENvaW5zKEdhc0NvaW4sIFthbW91bnRdKSDihpIgVHJhbnNmZXJPYmplY3RzXG4gICAqICAgR2FzQ29pbiBhdCBTdWkgZXhlY3V0aW9uIHRpbWUgPSBnYXNEYXRhLnBheW1lbnQgb2JqZWN0cyBtZXJnZWQgKyBmdW5kc0luQWRkcmVzc0JhbGFuY2UuXG4gICAqICAgSGFuZGxlcyBDYXNlIDEgKGNvaW5zKSwgQ2FzZSAyIChhZGRyLWJhbCBvbmx5LCBjYWxsZXIgc2V0cyBWYWxpZER1cmluZyksIENhc2UgMyAobWl4ZWQpLlxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRTdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zYWN0aW9uRmllbGRzKCk7XG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyID0gbmV3IFByb2dyYW1taW5nVHJhbnNhY3Rpb25CbG9ja0J1aWxkZXIoKTtcblxuICAgIGlmICh0aGlzLl9zZW5kZXIgIT09IHRoaXMuX2dhc0RhdGEub3duZXIgJiYgdGhpcy5faW5wdXRPYmplY3RzICYmIHRoaXMuX2lucHV0T2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBQYXRoIDE6IHNwb25zb3JlZCB0cmFuc2FjdGlvbi5cbiAgICAgIC8vIFRoZSBmZWUgcGF5ZXIgKGdhc0RhdGEub3duZXIpIHBheXMgZ2FzLiBUaGUgc2VuZGVyJ3MgZnVuZHMgY29tZSBmcm9tOlxuICAgICAgLy8gICAtIGNvaW4gb2JqZWN0cyAoaW5wdXRPYmplY3RzKVxuICAgICAgLy8gICAtIGFkZHJlc3MgYmFsYW5jZSB2aWEgdHgud2l0aGRyYXdhbCgpICsgMHgyOjpjb2luOjpyZWRlZW1fZnVuZHNcbiAgICAgIGNvbnN0IGlucHV0T2JqZWN0czogVHJhbnNhY3Rpb25Bcmd1bWVudFtdID0gdGhpcy5faW5wdXRPYmplY3RzLm1hcCgob2JqZWN0KSA9PlxuICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIub2JqZWN0KElucHV0cy5PYmplY3RSZWYob2JqZWN0KSlcbiAgICAgICk7XG5cbiAgICAgIC8vIElmIHRoZSBzZW5kZXIgYWxzbyBoYXMgYWRkcmVzcyBiYWxhbmNlLCB3aXRoZHJhdyBpdCBhcyBhIENvaW48U1VJPiBhbmRcbiAgICAgIC8vIG1lcmdlIGl0IGludG8gdGhlIGNvaW4tb2JqZWN0IHBvb2wgYmVmb3JlIHNwbGl0dGluZyBmb3IgcmVjaXBpZW50cy5cbiAgICAgIGlmICh0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UuZ3QoMCkpIHtcbiAgICAgICAgY29uc3QgW2FkZHJDb2luXSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5tb3ZlQ2FsbCh7XG4gICAgICAgICAgdGFyZ2V0OiAnMHgyOjpjb2luOjpyZWRlZW1fZnVuZHMnLFxuICAgICAgICAgIHR5cGVBcmd1bWVudHM6IFsnMHgyOjpzdWk6OlNVSSddLFxuICAgICAgICAgIGFyZ3VtZW50czogW3Byb2dyYW1tYWJsZVR4QnVpbGRlci53aXRoZHJhd2FsKHsgYW1vdW50OiBCaWdJbnQodGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLnRvRml4ZWQoKSkgfSldLFxuICAgICAgICB9KTtcbiAgICAgICAgaW5wdXRPYmplY3RzLnB1c2goYWRkckNvaW4pO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXJnZWRPYmplY3QgPSBpbnB1dE9iamVjdHMuc2hpZnQoKSBhcyBUcmFuc2FjdGlvbkFyZ3VtZW50O1xuICAgICAgaWYgKGlucHV0T2JqZWN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5tZXJnZUNvaW5zKG1lcmdlZE9iamVjdCwgaW5wdXRPYmplY3RzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHNwbGl0T2JqZWN0ID0gcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnNwbGl0Q29pbnMobWVyZ2VkT2JqZWN0LCBbXG4gICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnB1cmUoTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci50cmFuc2Zlck9iamVjdHMoW3NwbGl0T2JqZWN0XSwgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChyZWNpcGllbnQuYWRkcmVzcykpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCB0eERhdGEgPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYmxvY2tEYXRhO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogdGhpcy5fdHlwZSxcbiAgICAgICAgc2VuZGVyOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgIHR4OiB7XG4gICAgICAgICAgaW5wdXRzOiBbLi4udHhEYXRhLmlucHV0c10sXG4gICAgICAgICAgdHJhbnNhY3Rpb25zOiBbLi4udHhEYXRhLnRyYW5zYWN0aW9uc10sXG4gICAgICAgIH0sXG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICAuLi50aGlzLl9nYXNEYXRhLFxuICAgICAgICB9LFxuICAgICAgICBleHBpcmF0aW9uOiB0aGlzLl9leHBpcmF0aW9uLFxuICAgICAgICBmdW5kc0luQWRkcmVzc0JhbGFuY2U6IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCgwKSA/IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS50b0ZpeGVkKCkgOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc2VuZGVyICE9PSB0aGlzLl9nYXNEYXRhLm93bmVyICYmIHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS5ndCgwKSkge1xuICAgICAgLy8gUGF0aCAxYjogc3BvbnNvcmVkLCBhZGRyZXNzIGJhbGFuY2Ugb25seSDigJQgbm8gY29pbiBpbnB1dE9iamVjdHMuXG4gICAgICAvLyBTZW5kZXIncyBmdW5kcyBjb21lIGVudGlyZWx5IGZyb20gYWRkcmVzcyBiYWxhbmNlOyBnYXMgaXMgcGFpZCBieSB0aGUgc3BvbnNvci5cbiAgICAgIC8vIHdpdGhkcmF3YWwoZnVuZHNJbkFkZHJlc3NCYWxhbmNlKSDihpIgcmVkZWVtX2Z1bmRzIOKGkiBDb2luPFNVST4g4oaSIFNwbGl0Q29pbnMg4oaSIFRyYW5zZmVyT2JqZWN0c1xuICAgICAgY29uc3QgW2FkZHJDb2luXSA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5tb3ZlQ2FsbCh7XG4gICAgICAgIHRhcmdldDogJzB4Mjo6Y29pbjo6cmVkZWVtX2Z1bmRzJyxcbiAgICAgICAgdHlwZUFyZ3VtZW50czogWycweDI6OnN1aTo6U1VJJ10sXG4gICAgICAgIGFyZ3VtZW50czogW3Byb2dyYW1tYWJsZVR4QnVpbGRlci53aXRoZHJhd2FsKHsgYW1vdW50OiBCaWdJbnQodGhpcy5fZnVuZHNJbkFkZHJlc3NCYWxhbmNlLnRvRml4ZWQoKSkgfSldLFxuICAgICAgfSk7XG4gICAgICB0aGlzLl9yZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICBjb25zdCBzcGxpdE9iamVjdCA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5zcGxpdENvaW5zKGFkZHJDb2luLCBbXG4gICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnB1cmUoTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKSxcbiAgICAgICAgXSk7XG4gICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci50cmFuc2Zlck9iamVjdHMoW3NwbGl0T2JqZWN0XSwgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLm9iamVjdChyZWNpcGllbnQuYWRkcmVzcykpO1xuICAgICAgfSk7XG4gICAgICBjb25zdCB0eERhdGExYiA9IHByb2dyYW1tYWJsZVR4QnVpbGRlci5ibG9ja0RhdGE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgICBzZW5kZXI6IHRoaXMuX3NlbmRlcixcbiAgICAgICAgdHg6IHtcbiAgICAgICAgICBpbnB1dHM6IFsuLi50eERhdGExYi5pbnB1dHNdLFxuICAgICAgICAgIHRyYW5zYWN0aW9uczogWy4uLnR4RGF0YTFiLnRyYW5zYWN0aW9uc10sXG4gICAgICAgIH0sXG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICAuLi50aGlzLl9nYXNEYXRhLFxuICAgICAgICB9LFxuICAgICAgICBleHBpcmF0aW9uOiB0aGlzLl9leHBpcmF0aW9uLFxuICAgICAgICBmdW5kc0luQWRkcmVzc0JhbGFuY2U6IHRoaXMuX2Z1bmRzSW5BZGRyZXNzQmFsYW5jZS50b0ZpeGVkKCksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBudW1iZXIgb2Ygb2JqZWN0cyBwYXNzZWQgYXMgZ2FzIHBheW1lbnQgc2hvdWxkIGJlIHN0cmljdGx5IGxlc3MgdGhhbiBgTUFYX0dBU19PQkpFQ1RTYC4gV2hlbiB0aGUgdHJhbnNhY3Rpb25cbiAgICAgIC8vIHJlcXVpcmVzIGEgbGFyZ2VyIG51bWJlciBvZiBpbnB1dHMgd2UgdXNlIHRoZSBtZXJnZSBjb21tYW5kIHRvIG1lcmdlIHRoZSByZXN0IG9mIHRoZSBvYmplY3RzIGludG8gdGhlIGdhc0NvaW5cbiAgICAgIGlmICh0aGlzLl9nYXNEYXRhLnBheW1lbnQubGVuZ3RoID49IE1BWF9HQVNfT0JKRUNUUykge1xuICAgICAgICBjb25zdCBnYXNQYXltZW50T2JqZWN0cyA9IHRoaXMuX2dhc0RhdGEucGF5bWVudFxuICAgICAgICAgIC5zbGljZShNQVhfR0FTX09CSkVDVFMgLSAxKVxuICAgICAgICAgIC5tYXAoKG9iamVjdCkgPT4gSW5wdXRzLk9iamVjdFJlZihvYmplY3QpKTtcblxuICAgICAgICAvLyBsaW1pdCBmb3IgdG90YWwgbnVtYmVyIG9mIGBhcmdzOiBDYWxsQXJnW11gIGZvciBhIHNpbmdsZSBjb21tYW5kIGlzIE1BWF9DT01NQU5EX0FSR1Mgc28gdGhlIG1heCBsZW5ndGggb2ZcbiAgICAgICAgLy8gYHNvdXJjZXNbXWAgZm9yIGEgYG1lcmdlQ29pbnMoZGVzdGluYXRpb24sIHNvdXJjZXNbXSlgIGNvbW1hbmQgaXMgTUFYX0NPTU1BTkRfQVJHUyAtIDEgKDEgdXNlZCB1cCBmb3JcbiAgICAgICAgLy8gYGRlc3RpbmF0aW9uYCkuIFdlIG5lZWQgdG8gY3JlYXRlIGEgdG90YWwgb2YgYGdhc1BheW1lbnRPYmplY3RzLyhNQVhfQ09NTUFORF9BUkdTIC0gMSlgIG1lcmdlIGNvbW1hbmRzIHRvXG4gICAgICAgIC8vIG1lcmdlIGFsbCB0aGUgb2JqZWN0c1xuICAgICAgICB3aGlsZSAoZ2FzUGF5bWVudE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHByb2dyYW1tYWJsZVR4QnVpbGRlci5tZXJnZUNvaW5zKFxuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcyxcbiAgICAgICAgICAgIGdhc1BheW1lbnRPYmplY3RzLnNwbGljZSgwLCBNQVhfQ09NTUFORF9BUkdTIC0gMSkubWFwKChvYmplY3QpID0+IHByb2dyYW1tYWJsZVR4QnVpbGRlci5vYmplY3Qob2JqZWN0KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3JlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGNvaW4gPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYWRkKFxuICAgICAgICAgIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLlNwbGl0Q29pbnMocHJvZ3JhbW1hYmxlVHhCdWlsZGVyLmdhcywgW1xuICAgICAgICAgICAgcHJvZ3JhbW1hYmxlVHhCdWlsZGVyLnB1cmUoTnVtYmVyKHJlY2lwaWVudC5hbW91bnQpKSxcbiAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgICAgICBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYWRkKFxuICAgICAgICAgIFRyYW5zYWN0aW9uc0NvbnN0cnVjdG9yLlRyYW5zZmVyT2JqZWN0cyhbY29pbl0sIHByb2dyYW1tYWJsZVR4QnVpbGRlci5vYmplY3QocmVjaXBpZW50LmFkZHJlc3MpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBjb25zdCB0eERhdGEgPSBwcm9ncmFtbWFibGVUeEJ1aWxkZXIuYmxvY2tEYXRhO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogdGhpcy5fdHlwZSxcbiAgICAgICAgc2VuZGVyOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgIHR4OiB7XG4gICAgICAgICAgaW5wdXRzOiBbLi4udHhEYXRhLmlucHV0c10sXG4gICAgICAgICAgdHJhbnNhY3Rpb25zOiBbLi4udHhEYXRhLnRyYW5zYWN0aW9uc10sXG4gICAgICAgIH0sXG4gICAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgICAuLi50aGlzLl9nYXNEYXRhLFxuICAgICAgICAgIHBheW1lbnQ6IHRoaXMuX2dhc0RhdGEucGF5bWVudC5zbGljZSgwLCBNQVhfR0FTX09CSkVDVFMgLSAxKSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhwaXJhdGlvbjogdGhpcy5fZXhwaXJhdGlvbixcbiAgICAgICAgZnVuZHNJbkFkZHJlc3NCYWxhbmNlOiB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UuZ3QoMCkgPyB0aGlzLl9mdW5kc0luQWRkcmVzc0JhbGFuY2UudG9GaXhlZCgpIDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAY/E,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,+BAA+B,CAAC;gBACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,+BAA+B,CAAC,CAEpE;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,+BAA+B,CAAC,GAAG,IAAI;IAI5E,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,aAAa,IAAI,YAAY,EAAE;IAI/B,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA6BhB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAqB5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;IACI,SAAS,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"transferTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transferTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,SAAS,IAAI,aAAa,EAC1B,SAAS,EAET,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAW,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AAY/E,qBAAa,mBAAoB,SAAQ,WAAW,CAAC,+BAA+B,CAAC;gBACvE,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAAC,+BAA+B,CAAC,CAEpE;IAED,iBAAiB,CAAC,EAAE,EAAE,cAAc,CAAC,+BAA+B,CAAC,GAAG,IAAI;IAI5E,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D,IAAI,YAAY,IAAI,SAAS,CAE5B;IAED,aAAa,IAAI,YAAY,EAAE;IAI/B,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAO3B,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA6BhB,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAwB5C;;;;OAIG;IACH,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIvD;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAqB5B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAchD;;;;OAIG;IACI,SAAS,IAAI,MAAM;IA6D1B;;;;;OAKG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,GAAG,sBAAsB;IAiB3G;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;CA+B9B"}
|
|
@@ -95,7 +95,7 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
95
95
|
sender: tx.sender,
|
|
96
96
|
kind: { ProgrammableTransaction: tx.tx },
|
|
97
97
|
gasData: tx.gasData,
|
|
98
|
-
expiration: { None: null },
|
|
98
|
+
expiration: tx.expiration ?? { None: null },
|
|
99
99
|
inputObjects: this.getInputObjectsFromTx(tx.tx),
|
|
100
100
|
};
|
|
101
101
|
}
|
|
@@ -107,7 +107,7 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
107
107
|
...tx.gasData,
|
|
108
108
|
payment: [...tx.gasData.payment, ...this.getInputGasPaymentObjectsFromTx(tx.tx)],
|
|
109
109
|
},
|
|
110
|
-
expiration: { None: null },
|
|
110
|
+
expiration: tx.expiration ?? { None: null },
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
/** @inheritDoc */
|
|
@@ -202,7 +202,13 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
202
202
|
return builder_1.Inputs.Pure(amount, bcs_1.BCS.U64);
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
-
if (input.
|
|
205
|
+
if (input.hasOwnProperty('BalanceWithdrawal')) {
|
|
206
|
+
return input;
|
|
207
|
+
}
|
|
208
|
+
if (input.kind === 'Input' &&
|
|
209
|
+
(input.value.hasOwnProperty('Object') ||
|
|
210
|
+
input.value.hasOwnProperty('Pure') ||
|
|
211
|
+
input.value.hasOwnProperty('BalanceWithdrawal'))) {
|
|
206
212
|
return input.value;
|
|
207
213
|
}
|
|
208
214
|
return builder_1.Inputs.Pure(input.value, input.type === 'pure' ? bcs_1.BCS.U64 : bcs_1.BCS.ADDRESS);
|
|
@@ -214,7 +220,7 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
214
220
|
if (this._suiTransaction.gasData.owner !== this._suiTransaction.sender) {
|
|
215
221
|
return {
|
|
216
222
|
sender: this._suiTransaction.sender,
|
|
217
|
-
expiration: { None: null },
|
|
223
|
+
expiration: this._suiTransaction.expiration ?? { None: null },
|
|
218
224
|
gasData: this._suiTransaction.gasData,
|
|
219
225
|
kind: {
|
|
220
226
|
ProgrammableTransaction: programmableTx,
|
|
@@ -223,7 +229,7 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
223
229
|
}
|
|
224
230
|
return {
|
|
225
231
|
sender: this._suiTransaction.sender,
|
|
226
|
-
expiration: { None: null },
|
|
232
|
+
expiration: this._suiTransaction.expiration ?? { None: null },
|
|
227
233
|
gasData: {
|
|
228
234
|
...this._suiTransaction.gasData,
|
|
229
235
|
payment: this._suiTransaction.gasData.payment.slice(0, constants_1.MAX_GAS_OBJECTS - 1),
|
|
@@ -259,13 +265,15 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
259
265
|
*/
|
|
260
266
|
getInputObjectsFromTx(tx) {
|
|
261
267
|
const inputs = tx.inputs;
|
|
262
|
-
|
|
268
|
+
// In the sponsored path with BalanceWithdrawal, transactions[0] is MoveCall (redeem_funds)
|
|
269
|
+
// and MergeCoins/SplitCoins appears at index 1+. Search for the first relevant transaction.
|
|
270
|
+
const transaction = tx.transactions.find((t) => t.kind === 'MergeCoins' || t.kind === 'SplitCoins');
|
|
263
271
|
let args = [];
|
|
264
|
-
if (transaction
|
|
272
|
+
if (transaction?.kind === 'MergeCoins') {
|
|
265
273
|
const { destination, sources } = transaction;
|
|
266
274
|
args = [destination, ...sources];
|
|
267
275
|
}
|
|
268
|
-
else if (transaction
|
|
276
|
+
else if (transaction?.kind === 'SplitCoins') {
|
|
269
277
|
args = [transaction.coin];
|
|
270
278
|
}
|
|
271
279
|
const inputObjects = [];
|
|
@@ -284,4 +292,4 @@ class TransferTransaction extends transaction_1.Transaction {
|
|
|
284
292
|
}
|
|
285
293
|
}
|
|
286
294
|
exports.TransferTransaction = TransferTransaction;
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FReUI7QUFHekIsMkNBQW9GO0FBQ3BGLG1DQUFnQztBQUNoQywrQ0FBNEM7QUFDNUMsNkNBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCxpREFNNkI7QUFDN0IscUNBQWtDO0FBQ2xDLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUE0QztJQUNuRixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBbUQ7UUFDbkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksNEJBQWdCLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsTUFBTSxJQUFJLGdDQUFxQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDaEMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbkMsd0JBQXdCO1lBQ3hCLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNaLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTTtnQkFDakIsSUFBSSxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPO2dCQUNuQixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUMxQixZQUFZLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDaEQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPO1lBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ1osTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNO1lBQ2pCLElBQUksRUFBRSxFQUFFLHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsT0FBTyxFQUFFO2dCQUNQLEdBQUcsRUFBRSxDQUFDLE9BQU87Z0JBQ2IsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDakY7WUFDRCxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN2RyxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRTNDLE1BQU0saUJBQWlCLEdBQTJCO1lBQ2hELFlBQVk7WUFDWixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxPQUFPO1lBQ1AsWUFBWSxFQUFFLEdBQUc7WUFDakIsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUc7WUFDakIsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztRQUVGLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO2dCQUN2QixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNwRTtnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN4RSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsZUFBZ0M7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3RCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRCxPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7U0FDNUIsQ0FBQyxDQUFDLENBQUM7UUFDSixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2I7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTTtnQkFDbkMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUU7Z0JBQzdCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7YUFDNUI7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxrQkFBa0IsQ0FBQyxjQUFzQjtRQUN2QyxJQUFJLENBQUM7WUFDSCxlQUFLLENBQUMscUJBQXFCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBVyxDQUFDLHlCQUF5QixDQUMxRCxjQUFjLENBQ29DLENBQUM7WUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksa0NBQXVCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQXdDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUMvRixJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssOEJBQWtCLEVBQUUsQ0FBQztvQkFDN0MsTUFBTSxPQUFPLEdBQUcsSUFBQSwyQkFBbUIsRUFDakMsaUJBQU8sQ0FBQyxFQUFFLENBQUMsU0FBRyxDQUFDLE9BQU8sRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQzlFLENBQUM7b0JBQ0YsT0FBTyxnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxNQUFNLEdBQUcsaUJBQU8sQ0FBQyxFQUFFLENBQUMsU0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ3pGLE9BQU8sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzRyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDckIsQ0FBQztZQUNELE9BQU8sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pGLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUc7WUFDckIsTUFBTTtZQUNOLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxZQUFZO1NBQ2hCLENBQUM7UUFFckMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2RSxPQUFPO2dCQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU07Z0JBQ25DLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQ3JDLElBQUksRUFBRTtvQkFDSix1QkFBdUIsRUFBRSxjQUFjO2lCQUN4QzthQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU07WUFDbkMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtZQUMxQixPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSwyQkFBZSxHQUFHLENBQUMsQ0FBQzthQUM1RTtZQUNELElBQUksRUFBRTtnQkFDSix1QkFBdUIsRUFBRSxjQUFjO2FBQ3hDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDBCQUEwQixDQUFDLElBQVksRUFBRSxpQkFBeUM7UUFDaEYsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsTUFBTSxPQUFPLEdBQTJCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNO1FBQ3RDLGtEQUFrRDtRQUNsRCxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUMxRCxJQUFJLHNCQUFTLENBQUMsQ0FBQyxDQUFDLENBQ2pCLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0MsT0FBTztZQUNMLEdBQUcsaUJBQWlCO1lBQ3BCLFlBQVk7WUFDWixPQUFPO1NBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0sscUJBQXFCLENBQUMsRUFBbUM7UUFDL0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUN6QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBNEIsQ0FBQztRQUVsRSxJQUFJLElBQUksR0FBMEIsRUFBRSxDQUFDO1FBQ3JDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztZQUN0QyxNQUFNLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLFdBQVcsQ0FBQztZQUM3QyxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUNuQyxDQUFDO2FBQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO1lBQzdDLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQW1CLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUN6QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDckIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7Z0JBQ3RCLENBQUM7Z0JBQ0QsSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLElBQUEsdUJBQWUsRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDdkQsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBelFELGtEQXlRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VLZXksXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG4gIFRyYW5zYWN0aW9uUmVjaXBpZW50LFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBTdWlUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgTUFYX0dBU19PQkpFQ1RTLCBTVUlfQUREUkVTU19MRU5HVEgsIFVOQVZBSUxBQkxFX1RFWFQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENhbGxBcmcsIFN1aU9iamVjdFJlZiwgbm9ybWFsaXplU3VpQWRkcmVzcyB9IGZyb20gJy4vbXlzdGVubGFiL3R5cGVzJztcbmltcG9ydCB1dGlscywgeyBpc0ltbU9yT3duZWRPYmogfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIGJ1aWxkZXIsXG4gIElucHV0cyxcbiAgVHJhbnNhY3Rpb25Bcmd1bWVudCxcbiAgVHJhbnNhY3Rpb25CbG9ja0lucHV0LFxuICBUcmFuc2FjdGlvblR5cGUgYXMgU3VpVHJhbnNhY3Rpb25CbG9ja1R5cGUsXG59IGZyb20gJy4vbXlzdGVubGFiL2J1aWxkZXInO1xuaW1wb3J0IHsgQkNTIH0gZnJvbSAnQG15c3Rlbi9iY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJUcmFuc2FjdGlvbiBleHRlbmRzIFRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHN1aVRyYW5zYWN0aW9uKCk6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXRTdWlUcmFuc2FjdGlvbih0eDogU3VpVHJhbnNhY3Rpb248VHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbj4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IHR4O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICoqL1xuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faWQgfHwgVU5BVkFJTEFCTEVfVEVYVDtcbiAgfVxuXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZS50b1N0cmluZygnaGV4JykpO1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IHsgcHVibGljS2V5LCBzaWduYXR1cmUgfTtcbiAgICB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IHN1aVNpZ25hdHVyZSgpOiBTaWduYXR1cmUge1xuICAgIHJldHVybiB0aGlzLl9zaWduYXR1cmU7XG4gIH1cblxuICBnZXRJbnB1dENvaW5zKCk6IFN1aU9iamVjdFJlZltdIHtcbiAgICByZXR1cm4gdXRpbHMubm9ybWFsaXplQ29pbnModGhpcy5zdWlUcmFuc2FjdGlvbi50eC5pbnB1dHMpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHggPSB0aGlzLl9zdWlUcmFuc2FjdGlvbjtcbiAgICBpZiAodHguZ2FzRGF0YS5vd25lciAhPT0gdHguc2VuZGVyKSB7XG4gICAgICAvLyBTcG9uc29yZWQgdHJhbnNhY3Rpb25cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB0aGlzLl9pZCxcbiAgICAgICAgc2VuZGVyOiB0eC5zZW5kZXIsXG4gICAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICAgIGdhc0RhdGE6IHR4Lmdhc0RhdGEsXG4gICAgICAgIGV4cGlyYXRpb246IHsgTm9uZTogbnVsbCB9LFxuICAgICAgICBpbnB1dE9iamVjdHM6IHRoaXMuZ2V0SW5wdXRPYmplY3RzRnJvbVR4KHR4LnR4KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHR4LnNlbmRlcixcbiAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICBnYXNEYXRhOiB7XG4gICAgICAgIC4uLnR4Lmdhc0RhdGEsXG4gICAgICAgIHBheW1lbnQ6IFsuLi50eC5nYXNEYXRhLnBheW1lbnQsIC4uLnRoaXMuZ2V0SW5wdXRHYXNQYXltZW50T2JqZWN0c0Zyb21UeCh0eC50eCldLFxuICAgICAgfSxcbiAgICAgIGV4cGlyYXRpb246IHsgTm9uZTogbnVsbCB9LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMudG9Kc29uKCk7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddO1xuICAgIGNvbnN0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10gPSBbXTtcblxuICAgIGNvbnN0IGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0ge1xuICAgICAgZGlzcGxheU9yZGVyLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBvdXRwdXRzLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogdGhpcy5zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLmJ1ZGdldC50b1N0cmluZygpIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcblxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICByZXR1cm4gdGhpcy5leHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihyZXN1bHQsIGV4cGxhbmF0aW9uUmVzdWx0KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICB0cmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN1aVRyYW5zYWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHV0aWxzLmdldFJlY2lwaWVudHModGhpcy5fc3VpVHJhbnNhY3Rpb24pO1xuICAgIGNvbnN0IHRvdGFsQW1vdW50ID0gcmVjaXBpZW50cy5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvciArIE51bWJlcihjdXJyZW50LmFtb3VudCksIDApO1xuICAgIHRoaXMuX291dHB1dHMgPSByZWNpcGllbnRzLm1hcCgocmVjaXBpZW50LCBpbmRleCkgPT4gKHtcbiAgICAgIGFkZHJlc3M6IHJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgdmFsdWU6IHJlY2lwaWVudC5hbW91bnQsXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSkpO1xuICAgIHRoaXMuX2lucHV0cyA9IFtcbiAgICAgIHtcbiAgICAgICAgYWRkcmVzczogdGhpcy5zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICAgIHZhbHVlOiB0b3RhbEFtb3VudC50b1N0cmluZygpLFxuICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB1dGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb24pO1xuICAgICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSBUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZVN1aVRyYW5zYWN0aW9uKFxuICAgICAgICByYXdUcmFuc2FjdGlvblxuICAgICAgKSBhcyBTdWlUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPjtcbiAgICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgIHRoaXMuX2lkID0gdGhpcy5fc3VpVHJhbnNhY3Rpb24uaWQ7XG4gICAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIGZ1bmN0aW9uIGZvciBzZXJpYWxpemUoKSB0byBnZXQgdGhlIGNvcnJlY3QgdHhEYXRhIHdpdGggdHJhbnNhY3Rpb24gdHlwZVxuICAgKlxuICAgKiBAcmV0dXJuIHtUeERhdGF9XG4gICAqL1xuICBwdWJsaWMgZ2V0VHhEYXRhKCk6IFR4RGF0YSB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdlbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBpbnB1dHM6IENhbGxBcmdbXSB8IFRyYW5zYWN0aW9uQmxvY2tJbnB1dFtdID0gdGhpcy5fc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzLm1hcCgoaW5wdXQpID0+IHtcbiAgICAgIGlmIChpbnB1dC5oYXNPd25Qcm9wZXJ0eSgnT2JqZWN0JykpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgfVxuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KCdQdXJlJykpIHtcbiAgICAgICAgaWYgKGlucHV0LlB1cmUubGVuZ3RoID09PSBTVUlfQUREUkVTU19MRU5HVEgpIHtcbiAgICAgICAgICBjb25zdCBhZGRyZXNzID0gbm9ybWFsaXplU3VpQWRkcmVzcyhcbiAgICAgICAgICAgIGJ1aWxkZXIuZGUoQkNTLkFERFJFU1MsIEJ1ZmZlci5mcm9tKGlucHV0LlB1cmUpLnRvU3RyaW5nKCdiYXNlNjQnKSwgJ2Jhc2U2NCcpXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gSW5wdXRzLlB1cmUoYWRkcmVzcywgQkNTLkFERFJFU1MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGFtb3VudCA9IGJ1aWxkZXIuZGUoQkNTLlU2NCwgQnVmZmVyLmZyb20oaW5wdXQuUHVyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0Jyk7XG4gICAgICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGFtb3VudCwgQkNTLlU2NCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dC5raW5kID09PSAnSW5wdXQnICYmIChpbnB1dC52YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnT2JqZWN0JykgfHwgaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ1B1cmUnKSkpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIElucHV0cy5QdXJlKGlucHV0LnZhbHVlLCBpbnB1dC50eXBlID09PSAncHVyZScgPyBCQ1MuVTY0IDogQkNTLkFERFJFU1MpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcHJvZ3JhbW1hYmxlVHggPSB7XG4gICAgICBpbnB1dHMsXG4gICAgICB0cmFuc2FjdGlvbnM6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnR4LnRyYW5zYWN0aW9ucyxcbiAgICB9IGFzIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb247XG5cbiAgICBpZiAodGhpcy5fc3VpVHJhbnNhY3Rpb24uZ2FzRGF0YS5vd25lciAhPT0gdGhpcy5fc3VpVHJhbnNhY3Rpb24uc2VuZGVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzZW5kZXI6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgICAgZXhwaXJhdGlvbjogeyBOb25lOiBudWxsIH0sXG4gICAgICAgIGdhc0RhdGE6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmdhc0RhdGEsXG4gICAgICAgIGtpbmQ6IHtcbiAgICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjogcHJvZ3JhbW1hYmxlVHgsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICBleHBpcmF0aW9uOiB7IE5vbmU6IG51bGwgfSxcbiAgICAgIGdhc0RhdGE6IHtcbiAgICAgICAgLi4udGhpcy5fc3VpVHJhbnNhY3Rpb24uZ2FzRGF0YSxcbiAgICAgICAgcGF5bWVudDogdGhpcy5fc3VpVHJhbnNhY3Rpb24uZ2FzRGF0YS5wYXltZW50LnNsaWNlKDAsIE1BWF9HQVNfT0JKRUNUUyAtIDEpLFxuICAgICAgfSxcbiAgICAgIGtpbmQ6IHtcbiAgICAgICAgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHByb2dyYW1tYWJsZVR4LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBjb21wbGV0ZSBleHBsYW5hdGlvbiBmb3IgYSB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluVHJhbnNmZXJUcmFuc2FjdGlvbihqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVjaXBpZW50cyA9IHV0aWxzLmdldFJlY2lwaWVudHModGhpcy5zdWlUcmFuc2FjdGlvbik7XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IHJlY2lwaWVudCk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50Qk4gPSByZWNpcGllbnRzLnJlZHVjZShcbiAgICAgIC8vIGFtb3VudCBjYW4gYmUgZ3JlYXRlciB0aGFuIG51bWJlciByYW5nZSBmb3IgU1VJXG4gICAgICAoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yLnBsdXMoY3VycmVudC5hbW91bnQpLFxuICAgICAgbmV3IEJpZ051bWJlcigwKVxuICAgICk7XG4gICAgY29uc3Qgb3V0cHV0QW1vdW50ID0gb3V0cHV0QW1vdW50Qk4udG9TdHJpbmcoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyB0aGUgb2JqZWN0cyB0aGF0IHdlcmUgcHJvdmlkZWQgYXMgaW5wdXRzIHdoaWxlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gdHhcbiAgICogQHJldHVybnMge1N1aU9iamVjdFJlZltdfSBPYmplY3RzIHRoYXQgYXJlIGlucHV0cyBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldElucHV0T2JqZWN0c0Zyb21UeCh0eDogVHJhbnNmZXJQcm9ncmFtbWFibGVUcmFuc2FjdGlvbik6IFN1aU9iamVjdFJlZltdIHtcbiAgICBjb25zdCBpbnB1dHMgPSB0eC5pbnB1dHM7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0eC50cmFuc2FjdGlvbnNbMF0gYXMgU3VpVHJhbnNhY3Rpb25CbG9ja1R5cGU7XG5cbiAgICBsZXQgYXJnczogVHJhbnNhY3Rpb25Bcmd1bWVudFtdID0gW107XG4gICAgaWYgKHRyYW5zYWN0aW9uLmtpbmQgPT09ICdNZXJnZUNvaW5zJykge1xuICAgICAgY29uc3QgeyBkZXN0aW5hdGlvbiwgc291cmNlcyB9ID0gdHJhbnNhY3Rpb247XG4gICAgICBhcmdzID0gW2Rlc3RpbmF0aW9uLCAuLi5zb3VyY2VzXTtcbiAgICB9IGVsc2UgaWYgKHRyYW5zYWN0aW9uLmtpbmQgPT09ICdTcGxpdENvaW5zJykge1xuICAgICAgYXJncyA9IFt0cmFuc2FjdGlvbi5jb2luXTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dE9iamVjdHM6IFN1aU9iamVjdFJlZltdID0gW107XG4gICAgYXJncy5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgIGlmIChhcmcua2luZCA9PT0gJ0lucHV0Jykge1xuICAgICAgICBsZXQgaW5wdXQgPSBpbnB1dHNbYXJnLmluZGV4XTtcbiAgICAgICAgaWYgKCd2YWx1ZScgaW4gaW5wdXQpIHtcbiAgICAgICAgICBpbnB1dCA9IGlucHV0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICgnT2JqZWN0JyBpbiBpbnB1dCAmJiBpc0ltbU9yT3duZWRPYmooaW5wdXQuT2JqZWN0KSkge1xuICAgICAgICAgIGlucHV0T2JqZWN0cy5wdXNoKGlucHV0Lk9iamVjdC5JbW1Pck93bmVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlucHV0T2JqZWN0cztcbiAgfVxufVxuIl19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJUcmFuc2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FReUI7QUFHekIsMkNBQW9GO0FBQ3BGLG1DQUFnQztBQUNoQywrQ0FBNEM7QUFDNUMsNkNBQStFO0FBQy9FLGlEQUFpRDtBQUNqRCxpREFNNkI7QUFDN0IscUNBQWtDO0FBQ2xDLGdFQUFxQztBQUVyQyxNQUFhLG1CQUFvQixTQUFRLHlCQUE0QztJQUNuRixZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQsaUJBQWlCLENBQUMsRUFBbUQ7UUFDbkUsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixJQUFJLEVBQUU7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLElBQUksNEJBQWdCLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBQyxTQUF3QixFQUFFLFNBQWlCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxlQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FB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QUFLLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3JCLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUN0QixDQUFDO2dCQUNELElBQUksUUFBUSxJQUFJLEtBQUssSUFBSSxJQUFBLHVCQUFlLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0MsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQXJSRCxrREFxUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBQdWJsaWNLZXkgYXMgQmFzZVB1YmxpY0tleSxcbiAgU2lnbmF0dXJlLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU3VpVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24sIFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24sIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IE1BWF9HQVNfT0JKRUNUUywgU1VJX0FERFJFU1NfTEVOR1RILCBVTkFWQUlMQUJMRV9URVhUIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDYWxsQXJnLCBTdWlPYmplY3RSZWYsIG5vcm1hbGl6ZVN1aUFkZHJlc3MgfSBmcm9tICcuL215c3RlbmxhYi90eXBlcyc7XG5pbXBvcnQgdXRpbHMsIHsgaXNJbW1Pck93bmVkT2JqIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBidWlsZGVyLFxuICBJbnB1dHMsXG4gIFRyYW5zYWN0aW9uQXJndW1lbnQsXG4gIFRyYW5zYWN0aW9uQmxvY2tJbnB1dCxcbiAgVHJhbnNhY3Rpb25UeXBlIGFzIFN1aVRyYW5zYWN0aW9uQmxvY2tUeXBlLFxufSBmcm9tICcuL215c3RlbmxhYi9idWlsZGVyJztcbmltcG9ydCB7IEJDUyB9IGZyb20gJ0BteXN0ZW4vYmNzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGdldCBzdWlUcmFuc2FjdGlvbigpOiBTdWlUcmFuc2FjdGlvbjxUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N1aVRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0U3VpVHJhbnNhY3Rpb24odHg6IFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+KTogdm9pZCB7XG4gICAgdGhpcy5fc3VpVHJhbnNhY3Rpb24gPSB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqKi9cbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkIHx8IFVOQVZBSUxBQkxFX1RFWFQ7XG4gIH1cblxuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBCYXNlUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUudG9TdHJpbmcoJ2hleCcpKTtcbiAgICB0aGlzLl9zaWduYXR1cmUgPSB7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH07XG4gICAgdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBzdWlTaWduYXR1cmUoKTogU2lnbmF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlO1xuICB9XG5cbiAgZ2V0SW5wdXRDb2lucygpOiBTdWlPYmplY3RSZWZbXSB7XG4gICAgcmV0dXJuIHV0aWxzLm5vcm1hbGl6ZUNvaW5zKHRoaXMuc3VpVHJhbnNhY3Rpb24udHguaW5wdXRzKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBjYW5TaWduKGtleTogQmFzZUtleSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvQnJvYWRjYXN0Rm9ybWF0KCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9zdWlUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4ID0gdGhpcy5fc3VpVHJhbnNhY3Rpb247XG4gICAgaWYgKHR4Lmdhc0RhdGEub3duZXIgIT09IHR4LnNlbmRlcikge1xuICAgICAgLy8gU3BvbnNvcmVkIHRyYW5zYWN0aW9uXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGhpcy5faWQsXG4gICAgICAgIHNlbmRlcjogdHguc2VuZGVyLFxuICAgICAgICBraW5kOiB7IFByb2dyYW1tYWJsZVRyYW5zYWN0aW9uOiB0eC50eCB9LFxuICAgICAgICBnYXNEYXRhOiB0eC5nYXNEYXRhLFxuICAgICAgICBleHBpcmF0aW9uOiB0eC5leHBpcmF0aW9uID8/IHsgTm9uZTogbnVsbCB9LFxuICAgICAgICBpbnB1dE9iamVjdHM6IHRoaXMuZ2V0SW5wdXRPYmplY3RzRnJvbVR4KHR4LnR4KSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQsXG4gICAgICBzZW5kZXI6IHR4LnNlbmRlcixcbiAgICAgIGtpbmQ6IHsgUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb246IHR4LnR4IH0sXG4gICAgICBnYXNEYXRhOiB7XG4gICAgICAgIC4uLnR4Lmdhc0RhdGEsXG4gICAgICAgIHBheW1lbnQ6IFsuLi50eC5nYXNEYXRhLnBheW1lbnQsIC4uLnRoaXMuZ2V0SW5wdXRHYXNQYXltZW50T2JqZWN0c0Zyb21UeCh0eC50eCldLFxuICAgICAgfSxcbiAgICAgIGV4cGlyYXRpb246IHR4LmV4cGlyYXRpb24gPz8geyBOb25lOiBudWxsIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLnN1aVRyYW5zYWN0aW9uLmdhc0RhdGEuYnVkZ2V0LnRvU3RyaW5nKCkgfSxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKHJlc3VsdCwgZXhwbGFuYXRpb25SZXN1bHQpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgaW5wdXQgYW5kIG91dHB1dCBkYXRhIG9uIHRoaXMgdHJhbnNhY3Rpb24uXG4gICAqL1xuICBsb2FkSW5wdXRzQW5kT3V0cHV0cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3VpVHJhbnNhY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMuZ2V0UmVjaXBpZW50cyh0aGlzLl9zdWlUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgdG90YWxBbW91bnQgPSByZWNpcGllbnRzLnJlZHVjZSgoYWNjdW11bGF0b3IsIGN1cnJlbnQpID0+IGFjY3VtdWxhdG9yICsgTnVtYmVyKGN1cnJlbnQuYW1vdW50KSwgMCk7XG4gICAgdGhpcy5fb3V0cHV0cyA9IHJlY2lwaWVudHMubWFwKChyZWNpcGllbnQsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzczogcmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogcmVjaXBpZW50LmFtb3VudCxcbiAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICB9KSk7XG4gICAgdGhpcy5faW5wdXRzID0gW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB0aGlzLnN1aVRyYW5zYWN0aW9uLnNlbmRlcixcbiAgICAgICAgdmFsdWU6IHRvdGFsQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoaXMgdHJhbnNhY3Rpb24gcGF5bG9hZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3VHJhbnNhY3Rpb25cbiAgICovXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbik7XG4gICAgICB0aGlzLl9zdWlUcmFuc2FjdGlvbiA9IFRyYW5zYWN0aW9uLmRlc2VyaWFsaXplU3VpVHJhbnNhY3Rpb24oXG4gICAgICAgIHJhd1RyYW5zYWN0aW9uXG4gICAgICApIGFzIFN1aVRyYW5zYWN0aW9uPFRyYW5zZmVyUHJvZ3JhbW1hYmxlVHJhbnNhY3Rpb24+O1xuICAgICAgdGhpcy5fdHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgICAgdGhpcy5faWQgPSB0aGlzLl9zdWlUcmFuc2FjdGlvbi5pZDtcbiAgICAgIHRoaXMubG9hZElucHV0c0FuZE91dHB1dHMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNlcmlhbGl6ZSgpIHRvIGdldCB0aGUgY29ycmVjdCB0eERhdGEgd2l0aCB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4ge1R4RGF0YX1cbiAgICovXG4gIHB1YmxpYyBnZXRUeERhdGEoKTogVHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3N1aVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ2VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGlucHV0czogQ2FsbEFyZ1tdIHwgVHJhbnNhY3Rpb25CbG9ja0lucHV0W10gPSB0aGlzLl9zdWlUcmFuc2FjdGlvbi50eC5pbnB1dHMubWFwKChpbnB1dCkgPT4ge1xuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KCdPYmplY3QnKSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXQuaGFzT3duUHJvcGVydHkoJ1B1cmUnKSkge1xuICAgICAgICBpZiAoaW5wdXQuUHVyZS5sZW5ndGggPT09IFNVSV9BRERSRVNTX0xFTkdUSCkge1xuICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBub3JtYWxpemVTdWlBZGRyZXNzKFxuICAgICAgICAgICAgYnVpbGRlci5kZShCQ1MuQUREUkVTUywgQnVmZmVyLmZyb20oaW5wdXQuUHVyZSkudG9TdHJpbmcoJ2Jhc2U2NCcpLCAnYmFzZTY0JylcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBJbnB1dHMuUHVyZShhZGRyZXNzLCBCQ1MuQUREUkVTUyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYW1vdW50ID0gYnVpbGRlci5kZShCQ1MuVTY0LCBCdWZmZXIuZnJvbShpbnB1dC5QdXJlKS50b1N0cmluZygnYmFzZTY0JyksICdiYXNlNjQnKTtcbiAgICAgICAgICByZXR1cm4gSW5wdXRzLlB1cmUoYW1vdW50LCBCQ1MuVTY0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGlucHV0Lmhhc093blByb3BlcnR5KCdCYWxhbmNlV2l0aGRyYXdhbCcpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaW5wdXQua2luZCA9PT0gJ0lucHV0JyAmJlxuICAgICAgICAoaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ09iamVjdCcpIHx8XG4gICAgICAgICAgaW5wdXQudmFsdWUuaGFzT3duUHJvcGVydHkoJ1B1cmUnKSB8fFxuICAgICAgICAgIGlucHV0LnZhbHVlLmhhc093blByb3BlcnR5KCdCYWxhbmNlV2l0aGRyYXdhbCcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBpbnB1dC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBJbnB1dHMuUHVyZShpbnB1dC52YWx1ZSwgaW5wdXQudHlwZSA9PT0gJ3B1cmUnID8gQkNTLlU2NCA6IEJDUy5BRERSRVNTKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb2dyYW1tYWJsZVR4ID0ge1xuICAgICAgaW5wdXRzLFxuICAgICAgdHJhbnNhY3Rpb25zOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi50eC50cmFuc2FjdGlvbnMsXG4gICAgfSBhcyBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uO1xuXG4gICAgaWYgKHRoaXMuX3N1aVRyYW5zYWN0aW9uLmdhc0RhdGEub3duZXIgIT09IHRoaXMuX3N1aVRyYW5zYWN0aW9uLnNlbmRlcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2VuZGVyOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICAgIGV4cGlyYXRpb246IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmV4cGlyYXRpb24gPz8geyBOb25lOiBudWxsIH0sXG4gICAgICAgIGdhc0RhdGE6IHRoaXMuX3N1aVRyYW5zYWN0aW9uLmdhc0RhdGEsXG4gICAgICAgIGtpbmQ6IHtcbiAgICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjogcHJvZ3JhbW1hYmxlVHgsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc2VuZGVyOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5zZW5kZXIsXG4gICAgICBleHBpcmF0aW9uOiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5leHBpcmF0aW9uID8/IHsgTm9uZTogbnVsbCB9LFxuICAgICAgZ2FzRGF0YToge1xuICAgICAgICAuLi50aGlzLl9zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLFxuICAgICAgICBwYXltZW50OiB0aGlzLl9zdWlUcmFuc2FjdGlvbi5nYXNEYXRhLnBheW1lbnQuc2xpY2UoMCwgTUFYX0dBU19PQkpFQ1RTIC0gMSksXG4gICAgICB9LFxuICAgICAga2luZDoge1xuICAgICAgICBQcm9ncmFtbWFibGVUcmFuc2FjdGlvbjogcHJvZ3JhbW1hYmxlVHgsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIGZvciBhIHRyYW5zZmVyIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7VHhEYXRhfSBqc29uIFRoZSB0cmFuc2FjdGlvbiBkYXRhIGluIGpzb24gZm9ybWF0XG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn0gZXhwbGFuYXRpb25SZXN1bHQgVGhlIHRyYW5zYWN0aW9uIGV4cGxhbmF0aW9uIHRvIGJlIGNvbXBsZXRlZFxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25FeHBsYW5hdGlvbn1cbiAgICovXG4gIGV4cGxhaW5UcmFuc2ZlclRyYW5zYWN0aW9uKGpzb246IFR4RGF0YSwgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24pOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIHtcbiAgICBjb25zdCByZWNpcGllbnRzID0gdXRpbHMuZ2V0UmVjaXBpZW50cyh0aGlzLnN1aVRyYW5zYWN0aW9uKTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gcmVjaXBpZW50cy5tYXAoKHJlY2lwaWVudCkgPT4gcmVjaXBpZW50KTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnRCTiA9IHJlY2lwaWVudHMucmVkdWNlKFxuICAgICAgLy8gYW1vdW50IGNhbiBiZSBncmVhdGVyIHRoYW4gbnVtYmVyIHJhbmdlIGZvciBTVUlcbiAgICAgIChhY2N1bXVsYXRvciwgY3VycmVudCkgPT4gYWNjdW11bGF0b3IucGx1cyhjdXJyZW50LmFtb3VudCksXG4gICAgICBuZXcgQmlnTnVtYmVyKDApXG4gICAgKTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSBvdXRwdXRBbW91bnRCTi50b1N0cmluZygpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmV4cGxhbmF0aW9uUmVzdWx0LFxuICAgICAgb3V0cHV0QW1vdW50LFxuICAgICAgb3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RzIHRoZSBvYmplY3RzIHRoYXQgd2VyZSBwcm92aWRlZCBhcyBpbnB1dHMgd2hpbGUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB0eFxuICAgKiBAcmV0dXJucyB7U3VpT2JqZWN0UmVmW119IE9iamVjdHMgdGhhdCBhcmUgaW5wdXRzIGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgZ2V0SW5wdXRPYmplY3RzRnJvbVR4KHR4OiBUcmFuc2ZlclByb2dyYW1tYWJsZVRyYW5zYWN0aW9uKTogU3VpT2JqZWN0UmVmW10ge1xuICAgIGNvbnN0IGlucHV0cyA9IHR4LmlucHV0cztcbiAgICAvLyBJbiB0aGUgc3BvbnNvcmVkIHBhdGggd2l0aCBCYWxhbmNlV2l0aGRyYXdhbCwgdHJhbnNhY3Rpb25zWzBdIGlzIE1vdmVDYWxsIChyZWRlZW1fZnVuZHMpXG4gICAgLy8gYW5kIE1lcmdlQ29pbnMvU3BsaXRDb2lucyBhcHBlYXJzIGF0IGluZGV4IDErLiBTZWFyY2ggZm9yIHRoZSBmaXJzdCByZWxldmFudCB0cmFuc2FjdGlvbi5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9ICh0eC50cmFuc2FjdGlvbnMgYXMgU3VpVHJhbnNhY3Rpb25CbG9ja1R5cGVbXSkuZmluZChcbiAgICAgICh0KSA9PiB0LmtpbmQgPT09ICdNZXJnZUNvaW5zJyB8fCB0LmtpbmQgPT09ICdTcGxpdENvaW5zJ1xuICAgICk7XG5cbiAgICBsZXQgYXJnczogVHJhbnNhY3Rpb25Bcmd1bWVudFtdID0gW107XG4gICAgaWYgKHRyYW5zYWN0aW9uPy5raW5kID09PSAnTWVyZ2VDb2lucycpIHtcbiAgICAgIGNvbnN0IHsgZGVzdGluYXRpb24sIHNvdXJjZXMgfSA9IHRyYW5zYWN0aW9uO1xuICAgICAgYXJncyA9IFtkZXN0aW5hdGlvbiwgLi4uc291cmNlc107XG4gICAgfSBlbHNlIGlmICh0cmFuc2FjdGlvbj8ua2luZCA9PT0gJ1NwbGl0Q29pbnMnKSB7XG4gICAgICBhcmdzID0gW3RyYW5zYWN0aW9uLmNvaW5dO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0T2JqZWN0czogU3VpT2JqZWN0UmVmW10gPSBbXTtcbiAgICBhcmdzLmZvckVhY2goKGFyZykgPT4ge1xuICAgICAgaWYgKGFyZy5raW5kID09PSAnSW5wdXQnKSB7XG4gICAgICAgIGxldCBpbnB1dCA9IGlucHV0c1thcmcuaW5kZXhdO1xuICAgICAgICBpZiAoJ3ZhbHVlJyBpbiBpbnB1dCkge1xuICAgICAgICAgIGlucHV0ID0gaW5wdXQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCdPYmplY3QnIGluIGlucHV0ICYmIGlzSW1tT3JPd25lZE9iaihpbnB1dC5PYmplY3QpKSB7XG4gICAgICAgICAgaW5wdXRPYmplY3RzLnB1c2goaW5wdXQuT2JqZWN0LkltbU9yT3duZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5wdXRPYmplY3RzO1xuICB9XG59XG4iXX0=
|
package/dist/src/lib/utils.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseUtils, Recipient, TransactionType } from '@bitgo/sdk-core';
|
|
2
2
|
import BigNumber from 'bignumber.js';
|
|
3
|
-
import { RequestAddStake, RequestWalrusStakeWithPool, RequestWalrusWithdrawStake, StakingProgrammableTransaction, WalrusStakingProgrammableTransaction, WalrusWithdrawStakeProgrammableTransaction, SuiObjectInfo, SuiProgrammableTransaction, SuiTransaction, SuiTransactionType } from './iface';
|
|
3
|
+
import { RequestAddStake, RequestWalrusStakeWithPool, RequestWalrusWithdrawStake, StakingProgrammableTransaction, WalrusStakingProgrammableTransaction, WalrusWithdrawStakeProgrammableTransaction, SuiBalanceInfo, SuiObjectInfo, SuiProgrammableTransaction, SuiTransaction, SuiTransactionType } from './iface';
|
|
4
4
|
import { SuiJsonValue, SuiObjectRef } from './mystenlab/types';
|
|
5
5
|
import { ObjectCallArg, TransactionBlockInput, TransactionType as TransactionCommandType } from './mystenlab/builder';
|
|
6
6
|
import { BaseNetwork } from '@bitgo/statics';
|
|
@@ -102,7 +102,16 @@ export declare class Utils implements BaseUtils {
|
|
|
102
102
|
transactionInput(type: 'object' | 'pure', index?: number, value?: unknown): TransactionBlockInput;
|
|
103
103
|
getAddressFromPublicKey(publicKey: string): string;
|
|
104
104
|
getFeeEstimate(url: string, txHex: string): Promise<BigNumber>;
|
|
105
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Returns the current epoch and chain identifier of the Sui network by making RPC calls to the provided URL.
|
|
107
|
+
* @param {string} url - The URL of the Sui network RPC endpoint.
|
|
108
|
+
* @returns {Promise<{ epoch: number; chainId: string }>} - The current epoch and chain identifier.
|
|
109
|
+
*/
|
|
110
|
+
getChainContext(url: string): Promise<{
|
|
111
|
+
epoch: number;
|
|
112
|
+
chainId: string;
|
|
113
|
+
}>;
|
|
114
|
+
getBalance(url: string, owner: string, coinType?: string): Promise<SuiBalanceInfo>;
|
|
106
115
|
getInputCoins(url: string, owner: string, coinType?: string): Promise<SuiObjectInfo[]>;
|
|
107
116
|
executeTransactionBlock(url: string, serializedTx: string, signatures: string[]): Promise<string>;
|
|
108
117
|
validateNonNegativeNumber(defaultVal: number, errorMsg: string, inputVal?: number): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAKT,SAAS,EACT,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,SAAS,MAAM,cAAc,CAAC;AAIrC,OAAO,EAEL,eAAe,EACf,0BAA0B,EAC1B,0BAA0B,EAC1B,8BAA8B,EAC9B,oCAAoC,EACpC,0CAA0C,EAC1C,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACd,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAKL,YAAY,EACZ,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,aAAa,EAEb,qBAAqB,EACrB,eAAe,IAAI,sBAAsB,EAC1C,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAE7D,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI;IAAE,UAAU,EAAE,YAAY,CAAA;CAAE,CAEjG;AAED,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;OAKG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAWtD;;;;OAIG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IASpD;;;;;OAKG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAM/D;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzD,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI7B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAKvC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;IAS1C;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAQ/C;;;;;QAKI;IACJ,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAIlC;;;;;OAKG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,eAAe;IAkB3E;;;;;OAKG;IACH,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,kBAAkB;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|