@bitgo-beta/sdk-coin-flrp 1.0.0-alpha.72 → 1.0.0-alpha.74
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/ExportInPTxBuilder.d.ts +19 -2
- package/dist/src/lib/ExportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ExportInPTxBuilder.js +88 -22
- package/dist/src/lib/ImportInCTxBuilder.d.ts +5 -1
- package/dist/src/lib/ImportInCTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInCTxBuilder.js +51 -41
- package/dist/src/lib/ImportInPTxBuilder.d.ts +5 -1
- package/dist/src/lib/ImportInPTxBuilder.d.ts.map +1 -1
- package/dist/src/lib/ImportInPTxBuilder.js +49 -25
- package/dist/src/lib/atomicTransactionBuilder.d.ts +39 -9
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/atomicTransactionBuilder.js +142 -79
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +13 -4
- package/dist/src/lib/utils.d.ts +25 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +42 -3
- package/dist/test/resources/account.d.ts +21 -0
- package/dist/test/resources/account.d.ts.map +1 -1
- package/dist/test/resources/account.js +23 -2
- package/dist/test/resources/transactionData/exportInP.d.ts.map +1 -1
- package/dist/test/resources/transactionData/exportInP.js +5 -6
- package/dist/test/resources/transactionData/importInC.js +5 -5
- package/dist/test/resources/transactionData/importInP.js +5 -5
- package/dist/test/unit/flrp.js +3 -3
- package/dist/test/unit/lib/exportInPTxBuilder.js +144 -34
- package/dist/test/unit/lib/importInCTxBuilder.js +51 -74
- package/dist/test/unit/lib/importInPTxBuilder.js +48 -183
- package/dist/test/unit/lib/utils.js +82 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
|
@@ -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-beta/sdk-core");
|
|
7
8
|
const transactionBuilder_1 = require("./transactionBuilder");
|
|
8
9
|
const transaction_1 = require("./transaction");
|
|
9
10
|
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
@@ -85,113 +86,175 @@ class AtomicTransactionBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
|
85
86
|
this.transaction._amount = valueBigInt;
|
|
86
87
|
return this;
|
|
87
88
|
}
|
|
89
|
+
/*
|
|
90
|
+
* Key naming:
|
|
91
|
+
* A = user key, B = hsm key (BitGo), C = backup key
|
|
92
|
+
*
|
|
93
|
+
* _fromAddresses (BitGo convention) = [ A, B, C ] at indices [0, 1, 2]
|
|
94
|
+
*
|
|
95
|
+
* Signing key selection (which keys from _fromAddresses to use):
|
|
96
|
+
* - non-recovery: _fromAddresses[0] + _fromAddresses[1] (user + bitgo)
|
|
97
|
+
* - recovery: _fromAddresses[1] + _fromAddresses[2] (bitgo + backup)
|
|
98
|
+
*
|
|
99
|
+
* sigIndices in transaction (positions in sorted UTXO address list):
|
|
100
|
+
* - UTXO addresses are sorted by hex value on-chain
|
|
101
|
+
* - sigIndices = positions of the 2 signing keys in this sorted list
|
|
102
|
+
* - Example: if user sorts to position 2 and bitgo to position 0,
|
|
103
|
+
* then sigIndices = [0, 2] (even though we picked _fromAddresses[0, 1])
|
|
104
|
+
*/
|
|
105
|
+
/**
|
|
106
|
+
* Get the 2 signing addresses for FlareJS transaction building.
|
|
107
|
+
*
|
|
108
|
+
* FlareJS's matchOwners() selects signers in sorted UTXO address order,
|
|
109
|
+
* not based on which keys should actually sign. By passing only 2 addresses,
|
|
110
|
+
* we ensure the correct signers are selected.
|
|
111
|
+
*
|
|
112
|
+
* This mirrors AVAXP's approach in createInputOutput() where:
|
|
113
|
+
* - For non-recovery: use user (index 0) and bitgo (index 1)
|
|
114
|
+
* - For recovery: use bitgo (index 1) and recovery (index 2)
|
|
115
|
+
*
|
|
116
|
+
* @returns Array of 2 signing address buffers
|
|
117
|
+
* @protected
|
|
118
|
+
*/
|
|
119
|
+
getSigningAddresses() {
|
|
120
|
+
const firstIndex = this.recoverSigner ? 2 : 0;
|
|
121
|
+
const bitgoIndex = 1;
|
|
122
|
+
if (this.transaction._fromAddresses.length < Math.max(firstIndex, bitgoIndex) + 1) {
|
|
123
|
+
throw new sdk_core_1.BuildTransactionError(`Insufficient fromAddresses: need at least ${Math.max(firstIndex, bitgoIndex) + 1} addresses`);
|
|
124
|
+
}
|
|
125
|
+
const signingAddresses = [
|
|
126
|
+
Buffer.from(this.transaction._fromAddresses[firstIndex]),
|
|
127
|
+
Buffer.from(this.transaction._fromAddresses[bitgoIndex]),
|
|
128
|
+
];
|
|
129
|
+
const invalidAddr = signingAddresses.find((addr) => addr.length !== 20);
|
|
130
|
+
if (invalidAddr) {
|
|
131
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid signing address length: expected 20 bytes, got ${invalidAddr.length}`);
|
|
132
|
+
}
|
|
133
|
+
return signingAddresses;
|
|
134
|
+
}
|
|
88
135
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
136
|
+
* Compute addressesIndex for UTXOs.
|
|
137
|
+
* addressesIndex[senderIdx] = position of sender[senderIdx] in UTXO's sorted address list.
|
|
138
|
+
*
|
|
139
|
+
* UTXO addresses are sorted lexicographically by byte value to match on-chain storage order.
|
|
140
|
+
* @param forceRecompute - If true, recompute even if addressesIndex already exists
|
|
141
|
+
* @protected
|
|
142
|
+
*/
|
|
143
|
+
computeAddressesIndex(forceRecompute = false) {
|
|
144
|
+
const sender = this.transaction._fromAddresses;
|
|
145
|
+
if (!sender || sender.length === 0)
|
|
146
|
+
return;
|
|
147
|
+
this.transaction._utxos.forEach((utxo) => {
|
|
148
|
+
if (!forceRecompute && utxo.addressesIndex && utxo.addressesIndex.length > 0) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (utxo.addresses && utxo.addresses.length > 0) {
|
|
152
|
+
const sortedAddresses = utils_1.default.sortAddressesByHex(utxo.addresses);
|
|
153
|
+
utxo.addresses = sortedAddresses;
|
|
154
|
+
const utxoAddresses = sortedAddresses.map((a) => utils_1.default.parseAddress(a));
|
|
155
|
+
utxo.addressesIndex = sender.map((a) => utxoAddresses.findIndex((u) => Buffer.compare(Buffer.from(u), Buffer.from(a)) === 0));
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Validate UTXOs have consistent addresses.
|
|
161
|
+
* @protected
|
|
162
|
+
*/
|
|
163
|
+
validateUtxoAddresses() {
|
|
164
|
+
this.transaction._utxos.forEach((utxo) => {
|
|
165
|
+
if (!utxo) {
|
|
166
|
+
throw new sdk_core_1.BuildTransactionError('Utxo is undefined');
|
|
167
|
+
}
|
|
168
|
+
if (utxo.addressesIndex?.includes(-1)) {
|
|
169
|
+
throw new sdk_core_1.BuildTransactionError('Addresses are inconsistent: ' + utxo.txid);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create credential for a UTXO following AVAX P approach.
|
|
175
|
+
* Embed user/recovery address, leave BitGo slot empty.
|
|
176
|
+
* Signing order is guaranteed: user signs first (address match), BitGo signs second (empty slot).
|
|
177
|
+
*
|
|
91
178
|
* @param utxo - The UTXO to create credential for
|
|
92
179
|
* @param threshold - Number of signatures required
|
|
93
|
-
* @
|
|
180
|
+
* @param sigIndices - Optional sigIndices from FlareJS (if not provided, derived from addressesIndex)
|
|
94
181
|
* @protected
|
|
95
182
|
*/
|
|
96
|
-
createCredentialForUtxo(utxo, threshold) {
|
|
183
|
+
createCredentialForUtxo(utxo, threshold, sigIndices) {
|
|
97
184
|
const sender = this.transaction._fromAddresses;
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
for (let i = 0; i < threshold; i++) {
|
|
105
|
-
emptySignatures.push(utils_1.default.createNewSig(''));
|
|
185
|
+
const addressesIndex = utxo.addressesIndex ?? [];
|
|
186
|
+
const firstIndex = this.recoverSigner ? 2 : 0;
|
|
187
|
+
const bitgoIndex = 1;
|
|
188
|
+
if (threshold === 1) {
|
|
189
|
+
if (sender && sender.length > firstIndex) {
|
|
190
|
+
return new flarejs_1.Credential([utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex'))]);
|
|
106
191
|
}
|
|
107
|
-
return new flarejs_1.Credential(
|
|
192
|
+
return new flarejs_1.Credential([utils_1.default.createNewSig('')]);
|
|
108
193
|
}
|
|
109
|
-
if (
|
|
110
|
-
|
|
194
|
+
if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
|
|
195
|
+
const effectiveSigIndices = sigIndices && sigIndices.length >= 2
|
|
196
|
+
? sigIndices
|
|
197
|
+
: [addressesIndex[firstIndex], addressesIndex[bitgoIndex]].sort((a, b) => a - b);
|
|
111
198
|
const emptySignatures = [];
|
|
112
|
-
for (
|
|
113
|
-
|
|
199
|
+
for (const sigIdx of effectiveSigIndices) {
|
|
200
|
+
const senderIdx = addressesIndex.findIndex((utxoPos) => utxoPos === sigIdx);
|
|
201
|
+
if (senderIdx === firstIndex) {
|
|
202
|
+
emptySignatures.push(utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')));
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
emptySignatures.push(utils_1.default.createNewSig(''));
|
|
206
|
+
}
|
|
114
207
|
}
|
|
115
208
|
return new flarejs_1.Credential(emptySignatures);
|
|
116
209
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// either user (0) or recovery (2)
|
|
121
|
-
const firstIndex = this.recoverSigner ? 2 : 0;
|
|
122
|
-
const bitgoIndex = 1;
|
|
123
|
-
// Dynamic ordering based on addressesIndex
|
|
124
|
-
let emptySignatures;
|
|
125
|
-
if (addressesIndex[bitgoIndex] < addressesIndex[firstIndex]) {
|
|
126
|
-
// Bitgo comes first in signature order: [zeros, userAddress]
|
|
127
|
-
emptySignatures = [
|
|
128
|
-
utils_1.default.createNewSig(''),
|
|
129
|
-
utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
|
|
130
|
-
];
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
// User comes first in signature order: [userAddress, zeros]
|
|
134
|
-
emptySignatures = [
|
|
135
|
-
utils_1.default.createEmptySigWithAddress(Buffer.from(sender[firstIndex]).toString('hex')),
|
|
136
|
-
utils_1.default.createNewSig(''),
|
|
137
|
-
];
|
|
210
|
+
const emptySignatures = [];
|
|
211
|
+
for (let i = 0; i < threshold; i++) {
|
|
212
|
+
emptySignatures.push(utils_1.default.createNewSig(''));
|
|
138
213
|
}
|
|
139
214
|
return new flarejs_1.Credential(emptySignatures);
|
|
140
215
|
}
|
|
141
216
|
/**
|
|
142
|
-
* Create AddressMap
|
|
143
|
-
*
|
|
144
|
-
* AddressMaps should map addresses to signature slots in the same order as credentials
|
|
217
|
+
* Create AddressMap for a UTXO following AVAX P approach.
|
|
218
|
+
*
|
|
145
219
|
* @param utxo - The UTXO to create AddressMap for
|
|
146
220
|
* @param threshold - Number of signatures required
|
|
147
|
-
* @
|
|
221
|
+
* @param sigIndices - Optional sigIndices from FlareJS (if not provided, derived from addressesIndex)
|
|
148
222
|
* @protected
|
|
149
223
|
*/
|
|
150
|
-
createAddressMapForUtxo(utxo, threshold) {
|
|
224
|
+
createAddressMapForUtxo(utxo, threshold, sigIndices) {
|
|
151
225
|
const addressMap = new flarejs_1.utils.AddressMap();
|
|
152
226
|
const sender = this.transaction._fromAddresses;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
addressMap.set(new flarejs_1.Address(sender[utxoAddrIdx]), slotIdx);
|
|
163
|
-
}
|
|
227
|
+
const addressesIndex = utxo.addressesIndex ?? [];
|
|
228
|
+
const firstIndex = this.recoverSigner ? 2 : 0;
|
|
229
|
+
const bitgoIndex = 1;
|
|
230
|
+
if (threshold === 1) {
|
|
231
|
+
if (sender && sender.length > firstIndex) {
|
|
232
|
+
addressMap.set(new flarejs_1.Address(sender[firstIndex]), 0);
|
|
233
|
+
}
|
|
234
|
+
else if (sender && sender.length > 0) {
|
|
235
|
+
addressMap.set(new flarejs_1.Address(sender[0]), 0);
|
|
164
236
|
}
|
|
165
237
|
return addressMap;
|
|
166
238
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
// User/recovery comes first: slot 0 = firstIndex, slot 1 = bitgo
|
|
181
|
-
addressMap.set(new flarejs_1.Address(sender[firstIndex]), 0);
|
|
182
|
-
addressMap.set(new flarejs_1.Address(sender[bitgoIndex]), 1);
|
|
183
|
-
}
|
|
239
|
+
if (addressesIndex.length >= 2 && sender && sender.length >= threshold) {
|
|
240
|
+
const effectiveSigIndices = sigIndices && sigIndices.length >= 2
|
|
241
|
+
? sigIndices
|
|
242
|
+
: [addressesIndex[firstIndex], addressesIndex[bitgoIndex]].sort((a, b) => a - b);
|
|
243
|
+
effectiveSigIndices.forEach((sigIdx, slotIdx) => {
|
|
244
|
+
const senderIdx = addressesIndex.findIndex((utxoPos) => utxoPos === sigIdx);
|
|
245
|
+
if (senderIdx === bitgoIndex || senderIdx === firstIndex) {
|
|
246
|
+
addressMap.set(new flarejs_1.Address(sender[senderIdx]), slotIdx);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
return addressMap;
|
|
184
250
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
addressMap.set(new flarejs_1.Address(addr), i);
|
|
190
|
-
});
|
|
191
|
-
}
|
|
251
|
+
if (sender && sender.length >= threshold) {
|
|
252
|
+
sender.slice(0, threshold).forEach((addr, i) => {
|
|
253
|
+
addressMap.set(new flarejs_1.Address(addr), i);
|
|
254
|
+
});
|
|
192
255
|
}
|
|
193
256
|
return addressMap;
|
|
194
257
|
}
|
|
195
258
|
}
|
|
196
259
|
exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsNkRBQTBEO0FBQzFELCtDQUE0QztBQUM1QyxtREFBaUY7QUFHakYsb0RBQTRCO0FBRTVCLE1BQXNCLHdCQUF5QixTQUFRLHVDQUFrQjtJQUl2RSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhYLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBSTlCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFTRDs7Ozs7T0FLRztJQUNILElBQWMsUUFBUTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLGVBQWdDO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsT0FBd0I7UUFDdEMsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsR0FBRyxDQUFDLFFBQXlCO1FBQzNCLE1BQU0sR0FBRyxHQUFHLE9BQU8sUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQTJCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxLQUFtQjtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFzQjtRQUMzQixNQUFNLFdBQVcsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyx1QkFBdUIsQ0FBQyxJQUFvQixFQUFFLFNBQWlCO1FBQ3ZFLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxXQUEyQixDQUFDLGNBQWMsQ0FBQztRQUNoRSxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7UUFFMUQsdUZBQXVGO1FBQ3ZGLG1GQUFtRjtRQUNuRixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7WUFDbkUsZ0ZBQWdGO1lBQ2hGLE1BQU0sZUFBZSxHQUE0QyxFQUFFLENBQUM7WUFDcEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBQ0QsT0FBTyxJQUFJLG9CQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BFLG9EQUFvRDtZQUNwRCxNQUFNLGVBQWUsR0FBNEMsRUFBRSxDQUFDO1lBQ3BFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUNELE9BQU8sSUFBSSxvQkFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7UUFFRCxpRkFBaUY7UUFDakYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDckYsQ0FBQztRQUVGLGtDQUFrQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFFckIsMkNBQTJDO1FBQzNDLElBQUksZUFBd0QsQ0FBQztRQUM3RCxJQUFJLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM1RCw2REFBNkQ7WUFDN0QsZUFBZSxHQUFHO2dCQUNoQixlQUFLLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsZUFBSyxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2pGLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLDREQUE0RDtZQUM1RCxlQUFlLEdBQUc7Z0JBQ2hCLGVBQUssQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEYsZUFBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7YUFDdkIsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksb0JBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDTyx1QkFBdUIsQ0FBQyxJQUFvQixFQUFFLFNBQWlCO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxXQUEyQixDQUFDLGNBQWMsQ0FBQztRQUVoRSx1RkFBdUY7UUFDdkYsdUZBQXVGO1FBQ3ZGLDBGQUEwRjtRQUMxRixzR0FBc0c7UUFDdEcsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLFNBQVMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzRyxLQUFLLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUM7Z0JBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pELDBFQUEwRTtnQkFDMUUsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNoQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDO1FBRUQsNkVBQTZFO1FBQzdFLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2hHLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3RDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3JGLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFFckIscUZBQXFGO1lBQ3JGLElBQUksY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1RCx5REFBeUQ7Z0JBQ3pELFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxpQkFBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRCxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04saUVBQWlFO2dCQUNqRSxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksaUJBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkQsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sc0VBQXNFO1lBQ3RFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDN0MsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFyTkQsNERBcU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENyZWRlbnRpYWwsIEFkZHJlc3MsIHV0aWxzIGFzIEZsYXJlVXRpbHMgfSBmcm9tICdAZmxhcmVuZXR3b3JrL2ZsYXJlanMnO1xuaW1wb3J0IHsgRGVjb2RlZFV0eG9PYmogfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IEZscnBGZWVTdGF0ZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9leHRlcm5hbENoYWluSWQ6IEJ1ZmZlcjtcbiAgcHJvdGVjdGVkIHJlY292ZXJTaWduZXIgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlLmZlZSA9IHRoaXMuZml4ZWRGZWU7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGF3YWl0IHRoaXMuYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIGlmICh0aGlzLmhhc1NpZ25lcigpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleVBhaXIgb2YgdGhpcy5fc2lnbmVyKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb24uc2lnbihrZXlQYWlyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBGbGFyZSB0cmFuc2FjdGlvbi4gVHJhbnNhY3Rpb24gZmllbGQgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZEZsYXJlVHJhbnNhY3Rpb24oKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBGZWUgaXMgZml4IGZvciBBVk0gYXRvbWljIHR4LlxuICAgKlxuICAgKiBAcmV0dXJucyBuZXR3b3JrLnR4RmVlXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgZml4ZWRGZWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbi5fbmV0d29yay50eEZlZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXRcbiAgICovXG4gIHNldFRyYW5zYWN0aW9uVHlwZSh0cmFuc2FjdGlvblR5cGU6IFRyYW5zYWN0aW9uVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3R5cGUgPSB0cmFuc2FjdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGNoYWluIGlzIHRoZSBvbmUgc2V0IGZvciB0aGUgY29pbiBpbiBjb2luQ29uZmlnLm5ldHdvcmsuIFRoZSBleHRlcm5hbCBjaGFpbiBpcyB0aGUgb3RoZXIgY2hhaW4gaW52b2x2ZWQuXG4gICAqIFRoZSBleHRlcm5hbCBjaGFpbiBpZCBpcyB0aGUgc291cmNlIG9uIGltcG9ydCBhbmQgdGhlIGRlc3RpbmF0aW9uIG9uIGV4cG9ydC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYWluSWQgLSBpZCBvZiB0aGUgZXh0ZXJuYWwgY2hhaW5cbiAgICovXG4gIGV4dGVybmFsQ2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCBCdWZmZXIpOiB0aGlzIHtcbiAgICBjb25zdCBuZXdUYXJnZXRDaGFpbklkID0gdHlwZW9mIGNoYWluSWQgPT09ICdzdHJpbmcnID8gdXRpbHMuY2I1OERlY29kZShjaGFpbklkKSA6IEJ1ZmZlci5mcm9tKGNoYWluSWQpO1xuICAgIHRoaXMudmFsaWRhdGVDaGFpbklkKG5ld1RhcmdldENoYWluSWQpO1xuICAgIHRoaXMuX2V4dGVybmFsQ2hhaW5JZCA9IG5ld1RhcmdldENoYWluSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiBmZWVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBiaWdpbnR9IGZlZVZhbHVlIC0gdGhlIGZlZSB2YWx1ZVxuICAgKi9cbiAgZmVlKGZlZVZhbHVlOiBzdHJpbmcgfCBiaWdpbnQpOiB0aGlzIHtcbiAgICBjb25zdCBmZWUgPSB0eXBlb2YgZmVlVmFsdWUgPT09ICdzdHJpbmcnID8gZmVlVmFsdWUgOiBmZWVWYWx1ZS50b1N0cmluZygpO1xuICAgICh0aGlzLnRyYW5zYWN0aW9uIGFzIFRyYW5zYWN0aW9uKS5fZmVlLmZlZSA9IGZlZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZlZSBzdGF0ZSBmb3IgZHluYW1pYyBmZWUgY2FsY3VsYXRpb24gKFAtY2hhaW4gdHJhbnNhY3Rpb25zKVxuICAgKlxuICAgKiBAcGFyYW0ge0ZscnBGZWVTdGF0ZX0gc3RhdGUgLSB0aGUgZmVlIHN0YXRlIGZyb20gdGhlIG5ldHdvcmtcbiAgICovXG4gIGZlZVN0YXRlKHN0YXRlOiBGbHJwRmVlU3RhdGUpOiB0aGlzIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl9mZWVTdGF0ZSA9IHN0YXRlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgYW1vdW50IGZvciB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtiaWdpbnQgfCBzdHJpbmd9IHZhbHVlIC0gdGhlIGFtb3VudCB0byB0cmFuc2ZlclxuICAgKi9cbiAgYW1vdW50KHZhbHVlOiBiaWdpbnQgfCBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBCaWdJbnQodmFsdWUpIDogdmFsdWU7XG4gICAgdGhpcy52YWxpZGF0ZUFtb3VudCh2YWx1ZUJpZ0ludCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fYW1vdW50ID0gdmFsdWVCaWdJbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGNyZWRlbnRpYWwgd2l0aCBkeW5hbWljIG9yZGVyaW5nIGJhc2VkIG9uIGFkZHJlc3Nlc0luZGV4IGZyb20gVVRYT1xuICAgKiBNYXRjaGVzIGF2YXhwIGJlaGF2aW9yOiBzaWduYXR1cmUgb3JkZXIgZGVwZW5kcyBvbiBVVFhPIGFkZHJlc3MgcG9zaXRpb25zXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIGNyZWRlbnRpYWwgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZFxuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsIHdpdGggZW1wdHkgc2lnbmF0dXJlcyBvcmRlcmVkIGJhc2VkIG9uIFVUWE8gcG9zaXRpb25zXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVDcmVkZW50aWFsRm9yVXR4byh1dHhvOiBEZWNvZGVkVXR4b09iaiwgdGhyZXNob2xkOiBudW1iZXIpOiBDcmVkZW50aWFsIHtcbiAgICBjb25zdCBzZW5kZXIgPSAodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgaGFzQWRkcmVzc2VzID0gc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkO1xuXG4gICAgLy8gSWYgd2UgaGF2ZSBwcmUtY29tcHV0ZWQgYWRkcmVzc2VzSW5kZXggKGZyb20gcGFyc2luZyBhIHRyYW5zYWN0aW9uKSwgdXNlIGl0IGRpcmVjdGx5XG4gICAgLy8gVGhpcyBpcyB0aGUgYXV0aG9yaXRhdGl2ZSBzb3VyY2UgZm9yIHNpZ25hdHVyZSBvcmRlcmluZyBmcm9tIHBhcnNlZCB0cmFuc2FjdGlvbnNcbiAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleCAmJiB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIC8vIENyZWF0ZSBjcmVkZW50aWFscyBtYXRjaGluZyB0aGUgc2lnSW5kaWNpZXMgb3JkZXIgZnJvbSB0aGUgcGFyc2VkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBlbXB0eVNpZ25hdHVyZXM6IFJldHVyblR5cGU8dHlwZW9mIHV0aWxzLmNyZWF0ZU5ld1NpZz5bXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aHJlc2hvbGQ7IGkrKykge1xuICAgICAgICBlbXB0eVNpZ25hdHVyZXMucHVzaCh1dGlscy5jcmVhdGVOZXdTaWcoJycpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQ3JlZGVudGlhbChlbXB0eVNpZ25hdHVyZXMpO1xuICAgIH1cblxuICAgIGlmICghaGFzQWRkcmVzc2VzIHx8ICF1dHhvLmFkZHJlc3NlcyB8fCB1dHhvLmFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIEZhbGxiYWNrOiB1c2UgYWxsIHplcm9zIGlmIG5vIGFkZHJlc3NlcyBhdmFpbGFibGVcbiAgICAgIGNvbnN0IGVtcHR5U2lnbmF0dXJlczogUmV0dXJuVHlwZTx0eXBlb2YgdXRpbHMuY3JlYXRlTmV3U2lnPltdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRocmVzaG9sZDsgaSsrKSB7XG4gICAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZU5ld1NpZygnJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcyk7XG4gICAgfVxuXG4gICAgLy8gQ29tcHV0ZSBhZGRyZXNzZXNJbmRleDogcG9zaXRpb24gb2YgZWFjaCBfZnJvbUFkZHJlc3NlcyBpbiBVVFhPJ3MgYWRkcmVzcyBsaXN0XG4gICAgY29uc3QgdXR4b0FkZHJlc3NlcyA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHNlbmRlci5tYXAoKGEpID0+XG4gICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICApO1xuXG4gICAgLy8gZWl0aGVyIHVzZXIgKDApIG9yIHJlY292ZXJ5ICgyKVxuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIC8vIER5bmFtaWMgb3JkZXJpbmcgYmFzZWQgb24gYWRkcmVzc2VzSW5kZXhcbiAgICBsZXQgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W107XG4gICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgIC8vIEJpdGdvIGNvbWVzIGZpcnN0IGluIHNpZ25hdHVyZSBvcmRlcjogW3plcm9zLCB1c2VyQWRkcmVzc11cbiAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgdXRpbHMuY3JlYXRlTmV3U2lnKCcnKSxcbiAgICAgICAgdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2VyIGNvbWVzIGZpcnN0IGluIHNpZ25hdHVyZSBvcmRlcjogW3VzZXJBZGRyZXNzLCB6ZXJvc11cbiAgICAgIGVtcHR5U2lnbmF0dXJlcyA9IFtcbiAgICAgICAgdXRpbHMuY3JlYXRlRW1wdHlTaWdXaXRoQWRkcmVzcyhCdWZmZXIuZnJvbShzZW5kZXJbZmlyc3RJbmRleF0pLnRvU3RyaW5nKCdoZXgnKSksXG4gICAgICAgIHV0aWxzLmNyZWF0ZU5ld1NpZygnJyksXG4gICAgICBdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoZW1wdHlTaWduYXR1cmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgQWRkcmVzc01hcCBiYXNlZCBvbiBzaWduYXR1cmUgc2xvdCBvcmRlciAobWF0Y2hpbmcgY3JlZGVudGlhbCBvcmRlciksIG5vdCBzb3J0ZWQgYWRkcmVzc2VzXG4gICAqIFRoaXMgbWF0Y2hlcyB0aGUgYXBwcm9hY2ggdXNlZCBpbiBjcmVkZW50aWFsczogYWRkcmVzc2VzSW5kZXggZGV0ZXJtaW5lcyBzaWduYXR1cmUgb3JkZXJcbiAgICogQWRkcmVzc01hcHMgc2hvdWxkIG1hcCBhZGRyZXNzZXMgdG8gc2lnbmF0dXJlIHNsb3RzIGluIHRoZSBzYW1lIG9yZGVyIGFzIGNyZWRlbnRpYWxzXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIEFkZHJlc3NNYXAgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZFxuICAgKiBAcmV0dXJucyBBZGRyZXNzTWFwIHRoYXQgbWFwcyBhZGRyZXNzZXMgdG8gc2lnbmF0dXJlIHNsb3RzIGJhc2VkIG9uIFVUWE8gb3JkZXJcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUFkZHJlc3NNYXBGb3JVdHhvKHV0eG86IERlY29kZWRVdHhvT2JqLCB0aHJlc2hvbGQ6IG51bWJlcik6IEZsYXJlVXRpbHMuQWRkcmVzc01hcCB7XG4gICAgY29uc3QgYWRkcmVzc01hcCA9IG5ldyBGbGFyZVV0aWxzLkFkZHJlc3NNYXAoKTtcbiAgICBjb25zdCBzZW5kZXIgPSAodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX2Zyb21BZGRyZXNzZXM7XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHByZS1jb21wdXRlZCBhZGRyZXNzZXNJbmRleCAoZnJvbSBwYXJzaW5nIGEgdHJhbnNhY3Rpb24pLCB1c2UgaXQgZGlyZWN0bHlcbiAgICAvLyBhZGRyZXNzZXNJbmRleCBmcm9tIHNpZ0luZGljaWVzKCkgdGVsbHMgdXM6IGFkZHJlc3Nlc0luZGV4W3Nsb3RJZHhdID0gdXR4b0FkZHJlc3NJZHhcbiAgICAvLyBUaGlzIG1lYW5zIHNsb3QgJ3Nsb3RJZHgnIGV4cGVjdHMgc2lnbmF0dXJlIGZyb20gVVRYTyBhZGRyZXNzIGF0IGluZGV4ICd1dHhvQWRkcmVzc0lkeCdcbiAgICAvLyBBc3N1bWluZyBzZW5kZXJbaV0gY29ycmVzcG9uZHMgdG8gdXR4b0FkZHJlc3NbaV0sIHdlIG1hcCBzZW5kZXJbYWRkcmVzc2VzSW5kZXhbc2xvdElkeF1dIHRvIHNsb3RJZHhcbiAgICBpZiAodXR4by5hZGRyZXNzZXNJbmRleCAmJiB1dHhvLmFkZHJlc3Nlc0luZGV4Lmxlbmd0aCA+PSB0aHJlc2hvbGQgJiYgc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBmb3IgKGxldCBzbG90SWR4ID0gMDsgc2xvdElkeCA8IHRocmVzaG9sZDsgc2xvdElkeCsrKSB7XG4gICAgICAgIGNvbnN0IHV0eG9BZGRySWR4ID0gdXR4by5hZGRyZXNzZXNJbmRleFtzbG90SWR4XTtcbiAgICAgICAgLy8gTWFwIHRoZSBzZW5kZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGlzIFVUWE8gYWRkcmVzcyBpbmRleCB0byB0aGlzIHNsb3RcbiAgICAgICAgaWYgKHV0eG9BZGRySWR4IDwgc2VuZGVyLmxlbmd0aCkge1xuICAgICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlclt1dHhvQWRkcklkeF0pLCBzbG90SWR4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgLy8gSWYgVVRYTyBoYXMgYWRkcmVzc2VzLCBjb21wdXRlIGFkZHJlc3Nlc0luZGV4IHRvIGRldGVybWluZSBzaWduYXR1cmUgb3JkZXJcbiAgICBpZiAodXR4byAmJiB1dHhvLmFkZHJlc3NlcyAmJiB1dHhvLmFkZHJlc3Nlcy5sZW5ndGggPiAwICYmIHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgY29uc3QgdXR4b0FkZHJlc3NlcyA9IHV0eG8uYWRkcmVzc2VzLm1hcCgoYSkgPT4gdXRpbHMucGFyc2VBZGRyZXNzKGEpKTtcbiAgICAgIGNvbnN0IGFkZHJlc3Nlc0luZGV4ID0gc2VuZGVyLm1hcCgoYSkgPT5cbiAgICAgICAgdXR4b0FkZHJlc3Nlcy5maW5kSW5kZXgoKHUpID0+IEJ1ZmZlci5jb21wYXJlKEJ1ZmZlci5mcm9tKHUpLCBCdWZmZXIuZnJvbShhKSkgPT09IDApXG4gICAgICApO1xuXG4gICAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMiA6IDA7XG4gICAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgICAgLy8gRGV0ZXJtaW5lIHNpZ25hdHVyZSBzbG90IG9yZGVyIGJhc2VkIG9uIGFkZHJlc3Nlc0luZGV4IChzYW1lIGxvZ2ljIGFzIGNyZWRlbnRpYWxzKVxuICAgICAgaWYgKGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdIDwgYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0pIHtcbiAgICAgICAgLy8gQml0Z28gY29tZXMgZmlyc3Q6IHNsb3QgMCA9IGJpdGdvLCBzbG90IDEgPSBmaXJzdEluZGV4XG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltiaXRnb0luZGV4XSksIDApO1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbZmlyc3RJbmRleF0pLCAxKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFVzZXIvcmVjb3ZlcnkgY29tZXMgZmlyc3Q6IHNsb3QgMCA9IGZpcnN0SW5kZXgsIHNsb3QgMSA9IGJpdGdvXG4gICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltmaXJzdEluZGV4XSksIDApO1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbYml0Z29JbmRleF0pLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2s6IG1hcCBhZGRyZXNzZXMgc2VxdWVudGlhbGx5IGlmIG5vIFVUWE8gYWRkcmVzc2VzIGF2YWlsYWJsZVxuICAgICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgICBzZW5kZXIuc2xpY2UoMCwgdGhyZXNob2xkKS5mb3JFYWNoKChhZGRyLCBpKSA9PiB7XG4gICAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3MoYWRkciksIGkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWRkcmVzc01hcDtcbiAgfVxufVxuIl19
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQThFO0FBQzlFLDZEQUEwRDtBQUMxRCwrQ0FBNEM7QUFDNUMsbURBQWlGO0FBR2pGLG9EQUE0QjtBQUU1QixNQUFzQix3QkFBeUIsU0FBUSx1Q0FBa0I7SUFJdkUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFIWCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUk5QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBU0Q7Ozs7O09BS0c7SUFDSCxJQUFjLFFBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7O09BSUc7SUFD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QU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQWxTRCw0REFrU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBDcmVkZW50aWFsLCBBZGRyZXNzLCB1dGlscyBhcyBGbGFyZVV0aWxzIH0gZnJvbSAnQGZsYXJlbmV0d29yay9mbGFyZWpzJztcbmltcG9ydCB7IERlY29kZWRVdHhvT2JqIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBGbHJwRmVlU3RhdGUgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF0b21pY1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByb3RlY3RlZCBfZXh0ZXJuYWxDaGFpbklkOiBCdWZmZXI7XG4gIHByb3RlY3RlZCByZWNvdmVyU2lnbmVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2ZlZS5mZWUgPSB0aGlzLmZpeGVkRmVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhd2FpdCB0aGlzLmJ1aWxkRmxhcmVUcmFuc2FjdGlvbigpO1xuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKHRoaXMudHJhbnNhY3Rpb25UeXBlKTtcbiAgICBpZiAodGhpcy5oYXNTaWduZXIoKSkge1xuICAgICAgZm9yIChjb25zdCBrZXlQYWlyIG9mIHRoaXMuX3NpZ25lcikge1xuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uLnNpZ24oa2V5UGFpcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgRmxhcmUgdHJhbnNhY3Rpb24uIFRyYW5zYWN0aW9uIGZpZWxkIGlzIGNoYW5nZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYnVpbGRGbGFyZVRyYW5zYWN0aW9uKCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZTtcblxuICAvKipcbiAgICogRmVlIGlzIGZpeCBmb3IgQVZNIGF0b21pYyB0eC5cbiAgICpcbiAgICogQHJldHVybnMgbmV0d29yay50eEZlZVxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGZpeGVkRmVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb24uX25ldHdvcmsudHhGZWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5hbCBjaGFpbiBpcyB0aGUgb25lIHNldCBmb3IgdGhlIGNvaW4gaW4gY29pbkNvbmZpZy5uZXR3b3JrLiBUaGUgZXh0ZXJuYWwgY2hhaW4gaXMgdGhlIG90aGVyIGNoYWluIGludm9sdmVkLlxuICAgKiBUaGUgZXh0ZXJuYWwgY2hhaW4gaWQgaXMgdGhlIHNvdXJjZSBvbiBpbXBvcnQgYW5kIHRoZSBkZXN0aW5hdGlvbiBvbiBleHBvcnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFpbklkIC0gaWQgb2YgdGhlIGV4dGVybmFsIGNoYWluXG4gICAqL1xuICBleHRlcm5hbENoYWluSWQoY2hhaW5JZDogc3RyaW5nIHwgQnVmZmVyKTogdGhpcyB7XG4gICAgY29uc3QgbmV3VGFyZ2V0Q2hhaW5JZCA9IHR5cGVvZiBjaGFpbklkID09PSAnc3RyaW5nJyA/IHV0aWxzLmNiNThEZWNvZGUoY2hhaW5JZCkgOiBCdWZmZXIuZnJvbShjaGFpbklkKTtcbiAgICB0aGlzLnZhbGlkYXRlQ2hhaW5JZChuZXdUYXJnZXRDaGFpbklkKTtcbiAgICB0aGlzLl9leHRlcm5hbENoYWluSWQgPSBuZXdUYXJnZXRDaGFpbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gZmVlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgYmlnaW50fSBmZWVWYWx1ZSAtIHRoZSBmZWUgdmFsdWVcbiAgICovXG4gIGZlZShmZWVWYWx1ZTogc3RyaW5nIHwgYmlnaW50KTogdGhpcyB7XG4gICAgY29uc3QgZmVlID0gdHlwZW9mIGZlZVZhbHVlID09PSAnc3RyaW5nJyA/IGZlZVZhbHVlIDogZmVlVmFsdWUudG9TdHJpbmcoKTtcbiAgICAodGhpcy50cmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbikuX2ZlZS5mZWUgPSBmZWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBmZWUgc3RhdGUgZm9yIGR5bmFtaWMgZmVlIGNhbGN1bGF0aW9uIChQLWNoYWluIHRyYW5zYWN0aW9ucylcbiAgICpcbiAgICogQHBhcmFtIHtGbHJwRmVlU3RhdGV9IHN0YXRlIC0gdGhlIGZlZSBzdGF0ZSBmcm9tIHRoZSBuZXR3b3JrXG4gICAqL1xuICBmZWVTdGF0ZShzdGF0ZTogRmxycEZlZVN0YXRlKTogdGhpcyB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5fZmVlU3RhdGUgPSBzdGF0ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGFtb3VudCBmb3IgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB7YmlnaW50IHwgc3RyaW5nfSB2YWx1ZSAtIHRoZSBhbW91bnQgdG8gdHJhbnNmZXJcbiAgICovXG4gIGFtb3VudCh2YWx1ZTogYmlnaW50IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdmFsdWVCaWdJbnQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gQmlnSW50KHZhbHVlKSA6IHZhbHVlO1xuICAgIHRoaXMudmFsaWRhdGVBbW91bnQodmFsdWVCaWdJbnQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX2Ftb3VudCA9IHZhbHVlQmlnSW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLypcbiAgICogS2V5IG5hbWluZzpcbiAgICogICBBID0gdXNlciBrZXksIEIgPSBoc20ga2V5IChCaXRHbyksIEMgPSBiYWNrdXAga2V5XG4gICAqXG4gICAqIF9mcm9tQWRkcmVzc2VzIChCaXRHbyBjb252ZW50aW9uKSA9IFsgQSwgQiwgQyBdIGF0IGluZGljZXMgWzAsIDEsIDJdXG4gICAqXG4gICAqIFNpZ25pbmcga2V5IHNlbGVjdGlvbiAod2hpY2gga2V5cyBmcm9tIF9mcm9tQWRkcmVzc2VzIHRvIHVzZSk6XG4gICAqICAgLSBub24tcmVjb3Zlcnk6IF9mcm9tQWRkcmVzc2VzWzBdICsgX2Zyb21BZGRyZXNzZXNbMV0gKHVzZXIgKyBiaXRnbylcbiAgICogICAtIHJlY292ZXJ5OiBfZnJvbUFkZHJlc3Nlc1sxXSArIF9mcm9tQWRkcmVzc2VzWzJdIChiaXRnbyArIGJhY2t1cClcbiAgICpcbiAgICogc2lnSW5kaWNlcyBpbiB0cmFuc2FjdGlvbiAocG9zaXRpb25zIGluIHNvcnRlZCBVVFhPIGFkZHJlc3MgbGlzdCk6XG4gICAqICAgLSBVVFhPIGFkZHJlc3NlcyBhcmUgc29ydGVkIGJ5IGhleCB2YWx1ZSBvbi1jaGFpblxuICAgKiAgIC0gc2lnSW5kaWNlcyA9IHBvc2l0aW9ucyBvZiB0aGUgMiBzaWduaW5nIGtleXMgaW4gdGhpcyBzb3J0ZWQgbGlzdFxuICAgKiAgIC0gRXhhbXBsZTogaWYgdXNlciBzb3J0cyB0byBwb3NpdGlvbiAyIGFuZCBiaXRnbyB0byBwb3NpdGlvbiAwLFxuICAgKiAgICAgdGhlbiBzaWdJbmRpY2VzID0gWzAsIDJdIChldmVuIHRob3VnaCB3ZSBwaWNrZWQgX2Zyb21BZGRyZXNzZXNbMCwgMV0pXG4gICAqL1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIDIgc2lnbmluZyBhZGRyZXNzZXMgZm9yIEZsYXJlSlMgdHJhbnNhY3Rpb24gYnVpbGRpbmcuXG4gICAqXG4gICAqIEZsYXJlSlMncyBtYXRjaE93bmVycygpIHNlbGVjdHMgc2lnbmVycyBpbiBzb3J0ZWQgVVRYTyBhZGRyZXNzIG9yZGVyLFxuICAgKiBub3QgYmFzZWQgb24gd2hpY2gga2V5cyBzaG91bGQgYWN0dWFsbHkgc2lnbi4gQnkgcGFzc2luZyBvbmx5IDIgYWRkcmVzc2VzLFxuICAgKiB3ZSBlbnN1cmUgdGhlIGNvcnJlY3Qgc2lnbmVycyBhcmUgc2VsZWN0ZWQuXG4gICAqXG4gICAqIFRoaXMgbWlycm9ycyBBVkFYUCdzIGFwcHJvYWNoIGluIGNyZWF0ZUlucHV0T3V0cHV0KCkgd2hlcmU6XG4gICAqIC0gRm9yIG5vbi1yZWNvdmVyeTogdXNlIHVzZXIgKGluZGV4IDApIGFuZCBiaXRnbyAoaW5kZXggMSlcbiAgICogLSBGb3IgcmVjb3Zlcnk6IHVzZSBiaXRnbyAoaW5kZXggMSkgYW5kIHJlY292ZXJ5IChpbmRleCAyKVxuICAgKlxuICAgKiBAcmV0dXJucyBBcnJheSBvZiAyIHNpZ25pbmcgYWRkcmVzcyBidWZmZXJzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBnZXRTaWduaW5nQWRkcmVzc2VzKCk6IEJ1ZmZlcltdIHtcbiAgICBjb25zdCBmaXJzdEluZGV4ID0gdGhpcy5yZWNvdmVyU2lnbmVyID8gMiA6IDA7XG4gICAgY29uc3QgYml0Z29JbmRleCA9IDE7XG5cbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlcy5sZW5ndGggPCBNYXRoLm1heChmaXJzdEluZGV4LCBiaXRnb0luZGV4KSArIDEpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBJbnN1ZmZpY2llbnQgZnJvbUFkZHJlc3NlczogbmVlZCBhdCBsZWFzdCAke01hdGgubWF4KGZpcnN0SW5kZXgsIGJpdGdvSW5kZXgpICsgMX0gYWRkcmVzc2VzYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduaW5nQWRkcmVzc2VzID0gW1xuICAgICAgQnVmZmVyLmZyb20odGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3Nlc1tmaXJzdEluZGV4XSksXG4gICAgICBCdWZmZXIuZnJvbSh0aGlzLnRyYW5zYWN0aW9uLl9mcm9tQWRkcmVzc2VzW2JpdGdvSW5kZXhdKSxcbiAgICBdO1xuXG4gICAgY29uc3QgaW52YWxpZEFkZHIgPSBzaWduaW5nQWRkcmVzc2VzLmZpbmQoKGFkZHIpID0+IGFkZHIubGVuZ3RoICE9PSAyMCk7XG4gICAgaWYgKGludmFsaWRBZGRyKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIHNpZ25pbmcgYWRkcmVzcyBsZW5ndGg6IGV4cGVjdGVkIDIwIGJ5dGVzLCBnb3QgJHtpbnZhbGlkQWRkci5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNpZ25pbmdBZGRyZXNzZXM7XG4gIH1cblxuICAvKipcbiAgICogQ29tcHV0ZSBhZGRyZXNzZXNJbmRleCBmb3IgVVRYT3MuXG4gICAqIGFkZHJlc3Nlc0luZGV4W3NlbmRlcklkeF0gPSBwb3NpdGlvbiBvZiBzZW5kZXJbc2VuZGVySWR4XSBpbiBVVFhPJ3Mgc29ydGVkIGFkZHJlc3MgbGlzdC5cbiAgICpcbiAgICogVVRYTyBhZGRyZXNzZXMgYXJlIHNvcnRlZCBsZXhpY29ncmFwaGljYWxseSBieSBieXRlIHZhbHVlIHRvIG1hdGNoIG9uLWNoYWluIHN0b3JhZ2Ugb3JkZXIuXG4gICAqIEBwYXJhbSBmb3JjZVJlY29tcHV0ZSAtIElmIHRydWUsIHJlY29tcHV0ZSBldmVuIGlmIGFkZHJlc3Nlc0luZGV4IGFscmVhZHkgZXhpc3RzXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjb21wdXRlQWRkcmVzc2VzSW5kZXgoZm9yY2VSZWNvbXB1dGUgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgaWYgKCFzZW5kZXIgfHwgc2VuZGVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5fdXR4b3MuZm9yRWFjaCgodXR4bykgPT4ge1xuICAgICAgaWYgKCFmb3JjZVJlY29tcHV0ZSAmJiB1dHhvLmFkZHJlc3Nlc0luZGV4ICYmIHV0eG8uYWRkcmVzc2VzSW5kZXgubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh1dHhvLmFkZHJlc3NlcyAmJiB1dHhvLmFkZHJlc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHNvcnRlZEFkZHJlc3NlcyA9IHV0aWxzLnNvcnRBZGRyZXNzZXNCeUhleCh1dHhvLmFkZHJlc3Nlcyk7XG4gICAgICAgIHV0eG8uYWRkcmVzc2VzID0gc29ydGVkQWRkcmVzc2VzO1xuXG4gICAgICAgIGNvbnN0IHV0eG9BZGRyZXNzZXMgPSBzb3J0ZWRBZGRyZXNzZXMubWFwKChhKSA9PiB1dGlscy5wYXJzZUFkZHJlc3MoYSkpO1xuICAgICAgICB1dHhvLmFkZHJlc3Nlc0luZGV4ID0gc2VuZGVyLm1hcCgoYSkgPT5cbiAgICAgICAgICB1dHhvQWRkcmVzc2VzLmZpbmRJbmRleCgodSkgPT4gQnVmZmVyLmNvbXBhcmUoQnVmZmVyLmZyb20odSksIEJ1ZmZlci5mcm9tKGEpKSA9PT0gMClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBVVFhPcyBoYXZlIGNvbnNpc3RlbnQgYWRkcmVzc2VzLlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgdmFsaWRhdGVVdHhvQWRkcmVzc2VzKCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24uX3V0eG9zLmZvckVhY2goKHV0eG8pID0+IHtcbiAgICAgIGlmICghdXR4bykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdVdHhvIGlzIHVuZGVmaW5lZCcpO1xuICAgICAgfVxuICAgICAgaWYgKHV0eG8uYWRkcmVzc2VzSW5kZXg/LmluY2x1ZGVzKC0xKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBZGRyZXNzZXMgYXJlIGluY29uc2lzdGVudDogJyArIHV0eG8udHhpZCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGNyZWRlbnRpYWwgZm9yIGEgVVRYTyBmb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoLlxuICAgKiBFbWJlZCB1c2VyL3JlY292ZXJ5IGFkZHJlc3MsIGxlYXZlIEJpdEdvIHNsb3QgZW1wdHkuXG4gICAqIFNpZ25pbmcgb3JkZXIgaXMgZ3VhcmFudGVlZDogdXNlciBzaWducyBmaXJzdCAoYWRkcmVzcyBtYXRjaCksIEJpdEdvIHNpZ25zIHNlY29uZCAoZW1wdHkgc2xvdCkuXG4gICAqXG4gICAqIEBwYXJhbSB1dHhvIC0gVGhlIFVUWE8gdG8gY3JlYXRlIGNyZWRlbnRpYWwgZm9yXG4gICAqIEBwYXJhbSB0aHJlc2hvbGQgLSBOdW1iZXIgb2Ygc2lnbmF0dXJlcyByZXF1aXJlZFxuICAgKiBAcGFyYW0gc2lnSW5kaWNlcyAtIE9wdGlvbmFsIHNpZ0luZGljZXMgZnJvbSBGbGFyZUpTIChpZiBub3QgcHJvdmlkZWQsIGRlcml2ZWQgZnJvbSBhZGRyZXNzZXNJbmRleClcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUNyZWRlbnRpYWxGb3JVdHhvKHV0eG86IERlY29kZWRVdHhvT2JqLCB0aHJlc2hvbGQ6IG51bWJlciwgc2lnSW5kaWNlcz86IG51bWJlcltdKTogQ3JlZGVudGlhbCB7XG4gICAgY29uc3Qgc2VuZGVyID0gdGhpcy50cmFuc2FjdGlvbi5fZnJvbUFkZHJlc3NlcztcbiAgICBjb25zdCBhZGRyZXNzZXNJbmRleCA9IHV0eG8uYWRkcmVzc2VzSW5kZXggPz8gW107XG4gICAgY29uc3QgZmlyc3RJbmRleCA9IHRoaXMucmVjb3ZlclNpZ25lciA/IDIgOiAwO1xuICAgIGNvbnN0IGJpdGdvSW5kZXggPSAxO1xuXG4gICAgaWYgKHRocmVzaG9sZCA9PT0gMSkge1xuICAgICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID4gZmlyc3RJbmRleCkge1xuICAgICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoW3V0aWxzLmNyZWF0ZU5ld1NpZygnJyldKTtcbiAgICB9XG5cbiAgICBpZiAoYWRkcmVzc2VzSW5kZXgubGVuZ3RoID49IDIgJiYgc2VuZGVyICYmIHNlbmRlci5sZW5ndGggPj0gdGhyZXNob2xkKSB7XG4gICAgICBjb25zdCBlZmZlY3RpdmVTaWdJbmRpY2VzID1cbiAgICAgICAgc2lnSW5kaWNlcyAmJiBzaWdJbmRpY2VzLmxlbmd0aCA+PSAyXG4gICAgICAgICAgPyBzaWdJbmRpY2VzXG4gICAgICAgICAgOiBbYWRkcmVzc2VzSW5kZXhbZmlyc3RJbmRleF0sIGFkZHJlc3Nlc0luZGV4W2JpdGdvSW5kZXhdXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG5cbiAgICAgIGNvbnN0IGVtcHR5U2lnbmF0dXJlczogUmV0dXJuVHlwZTx0eXBlb2YgdXRpbHMuY3JlYXRlTmV3U2lnPltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHNpZ0lkeCBvZiBlZmZlY3RpdmVTaWdJbmRpY2VzKSB7XG4gICAgICAgIGNvbnN0IHNlbmRlcklkeCA9IGFkZHJlc3Nlc0luZGV4LmZpbmRJbmRleCgodXR4b1BvcykgPT4gdXR4b1BvcyA9PT0gc2lnSWR4KTtcbiAgICAgICAgaWYgKHNlbmRlcklkeCA9PT0gZmlyc3RJbmRleCkge1xuICAgICAgICAgIGVtcHR5U2lnbmF0dXJlcy5wdXNoKHV0aWxzLmNyZWF0ZUVtcHR5U2lnV2l0aEFkZHJlc3MoQnVmZmVyLmZyb20oc2VuZGVyW2ZpcnN0SW5kZXhdKS50b1N0cmluZygnaGV4JykpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbXB0eVNpZ25hdHVyZXMucHVzaCh1dGlscy5jcmVhdGVOZXdTaWcoJycpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcyk7XG4gICAgfVxuXG4gICAgY29uc3QgZW1wdHlTaWduYXR1cmVzOiBSZXR1cm5UeXBlPHR5cGVvZiB1dGlscy5jcmVhdGVOZXdTaWc+W10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRocmVzaG9sZDsgaSsrKSB7XG4gICAgICBlbXB0eVNpZ25hdHVyZXMucHVzaCh1dGlscy5jcmVhdGVOZXdTaWcoJycpKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDcmVkZW50aWFsKGVtcHR5U2lnbmF0dXJlcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEFkZHJlc3NNYXAgZm9yIGEgVVRYTyBmb2xsb3dpbmcgQVZBWCBQIGFwcHJvYWNoLlxuICAgKlxuICAgKiBAcGFyYW0gdXR4byAtIFRoZSBVVFhPIHRvIGNyZWF0ZSBBZGRyZXNzTWFwIGZvclxuICAgKiBAcGFyYW0gdGhyZXNob2xkIC0gTnVtYmVyIG9mIHNpZ25hdHVyZXMgcmVxdWlyZWRcbiAgICogQHBhcmFtIHNpZ0luZGljZXMgLSBPcHRpb25hbCBzaWdJbmRpY2VzIGZyb20gRmxhcmVKUyAoaWYgbm90IHByb3ZpZGVkLCBkZXJpdmVkIGZyb20gYWRkcmVzc2VzSW5kZXgpXG4gICAqIEBwcm90ZWN0ZWRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVBZGRyZXNzTWFwRm9yVXR4byhcbiAgICB1dHhvOiBEZWNvZGVkVXR4b09iaixcbiAgICB0aHJlc2hvbGQ6IG51bWJlcixcbiAgICBzaWdJbmRpY2VzPzogbnVtYmVyW11cbiAgKTogRmxhcmVVdGlscy5BZGRyZXNzTWFwIHtcbiAgICBjb25zdCBhZGRyZXNzTWFwID0gbmV3IEZsYXJlVXRpbHMuQWRkcmVzc01hcCgpO1xuICAgIGNvbnN0IHNlbmRlciA9IHRoaXMudHJhbnNhY3Rpb24uX2Zyb21BZGRyZXNzZXM7XG4gICAgY29uc3QgYWRkcmVzc2VzSW5kZXggPSB1dHhvLmFkZHJlc3Nlc0luZGV4ID8/IFtdO1xuICAgIGNvbnN0IGZpcnN0SW5kZXggPSB0aGlzLnJlY292ZXJTaWduZXIgPyAyIDogMDtcbiAgICBjb25zdCBiaXRnb0luZGV4ID0gMTtcblxuICAgIGlmICh0aHJlc2hvbGQgPT09IDEpIHtcbiAgICAgIGlmIChzZW5kZXIgJiYgc2VuZGVyLmxlbmd0aCA+IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgYWRkcmVzc01hcC5zZXQobmV3IEFkZHJlc3Moc2VuZGVyW2ZpcnN0SW5kZXhdKSwgMCk7XG4gICAgICB9IGVsc2UgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhzZW5kZXJbMF0pLCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhZGRyZXNzTWFwO1xuICAgIH1cblxuICAgIGlmIChhZGRyZXNzZXNJbmRleC5sZW5ndGggPj0gMiAmJiBzZW5kZXIgJiYgc2VuZGVyLmxlbmd0aCA+PSB0aHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGVmZmVjdGl2ZVNpZ0luZGljZXMgPVxuICAgICAgICBzaWdJbmRpY2VzICYmIHNpZ0luZGljZXMubGVuZ3RoID49IDJcbiAgICAgICAgICA/IHNpZ0luZGljZXNcbiAgICAgICAgICA6IFthZGRyZXNzZXNJbmRleFtmaXJzdEluZGV4XSwgYWRkcmVzc2VzSW5kZXhbYml0Z29JbmRleF1dLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcblxuICAgICAgZWZmZWN0aXZlU2lnSW5kaWNlcy5mb3JFYWNoKChzaWdJZHgsIHNsb3RJZHgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VuZGVySWR4ID0gYWRkcmVzc2VzSW5kZXguZmluZEluZGV4KCh1dHhvUG9zKSA9PiB1dHhvUG9zID09PSBzaWdJZHgpO1xuICAgICAgICBpZiAoc2VuZGVySWR4ID09PSBiaXRnb0luZGV4IHx8IHNlbmRlcklkeCA9PT0gZmlyc3RJbmRleCkge1xuICAgICAgICAgIGFkZHJlc3NNYXAuc2V0KG5ldyBBZGRyZXNzKHNlbmRlcltzZW5kZXJJZHhdKSwgc2xvdElkeCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gICAgfVxuXG4gICAgaWYgKHNlbmRlciAmJiBzZW5kZXIubGVuZ3RoID49IHRocmVzaG9sZCkge1xuICAgICAgc2VuZGVyLnNsaWNlKDAsIHRocmVzaG9sZCkuZm9yRWFjaCgoYWRkciwgaSkgPT4ge1xuICAgICAgICBhZGRyZXNzTWFwLnNldChuZXcgQWRkcmVzcyhhZGRyKSwgaSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFkZHJlc3NNYXA7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,UAAU,EAOV,OAAO,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,EAAE,EACF,MAAM,EAGN,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,kBAAkB,CAAgB;IACxC,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EACL,OAAO,EACP,eAAe,EACf,KAAK,EAGL,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,UAAU,EAOV,OAAO,EACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,sBAAsB,EACtB,EAAE,EACF,MAAM,EAGN,kBAAkB,EAClB,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,SAAK;IACf,SAAS,SAAa;IACtB,cAAc,EAAE,UAAU,EAAE,CAAM;IAClC,GAAG,EAAE,UAAU,EAAE,CAAM;IACvB,gBAAgB,EAAE,UAAU,EAAE,CAAM;IACpC,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC;IAC1B,IAAI,EAAE,kBAAkB,CAAgB;IACxC,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE/B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAS5C,IAAI,SAAS,IAAI,MAAM,EAAE,CAKxB;IAED,IAAI,WAAW,IAAI,UAAU,EAAE,CAE9B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,kBAAkB;IAClB,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,GAAG,OAAO;IAI5B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgG3C,iBAAiB,IAAI,MAAM;IAkB3B,MAAM,IAAI,MAAM;IAmBhB;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CA6BpC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CA6BzC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM;IAWvD,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI;IAI5B;;;OAGG;IACH,mBAAmB,IAAI,EAAE;IAIzB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAO1D,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,IAAI,aAAa,IAAI,MAAM,EAAE,CAE5B;IAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,IAAI,GAAG,IAAI,kBAAkB,CAE5B;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAIpC;IAED,IAAI,OAAO,IAAI,KAAK,EAAE,CAwCrB;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAmB3B;IAED,IAAI,MAAM,IAAI,KAAK,EAAE,CAsDpB;IAED,kBAAkB,IAAI,sBAAsB;CA0B7C"}
|