@witnet/sdk 1.2.7 → 3.0.2
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/.env_witnet +18 -18
- package/LICENSE +21 -21
- package/README.md +116 -116
- package/dist/package.json +14 -3
- package/dist/src/bin/helpers.d.ts +1 -0
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +31 -54
- package/dist/src/lib/crypto/account.d.ts.map +1 -1
- package/dist/src/lib/crypto/account.js +3 -9
- package/dist/src/lib/crypto/coinbase.d.ts.map +1 -1
- package/dist/src/lib/crypto/coinbase.js +2 -2
- package/dist/src/lib/crypto/interfaces.d.ts.map +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +4 -6
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +20 -71
- package/dist/src/lib/crypto/payloads/StakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/StakePayload.js +4 -9
- package/dist/src/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +4 -7
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +4 -9
- package/dist/src/lib/crypto/payloads.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads.js +6 -13
- package/dist/src/lib/crypto/signer.d.ts.map +1 -1
- package/dist/src/lib/crypto/signer.js +2 -2
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +2 -2
- package/dist/src/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +2 -2
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +2 -2
- package/dist/src/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +2 -2
- package/dist/src/lib/crypto/transmitters.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters.js +22 -31
- package/dist/src/lib/crypto/types.d.ts.map +1 -1
- package/dist/src/lib/crypto/types.js +6 -13
- package/dist/src/lib/crypto/utils.d.ts.map +1 -1
- package/dist/src/lib/crypto/utils.js +5 -9
- package/dist/src/lib/crypto/wallet.d.ts.map +1 -1
- package/dist/src/lib/crypto/wallet.js +9 -23
- package/dist/src/lib/radon/ccdr/eth.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +12 -32
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +3 -6
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +18 -41
- package/dist/src/lib/radon/reducers.js +2 -2
- package/dist/src/lib/radon/types.d.ts.map +1 -1
- package/dist/src/lib/radon/types.js +6 -32
- package/dist/src/lib/radon/utils.d.ts +1 -1
- package/dist/src/lib/radon/utils.d.ts.map +1 -1
- package/dist/src/lib/radon/utils.js +8 -9
- package/dist/src/lib/rest/kermit.d.ts.map +1 -1
- package/dist/src/lib/rest/kermit.js +1 -1
- package/dist/src/lib/rpc/nodes.d.ts.map +1 -1
- package/dist/src/lib/rpc/nodes.js +8 -28
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +16 -38
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +1 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +2 -5
- package/dist/witnet/assets/index.cjs +1 -1
- package/dist/witnet/assets/modals/index.cjs +1 -1
- package/dist/witnet/assets/modals/web3/eth.cjs +2 -2
- package/dist/witnet/assets/modals/web3/ipfs.cjs +2 -2
- package/dist/witnet/assets/modals/web3/wit.cjs +4 -11
- package/dist/witnet/assets/requests.cjs +3 -11
- package/package.json +7 -3
- package/src/bin/bots/watcher.cjs +27 -93
- package/src/bin/cli/inspect.js +30 -119
- package/src/bin/cli/network.js +46 -202
- package/src/bin/cli/nodes.js +12 -58
- package/src/bin/cli/radon.js +161 -396
- package/src/bin/cli/wallet.js +69 -241
- package/src/bin/helpers.js +66 -162
- package/src/bin/index.js +23 -52
- package/witnet/assets/_index.cjs +5 -5
- package/witnet/assets/_requests.cjs +25 -25
- package/witnet/assets/_sources.cjs +36 -36
- package/witnet/assets/_templates.cjs +36 -36
- package/witnet/assets/index.cjs +4 -4
- package/witnet/assets/modals/index.cjs +7 -7
- package/witnet/assets/modals/web3/eth.cjs +22 -27
- package/witnet/assets/modals/web3/ipfs.cjs +17 -22
- package/witnet/assets/modals/web3/wit.cjs +16 -28
- package/witnet/assets/requests.cjs +41 -49
|
@@ -141,7 +141,7 @@ export class RadonOperator extends RadonClass {
|
|
|
141
141
|
let args = "";
|
|
142
142
|
let script;
|
|
143
143
|
if (this.params && this.params[0] !== undefined) {
|
|
144
|
-
this.params.
|
|
144
|
+
this.params.forEach((param) => {
|
|
145
145
|
if (typeof param !== "object" || !(param instanceof RadonScript)) {
|
|
146
146
|
args += `${typeof param === "string" ? `"${param}"` : JSON.stringify(param)}, `;
|
|
147
147
|
}
|
|
@@ -291,15 +291,7 @@ export class RadonScript {
|
|
|
291
291
|
return this.ops?.argsCount() || 0;
|
|
292
292
|
}
|
|
293
293
|
clone() {
|
|
294
|
-
const OutputType = [
|
|
295
|
-
RadonArray,
|
|
296
|
-
RadonBoolean,
|
|
297
|
-
RadonBytes,
|
|
298
|
-
RadonFloat,
|
|
299
|
-
RadonInteger,
|
|
300
|
-
RadonMap,
|
|
301
|
-
RadonString,
|
|
302
|
-
].find((OutputType) => this.outputType instanceof OutputType);
|
|
294
|
+
const OutputType = [RadonArray, RadonBoolean, RadonBytes, RadonFloat, RadonInteger, RadonMap, RadonString].find((OutputType) => this.outputType instanceof OutputType);
|
|
303
295
|
if (OutputType) {
|
|
304
296
|
return new OutputType(this.ops);
|
|
305
297
|
}
|
|
@@ -314,15 +306,7 @@ export class RadonScript {
|
|
|
314
306
|
return this.ops?.encode() || [];
|
|
315
307
|
}
|
|
316
308
|
replaceWildcards(...args) {
|
|
317
|
-
const OutputType = [
|
|
318
|
-
RadonArray,
|
|
319
|
-
RadonBoolean,
|
|
320
|
-
RadonBytes,
|
|
321
|
-
RadonFloat,
|
|
322
|
-
RadonInteger,
|
|
323
|
-
RadonMap,
|
|
324
|
-
RadonString,
|
|
325
|
-
].find((OutputType) => this.outputType instanceof OutputType);
|
|
309
|
+
const OutputType = [RadonArray, RadonBoolean, RadonBytes, RadonFloat, RadonInteger, RadonMap, RadonString].find((OutputType) => this.outputType instanceof OutputType);
|
|
326
310
|
if (OutputType) {
|
|
327
311
|
return new OutputType(this.ops?.replaceWildcards(args));
|
|
328
312
|
}
|
|
@@ -331,15 +315,7 @@ export class RadonScript {
|
|
|
331
315
|
}
|
|
332
316
|
}
|
|
333
317
|
spliceWildcard(argIndex, argValue) {
|
|
334
|
-
const OutputType = [
|
|
335
|
-
RadonArray,
|
|
336
|
-
RadonBoolean,
|
|
337
|
-
RadonBytes,
|
|
338
|
-
RadonFloat,
|
|
339
|
-
RadonInteger,
|
|
340
|
-
RadonMap,
|
|
341
|
-
RadonString,
|
|
342
|
-
].find((OutputType) => this.outputType instanceof OutputType);
|
|
318
|
+
const OutputType = [RadonArray, RadonBoolean, RadonBytes, RadonFloat, RadonInteger, RadonMap, RadonString].find((OutputType) => this.outputType instanceof OutputType);
|
|
343
319
|
if (OutputType) {
|
|
344
320
|
return new OutputType(this.ops?.spliceWildcard(argIndex, argValue));
|
|
345
321
|
}
|
|
@@ -393,9 +369,7 @@ export class RadonArray extends RadonAny {
|
|
|
393
369
|
if (!(innerScript instanceof RadonBoolean)) {
|
|
394
370
|
throw new EvalError(`Inner script must fetch a RadonBoolean value`);
|
|
395
371
|
}
|
|
396
|
-
return this._pushOperator((RadonArray), [
|
|
397
|
-
new RadonScript(innerScript),
|
|
398
|
-
]);
|
|
372
|
+
return this._pushOperator((RadonArray), [new RadonScript(innerScript)]);
|
|
399
373
|
}
|
|
400
374
|
/**
|
|
401
375
|
* Fetch the item at the given `index` as a `RadonArray` object.
|
|
@@ -945,4 +919,4 @@ export class RadonString extends RadonAny {
|
|
|
945
919
|
return this._pushOperator(RadonString, []);
|
|
946
920
|
}
|
|
947
921
|
}
|
|
948
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFNMUMsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN6Qiw2REFBYSxDQUFBO0lBQ2IsdURBQVUsQ0FBQTtJQUNWLG1EQUFRLENBQUE7QUFDVCxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxJQUFLLGtCQW1CSjtBQW5CRCxXQUFLLGtCQUFrQjtJQUN0QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsb0VBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUN4QixDQUFDLEVBbkJJLGtCQUFrQixLQUFsQixrQkFBa0IsUUFtQnRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FxRVg7QUFyRUQsV0FBWSxjQUFjO0lBQ3pCLGtFQUFrQixDQUFBO0lBQ2xCLGtFQUFrQixDQUFBO0lBQ2xCLG9CQUFvQjtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixzRUFBb0IsQ0FBQTtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixrRUFBa0IsQ0FBQTtJQUNsQix3RUFBcUIsQ0FBQTtJQUNyQiw0REFBZSxD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Q0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBZ0IsSUFBSTtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQSxVQUF1QixDQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2JvciBmcm9tIFwiY2JvclwiO1xuXG5pbXBvcnQgKiBhcyBoZWxwZXJzIGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgdG9IZXhTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBPcGNvZGVzIGFzIFJhZG9uUmVkdWNlck9wY29kZXMgfSBmcm9tIFwiLi9yZWR1Y2Vycy5qc1wiO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgYXMgUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZW51bSBSYWRvbkVuY29kaW5ncyB7XG5cdEhleFN0cmluZyA9IDAsXG5cdEJhc2U2NCA9IDEsXG5cdFV0ZjggPSAyLFxufVxuXG5lbnVtIFJhZG9uSGFzaEZ1bmN0aW9ucyB7XG5cdC8vIEJsYWtlMjU2ID0gMHgwMCxcblx0Ly8gQmxha2U1MTIgPSAweDAxLFxuXHQvLyBCbGFrZTJzMjU2ID0gMHgwMixcblx0Ly8gQmxha2UyYjUxMiA9IDB4MDMsXG5cdC8vIE1ENV8xMjggPSAweDA0LFxuXHQvLyBSaXBlbWQxMjggPSAweDA1LFxuXHQvLyBSaXBlbWQxNjAgPSAweDA2LFxuXHQvLyBSaXBlbWQzMjAgPSAweDA3LFxuXHQvLyBTSEExXzE2MCA9IDB4MDgsXG5cdC8vIFNIQTJfMjI0ID0gMHgwOSxcblx0U0hBMl8yNTYgPSAweDBhLFxuXHQvLyBTSEEyXzM4NCA9IDB4MEIsXG5cdC8vIFNIQTJfNTEyID0gMHgwQyxcblx0Ly8gU0hBM18yMjQgPSAweDBELFxuXHQvLyBTSEEzXzI1NiA9IDB4MEUsXG5cdC8vIFNIQTNfMzg0ID0gMHgwRixcblx0Ly8gU0hBM181MTIgPSAweDEwLFxuXHQvLyBXaGlybHBvb2w1MTIgPSAweDExLFxufVxuXG5leHBvcnQgZW51bSBSYWRvbk9wZXJhdG9ycyB7XG5cdEFycmF5TGVuZ3RoID0gMHgxMCxcblx0QXJyYXlGaWx0ZXIgPSAweDExLFxuXHQvLyBBcnJheUpvaW4gPSAweDEyLFxuXHRBcnJheUdldEFycmF5ID0gMHgxMyxcblx0QXJyYXlHZXRCb29sZWFuID0gMHgxNCxcblx0QXJyYXlHZXRCeXRlcyA9IDB4MTUsXG5cdEFycmF5R2V0RmxvYXQgPSAweDE2LFxuXHRBcnJheUdldEludGVnZXIgPSAweDE3LFxuXHRBcnJheUdldE1hcCA9IDB4MTgsXG5cdEFycmF5R2V0U3RyaW5nID0gMHgxOSxcblx0QXJyYXlNYXAgPSAweDFhLFxuXHRBcnJheVJlZHVjZSA9IDB4MWIsXG5cdEFycmF5U29ydCA9IDB4MWQsXG5cdC8vIEFycmF5UGljayA9IDB4MWUsXG5cdEJvb2xlYW5Ub1N0cmluZyA9IDB4MjAsXG5cdEJvb2xlYW5OZWdhdGUgPSAweDIyLFxuXHRCeXRlc1RvU3RyaW5nID0gMHgzMCxcblx0Qnl0ZXNIYXNoID0gMHgzMSxcblx0Qnl0ZXNBc0ludGVnZXIgPSAweDMyLFxuXHRCeXRlc0xlbmd0aCA9IDB4MzQsXG5cdEJ5dGVzU2xpY2UgPSAweDNjLFxuXHRGbG9hdEFic29sdXRlID0gMHg1MCxcblx0RmxvYXRUb1N0cmluZyA9IDB4NTEsXG5cdEZsb2F0Q2VpbGluZyA9IDB4NTIsXG5cdEZsb2F0R3JlYXRlclRoYW4gPSAweDUzLFxuXHRGbG9hdEZsb29yID0gMHg1NCxcblx0RmxvYXRMZXNzVGhhbiA9IDB4NTUsXG5cdEZsb2F0TW9kdWxlID0gMHg1Nixcblx0RmxvYXRNdWx0aXBseSA9IDB4NTcsXG5cdEZsb2F0TmVnYXRlID0gMHg1OCxcblx0RmxvYXRQb3dlciA9IDB4NTksXG5cdEZsb2F0Um91bmQgPSAweDViLFxuXHRGbG9hdFRydW5jYXRlID0gMHg1ZCxcblx0SW50ZWdlckFic29sdXRlID0gMHg0MCxcblx0SW50ZWdlclRvRmxvYXQgPSAweDQxLFxuXHRJbnRlZ2VyVG9TdHJpbmcgPSAweDQyLFxuXHRJbnRlZ2VyR3JlYXRlclRoYW4gPSAweDQzLFxuXHRJbnRlZ2VyTGVzc1RoYW4gPSAweDQ0LFxuXHRJbnRlZ2VyTW9kdWxvID0gMHg0Nixcblx0SW50ZWdlck11bHRpcGx5ID0gMHg0Nyxcblx0SW50ZWdlck5lZ2F0ZSA9IDB4NDgsXG5cdEludGVnZXJQb3dlciA9IDB4NDksXG5cdEludGVnZXJUb0J5dGVzID0gMHg0YSxcblx0TWFwVG9TdHJpbmcgPSAweDYwLFxuXHRNYXBHZXRBcnJheSA9IDB4NjEsXG5cdE1hcEdldEJvb2xlYW4gPSAweDYyLFxuXHRNYXBHZXRGbG9hdCA9IDB4NjQsXG5cdE1hcEdldEludGVnZXIgPSAweDY1LFxuXHRNYXBHZXRNYXAgPSAweDY2LFxuXHRNYXBHZXRTdHJpbmcgPSAweDY3LFxuXHRNYXBLZXlzID0gMHg2OCxcblx0TWFwVmFsdWVzID0gMHg2OSxcblx0TWFwQWx0ZXIgPSAweDZiLFxuXHRNYXBQaWNrID0gMHg2ZSxcblx0U3RyaW5nQXNCb29sZWFuID0gMHg3MCxcblx0U3RyaW5nQXNCeXRlcyA9IDB4NzEsXG5cdFN0cmluZ0FzRmxvYXQgPSAweDcyLFxuXHRTdHJpbmdBc0ludGVnZXIgPSAweDczLFxuXHRTdHJpbmdMZW5ndGggPSAweDc0LFxuXHRTdHJpbmdNYXRjaCA9IDB4NzUsXG5cdFN0cmluZ1BhcnNlSlNPTkFycmF5ID0gMHg3Nixcblx0U3RyaW5nUGFyc2VKU09OTWFwID0gMHg3Nyxcblx0U3RyaW5nUGFyc2VYTUxNYXAgPSAweDc4LFxuXHRTdHJpbmdUb0xvd2VyQ2FzZSA9IDB4NzksXG5cdFN0cmluZ1RvVXBwc2VyQ2FzZSA9IDB4N2EsXG5cdFN0cmluZ1JlcGxhY2UgPSAweDdiLFxuXHRTdHJpbmdTbGljZSA9IDB4N2MsXG5cdFN0cmluZ1NwbGl0ID0gMHg3ZCxcbn1cblxuYWJzdHJhY3QgY2xhc3MgUmFkb25DbGFzcyB7XG5cdHJlYWRvbmx5IHByZXY/OiBSYWRvbk9wZXJhdG9yO1xuXHRjb25zdHJ1Y3RvcihwcmV2PzogUmFkb25PcGVyYXRvcikge1xuXHRcdHRoaXMucHJldiA9IHByZXY7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uT3BlcmF0b3IgZXh0ZW5kcyBSYWRvbkNsYXNzIHtcblx0cmVhZG9ubHkgb3Bjb2RlOiBSYWRvbk9wZXJhdG9ycztcblx0cmVhZG9ubHkgcGFyYW1zPzogYW55W107XG5cdGNvbnN0cnVjdG9yKG9wY29kZTogUmFkb25PcGVyYXRvcnMsIHBhcmFtcz86IGFueVtdLCBvcHM/OiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0c3VwZXIob3BzKTtcblx0XHR0aGlzLm9wY29kZSA9IG9wY29kZTtcblx0XHR0aGlzLnBhcmFtcyA9IHBhcmFtcyB8fCBbXTtcblx0fVxuXHRwdWJsaWMgYXJnc0NvdW50KCk6IG51bWJlciB7XG5cdFx0bGV0IG1heENvdW50OiBudW1iZXIgPSAwO1xuXHRcdHRoaXMucGFyYW1zPy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRjb25zdCBjb3VudCA9IGhlbHBlcnMuZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHBhcmFtKTtcblx0XHRcdFx0aWYgKGNvdW50ID4gbWF4Q291bnQpIG1heENvdW50ID0gY291bnQ7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdGNvbnN0IGNvdW50ID0gcGFyYW0uYXJnc0NvdW50KCk7XG5cdFx0XHRcdGlmIChjb3VudCA+IG1heENvdW50KSBtYXhDb3VudCA9IGNvdW50O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBNYXRoLm1heChtYXhDb3VudCwgdGhpcy5wcmV2Py5hcmdzQ291bnQoKSB8fCAwKTtcblx0fVxuXHRwdWJsaWMgZGlzZWN0KGxldmVsID0gMCk6IFtudW1iZXIsIHN0cmluZywgc3RyaW5nXVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzPy5wcmV2Py5kaXNlY3QobGV2ZWwpIHx8IFtdO1xuXHRcdGNvbnN0IG9wZXJhdG9yID0gUmFkb25PcGVyYXRvcnNbdGhpcy5vcGNvZGVdO1xuXHRcdGNvbnN0IGlucHV0VHlwZSA9IGBSYWRvbiR7b3BlcmF0b3Iuc3BsaXQoLyg/PVtBLVpdKS8pWzBdfWA7XG5cdFx0bGV0IHJhZG9uQ2FsbCA9IG9wZXJhdG9yXG5cdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHQuc2xpY2UoMSlcblx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdHJhZG9uQ2FsbCA9IHJhZG9uQ2FsbC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHJhZG9uQ2FsbC5zbGljZSgxKTtcblx0XHRsZXQgYXJncyA9IFwiXCI7XG5cdFx0bGV0IHNjcmlwdDtcblx0XHRpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXNbMF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5wYXJhbXMubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtICE9PSBcIm9iamVjdFwiIHx8ICEocGFyYW0gaW5zdGFuY2VvZiBSYWRvblNjcmlwdCkpIHtcblx0XHRcdFx0XHRhcmdzICs9IGAke3R5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIiA/IGBcIiR7cGFyYW19XCJgIDogSlNPTi5zdHJpbmdpZnkocGFyYW0pfSwgYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY3JpcHQgPSBwYXJhbTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAoc2NyaXB0KSBhcmdzICs9IFwiUmFkb25PcGVyYXRvciB7XCI7XG5cdFx0XHRlbHNlIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIC0yKTtcblx0XHR9XG5cdFx0aWYgKHNjcmlwdCkge1xuXHRcdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IGAkeyhzY3JpcHQgYXMgUmFkb25TY3JpcHQpLm91dHB1dFR5cGU/LmNvbnN0cnVjdG9yLm5hbWUgfHwgXCJSYWRvbkFueVwifWA7XG5cdFx0XHRyYWRvbkNhbGwgKz0gYCgke2FyZ3N9YDtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgaW5wdXRUeXBlLCByYWRvbkNhbGxdKTtcblx0XHRcdHJlc3VsdC5wdXNoKC4uLihzY3JpcHQgYXMgUmFkb25TY3JpcHQpLmRpc2VjdChsZXZlbCArIDEpKTtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgb3V0cHV0VHlwZSwgXCJ9KVwiXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJhZG9uQ2FsbCArPSBgKCR7YXJnc30pYDtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgaW5wdXRUeXBlLCByYWRvbkNhbGxdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcblx0XHRsZXQgZW5jb2RlZDtcblx0XHRpZiAodGhpcz8ucGFyYW1zICYmIHRoaXMucGFyYW1zWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGFyZ3MgPSB0aGlzLnBhcmFtcy5tYXAoKHBhcmFtKSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgcGFyYW0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvbkFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtLnByZXY/LmVuY29kZSgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0uZW5jb2RlKCk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0uZW5jb2RlKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGVuY29kZWQgPSBbdGhpcy5vcGNvZGUsIC4uLmFyZ3NdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbmNvZGVkID0gdGhpcy5vcGNvZGU7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnByZXYpIHtcblx0XHRcdHJldHVybiBbLi4udGhpcy5wcmV2LmVuY29kZSgpLCBlbmNvZGVkXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFtlbmNvZGVkXTtcblx0XHR9XG5cdH1cblx0cHVibGljIHJlcGxhY2VXaWxkY2FyZHMoYXJnczogc3RyaW5nW10pOiBSYWRvbk9wZXJhdG9yIHtcblx0XHRpZiAoYXJncy5sZW5ndGggPCB0aGlzLmFyZ3NDb3VudCgpKSB7XG5cdFx0XHR0aHJvdyBFdmFsRXJyb3IoXG5cdFx0XHRcdGBJbnN1ZmZpY2VudCBhcmdzIHdlcmUgcHJvdmlkZWQgKCR7YXJncy5sZW5ndGh9IDwgJHt0aGlzLmFyZ3NDb3VudCgpfSlgLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBSYWRvbk9wZXJhdG9yKFxuXHRcdFx0dGhpcy5vcGNvZGUsXG5cdFx0XHR0aGlzLnBhcmFtcz8ubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMucmVwbGFjZVdpbGRjYXJkcyhwYXJhbSwgYXJncyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbS5yZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaGVscGVycy5yZXBsYWNlV2lsZGNhcmRzKHBhcmFtLCBhcmdzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnJlcGxhY2VXaWxkY2FyZHMoYXJncyksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uT3BlcmF0b3Ige1xuXHRcdHJldHVybiBuZXcgUmFkb25PcGVyYXRvcihcblx0XHRcdHRoaXMub3Bjb2RlLFxuXHRcdFx0dGhpcy5wYXJhbXM/Lm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHJldHVybiBoZWxwZXJzLnNwbGljZVdpbGRjYXJkKFxuXHRcdFx0XHRcdFx0cGFyYW0sXG5cdFx0XHRcdFx0XHRhcmdJbmRleCxcblx0XHRcdFx0XHRcdGFyZ1ZhbHVlLFxuXHRcdFx0XHRcdFx0dGhpcy5hcmdzQ291bnQoKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtLnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgdG9TdHJpbmcobGVmdCA9IFwiXCIsIGluZGVudCA9IDQsIGxldmVsID0gMCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbGYgPSBsZWZ0ICE9PSBcIlwiID8gXCJcXG5cIiA6IFwiXCI7XG5cdFx0bGV0IHN0ciA9IHRoaXM/LnByZXY/LnRvU3RyaW5nKGxlZnQsIGluZGVudCwgbGV2ZWwpIHx8IFwiXCI7XG5cdFx0bGV0IG1ldGhvZE5hbWUgPSBSYWRvbk9wZXJhdG9yc1t0aGlzLm9wY29kZV1cblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmpvaW4oXCJcIik7XG5cdFx0bWV0aG9kTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDEpO1xuXHRcdHN0ciArPSBgJHtsZWZ0fSR7XCIgXCIucmVwZWF0KGluZGVudCAqIGxldmVsKX0uJHttZXRob2ROYW1lfShgO1xuXHRcdGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtc1swXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0c3RyICs9IGBcIiR7cGFyYW19XCIsIGA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiICYmIHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRzdHIgKz0gYCR7cGFyYW0udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfSR7bGVmdH0ke1wiIFwiLnJlcGVhdChpbmRlbnQgKiBsZXZlbCl9LCBgO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0ciArPSBgJHtwYXJhbS50b1N0cmluZygpfSwgYDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRzdHIgPSBzdHIuc2xpY2UoMCwgLTIpO1xuXHRcdH1cblx0XHRzdHIgKz0gYCkke2xmfWA7XG5cdFx0cmV0dXJuIHN0cjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25TY3JpcHQge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgb3BzPzogUmFkb25PcGVyYXRvcjtcblx0cHVibGljIHJlYWRvbmx5IGlucHV0VHlwZT86IFJhZG9uQW55O1xuXHRwdWJsaWMgcmVhZG9ubHkgb3V0cHV0VHlwZT86IFJhZG9uQW55O1xuXHRjb25zdHJ1Y3RvcihvdXRwdXQ6IFJhZG9uQW55KSB7XG5cdFx0dGhpcy5vcHMgPSBvdXRwdXQ/LnByZXY7XG5cdFx0Y29uc3QgcmFkb25UeXBlcyA9IHtcblx0XHRcdEFycmF5OiBSYWRvbkFycmF5LFxuXHRcdFx0Qm9vbGVhbjogUmFkb25Cb29sZWFuLFxuXHRcdFx0Qnl0ZXM6IFJhZG9uQnl0ZXMsXG5cdFx0XHRGbG9hdDogUmFkb25GbG9hdCxcblx0XHRcdEludGVnZXI6IFJhZG9uSW50ZWdlcixcblx0XHRcdE1hcDogUmFkb25NYXAsXG5cdFx0XHRTdHJpbmc6IFJhZG9uU3RyaW5nLFxuXHRcdH07XG5cdFx0bGV0IGlucHV0ID0gb3V0cHV0Py5wcmV2O1xuXHRcdHdoaWxlIChpbnB1dD8ucHJldikgaW5wdXQgPSBpbnB1dD8ucHJldjtcblx0XHRjb25zdCBpbnB1dFR5cGUgPSBPYmplY3QuZW50cmllcyhyYWRvblR5cGVzKS5maW5kKFxuXHRcdFx0KFtwcmVmaXgsIF9dKSA9PiBpbnB1dCAmJiBSYWRvbk9wZXJhdG9yc1tpbnB1dC5vcGNvZGVdLnN0YXJ0c1dpdGgocHJlZml4KSxcblx0XHQpO1xuXHRcdGlmIChpbnB1dFR5cGU/LlsxXSkgdGhpcy5pbnB1dFR5cGUgPSBuZXcgaW5wdXRUeXBlWzFdKCk7XG5cdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IE9iamVjdC52YWx1ZXMocmFkb25UeXBlcykuZmluZChcblx0XHRcdChvdXRwdXRUeXBlKSA9PiBvdXRwdXQgaW5zdGFuY2VvZiBvdXRwdXRUeXBlLFxuXHRcdCk7XG5cdFx0aWYgKG91dHB1dFR5cGUpIHRoaXMub3V0cHV0VHlwZSA9IG5ldyBvdXRwdXRUeXBlKCk7XG5cdH1cblx0cHVibGljIGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uYXJnc0NvdW50KCkgfHwgMDtcblx0fVxuXHRwdWJsaWMgY2xvbmUoKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbXG5cdFx0XHRSYWRvbkFycmF5LFxuXHRcdFx0UmFkb25Cb29sZWFuLFxuXHRcdFx0UmFkb25CeXRlcyxcblx0XHRcdFJhZG9uRmxvYXQsXG5cdFx0XHRSYWRvbkludGVnZXIsXG5cdFx0XHRSYWRvbk1hcCxcblx0XHRcdFJhZG9uU3RyaW5nLFxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IGNsb25lIGZyb20gZW1wdHkgc2NyaXB0YCk7XG5cdFx0fVxuXHR9XG5cdHB1YmxpYyBkaXNlY3QobGV2ZWwgPSAwKTogW251bWJlciwgc3RyaW5nLCBzdHJpbmddW10ge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uZGlzZWN0KGxldmVsKSB8fCBbW2xldmVsLCBcIlJhZG9uQW55XCIsIFwiXCJdXTtcblx0fVxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcblx0XHRyZXR1cm4gdGhpcy5vcHM/LmVuY29kZSgpIHx8IFtdO1xuXHR9XG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3M6IHN0cmluZ1tdKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbXG5cdFx0XHRSYWRvbkFycmF5LFxuXHRcdFx0UmFkb25Cb29sZWFuLFxuXHRcdFx0UmFkb25CeXRlcyxcblx0XHRcdFJhZG9uRmxvYXQsXG5cdFx0XHRSYWRvbkludGVnZXIsXG5cdFx0XHRSYWRvbk1hcCxcblx0XHRcdFJhZG9uU3RyaW5nLFxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcz8ucmVwbGFjZVdpbGRjYXJkcyhhcmdzKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IHJlcGxhY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uQW55IHtcblx0XHRjb25zdCBPdXRwdXRUeXBlID0gW1xuXHRcdFx0UmFkb25BcnJheSxcblx0XHRcdFJhZG9uQm9vbGVhbixcblx0XHRcdFJhZG9uQnl0ZXMsXG5cdFx0XHRSYWRvbkZsb2F0LFxuXHRcdFx0UmFkb25JbnRlZ2VyLFxuXHRcdFx0UmFkb25NYXAsXG5cdFx0XHRSYWRvblN0cmluZyxcblx0XHRdLmZpbmQoKE91dHB1dFR5cGUpID0+IHRoaXMub3V0cHV0VHlwZSBpbnN0YW5jZW9mIE91dHB1dFR5cGUpO1xuXHRcdGlmIChPdXRwdXRUeXBlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IE91dHB1dFR5cGUodGhpcy5vcHM/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBFdmFsRXJyb3IoYENhbm5vdCBzcGxpY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyhcblx0XHRcdE9iamVjdC52YWx1ZXMoVWludDhBcnJheS5mcm9tKGNib3IuZW5jb2RlKHRoaXMuZW5jb2RlKCkpKSksXG5cdFx0XHR0cnVlLFxuXHRcdCk7XG5cdH1cblx0cHVibGljIHRvU3RyaW5nKGxlZnQgPSBcIlwiLCBpbmRlbnQgPSAwLCBsZXZlbCA9IDApOiBzdHJpbmcge1xuXHRcdGNvbnN0IGxmID0gbGVmdCAhPT0gXCJcIiA/IFwiXFxuXCIgOiBcIlwiO1xuXHRcdHJldHVybiBgUmFkb25PcGVyYXRvcigke3RoaXMuaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lIHx8IFwiXCJ9KSR7bGZ9JHt0aGlzLm9wcz8udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfWA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJhZG9uQW55IGV4dGVuZHMgUmFkb25DbGFzcyB7XG5cdHByb3RlY3RlZCBfcHVzaE9wZXJhdG9yPE91dHB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueT4oXG5cdFx0b3V0cHV0VHlwZTogeyBuZXcgKG9wcz86IFJhZG9uT3BlcmF0b3IpOiBPdXRwdXRUeXBlIH0sXG5cdFx0cGFyYW1zOiBhbnlbXSxcblx0KTogT3V0cHV0VHlwZSB7XG5cdFx0bGV0IG5hbWU7XG5cdFx0dHJ5IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcigpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZXJyIGFzIEVycm9yO1xuXHRcdFx0bmFtZSA9IHJlc3VsdC5zdGFja1xuXHRcdFx0XHQ/LnNwbGl0KFwiIGF0IFwiKVsyXVxuXHRcdFx0XHQuc3BsaXQoXCIgXCIpWzBdXG5cdFx0XHRcdC5zcGxpdChcIi5cIilcblx0XHRcdFx0Lm1hcCgocGFydCkgPT4gaGVscGVycy50b1VwcGVyQ2FtZWxDYXNlKHBhcnQpKVxuXHRcdFx0XHQuam9pbihcIlwiKVxuXHRcdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHRcdC5zbGljZSgxKVxuXHRcdFx0XHQuam9pbihcIlwiKTtcblx0XHR9XG5cdFx0Y29uc3Qgb3Bjb2RlID0gUmFkb25PcGVyYXRvcnNbbmFtZSBhcyBrZXlvZiB0eXBlb2YgUmFkb25PcGVyYXRvcnNdO1xuXHRcdGlmICghb3Bjb2RlKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihgRmF0YWw6IHVua25vd24gUmFkb24gT3BlcmF0b3Igb3Bjb2RlICcke25hbWV9J2ApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbmV3IG91dHB1dFR5cGUobmV3IFJhZG9uT3BlcmF0b3Iob3Bjb2RlLCBbLi4ucGFyYW1zXSwgdGhpcz8ucHJldikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZG9uQXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25Bbnk+IHtcblx0aXRlbXNUeXBlOiBJdGVtc1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkFycmF5PFxuXHRJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uQW55LFxuPiBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIERpc2NhcmQgdGhlIGl0ZW1zIGluIHRoZSBpbnB1dCBhcnJheSB0aGF0IG1ha2UgdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAgdG8gcmV0dXJuIGEgYGZhbHNlYCB2YWx1ZS5cblx0ICogQHBhcmFtIHNjcmlwdCBGaWx0ZXJpbmcgc2NyaXB0IHVsdGltYXRlbHkgcmV0dXJuaW5nIGEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKiBNdXN0IGFjY2VwdCBhcyBpbnB1dCB0aGUgc2FtZSBkYXRhIHR5cGVzIGFzIHRoZSBvbmVzIG9mIHRoZSBpdGVtcyBiZWluZyBpdGVyYXRlZC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgaXRlbXMgdGhhdCBtYWtlIHRoZSBgaW5uZXJTY3JpcHRgIHRvIHJldHVybiBhIGB0cnVlYCB2YWx1ZS5cblx0ICovXG5cdHB1YmxpYyBmaWx0ZXIoaW5uZXJTY3JpcHQ6IFJhZG9uQm9vbGVhbikge1xuXHRcdGlmICghKGlubmVyU2NyaXB0IGluc3RhbmNlb2YgUmFkb25Cb29sZWFuKSkge1xuXHRcdFx0dGhyb3cgbmV3IEV2YWxFcnJvcihgSW5uZXIgc2NyaXB0IG11c3QgZmV0Y2ggYSBSYWRvbkJvb2xlYW4gdmFsdWVgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtcblx0XHRcdG5ldyBSYWRvblNjcmlwdChpbm5lclNjcmlwdCksXG5cdFx0XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uQXJyYXlgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0QXJyYXk8U3ViSXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4oaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxTdWJJdGVtc1R5cGU+LCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldEJvb2xlYW4oaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRCeXRlcyhpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRGbG9hdChpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldEludGVnZXIoaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWFwKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0U3RyaW5nKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogSm9pbiBhbGwgaXRlbXMgb2YgdGhlIGFycmF5IGludG8gYSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gdHlwZS4gVGhlIGFycmF5IG11c3QgYmUgaG9tb2dlbmVvdXMsXG5cdCAqIGFsbCBpdGVtcyBiZWluZyBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvdXRwdXRUeXBlYCwgaWYgc3BlY2lmaWVkLCBvciB0aGUgQXJyYXkncyBpdGVtc1R5cGUgb3RoZXJ3aXNlLlxuXHQgKiBAcGFyYW0gc2VwYXJhdG9yIFNlcGFyYXRvciB0byBiZSB1c2VkIHdoZW4gam9pbmluZyBzdHJpbmdzLiBXaGVuIGpvaW5pbmcgUmFkb25NYXBzLCBpdCBjYW4gYmUgdXNlZCB0byBzZXR0bGUgYmFzZSBzY2hlbWEgb24gcmVzdWx0aW5nIG9iamVjdC5cblx0ICogQHBhcmFtIG91dHB1dFR5cGUgUmFkb24gdHlwZSBvZiB0aGUgb3V0cHV0IHZhbHVlLlxuXHQgKi9cblx0Ly8gcHVibGljIGpvaW48T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25Bbnk+KHNlcGFyYXRvciA9IFwiXCIsIG91dHB1dFR5cGU/OiB7IG5ldygpOiBJdGVtc1R5cGU7IH0pIHtcblx0Ly8gICAgIGlmIChvdXRwdXRUeXBlKSB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxPdXRwdXRUeXBlPiwgW3NlcGFyYXRvcl0pXG5cdC8vICAgICBlbHNlIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtzZXBhcmF0b3JdKVxuXHQvLyB9XG5cdC8qKlxuXHQgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGl0ZW1zLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZW5ndGgoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogTWFwIGFsbCBpdGVtcyBpbiB0aGUgYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YC5cblx0ICogQHBhcmFtIGlubmVyU2NyaXB0IE1hcHBpbmcgc2NyaXB0IHJldHVybmluZyBzb21lIGBSYWRvbkFueWAgb2JqZWN0LlxuXHQgKiBNdXN0IGFjY2VwdCBhcyBpbnB1dCB0aGUgc2FtZSBkYXRhIHR5cGUgYXMgdGhlIG9uZSBvZiB0aGUgaXRlbXMgYmVpbmcgaXRlcmF0ZWQuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXBwZWQgdmFsdWVzLlxuXHQgKi9cblx0cHVibGljIG1hcChpbm5lclNjcmlwdDogUmFkb25PcGVyYXRvcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheSwgW2lubmVyU2NyaXB0XSk7XG5cdH1cblx0Ly8gcHVibGljIG1hcDxPdXRwdXRJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueT4oaW5uZXJTY3JpcHQ6IFJhZG9uT3BlcmF0b3I8T3V0cHV0SXRlbXNUeXBlPikge1xuXHQvLyAgICAgLy8gdG9kbzogY2hlY2sgc2NyaXB0J3MgaW5wdXQgdHlwZSBtYXRjaGVzIGFycmF5J3MgaXRlbXMgdHlwZSwgaWYgYW55ID8/XG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8T3V0cHV0SXRlbXNUeXBlPiwgW2lubmVyU2NyaXB0XSlcblx0Ly8gfVxuXHQvKipcblx0ICogUmVkdWNlIGFsbCBpdGVtcyBpbiB0aGUgYXJyYXkgaW50byBhIHNpbmdsZSB2YWx1ZS5cblx0ICogQHBhcmFtIHJlZHVjdG9yIFRoZSByZWR1Y3RvciBtZXRob2QgdG8gYmUgYXBwbGllZC4gQWxsIGFycmF5IGl0ZW1zIG11c3QgYmVcblx0ICogY29udmVydGFibGUgaW50byBmbG9hdCB2YWx1ZXMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyByZWR1Y2UocmVkdWN0b3I6IFJhZG9uUmVkdWNlck9wY29kZXMpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtyZWR1Y3Rvcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBPcmRlciB0aGUgYXJyYXkgaXRlbXMgYmFzZWQgZWl0aGVyIG9uIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgIHRvIGV2ZXJ5IGl0ZW0sIG9yIG9uIHRoZVxuXHQgKiBhY3R1YWwgaXRlbSB2YWx1ZXMgKGFzIGxvbmcgYXMgdGhlc2UgYXJlIGVpdGhlciBpbnRlZ2VycyBvciBzdHJpbmdzKS5cblx0ICogRmFpbHMgaWYgYXBwbGllZCBvbiBub24taG9tZWdlbm91cyBhcnJheXMgKGkuZS4gbm90IGFsbCBpdGVtcyBzaGFyaW5nIHRoZSBzYW1lIGBSYWRvbkFueWApLlxuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHQgKE9wdGlvbmFsKSBTb3J0aW5nIHNjcmlwdCByZXR1cm5pbmcgZWl0aGVyIGEgYFJhZG9uSW50ZWdlcmAgb3IgYSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNvcnQoaW5uZXJTY3JpcHQ/OiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtpbm5lclNjcmlwdF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IGFycmF5LlxuXHQgKiBAcGFyYW0gaW5kZXhlcyBJbmRleGVzIG9mIHRoZSBpbnB1dCBpdGVtcyB0byB0YWtlIGludG8gdGhlIG91dHB1dCBhcnJheS5cblx0ICogQHJldHVybiBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHQvLyBwdWJsaWMgcGljayguLi5pbmRleGVzOiBudW1iZXJbXSkge1xuXHQvLyAgICAgaWYgKEFycmF5KGluZGV4ZXMpLmxlbmd0aCA9PSAwKSB7XG5cdC8vICAgICAgICAgdGhyb3cgbmV3IEV2YWxFcnJvcihgXFx4MWJbMTszM21SYWRvbkFycmF5OjpwaWNrOiBhIG5vbi1lbXB0eSBhcnJheSBvZiBudW1iZXJzIG11c3QgYmUgcHJvdmlkZWRcXHgxYlswbWApXG5cdC8vICAgICB9XG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgWy4uLmluZGV4ZXNdKVxuXHQvLyB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkJvb2xlYW4gZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBSZXZlcnNlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBuZWdhdGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCB2YWx1ZSBpbnRvIGEgc3RyaW5nLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25CeXRlcyBleHRlbmRzIFJhZG9uQW55IHtcblx0c3RhdGljIHJlYWRvbmx5IEVuY29kaW5ncyA9IFJhZG9uRW5jb2RpbmdzO1xuXHRzdGF0aWMgcmVhZG9ubHkgSGFzaGVycyA9IFJhZG9uSGFzaEZ1bmN0aW9ucztcblx0LyoqXG5cdCAqIENvbnZlcnQgYnVmZmVyIGludG8gKGJpZy1lbmRpYW4pIGludGVnZXIuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFzSW50ZWdlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBBcHBseSB0aGUgU0hBMi0yNTYgaGFzaCBmdW5jdGlvbi5cblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGhhc2goKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbUmFkb25CeXRlcy5IYXNoZXJzLlNIQTJfMjU2XSk7XG5cdH1cblx0LyoqXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlbmd0aCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgc2xpY2UgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0IGJ1ZmZlci5cblx0ICogQSBgc3RhcnRJbmRleGAgb2YgMCByZWZlcnMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgYnVmZmVyLiBJZiBubyBgZW5kSW5kZXhgIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFzc3VtZWRcblx0ICogdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXIuXG5cdCAqIEBwYXJhbSBzdGFydEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBidWZmZXIgd2hlcmUgdGhlIG91dHB1dCBidWZmZXIgd2lsbCBzdGFydC5cblx0ICogQHBhcmFtIGVuZEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBidWZmZXIgd2hlcmUgdGhlIG91dHB1dCBidWZmZXIgd2lsbCBlbmRcblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNsaWNlKHN0YXJ0SW5kZXg6IG51bWJlciA9IDAsIGVuZEluZGV4PzogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbc3RhcnRJbmRleCwgZW5kSW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogQ29udmVydCB0aGUgaW5wdXQgYnVmZmVyIGludG8gYSBzdHJpbmcuXG5cdCAqIEBwYXJhbSBlbmNvZGluZyBFbnVtIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgZW5jb2Rpbmcgc2NoZW1hIG9uIHRoZSBvdXRwdXQgc3RyaW5nLCBzdGFuZGluZzpcblx0ICogICAwIC0+IEhleCBzdHJpbmcgKGRlZmF1bHQsIGlmIG5vbmUgd2FzIHNwZWNpZmllZClcblx0ICogICAxIC0+IEJhc2U2NCBzdHJpbmdcblx0ICogICAyIC0+IFV0Zi04IHN0cmluZ1xuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKGVuY29kaW5nID0gUmFkb25FbmNvZGluZ3MuSGV4U3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2VuY29kaW5nXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uRmxvYXQgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFic29sdXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBsb3dlc3QgaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBjZWlsaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBncmVhdGVzdCBpbnRlZ2VyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGZsb29yKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiB0aGUgZmxvYXQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxuXHQgKiBAcGFyYW0gaW5wdXRcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5wdXRdKTtcblx0fVxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBmbG9hdCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIGBpbnB1dGAuXG5cdCAqIEBwYXJhbSBpbnB1dFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZXNzVGhhbihpbnB1dDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBmbG9hdCByZW1haW5kZXIgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtb2R1bG8oaW50ZWdlcjogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbaW50ZWdlcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBNdWx0aXBseSB0aGUgZmxvYXQgdmFsdWUgYnkgdGhlIGdpdmVuIGBmYWN0b3JgLlxuXHQgKiBAcGFyYW0gZmFjdG9yXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtdWx0aXBseShmYWN0b3I6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2ZhY3Rvcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBOZWdhdGUgdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbmVnYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBmbG9hdCB2YWx1ZSByYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGdpdmVuIGBleHBvbmVudGBcblx0ICogQHBhcmFtIGV4cG9uZW50XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbZXhwb25lbnRdKTtcblx0fVxuXHQvKipcblx0ICogUm91bmQgdG8gdGhlIGNsb3Nlc3QgaW50ZWdlciB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcm91bmQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogU3RyaW5naWZ5IHRoZSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFRha2UgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRydW5jYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uSW50ZWdlciBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIENvbXB1dGUgdGhlIGFic29sdXRlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhYnNvbHV0ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGludGVnZXIgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxuXHQgKiBAcGFyYW0gaW5wdXRcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5wdXRdKTtcblx0fVxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBpbnRlZ2VyIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cblx0ICogQHBhcmFtIGlucHV0XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlc3NUaGFuKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2lucHV0XSk7XG5cdH1cblx0LyoqXG5cdCAqIENvbXB1dGUgdGhlIHJlbWFpbmRlciBvZiBkaXZpZGluZyB0aGUgdmFsdWUgYnkgdGhlIGdpdmVuIGBpbnRlZ2VyYC5cblx0ICogQHBhcmFtIGludGVnZXJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIG1vZHVsbyhpbnRlZ2VyOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW2ludGVnZXJdKTtcblx0fVxuXHQvKipcblx0ICogTXVsdGlwbHkgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIG11bHRpcGx5KGludGVnZXI6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbaW50ZWdlcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBOZWdhdGUgdGhlIGludGVnZXIgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBuZWdhdGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgdmFsdWUgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiBnaXZlbiBgZXhwb25lbnRgXG5cdCAqIEBwYXJhbSBleHBvbmVudFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtleHBvbmVudF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBTdHJpbmdpZnkgdGhlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCBpbnRvIGEgYmlnLWVuZGlhbiBieXRlcyBidWZmZXIuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b0J5dGVzKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDYXN0IGludG8gYSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvRmxvYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uTWFwIGV4dGVuZHMgUmFkb25Bbnkge1xuXHQvKipcblx0ICogQWx0ZXIgdGhlIHZhbHVlIG9mIHRoZSBpdGVtKHMpIGlkZW50aWZpZWQgYnkgYGtleXNgLCBhcHBseWluZyB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YCB0byBlYWNoIG9uZSBvZiB0aGVtLlxuXHQgKiBAcGFyYW0ga2V5c1xuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHRcblx0ICogQHJldHVybnMgVGhlIHNhbWUgUmFkb25NYXAgdXBvbiB3aGljaCB0aGlzIG9wZXJhdG9yIGlzIGV4ZWN1dGVkLCB3aXRoIHRoZSBzcGVjaWZpZWQgaXRlbShzKSBhbHRlcmVkXG5cdCAqIGJ5IHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgLlxuXHQgKi9cblx0cHVibGljIGFsdGVyKGlubmVyU2NyaXB0OiBSYWRvbk9wZXJhdG9yLCAuLi5rZXlzOiBzdHJpbmdbXSkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFtbLi4ua2V5c10sIGlubmVyU2NyaXB0XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBhcnJheSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4oXG5cdFx0a2V5OiBzdHJpbmcsXG5cdFx0X2l0ZW1zVHlwZT86IHsgbmV3ICgpOiBJdGVtc1R5cGUgfSxcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGJvb2xlYW4gd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qm9vbGVhbihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBmbG9hdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RmxvYXQoa2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGludGVnZXIgdmFsdWUgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SW50ZWdlcihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBtYXAgb2JqZWN0IHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uTWFwYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWFwKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgc3RyaW5nIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBFeHRyYWN0IGtleSBuYW1lcyBvZiB0aGUgbWFwIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncy5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGtleXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uU3RyaW5nPiwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IG1hcC4gRmFpbHMgaWYgdW5leGlzdGVudCBpdGVtcyBhcmUgcmVmZXJyZWQuXG5cdCAqIEBwYXJhbSBrZXlzIEtleSBzdHJpbmcgb2YgdGhlIGlucHV0IGl0ZW1zIHRvIHRha2UgaW50byB0aGUgb3V0cHV0IG1hcC5cblx0ICogQHJldHVybiBBIGBSYWRvbk1hcGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBpY2soLi4ua2V5czogc3RyaW5nW10pIHtcblx0XHRpZiAoQXJyYXkoa2V5cykubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXZhbEVycm9yKFxuXHRcdFx0XHRgXFx4MWJbMTszM21SYWRvbk1hcDo6cGljazogYSBub24tZW1wdHkgYXJyYXkgb2Yga2V5IHN0cmluZ3MgbXVzdCBiZSBwcm92aWRlZFxceDFiWzBtYCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFsuLi5rZXlzXSk7XG5cdH1cblx0LyoqXG5cdCAqIEV4dHJhY3QgdGhlIG1hcCB2YWx1ZXMgaW50byBhbiBhcnJheS5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHZhbHVlcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXksIFtdKTtcblx0fVxuXHQvKipcblx0ICogU3RyaW5naWZ5IGlucHV0IGBSYWRvbk1hcGAgb2JqZWN0IGludG8gYSBKU09OIHN0cmluZy5cblx0ICogQHJldHVybiBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25TdHJpbmcgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBDYXN0IGludG8gYSBib29sZWFuIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhc0Jvb2xlYW4oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29udmVydCB0aGUgaW5wdXQgc3RyaW5nIGludG8gYSBieXRlcyBidWZmZXIuXG5cdCAqIEBwYXJhbSBlbmNvZGluZyBFbnVtIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgZW5jb2Rpbmcgc2NoZW1hIG9uIHRoZSBpbnB1dCBzdHJpbmcsIHN0YW5kaW5nOlxuXHQgKiAgIDAgLT4gSGV4IHN0cmluZyAoZGVmYXVsdCwgaWYgbm9uZSB3YXMgc3BlY2lmaWVkKVxuXHQgKiAgIDEgLT4gQmFzZTY0IHN0cmluZ1xuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJ5dGVzYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYXNCeXRlcyhlbmNvZGluZyA9IFJhZG9uRW5jb2RpbmdzLkhleFN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW2VuY29kaW5nXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgaW50byBhIGZsb2F0IG51bWJlci5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFzRmxvYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgaW50byBhbiBpbnRlZ2VyIG51bWJlci5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYXNJbnRlZ2VyKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgY2hhcnMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlbmd0aCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXBsYWNlIHRoZSBzdHJpbmcgYnkgYSB2YWx1ZSBvZiB0eXBlIGBvdXRwdXRUeXBlYCwgZGV0ZXJtaW5lZCBvbiB3aGV0aGVyIHRoZSBzdHJpbmcgdmFsdWUgbWF0Y2hlc1xuXHQgKiBhbnkgb2YgdGhlIGtleXMgd2l0aGluIHRoZSBwcm92aWRlZCBgbWF0Y2hpbmdNYXBgLCBvciBzZXQgdG8gYSBgZGVmYXVsdFZhbHVlYCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cblx0ICogQHBhcmFtIG91dHB1dFR5cGUgUmFkb24gdHlwZSBvZiB0aGUgb3V0cHV0IHZhbHVlLlxuXHQgKiBAcGFyYW0gbWF0Y2hpbmdNYXAgTWFwIGRldGVybWluaW5nIHRoZSBvdXRwdXQgdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBzdHJpbmcgdmFsdWUuXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUgcmV0dXJuZWQgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zXG5cdCAqL1xuXHRwdWJsaWMgbWF0Y2g8T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25TdHJpbmc+KFxuXHRcdG91dHB1dFR5cGU6IHsgbmV3IChwcmV2PzogUmFkb25PcGVyYXRvcik6IE91dHB1dFR5cGUgfSxcblx0XHRtYXRjaGluZ01hcDogTWFwPHN0cmluZywgYW55Pixcblx0XHRkZWZhdWx0VmFsdWU6IGFueSxcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihvdXRwdXRUeXBlLCBbbWF0Y2hpbmdNYXAsIGRlZmF1bHRWYWx1ZV0pO1xuXHRcdC8vIHRoaXMuX2J5dGVjb2RlID0gW1xuXHRcdC8vICAgICAweDc1LFxuXHRcdC8vICAgICBtYXRjaGluZ01hcCxcblx0XHQvLyAgICAgZGVmYXVsdFZhbHVlXG5cdFx0Ly8gXVxuXHRcdC8vIHRoaXMuX21ldGhvZCA9IFwibWF0Y2hcIlxuXHRcdC8vIHRoaXMuX3BhcmFtcyA9IGB7ICR7T2JqZWN0LmVudHJpZXMobWF0Y2hpbmdNYXApLm1hcCgoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+IGBcXFwiJHtlbnRyeVswXX1cXFwiOiAke2VudHJ5WzFdfSwgYCl9fSwgJHtkZWZhdWx0VmFsdWV9YFxuXHRcdC8vIGxldCBrZXlzOiBzdHJpbmcgPSBcIlwiXG5cdFx0Ly8gT2JqZWN0LmtleXMobWF0Y2hpbmdNYXApLm1hcCgoa2V5OiBzdHJpbmcpID0+IGtleXMgKz0ga2V5ICsgXCI7XCIpXG5cdFx0Ly8gcmV0dXJuIG5ldyBvdXRwdXRUeXBlKHRoaXMsIGtleXMpXG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlIGlucHV0IHN0cmluZyBhcyBhbiBhcnJheSBvZiBKU09OIGl0ZW1zLlxuXHQgKiBAcGFyYW0ganNvblBhdGhzIChvcHRpb25hbCkgQXJyYXkgb2YgSlNPTiBwYXRocyB3aXRoaW4gaW5wdXQgYFJhZG9uU3RyaW5nYCBmcm9tIHdoZXJlIHRvIGZldGNoIGl0ZW1zIHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb3V0cHV0IGBSYWRvbkFycmF5YC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBhcnNlSlNPTkFycmF5KC4uLmpzb25QYXRoczogc3RyaW5nW10pOiBSYWRvbkFycmF5PFJhZG9uQW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uQW55PiwgWy4uLmpzb25QYXRoc10pO1xuXHR9XG5cdC8qKlxuXHQgKiBQYXJzZSBzdHJpbmcgYXMgYSBKU09OLWVuY29kZWQgbWFwLlxuXHQgKiBAcGFyYW0ganNvblBhdGggKG9wdGlvbmFsKSBKU09OIHBhdGggd2l0aGluIGlucHV0IGBSYWRvblN0cmluZ2AgZnJvbSB3aGVyZSB0byBleHRyYWN0IHRoZSBvdXRwdXQgYFJhZG9uTWFwYC5cblx0ICogQHJldHVybnMgQSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwYXJzZUpTT05NYXAoanNvblBhdGg/OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbanNvblBhdGhdKTtcblx0fVxuXHQvKipcblx0ICogUGFyc2Ugc3RyaW5nIGFzIGFuIFhNTC1lbmNvZGVkIG1hcC5cblx0ICogQHJldHVybnMgQSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwYXJzZVhNTE1hcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFJlcGxhY2Ugd2l0aCBnaXZlbiBgcmVwbGFjZW1lbnRgIHN0cmluZywgYWxsIHBhcnRzIG9mIHRoZSBpbnB1dCBzdHJpbmcgdGhhdCBtYXRjaCB3aXRoIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi5cblx0ICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBtYXRjaGVkLlxuXHQgKiBAcGFyYW0gcmVwbGFjZW1lbnQgVGV4dCB0aGF0IHdpbGwgcmVwbGFjZSBhbGwgb2NjdXJlbmNlcy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyByZXBsYWNlKHJlZ2V4OiBzdHJpbmcgPSBcIlwiLCByZXBsYWNlbWVudDogc3RyaW5nID0gXCJcIikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtyZWdleCwgcmVwbGFjZW1lbnRdKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyBhIHNsaWNlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCBzdHJpbmcuXG5cdCAqIEEgYHN0YXJ0SW5kZXhgIG9mIDAgcmVmZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHN0cmluZy4gSWYgbm8gYGVuZEluZGV4YCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkXG5cdCAqIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZy4gTmVnYXRpdmUgdmFsdWVzIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLlxuXHQgKiBAcGFyYW0gc3RhcnRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgc3RyaW5nIHdoZXJlIHRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgc3RhcnQuXG5cdCAqIEBwYXJhbSBlbmRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgc3RyaW5nIHdoZXJlIHRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgZW5kLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNsaWNlKHN0YXJ0SW5kZXg6IG51bWJlciA9IDAsIGVuZEluZGV4PzogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW3N0YXJ0SW5kZXgsIGVuZEluZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIERpdmlkZXMgaW5wdXQgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3Vic3RyaW5ncyxcblx0ICogQHBhcmFtIHJlZ2V4IFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSBmb3Igc3BsaXR0aW5nLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3BsaXQocmVnZXg6IHN0cmluZyA9IFwiXFxyXCIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8UmFkb25TdHJpbmc+LCBbcmVnZXhdKTtcblx0fVxuXHQvKipcblx0ICogTG93ZXIgY2FzZSBhbGwgY2hhcmFjdGVycy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b0xvd2VyY2FzZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFVwcGVyIGNhc2UgYWxsIGNoYXJhY3RlcnMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdG9VcHBlckNhc2UoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW10pO1xuXHR9XG59XG4iXX0=
|
|
922
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFNMUMsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN6Qiw2REFBYSxDQUFBO0lBQ2IsdURBQVUsQ0FBQTtJQUNWLG1EQUFRLENBQUE7QUFDVCxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxJQUFLLGtCQW1CSjtBQW5CRCxXQUFLLGtCQUFrQjtJQUN0QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsb0VBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUN4QixDQUFDLEVBbkJJLGtCQUFrQixLQUFsQixrQkFBa0IsUUFtQnRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FxRVg7QUFyRUQsV0FBWSxjQUFjO0lBQ3pCLGtFQUFrQixDQUFBO0lBQ2xCLGtFQUFrQixDQUFBO0lBQ2xCLG9CQUFvQjtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixzRUFBb0IsQ0FBQTtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixrRUFBa0IsQ0FBQTtJQUNsQix3RUFBcUIsQ0FBQTtJQUNyQiw0REFBZSxD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QyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBZ0IsSUFBSTtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQSxVQUF1QixDQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2JvciBmcm9tIFwiY2JvclwiO1xuXG5pbXBvcnQgKiBhcyBoZWxwZXJzIGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgdG9IZXhTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBPcGNvZGVzIGFzIFJhZG9uUmVkdWNlck9wY29kZXMgfSBmcm9tIFwiLi9yZWR1Y2Vycy5qc1wiO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgYXMgUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZW51bSBSYWRvbkVuY29kaW5ncyB7XG5cdEhleFN0cmluZyA9IDAsXG5cdEJhc2U2NCA9IDEsXG5cdFV0ZjggPSAyLFxufVxuXG5lbnVtIFJhZG9uSGFzaEZ1bmN0aW9ucyB7XG5cdC8vIEJsYWtlMjU2ID0gMHgwMCxcblx0Ly8gQmxha2U1MTIgPSAweDAxLFxuXHQvLyBCbGFrZTJzMjU2ID0gMHgwMixcblx0Ly8gQmxha2UyYjUxMiA9IDB4MDMsXG5cdC8vIE1ENV8xMjggPSAweDA0LFxuXHQvLyBSaXBlbWQxMjggPSAweDA1LFxuXHQvLyBSaXBlbWQxNjAgPSAweDA2LFxuXHQvLyBSaXBlbWQzMjAgPSAweDA3LFxuXHQvLyBTSEExXzE2MCA9IDB4MDgsXG5cdC8vIFNIQTJfMjI0ID0gMHgwOSxcblx0U0hBMl8yNTYgPSAweDBhLFxuXHQvLyBTSEEyXzM4NCA9IDB4MEIsXG5cdC8vIFNIQTJfNTEyID0gMHgwQyxcblx0Ly8gU0hBM18yMjQgPSAweDBELFxuXHQvLyBTSEEzXzI1NiA9IDB4MEUsXG5cdC8vIFNIQTNfMzg0ID0gMHgwRixcblx0Ly8gU0hBM181MTIgPSAweDEwLFxuXHQvLyBXaGlybHBvb2w1MTIgPSAweDExLFxufVxuXG5leHBvcnQgZW51bSBSYWRvbk9wZXJhdG9ycyB7XG5cdEFycmF5TGVuZ3RoID0gMHgxMCxcblx0QXJyYXlGaWx0ZXIgPSAweDExLFxuXHQvLyBBcnJheUpvaW4gPSAweDEyLFxuXHRBcnJheUdldEFycmF5ID0gMHgxMyxcblx0QXJyYXlHZXRCb29sZWFuID0gMHgxNCxcblx0QXJyYXlHZXRCeXRlcyA9IDB4MTUsXG5cdEFycmF5R2V0RmxvYXQgPSAweDE2LFxuXHRBcnJheUdldEludGVnZXIgPSAweDE3LFxuXHRBcnJheUdldE1hcCA9IDB4MTgsXG5cdEFycmF5R2V0U3RyaW5nID0gMHgxOSxcblx0QXJyYXlNYXAgPSAweDFhLFxuXHRBcnJheVJlZHVjZSA9IDB4MWIsXG5cdEFycmF5U29ydCA9IDB4MWQsXG5cdC8vIEFycmF5UGljayA9IDB4MWUsXG5cdEJvb2xlYW5Ub1N0cmluZyA9IDB4MjAsXG5cdEJvb2xlYW5OZWdhdGUgPSAweDIyLFxuXHRCeXRlc1RvU3RyaW5nID0gMHgzMCxcblx0Qnl0ZXNIYXNoID0gMHgzMSxcblx0Qnl0ZXNBc0ludGVnZXIgPSAweDMyLFxuXHRCeXRlc0xlbmd0aCA9IDB4MzQsXG5cdEJ5dGVzU2xpY2UgPSAweDNjLFxuXHRGbG9hdEFic29sdXRlID0gMHg1MCxcblx0RmxvYXRUb1N0cmluZyA9IDB4NTEsXG5cdEZsb2F0Q2VpbGluZyA9IDB4NTIsXG5cdEZsb2F0R3JlYXRlclRoYW4gPSAweDUzLFxuXHRGbG9hdEZsb29yID0gMHg1NCxcblx0RmxvYXRMZXNzVGhhbiA9IDB4NTUsXG5cdEZsb2F0TW9kdWxlID0gMHg1Nixcblx0RmxvYXRNdWx0aXBseSA9IDB4NTcsXG5cdEZsb2F0TmVnYXRlID0gMHg1OCxcblx0RmxvYXRQb3dlciA9IDB4NTksXG5cdEZsb2F0Um91bmQgPSAweDViLFxuXHRGbG9hdFRydW5jYXRlID0gMHg1ZCxcblx0SW50ZWdlckFic29sdXRlID0gMHg0MCxcblx0SW50ZWdlclRvRmxvYXQgPSAweDQxLFxuXHRJbnRlZ2VyVG9TdHJpbmcgPSAweDQyLFxuXHRJbnRlZ2VyR3JlYXRlclRoYW4gPSAweDQzLFxuXHRJbnRlZ2VyTGVzc1RoYW4gPSAweDQ0LFxuXHRJbnRlZ2VyTW9kdWxvID0gMHg0Nixcblx0SW50ZWdlck11bHRpcGx5ID0gMHg0Nyxcblx0SW50ZWdlck5lZ2F0ZSA9IDB4NDgsXG5cdEludGVnZXJQb3dlciA9IDB4NDksXG5cdEludGVnZXJUb0J5dGVzID0gMHg0YSxcblx0TWFwVG9TdHJpbmcgPSAweDYwLFxuXHRNYXBHZXRBcnJheSA9IDB4NjEsXG5cdE1hcEdldEJvb2xlYW4gPSAweDYyLFxuXHRNYXBHZXRGbG9hdCA9IDB4NjQsXG5cdE1hcEdldEludGVnZXIgPSAweDY1LFxuXHRNYXBHZXRNYXAgPSAweDY2LFxuXHRNYXBHZXRTdHJpbmcgPSAweDY3LFxuXHRNYXBLZXlzID0gMHg2OCxcblx0TWFwVmFsdWVzID0gMHg2OSxcblx0TWFwQWx0ZXIgPSAweDZiLFxuXHRNYXBQaWNrID0gMHg2ZSxcblx0U3RyaW5nQXNCb29sZWFuID0gMHg3MCxcblx0U3RyaW5nQXNCeXRlcyA9IDB4NzEsXG5cdFN0cmluZ0FzRmxvYXQgPSAweDcyLFxuXHRTdHJpbmdBc0ludGVnZXIgPSAweDczLFxuXHRTdHJpbmdMZW5ndGggPSAweDc0LFxuXHRTdHJpbmdNYXRjaCA9IDB4NzUsXG5cdFN0cmluZ1BhcnNlSlNPTkFycmF5ID0gMHg3Nixcblx0U3RyaW5nUGFyc2VKU09OTWFwID0gMHg3Nyxcblx0U3RyaW5nUGFyc2VYTUxNYXAgPSAweDc4LFxuXHRTdHJpbmdUb0xvd2VyQ2FzZSA9IDB4NzksXG5cdFN0cmluZ1RvVXBwc2VyQ2FzZSA9IDB4N2EsXG5cdFN0cmluZ1JlcGxhY2UgPSAweDdiLFxuXHRTdHJpbmdTbGljZSA9IDB4N2MsXG5cdFN0cmluZ1NwbGl0ID0gMHg3ZCxcbn1cblxuYWJzdHJhY3QgY2xhc3MgUmFkb25DbGFzcyB7XG5cdHJlYWRvbmx5IHByZXY/OiBSYWRvbk9wZXJhdG9yO1xuXHRjb25zdHJ1Y3RvcihwcmV2PzogUmFkb25PcGVyYXRvcikge1xuXHRcdHRoaXMucHJldiA9IHByZXY7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uT3BlcmF0b3IgZXh0ZW5kcyBSYWRvbkNsYXNzIHtcblx0cmVhZG9ubHkgb3Bjb2RlOiBSYWRvbk9wZXJhdG9ycztcblx0cmVhZG9ubHkgcGFyYW1zPzogYW55W107XG5cdGNvbnN0cnVjdG9yKG9wY29kZTogUmFkb25PcGVyYXRvcnMsIHBhcmFtcz86IGFueVtdLCBvcHM/OiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0c3VwZXIob3BzKTtcblx0XHR0aGlzLm9wY29kZSA9IG9wY29kZTtcblx0XHR0aGlzLnBhcmFtcyA9IHBhcmFtcyB8fCBbXTtcblx0fVxuXHRwdWJsaWMgYXJnc0NvdW50KCk6IG51bWJlciB7XG5cdFx0bGV0IG1heENvdW50OiBudW1iZXIgPSAwO1xuXHRcdHRoaXMucGFyYW1zPy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRjb25zdCBjb3VudCA9IGhlbHBlcnMuZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHBhcmFtKTtcblx0XHRcdFx0aWYgKGNvdW50ID4gbWF4Q291bnQpIG1heENvdW50ID0gY291bnQ7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdGNvbnN0IGNvdW50ID0gcGFyYW0uYXJnc0NvdW50KCk7XG5cdFx0XHRcdGlmIChjb3VudCA+IG1heENvdW50KSBtYXhDb3VudCA9IGNvdW50O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBNYXRoLm1heChtYXhDb3VudCwgdGhpcy5wcmV2Py5hcmdzQ291bnQoKSB8fCAwKTtcblx0fVxuXHRwdWJsaWMgZGlzZWN0KGxldmVsID0gMCk6IFtudW1iZXIsIHN0cmluZywgc3RyaW5nXVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzPy5wcmV2Py5kaXNlY3QobGV2ZWwpIHx8IFtdO1xuXHRcdGNvbnN0IG9wZXJhdG9yID0gUmFkb25PcGVyYXRvcnNbdGhpcy5vcGNvZGVdO1xuXHRcdGNvbnN0IGlucHV0VHlwZSA9IGBSYWRvbiR7b3BlcmF0b3Iuc3BsaXQoLyg/PVtBLVpdKS8pWzBdfWA7XG5cdFx0bGV0IHJhZG9uQ2FsbCA9IG9wZXJhdG9yXG5cdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHQuc2xpY2UoMSlcblx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdHJhZG9uQ2FsbCA9IHJhZG9uQ2FsbC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHJhZG9uQ2FsbC5zbGljZSgxKTtcblx0XHRsZXQgYXJncyA9IFwiXCI7XG5cdFx0bGV0IHNjcmlwdDtcblx0XHRpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXNbMF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5wYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSAhPT0gXCJvYmplY3RcIiB8fCAhKHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpKSB7XG5cdFx0XHRcdFx0YXJncyArPSBgJHt0eXBlb2YgcGFyYW0gPT09IFwic3RyaW5nXCIgPyBgXCIke3BhcmFtfVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhcmFtKX0sIGA7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0c2NyaXB0ID0gcGFyYW07XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKHNjcmlwdCkgYXJncyArPSBcIlJhZG9uT3BlcmF0b3Ige1wiO1xuXHRcdFx0ZWxzZSBhcmdzID0gYXJncy5zbGljZSgwLCAtMik7XG5cdFx0fVxuXHRcdGlmIChzY3JpcHQpIHtcblx0XHRcdGNvbnN0IG91dHB1dFR5cGUgPSBgJHsoc2NyaXB0IGFzIFJhZG9uU2NyaXB0KS5vdXRwdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lIHx8IFwiUmFkb25BbnlcIn1gO1xuXHRcdFx0cmFkb25DYWxsICs9IGAoJHthcmdzfWA7XG5cdFx0XHRyZXN1bHQucHVzaChbbGV2ZWwsIGlucHV0VHlwZSwgcmFkb25DYWxsXSk7XG5cdFx0XHRyZXN1bHQucHVzaCguLi4oc2NyaXB0IGFzIFJhZG9uU2NyaXB0KS5kaXNlY3QobGV2ZWwgKyAxKSk7XG5cdFx0XHRyZXN1bHQucHVzaChbbGV2ZWwsIG91dHB1dFR5cGUsIFwifSlcIl0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyYWRvbkNhbGwgKz0gYCgke2FyZ3N9KWA7XG5cdFx0XHRyZXN1bHQucHVzaChbbGV2ZWwsIGlucHV0VHlwZSwgcmFkb25DYWxsXSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblx0cHVibGljIGVuY29kZSgpOiBhbnlbXSB7XG5cdFx0bGV0IGVuY29kZWQ7XG5cdFx0aWYgKHRoaXM/LnBhcmFtcyAmJiB0aGlzLnBhcmFtc1swXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBhcmdzID0gdGhpcy5wYXJhbXMubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25BbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbS5wcmV2Py5lbmNvZGUoKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25PcGVyYXRvcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtLmVuY29kZSgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvblNjcmlwdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtLmVuY29kZSgpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBwYXJhbTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRlbmNvZGVkID0gW3RoaXMub3Bjb2RlLCAuLi5hcmdzXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5jb2RlZCA9IHRoaXMub3Bjb2RlO1xuXHRcdH1cblx0XHRpZiAodGhpcy5wcmV2KSB7XG5cdFx0XHRyZXR1cm4gWy4uLnRoaXMucHJldi5lbmNvZGUoKSwgZW5jb2RlZF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBbZW5jb2RlZF07XG5cdFx0fVxuXHR9XG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKGFyZ3M6IHN0cmluZ1tdKTogUmFkb25PcGVyYXRvciB7XG5cdFx0aWYgKGFyZ3MubGVuZ3RoIDwgdGhpcy5hcmdzQ291bnQoKSkge1xuXHRcdFx0dGhyb3cgRXZhbEVycm9yKGBJbnN1ZmZpY2VudCBhcmdzIHdlcmUgcHJvdmlkZWQgKCR7YXJncy5sZW5ndGh9IDwgJHt0aGlzLmFyZ3NDb3VudCgpfSlgKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBSYWRvbk9wZXJhdG9yKFxuXHRcdFx0dGhpcy5vcGNvZGUsXG5cdFx0XHR0aGlzLnBhcmFtcz8ubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMucmVwbGFjZVdpbGRjYXJkcyhwYXJhbSwgYXJncyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbS5yZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaGVscGVycy5yZXBsYWNlV2lsZGNhcmRzKHBhcmFtLCBhcmdzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnJlcGxhY2VXaWxkY2FyZHMoYXJncyksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uT3BlcmF0b3Ige1xuXHRcdHJldHVybiBuZXcgUmFkb25PcGVyYXRvcihcblx0XHRcdHRoaXMub3Bjb2RlLFxuXHRcdFx0dGhpcy5wYXJhbXM/Lm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHJldHVybiBoZWxwZXJzLnNwbGljZVdpbGRjYXJkKHBhcmFtLCBhcmdJbmRleCwgYXJnVmFsdWUsIHRoaXMuYXJnc0NvdW50KCkpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtLnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgdG9TdHJpbmcobGVmdCA9IFwiXCIsIGluZGVudCA9IDQsIGxldmVsID0gMCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbGYgPSBsZWZ0ICE9PSBcIlwiID8gXCJcXG5cIiA6IFwiXCI7XG5cdFx0bGV0IHN0ciA9IHRoaXM/LnByZXY/LnRvU3RyaW5nKGxlZnQsIGluZGVudCwgbGV2ZWwpIHx8IFwiXCI7XG5cdFx0bGV0IG1ldGhvZE5hbWUgPSBSYWRvbk9wZXJhdG9yc1t0aGlzLm9wY29kZV1cblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmpvaW4oXCJcIik7XG5cdFx0bWV0aG9kTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDEpO1xuXHRcdHN0ciArPSBgJHtsZWZ0fSR7XCIgXCIucmVwZWF0KGluZGVudCAqIGxldmVsKX0uJHttZXRob2ROYW1lfShgO1xuXHRcdGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtc1swXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0c3RyICs9IGBcIiR7cGFyYW19XCIsIGA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiICYmIHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRzdHIgKz0gYCR7cGFyYW0udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfSR7bGVmdH0ke1wiIFwiLnJlcGVhdChpbmRlbnQgKiBsZXZlbCl9LCBgO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0ciArPSBgJHtwYXJhbS50b1N0cmluZygpfSwgYDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRzdHIgPSBzdHIuc2xpY2UoMCwgLTIpO1xuXHRcdH1cblx0XHRzdHIgKz0gYCkke2xmfWA7XG5cdFx0cmV0dXJuIHN0cjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25TY3JpcHQge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgb3BzPzogUmFkb25PcGVyYXRvcjtcblx0cHVibGljIHJlYWRvbmx5IGlucHV0VHlwZT86IFJhZG9uQW55O1xuXHRwdWJsaWMgcmVhZG9ubHkgb3V0cHV0VHlwZT86IFJhZG9uQW55O1xuXHRjb25zdHJ1Y3RvcihvdXRwdXQ6IFJhZG9uQW55KSB7XG5cdFx0dGhpcy5vcHMgPSBvdXRwdXQ/LnByZXY7XG5cdFx0Y29uc3QgcmFkb25UeXBlcyA9IHtcblx0XHRcdEFycmF5OiBSYWRvbkFycmF5LFxuXHRcdFx0Qm9vbGVhbjogUmFkb25Cb29sZWFuLFxuXHRcdFx0Qnl0ZXM6IFJhZG9uQnl0ZXMsXG5cdFx0XHRGbG9hdDogUmFkb25GbG9hdCxcblx0XHRcdEludGVnZXI6IFJhZG9uSW50ZWdlcixcblx0XHRcdE1hcDogUmFkb25NYXAsXG5cdFx0XHRTdHJpbmc6IFJhZG9uU3RyaW5nLFxuXHRcdH07XG5cdFx0bGV0IGlucHV0ID0gb3V0cHV0Py5wcmV2O1xuXHRcdHdoaWxlIChpbnB1dD8ucHJldikgaW5wdXQgPSBpbnB1dD8ucHJldjtcblx0XHRjb25zdCBpbnB1dFR5cGUgPSBPYmplY3QuZW50cmllcyhyYWRvblR5cGVzKS5maW5kKFxuXHRcdFx0KFtwcmVmaXgsIF9dKSA9PiBpbnB1dCAmJiBSYWRvbk9wZXJhdG9yc1tpbnB1dC5vcGNvZGVdLnN0YXJ0c1dpdGgocHJlZml4KSxcblx0XHQpO1xuXHRcdGlmIChpbnB1dFR5cGU/LlsxXSkgdGhpcy5pbnB1dFR5cGUgPSBuZXcgaW5wdXRUeXBlWzFdKCk7XG5cdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IE9iamVjdC52YWx1ZXMocmFkb25UeXBlcykuZmluZCgob3V0cHV0VHlwZSkgPT4gb3V0cHV0IGluc3RhbmNlb2Ygb3V0cHV0VHlwZSk7XG5cdFx0aWYgKG91dHB1dFR5cGUpIHRoaXMub3V0cHV0VHlwZSA9IG5ldyBvdXRwdXRUeXBlKCk7XG5cdH1cblx0cHVibGljIGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uYXJnc0NvdW50KCkgfHwgMDtcblx0fVxuXHRwdWJsaWMgY2xvbmUoKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbUmFkb25BcnJheSwgUmFkb25Cb29sZWFuLCBSYWRvbkJ5dGVzLCBSYWRvbkZsb2F0LCBSYWRvbkludGVnZXIsIFJhZG9uTWFwLCBSYWRvblN0cmluZ10uZmluZChcblx0XHRcdChPdXRwdXRUeXBlKSA9PiB0aGlzLm91dHB1dFR5cGUgaW5zdGFuY2VvZiBPdXRwdXRUeXBlLFxuXHRcdCk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IGNsb25lIGZyb20gZW1wdHkgc2NyaXB0YCk7XG5cdFx0fVxuXHR9XG5cdHB1YmxpYyBkaXNlY3QobGV2ZWwgPSAwKTogW251bWJlciwgc3RyaW5nLCBzdHJpbmddW10ge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uZGlzZWN0KGxldmVsKSB8fCBbW2xldmVsLCBcIlJhZG9uQW55XCIsIFwiXCJdXTtcblx0fVxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcblx0XHRyZXR1cm4gdGhpcy5vcHM/LmVuY29kZSgpIHx8IFtdO1xuXHR9XG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3M6IHN0cmluZ1tdKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbUmFkb25BcnJheSwgUmFkb25Cb29sZWFuLCBSYWRvbkJ5dGVzLCBSYWRvbkZsb2F0LCBSYWRvbkludGVnZXIsIFJhZG9uTWFwLCBSYWRvblN0cmluZ10uZmluZChcblx0XHRcdChPdXRwdXRUeXBlKSA9PiB0aGlzLm91dHB1dFR5cGUgaW5zdGFuY2VvZiBPdXRwdXRUeXBlLFxuXHRcdCk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcz8ucmVwbGFjZVdpbGRjYXJkcyhhcmdzKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IHJlcGxhY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uQW55IHtcblx0XHRjb25zdCBPdXRwdXRUeXBlID0gW1JhZG9uQXJyYXksIFJhZG9uQm9vbGVhbiwgUmFkb25CeXRlcywgUmFkb25GbG9hdCwgUmFkb25JbnRlZ2VyLCBSYWRvbk1hcCwgUmFkb25TdHJpbmddLmZpbmQoXG5cdFx0XHQoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSxcblx0XHQpO1xuXHRcdGlmIChPdXRwdXRUeXBlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IE91dHB1dFR5cGUodGhpcy5vcHM/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBFdmFsRXJyb3IoYENhbm5vdCBzcGxpY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyhPYmplY3QudmFsdWVzKFVpbnQ4QXJyYXkuZnJvbShjYm9yLmVuY29kZSh0aGlzLmVuY29kZSgpKSkpLCB0cnVlKTtcblx0fVxuXHRwdWJsaWMgdG9TdHJpbmcobGVmdCA9IFwiXCIsIGluZGVudCA9IDAsIGxldmVsID0gMCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbGYgPSBsZWZ0ICE9PSBcIlwiID8gXCJcXG5cIiA6IFwiXCI7XG5cdFx0cmV0dXJuIGBSYWRvbk9wZXJhdG9yKCR7dGhpcy5pbnB1dFR5cGU/LmNvbnN0cnVjdG9yLm5hbWUgfHwgXCJcIn0pJHtsZn0ke3RoaXMub3BzPy50b1N0cmluZyhsZWZ0LCBpbmRlbnQsIGxldmVsICsgMSl9YDtcblx0fVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmFkb25BbnkgZXh0ZW5kcyBSYWRvbkNsYXNzIHtcblx0cHJvdGVjdGVkIF9wdXNoT3BlcmF0b3I8T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55Pihcblx0XHRvdXRwdXRUeXBlOiB7IG5ldyAob3BzPzogUmFkb25PcGVyYXRvcik6IE91dHB1dFR5cGUgfSxcblx0XHRwYXJhbXM6IGFueVtdLFxuXHQpOiBPdXRwdXRUeXBlIHtcblx0XHRsZXQgbmFtZTtcblx0XHR0cnkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBlcnIgYXMgRXJyb3I7XG5cdFx0XHRuYW1lID0gcmVzdWx0LnN0YWNrXG5cdFx0XHRcdD8uc3BsaXQoXCIgYXQgXCIpWzJdXG5cdFx0XHRcdC5zcGxpdChcIiBcIilbMF1cblx0XHRcdFx0LnNwbGl0KFwiLlwiKVxuXHRcdFx0XHQubWFwKChwYXJ0KSA9PiBoZWxwZXJzLnRvVXBwZXJDYW1lbENhc2UocGFydCkpXG5cdFx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdFx0LnNsaWNlKDEpXG5cdFx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdH1cblx0XHRjb25zdCBvcGNvZGUgPSBSYWRvbk9wZXJhdG9yc1tuYW1lIGFzIGtleW9mIHR5cGVvZiBSYWRvbk9wZXJhdG9yc107XG5cdFx0aWYgKCFvcGNvZGUpIHtcblx0XHRcdHRocm93IEVycm9yKGBGYXRhbDogdW5rbm93biBSYWRvbiBPcGVyYXRvciBvcGNvZGUgJyR7bmFtZX0nYCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBuZXcgb3V0cHV0VHlwZShuZXcgUmFkb25PcGVyYXRvcihvcGNvZGUsIFsuLi5wYXJhbXNdLCB0aGlzPy5wcmV2KSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkb25BcnJheTxJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueT4ge1xuXHRpdGVtc1R5cGU6IEl0ZW1zVHlwZTtcbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uQXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4gZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBEaXNjYXJkIHRoZSBpdGVtcyBpbiB0aGUgaW5wdXQgYXJyYXkgdGhhdCBtYWtlIHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgIHRvIHJldHVybiBhIGBmYWxzZWAgdmFsdWUuXG5cdCAqIEBwYXJhbSBzY3JpcHQgRmlsdGVyaW5nIHNjcmlwdCB1bHRpbWF0ZWx5IHJldHVybmluZyBhIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICogTXVzdCBhY2NlcHQgYXMgaW5wdXQgdGhlIHNhbWUgZGF0YSB0eXBlcyBhcyB0aGUgb25lcyBvZiB0aGUgaXRlbXMgYmVpbmcgaXRlcmF0ZWQuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdCBjb250YWluaW5nIG9ubHkgdGhlIGl0ZW1zIHRoYXQgbWFrZSB0aGUgYGlubmVyU2NyaXB0YCB0byByZXR1cm4gYSBgdHJ1ZWAgdmFsdWUuXG5cdCAqL1xuXHRwdWJsaWMgZmlsdGVyKGlubmVyU2NyaXB0OiBSYWRvbkJvb2xlYW4pIHtcblx0XHRpZiAoIShpbm5lclNjcmlwdCBpbnN0YW5jZW9mIFJhZG9uQm9vbGVhbikpIHtcblx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoYElubmVyIHNjcmlwdCBtdXN0IGZldGNoIGEgUmFkb25Cb29sZWFuIHZhbHVlYCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxJdGVtc1R5cGU+LCBbbmV3IFJhZG9uU2NyaXB0KGlubmVyU2NyaXB0KV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBhcyBhIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldEFycmF5PFN1Ykl0ZW1zVHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25Bbnk+KGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8U3ViSXRlbXNUeXBlPiwgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRCb29sZWFuKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qnl0ZXMoaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0RmxvYXQoaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRJbnRlZ2VyKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uTWFwYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldE1hcChpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldFN0cmluZyhpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2luZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIEpvaW4gYWxsIGl0ZW1zIG9mIHRoZSBhcnJheSBpbnRvIGEgdmFsdWUgb2YgdGhlIGdpdmVuIHR5cGUuIFRoZSBhcnJheSBtdXN0IGJlIGhvbW9nZW5lb3VzLFxuXHQgKiBhbGwgaXRlbXMgYmVpbmcgb2YgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3V0cHV0VHlwZWAsIGlmIHNwZWNpZmllZCwgb3IgdGhlIEFycmF5J3MgaXRlbXNUeXBlIG90aGVyd2lzZS5cblx0ICogQHBhcmFtIHNlcGFyYXRvciBTZXBhcmF0b3IgdG8gYmUgdXNlZCB3aGVuIGpvaW5pbmcgc3RyaW5ncy4gV2hlbiBqb2luaW5nIFJhZG9uTWFwcywgaXQgY2FuIGJlIHVzZWQgdG8gc2V0dGxlIGJhc2Ugc2NoZW1hIG9uIHJlc3VsdGluZyBvYmplY3QuXG5cdCAqIEBwYXJhbSBvdXRwdXRUeXBlIFJhZG9uIHR5cGUgb2YgdGhlIG91dHB1dCB2YWx1ZS5cblx0ICovXG5cdC8vIHB1YmxpYyBqb2luPE91dHB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uQW55PihzZXBhcmF0b3IgPSBcIlwiLCBvdXRwdXRUeXBlPzogeyBuZXcoKTogSXRlbXNUeXBlOyB9KSB7XG5cdC8vICAgICBpZiAob3V0cHV0VHlwZSkgdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8T3V0cHV0VHlwZT4sIFtzZXBhcmF0b3JdKVxuXHQvLyAgICAgZWxzZSB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxJdGVtc1R5cGU+LCBbc2VwYXJhdG9yXSlcblx0Ly8gfVxuXHQvKipcblx0ICogQ291bnQgdGhlIG51bWJlciBvZiBpdGVtcy5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbGVuZ3RoKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIE1hcCBhbGwgaXRlbXMgaW4gdGhlIGFycmF5IHdpdGggdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAuXG5cdCAqIEBwYXJhbSBpbm5lclNjcmlwdCBNYXBwaW5nIHNjcmlwdCByZXR1cm5pbmcgc29tZSBgUmFkb25BbnlgIG9iamVjdC5cblx0ICogTXVzdCBhY2NlcHQgYXMgaW5wdXQgdGhlIHNhbWUgZGF0YSB0eXBlIGFzIHRoZSBvbmUgb2YgdGhlIGl0ZW1zIGJlaW5nIGl0ZXJhdGVkLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QgY29udGFpbmluZyB0aGUgbWFwcGVkIHZhbHVlcy5cblx0ICovXG5cdHB1YmxpYyBtYXAoaW5uZXJTY3JpcHQ6IFJhZG9uT3BlcmF0b3IpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXksIFtpbm5lclNjcmlwdF0pO1xuXHR9XG5cdC8vIHB1YmxpYyBtYXA8T3V0cHV0SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25Bbnk+KGlubmVyU2NyaXB0OiBSYWRvbk9wZXJhdG9yPE91dHB1dEl0ZW1zVHlwZT4pIHtcblx0Ly8gICAgIC8vIHRvZG86IGNoZWNrIHNjcmlwdCdzIGlucHV0IHR5cGUgbWF0Y2hlcyBhcnJheSdzIGl0ZW1zIHR5cGUsIGlmIGFueSA/P1xuXHQvLyAgICAgcmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PE91dHB1dEl0ZW1zVHlwZT4sIFtpbm5lclNjcmlwdF0pXG5cdC8vIH1cblx0LyoqXG5cdCAqIFJlZHVjZSBhbGwgaXRlbXMgaW4gdGhlIGFycmF5IGludG8gYSBzaW5nbGUgdmFsdWUuXG5cdCAqIEBwYXJhbSByZWR1Y3RvciBUaGUgcmVkdWN0b3IgbWV0aG9kIHRvIGJlIGFwcGxpZWQuIEFsbCBhcnJheSBpdGVtcyBtdXN0IGJlXG5cdCAqIGNvbnZlcnRhYmxlIGludG8gZmxvYXQgdmFsdWVzLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcmVkdWNlKHJlZHVjdG9yOiBSYWRvblJlZHVjZXJPcGNvZGVzKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbcmVkdWN0b3JdKTtcblx0fVxuXHQvKipcblx0ICogT3JkZXIgdGhlIGFycmF5IGl0ZW1zIGJhc2VkIGVpdGhlciBvbiB0aGUgcmVzdWx0cyBvZiBhcHBseWluZyB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YCB0byBldmVyeSBpdGVtLCBvciBvbiB0aGVcblx0ICogYWN0dWFsIGl0ZW0gdmFsdWVzIChhcyBsb25nIGFzIHRoZXNlIGFyZSBlaXRoZXIgaW50ZWdlcnMgb3Igc3RyaW5ncykuXG5cdCAqIEZhaWxzIGlmIGFwcGxpZWQgb24gbm9uLWhvbWVnZW5vdXMgYXJyYXlzIChpLmUuIG5vdCBhbGwgaXRlbXMgc2hhcmluZyB0aGUgc2FtZSBgUmFkb25BbnlgKS5cblx0ICogQHBhcmFtIGlubmVyU2NyaXB0IChPcHRpb25hbCkgU29ydGluZyBzY3JpcHQgcmV0dXJuaW5nIGVpdGhlciBhIGBSYWRvbkludGVnZXJgIG9yIGEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzb3J0KGlubmVyU2NyaXB0PzogUmFkb25PcGVyYXRvcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxJdGVtc1R5cGU+LCBbaW5uZXJTY3JpcHRdKTtcblx0fVxuXHQvKipcblx0ICogVGFrZSBhIHNlbGVjdGlvbiBvZiBpdGVtcyBmcm9tIHRoZSBpbnB1dCBhcnJheS5cblx0ICogQHBhcmFtIGluZGV4ZXMgSW5kZXhlcyBvZiB0aGUgaW5wdXQgaXRlbXMgdG8gdGFrZSBpbnRvIHRoZSBvdXRwdXQgYXJyYXkuXG5cdCAqIEByZXR1cm4gQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0Ly8gcHVibGljIHBpY2soLi4uaW5kZXhlczogbnVtYmVyW10pIHtcblx0Ly8gICAgIGlmIChBcnJheShpbmRleGVzKS5sZW5ndGggPT0gMCkge1xuXHQvLyAgICAgICAgIHRocm93IG5ldyBFdmFsRXJyb3IoYFxceDFiWzE7MzNtUmFkb25BcnJheTo6cGljazogYSBub24tZW1wdHkgYXJyYXkgb2YgbnVtYmVycyBtdXN0IGJlIHByb3ZpZGVkXFx4MWJbMG1gKVxuXHQvLyAgICAgfVxuXHQvLyAgICAgcmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFsuLi5pbmRleGVzXSlcblx0Ly8gfVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25Cb29sZWFuIGV4dGVuZHMgUmFkb25Bbnkge1xuXHQvKipcblx0ICogUmV2ZXJzZSB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbmVnYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgdmFsdWUgaW50byBhIHN0cmluZy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uQnl0ZXMgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdHN0YXRpYyByZWFkb25seSBFbmNvZGluZ3MgPSBSYWRvbkVuY29kaW5ncztcblx0c3RhdGljIHJlYWRvbmx5IEhhc2hlcnMgPSBSYWRvbkhhc2hGdW5jdGlvbnM7XG5cdC8qKlxuXHQgKiBDb252ZXJ0IGJ1ZmZlciBpbnRvIChiaWctZW5kaWFuKSBpbnRlZ2VyLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhc0ludGVnZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQXBwbHkgdGhlIFNIQTItMjU2IGhhc2ggZnVuY3Rpb24uXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBoYXNoKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW1JhZG9uQnl0ZXMuSGFzaGVycy5TSEEyXzI1Nl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZW5ndGgoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyBhIHNsaWNlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCBidWZmZXIuXG5cdCAqIEEgYHN0YXJ0SW5kZXhgIG9mIDAgcmVmZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGJ1ZmZlci4gSWYgbm8gYGVuZEluZGV4YCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkXG5cdCAqIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IGJ1ZmZlci4gTmVnYXRpdmUgdmFsdWVzIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgYnVmZmVyLlxuXHQgKiBAcGFyYW0gc3RhcnRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgYnVmZmVyIHdoZXJlIHRoZSBvdXRwdXQgYnVmZmVyIHdpbGwgc3RhcnQuXG5cdCAqIEBwYXJhbSBlbmRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgYnVmZmVyIHdoZXJlIHRoZSBvdXRwdXQgYnVmZmVyIHdpbGwgZW5kXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzbGljZShzdGFydEluZGV4OiBudW1iZXIgPSAwLCBlbmRJbmRleD86IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW3N0YXJ0SW5kZXgsIGVuZEluZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIENvbnZlcnQgdGhlIGlucHV0IGJ1ZmZlciBpbnRvIGEgc3RyaW5nLlxuXHQgKiBAcGFyYW0gZW5jb2RpbmcgRW51bSBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGVuY29kaW5nIHNjaGVtYSBvbiB0aGUgb3V0cHV0IHN0cmluZywgc3RhbmRpbmc6XG5cdCAqICAgMCAtPiBIZXggc3RyaW5nIChkZWZhdWx0LCBpZiBub25lIHdhcyBzcGVjaWZpZWQpXG5cdCAqICAgMSAtPiBCYXNlNjQgc3RyaW5nXG5cdCAqICAgMiAtPiBVdGYtOCBzdHJpbmdcblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1N0cmluZyhlbmNvZGluZyA9IFJhZG9uRW5jb2RpbmdzLkhleFN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtlbmNvZGluZ10pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkZsb2F0IGV4dGVuZHMgUmFkb25Bbnkge1xuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhYnNvbHV0ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgbG93ZXN0IGludGVnZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgY2VpbGluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgZ3JlYXRlc3QgaW50ZWdlciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBmbG9vcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGZsb2F0IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cblx0ICogQHBhcmFtIGlucHV0XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGdyZWF0ZXJUaGFuKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2lucHV0XSk7XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiB0aGUgZmxvYXQgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxuXHQgKiBAcGFyYW0gaW5wdXRcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbGVzc1RoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5wdXRdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgZmxvYXQgcmVtYWluZGVyIG9mIGRpdmlkaW5nIHRoZSB2YWx1ZSBieSB0aGUgZ2l2ZW4gYGludGVnZXJgLlxuXHQgKiBAcGFyYW0gaW50ZWdlclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbW9kdWxvKGludGVnZXI6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2ludGVnZXJdKTtcblx0fVxuXHQvKipcblx0ICogTXVsdGlwbHkgdGhlIGZsb2F0IHZhbHVlIGJ5IHRoZSBnaXZlbiBgZmFjdG9yYC5cblx0ICogQHBhcmFtIGZhY3RvclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbXVsdGlwbHkoZmFjdG9yOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtmYWN0b3JdKTtcblx0fVxuXHQvKipcblx0ICogTmVnYXRlIHRoZSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIG5lZ2F0ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgZmxvYXQgdmFsdWUgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiBnaXZlbiBgZXhwb25lbnRgXG5cdCAqIEBwYXJhbSBleHBvbmVudFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcG93ZXIoZXhwb25lbnQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2V4cG9uZW50XSk7XG5cdH1cblx0LyoqXG5cdCAqIFJvdW5kIHRvIHRoZSBjbG9zZXN0IGludGVnZXIgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJvdW5kKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFN0cmluZ2lmeSB0aGUgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0cnVuY2F0ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkludGVnZXIgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYWJzb2x1dGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBpbnRlZ2VyIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cblx0ICogQHBhcmFtIGlucHV0XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGdyZWF0ZXJUaGFuKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2lucHV0XSk7XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiB0aGUgaW50ZWdlciB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIGBpbnB1dGAuXG5cdCAqIEBwYXJhbSBpbnB1dFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZXNzVGhhbihpbnB1dDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSByZW1haW5kZXIgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtb2R1bG8oaW50ZWdlcjogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtpbnRlZ2VyXSk7XG5cdH1cblx0LyoqXG5cdCAqIE11bHRpcGx5IHRoZSB2YWx1ZSBieSB0aGUgZ2l2ZW4gYGludGVnZXJgLlxuXHQgKiBAcGFyYW0gaW50ZWdlclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtdWx0aXBseShpbnRlZ2VyOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW2ludGVnZXJdKTtcblx0fVxuXHQvKipcblx0ICogTmVnYXRlIHRoZSBpbnRlZ2VyIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbmVnYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENvbXB1dGUgdGhlIHZhbHVlIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgZ2l2ZW4gYGV4cG9uZW50YFxuXHQgKiBAcGFyYW0gZXhwb25lbnRcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcG93ZXIoZXhwb25lbnQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbZXhwb25lbnRdKTtcblx0fVxuXHQvKipcblx0ICogU3RyaW5naWZ5IHRoZSB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgaW50byBhIGJpZy1lbmRpYW4gYnl0ZXMgYnVmZmVyLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJ5dGVzYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdG9CeXRlcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQnl0ZXMsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCBpbnRvIGEgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b0Zsb2F0KCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbk1hcCBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIEFsdGVyIHRoZSB2YWx1ZSBvZiB0aGUgaXRlbShzKSBpZGVudGlmaWVkIGJ5IGBrZXlzYCwgYXBwbHlpbmcgdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAgdG8gZWFjaCBvbmUgb2YgdGhlbS5cblx0ICogQHBhcmFtIGtleXNcblx0ICogQHBhcmFtIGlubmVyU2NyaXB0XG5cdCAqIEByZXR1cm5zIFRoZSBzYW1lIFJhZG9uTWFwIHVwb24gd2hpY2ggdGhpcyBvcGVyYXRvciBpcyBleGVjdXRlZCwgd2l0aCB0aGUgc3BlY2lmaWVkIGl0ZW0ocykgYWx0ZXJlZFxuXHQgKiBieSB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YC5cblx0ICovXG5cdHB1YmxpYyBhbHRlcihpbm5lclNjcmlwdDogUmFkb25PcGVyYXRvciwgLi4ua2V5czogc3RyaW5nW10pIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbWy4uLmtleXNdLCBpbm5lclNjcmlwdF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgYXJyYXkgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGdldEFycmF5PEl0ZW1zVHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25Bbnk+KGtleTogc3RyaW5nLCBfaXRlbXNUeXBlPzogeyBuZXcgKCk6IEl0ZW1zVHlwZSB9KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGJvb2xlYW4gd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qm9vbGVhbihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBmbG9hdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RmxvYXQoa2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGludGVnZXIgdmFsdWUgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SW50ZWdlcihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBtYXAgb2JqZWN0IHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uTWFwYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWFwKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgc3RyaW5nIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBFeHRyYWN0IGtleSBuYW1lcyBvZiB0aGUgbWFwIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncy5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGtleXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uU3RyaW5nPiwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IG1hcC4gRmFpbHMgaWYgdW5leGlzdGVudCBpdGVtcyBhcmUgcmVmZXJyZWQuXG5cdCAqIEBwYXJhbSBrZXlzIEtleSBzdHJpbmcgb2YgdGhlIGlucHV0IGl0ZW1zIHRvIHRha2UgaW50byB0aGUgb3V0cHV0IG1hcC5cblx0ICogQHJldHVybiBBIGBSYWRvbk1hcGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBpY2soLi4ua2V5czogc3RyaW5nW10pIHtcblx0XHRpZiAoQXJyYXkoa2V5cykubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXZhbEVycm9yKGBcXHgxYlsxOzMzbVJhZG9uTWFwOjpwaWNrOiBhIG5vbi1lbXB0eSBhcnJheSBvZiBrZXkgc3RyaW5ncyBtdXN0IGJlIHByb3ZpZGVkXFx4MWJbMG1gKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgWy4uLmtleXNdKTtcblx0fVxuXHQvKipcblx0ICogRXh0cmFjdCB0aGUgbWFwIHZhbHVlcyBpbnRvIGFuIGFycmF5LlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdmFsdWVzKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheSwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBTdHJpbmdpZnkgaW5wdXQgYFJhZG9uTWFwYCBvYmplY3QgaW50byBhIEpTT04gc3RyaW5nLlxuXHQgKiBAcmV0dXJuIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdG9TdHJpbmcoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW10pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvblN0cmluZyBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIENhc3QgaW50byBhIGJvb2xlYW4gdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFzQm9vbGVhbigpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb252ZXJ0IHRoZSBpbnB1dCBzdHJpbmcgaW50byBhIGJ5dGVzIGJ1ZmZlci5cblx0ICogQHBhcmFtIGVuY29kaW5nIEVudW0gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBlbmNvZGluZyBzY2hlbWEgb24gdGhlIGlucHV0IHN0cmluZywgc3RhbmRpbmc6XG5cdCAqICAgMCAtPiBIZXggc3RyaW5nIChkZWZhdWx0LCBpZiBub25lIHdhcyBzcGVjaWZpZWQpXG5cdCAqICAgMSAtPiBCYXNlNjQgc3RyaW5nXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhc0J5dGVzKGVuY29kaW5nID0gUmFkb25FbmNvZGluZ3MuSGV4U3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbZW5jb2RpbmddKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCBpbnRvIGEgZmxvYXQgbnVtYmVyLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYXNGbG9hdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCBpbnRvIGFuIGludGVnZXIgbnVtYmVyLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhc0ludGVnZXIoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ291bnQgdGhlIG51bWJlciBvZiBjaGFycy5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbGVuZ3RoKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFJlcGxhY2UgdGhlIHN0cmluZyBieSBhIHZhbHVlIG9mIHR5cGUgYG91dHB1dFR5cGVgLCBkZXRlcm1pbmVkIG9uIHdoZXRoZXIgdGhlIHN0cmluZyB2YWx1ZSBtYXRjaGVzXG5cdCAqIGFueSBvZiB0aGUga2V5cyB3aXRoaW4gdGhlIHByb3ZpZGVkIGBtYXRjaGluZ01hcGAsIG9yIHNldCB0byBhIGBkZWZhdWx0VmFsdWVgIGlmIG5vIG1hdGNoIGlzIGZvdW5kLlxuXHQgKiBAcGFyYW0gb3V0cHV0VHlwZSBSYWRvbiB0eXBlIG9mIHRoZSBvdXRwdXQgdmFsdWUuXG5cdCAqIEBwYXJhbSBtYXRjaGluZ01hcCBNYXAgZGV0ZXJtaW5pbmcgdGhlIG91dHB1dCB2YWx1ZSBkZXBlbmRpbmcgb24gdGhlIHN0cmluZyB2YWx1ZS5cblx0ICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBWYWx1ZSByZXR1cm5lZCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cblx0ICogQHJldHVybnNcblx0ICovXG5cdHB1YmxpYyBtYXRjaDxPdXRwdXRUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvblN0cmluZz4oXG5cdFx0b3V0cHV0VHlwZTogeyBuZXcgKHByZXY/OiBSYWRvbk9wZXJhdG9yKTogT3V0cHV0VHlwZSB9LFxuXHRcdG1hdGNoaW5nTWFwOiBNYXA8c3RyaW5nLCBhbnk+LFxuXHRcdGRlZmF1bHRWYWx1ZTogYW55LFxuXHQpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKG91dHB1dFR5cGUsIFttYXRjaGluZ01hcCwgZGVmYXVsdFZhbHVlXSk7XG5cdFx0Ly8gdGhpcy5fYnl0ZWNvZGUgPSBbXG5cdFx0Ly8gICAgIDB4NzUsXG5cdFx0Ly8gICAgIG1hdGNoaW5nTWFwLFxuXHRcdC8vICAgICBkZWZhdWx0VmFsdWVcblx0XHQvLyBdXG5cdFx0Ly8gdGhpcy5fbWV0aG9kID0gXCJtYXRjaFwiXG5cdFx0Ly8gdGhpcy5fcGFyYW1zID0gYHsgJHtPYmplY3QuZW50cmllcyhtYXRjaGluZ01hcCkubWFwKChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gYFxcXCIke2VudHJ5WzBdfVxcXCI6ICR7ZW50cnlbMV19LCBgKX19LCAke2RlZmF1bHRWYWx1ZX1gXG5cdFx0Ly8gbGV0IGtleXM6IHN0cmluZyA9IFwiXCJcblx0XHQvLyBPYmplY3Qua2V5cyhtYXRjaGluZ01hcCkubWFwKChrZXk6IHN0cmluZykgPT4ga2V5cyArPSBrZXkgKyBcIjtcIilcblx0XHQvLyByZXR1cm4gbmV3IG91dHB1dFR5cGUodGhpcywga2V5cylcblx0fVxuXHQvKipcblx0ICogUGFyc2UgaW5wdXQgc3RyaW5nIGFzIGFuIGFycmF5IG9mIEpTT04gaXRlbXMuXG5cdCAqIEBwYXJhbSBqc29uUGF0aHMgKG9wdGlvbmFsKSBBcnJheSBvZiBKU09OIHBhdGhzIHdpdGhpbiBpbnB1dCBgUmFkb25TdHJpbmdgIGZyb20gd2hlcmUgdG8gZmV0Y2ggaXRlbXMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBvdXRwdXQgYFJhZG9uQXJyYXlgLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcGFyc2VKU09OQXJyYXkoLi4uanNvblBhdGhzOiBzdHJpbmdbXSk6IFJhZG9uQXJyYXk8UmFkb25Bbnk+IHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8UmFkb25Bbnk+LCBbLi4uanNvblBhdGhzXSk7XG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlIHN0cmluZyBhcyBhIEpTT04tZW5jb2RlZCBtYXAuXG5cdCAqIEBwYXJhbSBqc29uUGF0aCAob3B0aW9uYWwpIEpTT04gcGF0aCB3aXRoaW4gaW5wdXQgYFJhZG9uU3RyaW5nYCBmcm9tIHdoZXJlIHRvIGV4dHJhY3QgdGhlIG91dHB1dCBgUmFkb25NYXBgLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbk1hcGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBhcnNlSlNPTk1hcChqc29uUGF0aD86IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFtqc29uUGF0aF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBQYXJzZSBzdHJpbmcgYXMgYW4gWE1MLWVuY29kZWQgbWFwLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbk1hcGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBhcnNlWE1MTWFwKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFtdKTtcblx0fVxuXHQvKipcblx0ICogUmVwbGFjZSB3aXRoIGdpdmVuIGByZXBsYWNlbWVudGAgc3RyaW5nLCBhbGwgcGFydHMgb2YgdGhlIGlucHV0IHN0cmluZyB0aGF0IG1hdGNoIHdpdGggZ2l2ZW4gcmVndWxhciBleHByZXNzaW9uLlxuXHQgKiBAcGFyYW0gcmVnZXggUmVndWxhciBleHByZXNzaW9uIHRvIGJlIG1hdGNoZWQuXG5cdCAqIEBwYXJhbSByZXBsYWNlbWVudCBUZXh0IHRoYXQgd2lsbCByZXBsYWNlIGFsbCBvY2N1cmVuY2VzLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHJlcGxhY2UocmVnZXg6IHN0cmluZyA9IFwiXCIsIHJlcGxhY2VtZW50OiBzdHJpbmcgPSBcIlwiKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW3JlZ2V4LCByZXBsYWNlbWVudF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgc2xpY2UgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0IHN0cmluZy5cblx0ICogQSBgc3RhcnRJbmRleGAgb2YgMCByZWZlcnMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgc3RyaW5nLiBJZiBubyBgZW5kSW5kZXhgIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFzc3VtZWRcblx0ICogdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuXG5cdCAqIEBwYXJhbSBzdGFydEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBzdHJpbmcgd2hlcmUgdGhlIG91dHB1dCBzdHJpbmcgd2lsbCBzdGFydC5cblx0ICogQHBhcmFtIGVuZEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBzdHJpbmcgd2hlcmUgdGhlIG91dHB1dCBzdHJpbmcgd2lsbCBlbmQuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc2xpY2Uoc3RhcnRJbmRleDogbnVtYmVyID0gMCwgZW5kSW5kZXg/OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbc3RhcnRJbmRleCwgZW5kSW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRGl2aWRlcyBpbnB1dCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdWJzdHJpbmdzLFxuXHQgKiBAcGFyYW0gcmVnZXggVGhlIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb24gdG8gdXNlIGZvciBzcGxpdHRpbmcuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBzcGxpdChyZWdleDogc3RyaW5nID0gXCJcXHJcIikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxSYWRvblN0cmluZz4sIFtyZWdleF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBMb3dlciBjYXNlIGFsbCBjaGFyYWN0ZXJzLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvTG93ZXJjYXNlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxuXHQvKipcblx0ICogVXBwZXIgY2FzZSBhbGwgY2hhcmFjdGVycy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1VwcGVyQ2FzZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErF,OAAO,EACN,KAAK,QAAQ,EASb,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,CAaxD;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EACtG,IAAI,EAAE,GAAG,EACT,IAAI,CAAC,EAAE;IAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;CAAE,EAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAqBvC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EAAE,KAAK,EAAE;IAC9G,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAChC,GAAG,CAAC,CAUJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EACrG,OAAO,EAAE;IACR;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE;QAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAC/B,EACD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,GAClD,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CASnC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
1
2
|
import { createRequire } from "node:module";
|
|
2
3
|
import cbor from "cbor";
|
|
3
4
|
import dotenv from "dotenv";
|
|
4
5
|
dotenv.config({ quiet: true });
|
|
5
6
|
const require = createRequire(import.meta.url);
|
|
6
|
-
import { fromHexString, isHexString } from "../../bin/helpers.js";
|
|
7
|
-
import { RadonModal, RadonRequest, RadonRetrieval, RadonTemplate
|
|
7
|
+
import { fromHexString, isHexString, searchWorkspace } from "../../bin/helpers.js";
|
|
8
|
+
import { RadonModal, RadonRequest, RadonRetrieval, RadonTemplate } from "./index.js";
|
|
8
9
|
import { RadonArray, RadonBoolean, RadonBytes, RadonFloat, RadonInteger, RadonMap, RadonOperators, RadonString, } from "./types.js";
|
|
9
|
-
const
|
|
10
|
+
const __dirname = searchWorkspace();
|
|
11
|
+
const WITNET_ASSETS_PATH = process.env.WITNET_SDK_RADON_ASSETS_PATH || `${__dirname}/witnet/assets`;
|
|
10
12
|
export { execRadonBytecode } from "../../bin/helpers.js";
|
|
11
13
|
/**
|
|
12
14
|
* Decodes a Radon script out from a Protobuf-serialized bytecode.
|
|
@@ -81,15 +83,12 @@ export function searchRadonAssets(options, filterFn) {
|
|
|
81
83
|
return stuff
|
|
82
84
|
.filter((entry) => (filterFn || defaultFilter)(entry.key, options.pattern || ""))
|
|
83
85
|
.slice(options?.offset || 0, options?.limit)
|
|
84
|
-
.map((entry) => [
|
|
85
|
-
entry.key,
|
|
86
|
-
entry.artifact,
|
|
87
|
-
]);
|
|
86
|
+
.map((entry) => [entry.key, entry.artifact]);
|
|
88
87
|
}
|
|
89
88
|
// ====================================================================================================================
|
|
90
89
|
// --- INTERNAL METHODS -----------------------------------------------------------------------------------------------
|
|
91
90
|
function loadModuleAssets(options) {
|
|
92
|
-
const stuff = require(`${WITNET_ASSETS_PATH}/index.cjs`);
|
|
91
|
+
const stuff = fs.existsSync(`${WITNET_ASSETS_PATH}/index.cjs`) ? require(`${WITNET_ASSETS_PATH}/index.cjs`) : {};
|
|
93
92
|
return options?.flattened ? flattenRadonAssets(stuff, options?.type) : stuff;
|
|
94
93
|
}
|
|
95
94
|
function parseScript(array, script) {
|
|
@@ -147,4 +146,4 @@ function parseScriptOperator(script, opcode, args) {
|
|
|
147
146
|
}
|
|
148
147
|
}
|
|
149
148
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFL0IsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxHQUNiLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFFTixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxHQUNYLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sa0JBQWtCLEdBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLElBQUksOEJBQThCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFhO0lBQzdDLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFN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QUksTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLFFBQVEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO2FBQ25DLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDbEIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNYLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNsQixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELGdCQUFnQjtZQUNoQiw4RUFBOEU7WUFFOUU7Z0JBQ0MsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IGNib3IgZnJvbSBcImNib3JcIjtcbmltcG9ydCBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xuXG5kb3RlbnYuY29uZmlnKHsgcXVpZXQ6IHRydWUgfSk7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCB7IGZyb21IZXhTdHJpbmcsIGlzSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzLmpzXCI7XG5cbmltcG9ydCB7XG5cdFJhZG9uTW9kYWwsXG5cdFJhZG9uUmVxdWVzdCxcblx0UmFkb25SZXRyaWV2YWwsXG5cdFJhZG9uVGVtcGxhdGUsXG59IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmltcG9ydCB7XG5cdHR5cGUgUmFkb25BbnksXG5cdFJhZG9uQXJyYXksXG5cdFJhZG9uQm9vbGVhbixcblx0UmFkb25CeXRlcyxcblx0UmFkb25GbG9hdCxcblx0UmFkb25JbnRlZ2VyLFxuXHRSYWRvbk1hcCxcblx0UmFkb25PcGVyYXRvcnMsXG5cdFJhZG9uU3RyaW5nLFxufSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5jb25zdCBXSVRORVRfQVNTRVRTX1BBVEggPVxuXHRwcm9jZXNzLmVudi5XSVRORVRfU0RLX1JBRE9OX0FTU0VUU19QQVRIIHx8IFwiLi4vLi4vLi4vLi4vLi4vd2l0bmV0L2Fzc2V0c1wiO1xuXG5leHBvcnQgeyBleGVjUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xuXG4vKipcbiAqIERlY29kZXMgYSBSYWRvbiBzY3JpcHQgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxuICogQHBhcmFtIGhleFN0cmluZyBSYWRvbiBzY3JpcHQgYnl0ZWNvZGUuXG4gKiBAcmV0dXJucyBSYWRvbiBzY3JpcHQgb2JqZWN0IChpLmUuIGNoYWluIG9mIFJhZG9uIG9wZXJhdG9ycyB3aXRoIGEgZGV0ZXJtaW5pc3RpYyBvdXRwdXQgUmFkb24gdHlwZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJhZG9uU2NyaXB0KGJ5dGVjb2RlOiBhbnkpOiBSYWRvbkFueSB7XG5cdGxldCBidWZmZXI7XG5cdGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHRidWZmZXIgPSBmcm9tSGV4U3RyaW5nKGJ5dGVjb2RlKTtcblx0fSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSk7XG5cdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRidWZmZXIgPSBieXRlY29kZTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBVbnN1cHBvcnRlZCBSYWRvblNjcmlwdCBieXRlY29kZSBmb3JtYXQ6ICR7Ynl0ZWNvZGV9YCk7XG5cdH1cblx0Y29uc3QgYXJyYXkgPSBjYm9yLmRlY29kZShidWZmZXIpO1xuXHRyZXR1cm4gcGFyc2VTY3JpcHQoYXJyYXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlblJhZG9uQXNzZXRzPFxuXHRUIGV4dGVuZHMgUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSB8IFJhZG9uTW9kYWwgfCBSYWRvblJldHJpZXZhbCxcbj4oXG5cdHRyZWU6IGFueSxcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9LFxuXHRoZWFkZXJzPzogc3RyaW5nW10sXG4pOiBBcnJheTx7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IH0+IHtcblx0aWYgKCFoZWFkZXJzKSBoZWFkZXJzID0gW107XG5cdGNvbnN0IGVudHJpZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfT4gPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgaW4gdHJlZSkge1xuXHRcdGlmIChcblx0XHRcdCh0eXBlICYmIHRyZWVba2V5XSBpbnN0YW5jZW9mIHR5cGUpIHx8XG5cdFx0XHQoIXR5cGUgJiZcblx0XHRcdFx0KHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uUmVxdWVzdCB8fFxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUgfHxcblx0XHRcdFx0XHR0cmVlW2tleV0gaW5zdGFuY2VvZiBSYWRvbk1vZGFsIHx8XG5cdFx0XHRcdFx0dHJlZVtrZXldIGluc3RhbmNlb2YgUmFkb25SZXRyaWV2YWwpKVxuXHRcdCkge1xuXHRcdFx0ZW50cmllcy5wdXNoKHtcblx0XHRcdFx0a2V5LFxuXHRcdFx0XHRhcnRpZmFjdDogdHJlZVtrZXldLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdHJlZVtrZXldID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZmxhdHRlblJhZG9uQXNzZXRzKHRyZWVba2V5XSwgdHlwZSwgWy4uLmhlYWRlcnMsIGtleV0pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGVudHJpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUmFkb25Bc3NldDxcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXG4+KHNwZWNzOiB7XG5cdGFydGlmYWN0OiBzdHJpbmc7XG5cdGFzc2V0cz86IGFueTtcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xufSk6IFQge1xuXHRjb25zdCBzdHVmZiA9IHNwZWNzPy5hc3NldHNcblx0XHQ/IGZsYXR0ZW5SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMsIHNwZWNzPy50eXBlKVxuXHRcdDogbG9hZE1vZHVsZUFzc2V0cyh7IGZsYXR0ZW5lZDogdHJ1ZSwgdHlwZTogc3BlY3M/LnR5cGUgfSk7XG5cdGNvbnN0IGZvdW5kID0gc3R1ZmYuZmluZChcblx0XHQoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfSkgPT4gZW50cnkua2V5ID09PSBzcGVjcy5hcnRpZmFjdCxcblx0KTtcblx0aWYgKGZvdW5kPy5hcnRpZmFjdCkge1xuXHRcdHJldHVybiBmb3VuZC5hcnRpZmFjdDtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBFcnJvcihgUmFkb24gYXNzZXQgXCIke3NwZWNzLmFydGlmYWN0fVwiIG5vdCBhdmFpbGFibGUuYCk7XG5cdH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggV2l0bmV0IFJhZG9uIGFzc2V0cyBkZWNsYXJlZCBvciBpbXBvcnRlZCB3aXRoaW4gY3VycmVudCByZXBvc2l0b3J5LFxuICogd2hvc2UgbmFtZXMgY29tcGxpZXMgd2l0aCB0aGUgcHJvdmlkZWQgYHBhdHRlcm5gIGFuZCBgZmlsdGVyRm5gLlxuICogSWYgbm8gYGZpbHRlckZuYCBpcyBzcGVjaWZpZWQsIHNlYXJjaCB3aWxsIGluY2x1ZGUgYXNzZXRzIHdob3NlIG5hbWVzXG4gKiBhcmUgc3VmZml4ZWQgYnkgZ2l2ZW4gYHBhdHRlcm5gIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAqIEBwYXJhbSBvcHRpb25zIFNlYXJjaCBvcHRpb25zXG4gKiBAcGFyYW0gZmlsdGVyRm4gRmlsdGVyaW5nIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgUmFkb24gYXNzZXRzIG9mIHRoZSBzcGVjaWZpZWQga2luZCBjb21wbHlpbmcgd2l0aCB0aGUgc2VhcmNoIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hSYWRvbkFzc2V0czxcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXG4+KFxuXHRvcHRpb25zOiB7XG5cdFx0LyoqXG5cdFx0ICogT2JqZWN0IGNvbnRhaW5pbmcgc3RydWN0dXJlZCBoZXJpYXJjaHkgb2YgUmFkb24gYXNzZXRzLiBJZiBub3QgcHJvdmlkZWQsIFJhZG9uIGFzc2V0cyBkZWNsYXJlZCB3aXRoaW4gcHJvamVjdCdzIGVudmlyb25tZW50LlxuXHRcdCAqL1xuXHRcdGFzc2V0cz86IGFueTtcblx0XHQvKipcblx0XHQgKiBMaW1pdHMgbnVtYmVyIG9mIHJldHVybmVkIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRsaW1pdD86IG51bWJlcjtcblx0XHQvKipcblx0XHQgKiBPZmZzZXRzIHJldHVybmVkIGFycmF5IG9mIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqXG5cdFx0ICogTmFtZSBwYXR0ZXJuIHNlYXJjaGVkIGZvci5cblx0XHQgKi9cblx0XHRwYXR0ZXJuOiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogU3BlY2lmaWMgdHlwZSBvZiBSYWRvbiBhc3NldCB0byBzZWFyY2ggZm9yOiBgUmFkb25SZXF1ZXN0YCwgYFJhZG9uUmVxdWVzdGAsIGBSYWRvblJldHJpZXZhbGAgb3IgYFJhZG9uQ0NEUmAuXG5cdFx0ICovXG5cdFx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xuXHR9LFxuXHRmaWx0ZXJGbj86IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PiBib29sZWFuLFxuKTogQXJyYXk8W2tleTogc3RyaW5nLCBhcnRpZmFjdDogVF0+IHtcblx0Y29uc3QgZGVmYXVsdEZpbHRlciA9IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PlxuXHRcdGtleS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHBhdHRlcm4udG9Mb3dlckNhc2UoKSk7XG5cdGNvbnN0IHN0dWZmID0gb3B0aW9ucz8uYXNzZXRzXG5cdFx0PyBmbGF0dGVuUmFkb25Bc3NldHMob3B0aW9ucy5hc3NldHMsIG9wdGlvbnM/LnR5cGUpXG5cdFx0OiBsb2FkTW9kdWxlQXNzZXRzKHsgZmxhdHRlbmVkOiB0cnVlLCB0eXBlOiBvcHRpb25zPy50eXBlIH0pO1xuXHRyZXR1cm4gc3R1ZmZcblx0XHQuZmlsdGVyKChlbnRyeTogeyBrZXk6IHN0cmluZzsgYXJ0aWZhY3Q6IGFueSB9KSA9PlxuXHRcdFx0KGZpbHRlckZuIHx8IGRlZmF1bHRGaWx0ZXIpKGVudHJ5LmtleSwgb3B0aW9ucy5wYXR0ZXJuIHx8IFwiXCIpLFxuXHRcdClcblx0XHQuc2xpY2Uob3B0aW9ucz8ub2Zmc2V0IHx8IDAsIG9wdGlvbnM/LmxpbWl0KVxuXHRcdC5tYXAoKGVudHJ5OiB7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IHwgVCB9KSA9PiBbXG5cdFx0XHRlbnRyeS5rZXksXG5cdFx0XHRlbnRyeS5hcnRpZmFjdCxcblx0XHRdKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIC0tLSBJTlRFUk5BTCBNRVRIT0RTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGxvYWRNb2R1bGVBc3NldHM8XG5cdFQgZXh0ZW5kcyBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlIHwgUmFkb25Nb2RhbCB8IFJhZG9uUmV0cmlldmFsLFxuPihvcHRpb25zOiB7IGZsYXR0ZW5lZD86IGJvb2xlYW47IHR5cGU/OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfSB9KTogYW55IHtcblx0Y29uc3Qgc3R1ZmYgPSByZXF1aXJlKGAke1dJVE5FVF9BU1NFVFNfUEFUSH0vaW5kZXguY2pzYCk7XG5cdHJldHVybiBvcHRpb25zPy5mbGF0dGVuZWQgPyBmbGF0dGVuUmFkb25Bc3NldHMoc3R1ZmYsIG9wdGlvbnM/LnR5cGUpIDogc3R1ZmY7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2NyaXB0KGFycmF5OiBhbnksIHNjcmlwdD86IGFueSk6IGFueSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdGFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG5cdFx0XHRcdHNjcmlwdCA9IHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBpdGVtWzBdLCAuLi5pdGVtLnNsaWNlKDEpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNjcmlwdCA9IHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBpdGVtKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gc2NyaXB0O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdCwgYXJyYXkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0OiBhbnksIG9wY29kZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcblx0aWYgKCFzY3JpcHQpIHtcblx0XHRjb25zdCBmb3VuZCA9IE9iamVjdC5lbnRyaWVzKHtcblx0XHRcdFwiMTBcIjogUmFkb25BcnJheSxcblx0XHRcdFwiMjBcIjogUmFkb25Cb29sZWFuLFxuXHRcdFx0XCIzMFwiOiBSYWRvbkJ5dGVzLFxuXHRcdFx0XCI0MFwiOiBSYWRvbkludGVnZXIsXG5cdFx0XHRcIjUwXCI6IFJhZG9uRmxvYXQsXG5cdFx0XHRcIjYwXCI6IFJhZG9uTWFwLFxuXHRcdFx0XCI3MFwiOiBSYWRvblN0cmluZyxcblx0XHR9KS5maW5kKChlbnRyeSkgPT4gZW50cnlbMF0gPT09IChwYXJzZUludChvcGNvZGUsIDEwKSAmIDB4ZjApLnRvU3RyaW5nKDE2KSk7XG5cdFx0aWYgKGZvdW5kKSB7XG5cdFx0XHRzY3JpcHQgPSBuZXcgZm91bmRbMV0oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKGB1bmtub3duIFJhZG9uIG9wZXJhdG9yOiAke29wY29kZX1gKTtcblx0XHR9XG5cdH1cblx0aWYgKG9wY29kZSkge1xuXHRcdGxldCBvcGVyYXRvciA9IFJhZG9uT3BlcmF0b3JzW29wY29kZV1cblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmpvaW4oXCJcIik7XG5cdFx0b3BlcmF0b3IgPSBvcGVyYXRvci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG9wZXJhdG9yLnNsaWNlKDEpO1xuXHRcdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRcdGNhc2UgXCJmaWx0ZXJcIjpcblx0XHRcdGNhc2UgXCJtYXBcIjpcblx0XHRcdGNhc2UgXCJzb3J0XCI6XG5cdFx0XHRjYXNlIFwiYWx0ZXJcIjoge1xuXHRcdFx0XHRjb25zdCBpbm5lclNjcmlwdCA9IHBhcnNlU2NyaXB0KGFyZ3MpO1xuXHRcdFx0XHRyZXR1cm4gc2NyaXB0W29wZXJhdG9yXShpbm5lclNjcmlwdCwgLi4uYXJncy5zbGljZSgxKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGNhc2UgXCJhbHRlclwiOlxuXHRcdFx0Ly8gICByZXR1cm4gc2NyaXB0W29wZXJhdG9yXShhcmdzWzBdLCBwYXJzZVNjcmlwdChhcmdzWzFdLCAuLi5hcmdzLnNsaWNlKDIpKSk7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBzY3JpcHRbb3BlcmF0b3JdKGFyZ3MpO1xuXHRcdH1cblx0fVxufVxuIl19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBRS9CLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5GLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFckYsT0FBTyxFQUVOLFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUNSLGNBQWMsRUFDZCxXQUFXLEdBQ1gsTUFBTSxZQUFZLENBQUM7QUFFcEIsTUFBTSxTQUFTLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDcEMsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixJQUFJLEdBQUcsU0FBUyxnQkFBZ0IsQ0FBQztBQUVwRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQWE7SUFDN0MsSUFBSSxNQUFNLENBQUM7SUFDWCxJQUFJLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzNCLE1BQU0s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QUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ1AsTUFBTSxTQUFTLENBQUMsMkJBQTJCLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNGLENBQUM7SUFDRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQzthQUNuQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ2xCLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDUixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDWCxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxnQkFBZ0I7WUFDaEIsOEVBQThFO1lBRTlFO2dCQUNDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDRixDQUFDO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IGNib3IgZnJvbSBcImNib3JcIjtcbmltcG9ydCBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xuXG5kb3RlbnYuY29uZmlnKHsgcXVpZXQ6IHRydWUgfSk7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCB7IGZyb21IZXhTdHJpbmcsIGlzSGV4U3RyaW5nLCBzZWFyY2hXb3Jrc3BhY2UgfSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnMuanNcIjtcblxuaW1wb3J0IHsgUmFkb25Nb2RhbCwgUmFkb25SZXF1ZXN0LCBSYWRvblJldHJpZXZhbCwgUmFkb25UZW1wbGF0ZSB9IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmltcG9ydCB7XG5cdHR5cGUgUmFkb25BbnksXG5cdFJhZG9uQXJyYXksXG5cdFJhZG9uQm9vbGVhbixcblx0UmFkb25CeXRlcyxcblx0UmFkb25GbG9hdCxcblx0UmFkb25JbnRlZ2VyLFxuXHRSYWRvbk1hcCxcblx0UmFkb25PcGVyYXRvcnMsXG5cdFJhZG9uU3RyaW5nLFxufSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5jb25zdCBfX2Rpcm5hbWUgPSBzZWFyY2hXb3Jrc3BhY2UoKTtcbmNvbnN0IFdJVE5FVF9BU1NFVFNfUEFUSCA9IHByb2Nlc3MuZW52LldJVE5FVF9TREtfUkFET05fQVNTRVRTX1BBVEggfHwgYCR7X19kaXJuYW1lfS93aXRuZXQvYXNzZXRzYDtcblxuZXhwb3J0IHsgZXhlY1JhZG9uQnl0ZWNvZGUgfSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnMuanNcIjtcblxuLyoqXG4gKiBEZWNvZGVzIGEgUmFkb24gc2NyaXB0IG91dCBmcm9tIGEgUHJvdG9idWYtc2VyaWFsaXplZCBieXRlY29kZS5cbiAqIEBwYXJhbSBoZXhTdHJpbmcgUmFkb24gc2NyaXB0IGJ5dGVjb2RlLlxuICogQHJldHVybnMgUmFkb24gc2NyaXB0IG9iamVjdCAoaS5lLiBjaGFpbiBvZiBSYWRvbiBvcGVyYXRvcnMgd2l0aCBhIGRldGVybWluaXN0aWMgb3V0cHV0IFJhZG9uIHR5cGUpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYWRvblNjcmlwdChieXRlY29kZTogYW55KTogUmFkb25Bbnkge1xuXHRsZXQgYnVmZmVyO1xuXHRpZiAoaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XG5cdFx0YnVmZmVyID0gZnJvbUhleFN0cmluZyhieXRlY29kZSk7XG5cdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG5cdFx0YnVmZmVyID0gQnVmZmVyLmZyb20oYnl0ZWNvZGUpO1xuXHR9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG5cdFx0YnVmZmVyID0gYnl0ZWNvZGU7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgVW5zdXBwb3J0ZWQgUmFkb25TY3JpcHQgYnl0ZWNvZGUgZm9ybWF0OiAke2J5dGVjb2RlfWApO1xuXHR9XG5cdGNvbnN0IGFycmF5ID0gY2Jvci5kZWNvZGUoYnVmZmVyKTtcblx0cmV0dXJuIHBhcnNlU2NyaXB0KGFycmF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW5SYWRvbkFzc2V0czxUIGV4dGVuZHMgUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSB8IFJhZG9uTW9kYWwgfCBSYWRvblJldHJpZXZhbD4oXG5cdHRyZWU6IGFueSxcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9LFxuXHRoZWFkZXJzPzogc3RyaW5nW10sXG4pOiBBcnJheTx7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IH0+IHtcblx0aWYgKCFoZWFkZXJzKSBoZWFkZXJzID0gW107XG5cdGNvbnN0IGVudHJpZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfT4gPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgaW4gdHJlZSkge1xuXHRcdGlmIChcblx0XHRcdCh0eXBlICYmIHRyZWVba2V5XSBpbnN0YW5jZW9mIHR5cGUpIHx8XG5cdFx0XHQoIXR5cGUgJiZcblx0XHRcdFx0KHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uUmVxdWVzdCB8fFxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUgfHxcblx0XHRcdFx0XHR0cmVlW2tleV0gaW5zdGFuY2VvZiBSYWRvbk1vZGFsIHx8XG5cdFx0XHRcdFx0dHJlZVtrZXldIGluc3RhbmNlb2YgUmFkb25SZXRyaWV2YWwpKVxuXHRcdCkge1xuXHRcdFx0ZW50cmllcy5wdXNoKHtcblx0XHRcdFx0a2V5LFxuXHRcdFx0XHRhcnRpZmFjdDogdHJlZVtrZXldLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdHJlZVtrZXldID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZmxhdHRlblJhZG9uQXNzZXRzKHRyZWVba2V5XSwgdHlwZSwgWy4uLmhlYWRlcnMsIGtleV0pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGVudHJpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUmFkb25Bc3NldDxUIGV4dGVuZHMgUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSB8IFJhZG9uTW9kYWwgfCBSYWRvblJldHJpZXZhbD4oc3BlY3M6IHtcblx0YXJ0aWZhY3Q6IHN0cmluZztcblx0YXNzZXRzPzogYW55O1xuXHR0eXBlPzogeyBuZXcgKF9zcGVjczogYW55KTogVCB9O1xufSk6IFQge1xuXHRjb25zdCBzdHVmZiA9IHNwZWNzPy5hc3NldHNcblx0XHQ/IGZsYXR0ZW5SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMsIHNwZWNzPy50eXBlKVxuXHRcdDogbG9hZE1vZHVsZUFzc2V0cyh7IGZsYXR0ZW5lZDogdHJ1ZSwgdHlwZTogc3BlY3M/LnR5cGUgfSk7XG5cdGNvbnN0IGZvdW5kID0gc3R1ZmYuZmluZCgoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfSkgPT4gZW50cnkua2V5ID09PSBzcGVjcy5hcnRpZmFjdCk7XG5cdGlmIChmb3VuZD8uYXJ0aWZhY3QpIHtcblx0XHRyZXR1cm4gZm91bmQuYXJ0aWZhY3Q7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgRXJyb3IoYFJhZG9uIGFzc2V0IFwiJHtzcGVjcy5hcnRpZmFjdH1cIiBub3QgYXZhaWxhYmxlLmApO1xuXHR9XG59XG5cbi8qKlxuICogU2VhcmNoIFdpdG5ldCBSYWRvbiBhc3NldHMgZGVjbGFyZWQgb3IgaW1wb3J0ZWQgd2l0aGluIGN1cnJlbnQgcmVwb3NpdG9yeSxcbiAqIHdob3NlIG5hbWVzIGNvbXBsaWVzIHdpdGggdGhlIHByb3ZpZGVkIGBwYXR0ZXJuYCBhbmQgYGZpbHRlckZuYC5cbiAqIElmIG5vIGBmaWx0ZXJGbmAgaXMgc3BlY2lmaWVkLCBzZWFyY2ggd2lsbCBpbmNsdWRlIGFzc2V0cyB3aG9zZSBuYW1lc1xuICogYXJlIHN1ZmZpeGVkIGJ5IGdpdmVuIGBwYXR0ZXJuYCAoY2FzZSBpbnNlbnNpdGl2ZSkuXG4gKiBAcGFyYW0gb3B0aW9ucyBTZWFyY2ggb3B0aW9uc1xuICogQHBhcmFtIGZpbHRlckZuIEZpbHRlcmluZyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIFJhZG9uIGFzc2V0cyBvZiB0aGUgc3BlY2lmaWVkIGtpbmQgY29tcGx5aW5nIHdpdGggdGhlIHNlYXJjaCBwYXR0ZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoUmFkb25Bc3NldHM8VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWw+KFxuXHRvcHRpb25zOiB7XG5cdFx0LyoqXG5cdFx0ICogT2JqZWN0IGNvbnRhaW5pbmcgc3RydWN0dXJlZCBoZXJpYXJjaHkgb2YgUmFkb24gYXNzZXRzLiBJZiBub3QgcHJvdmlkZWQsIFJhZG9uIGFzc2V0cyBkZWNsYXJlZCB3aXRoaW4gcHJvamVjdCdzIGVudmlyb25tZW50LlxuXHRcdCAqL1xuXHRcdGFzc2V0cz86IGFueTtcblx0XHQvKipcblx0XHQgKiBMaW1pdHMgbnVtYmVyIG9mIHJldHVybmVkIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRsaW1pdD86IG51bWJlcjtcblx0XHQvKipcblx0XHQgKiBPZmZzZXRzIHJldHVybmVkIGFycmF5IG9mIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqXG5cdFx0ICogTmFtZSBwYXR0ZXJuIHNlYXJjaGVkIGZvci5cblx0XHQgKi9cblx0XHRwYXR0ZXJuOiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogU3BlY2lmaWMgdHlwZSBvZiBSYWRvbiBhc3NldCB0byBzZWFyY2ggZm9yOiBgUmFkb25SZXF1ZXN0YCwgYFJhZG9uUmVxdWVzdGAsIGBSYWRvblJldHJpZXZhbGAgb3IgYFJhZG9uQ0NEUmAuXG5cdFx0ICovXG5cdFx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xuXHR9LFxuXHRmaWx0ZXJGbj86IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PiBib29sZWFuLFxuKTogQXJyYXk8W2tleTogc3RyaW5nLCBhcnRpZmFjdDogVF0+IHtcblx0Y29uc3QgZGVmYXVsdEZpbHRlciA9IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PiBrZXkudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChwYXR0ZXJuLnRvTG93ZXJDYXNlKCkpO1xuXHRjb25zdCBzdHVmZiA9IG9wdGlvbnM/LmFzc2V0c1xuXHRcdD8gZmxhdHRlblJhZG9uQXNzZXRzKG9wdGlvbnMuYXNzZXRzLCBvcHRpb25zPy50eXBlKVxuXHRcdDogbG9hZE1vZHVsZUFzc2V0cyh7IGZsYXR0ZW5lZDogdHJ1ZSwgdHlwZTogb3B0aW9ucz8udHlwZSB9KTtcblx0cmV0dXJuIHN0dWZmXG5cdFx0LmZpbHRlcigoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfSkgPT4gKGZpbHRlckZuIHx8IGRlZmF1bHRGaWx0ZXIpKGVudHJ5LmtleSwgb3B0aW9ucy5wYXR0ZXJuIHx8IFwiXCIpKVxuXHRcdC5zbGljZShvcHRpb25zPy5vZmZzZXQgfHwgMCwgb3B0aW9ucz8ubGltaXQpXG5cdFx0Lm1hcCgoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfCBUIH0pID0+IFtlbnRyeS5rZXksIGVudHJ5LmFydGlmYWN0XSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyAtLS0gSU5URVJOQUwgTUVUSE9EUyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBsb2FkTW9kdWxlQXNzZXRzPFQgZXh0ZW5kcyBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlIHwgUmFkb25Nb2RhbCB8IFJhZG9uUmV0cmlldmFsPihvcHRpb25zOiB7XG5cdGZsYXR0ZW5lZD86IGJvb2xlYW47XG5cdHR5cGU/OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfTtcbn0pOiBhbnkge1xuXHRjb25zdCBzdHVmZiA9IGZzLmV4aXN0c1N5bmMoYCR7V0lUTkVUX0FTU0VUU19QQVRIfS9pbmRleC5janNgKSA/IHJlcXVpcmUoYCR7V0lUTkVUX0FTU0VUU19QQVRIfS9pbmRleC5janNgKSA6IHt9O1xuXHRyZXR1cm4gb3B0aW9ucz8uZmxhdHRlbmVkID8gZmxhdHRlblJhZG9uQXNzZXRzKHN0dWZmLCBvcHRpb25zPy50eXBlKSA6IHN0dWZmO1xufVxuXG5mdW5jdGlvbiBwYXJzZVNjcmlwdChhcnJheTogYW55LCBzY3JpcHQ/OiBhbnkpOiBhbnkge1xuXHRpZiAoQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHRhcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuXHRcdFx0XHRzY3JpcHQgPSBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdCwgaXRlbVswXSwgLi4uaXRlbS5zbGljZSgxKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzY3JpcHQgPSBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdCwgaXRlbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHNjcmlwdDtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gcGFyc2VTY3JpcHRPcGVyYXRvcihzY3JpcHQsIGFycmF5KTtcblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdDogYW55LCBvcGNvZGU6IGFueSwgYXJncz86IGFueSk6IGFueSB7XG5cdGlmICghc2NyaXB0KSB7XG5cdFx0Y29uc3QgZm91bmQgPSBPYmplY3QuZW50cmllcyh7XG5cdFx0XHRcIjEwXCI6IFJhZG9uQXJyYXksXG5cdFx0XHRcIjIwXCI6IFJhZG9uQm9vbGVhbixcblx0XHRcdFwiMzBcIjogUmFkb25CeXRlcyxcblx0XHRcdFwiNDBcIjogUmFkb25JbnRlZ2VyLFxuXHRcdFx0XCI1MFwiOiBSYWRvbkZsb2F0LFxuXHRcdFx0XCI2MFwiOiBSYWRvbk1hcCxcblx0XHRcdFwiNzBcIjogUmFkb25TdHJpbmcsXG5cdFx0fSkuZmluZCgoZW50cnkpID0+IGVudHJ5WzBdID09PSAocGFyc2VJbnQob3Bjb2RlLCAxMCkgJiAweGYwKS50b1N0cmluZygxNikpO1xuXHRcdGlmIChmb3VuZCkge1xuXHRcdFx0c2NyaXB0ID0gbmV3IGZvdW5kWzFdKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihgdW5rbm93biBSYWRvbiBvcGVyYXRvcjogJHtvcGNvZGV9YCk7XG5cdFx0fVxuXHR9XG5cdGlmIChvcGNvZGUpIHtcblx0XHRsZXQgb3BlcmF0b3IgPSBSYWRvbk9wZXJhdG9yc1tvcGNvZGVdXG5cdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHQuc2xpY2UoMSlcblx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdG9wZXJhdG9yID0gb3BlcmF0b3IuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBvcGVyYXRvci5zbGljZSgxKTtcblx0XHRzd2l0Y2ggKG9wZXJhdG9yKSB7XG5cdFx0XHRjYXNlIFwiZmlsdGVyXCI6XG5cdFx0XHRjYXNlIFwibWFwXCI6XG5cdFx0XHRjYXNlIFwic29ydFwiOlxuXHRcdFx0Y2FzZSBcImFsdGVyXCI6IHtcblx0XHRcdFx0Y29uc3QgaW5uZXJTY3JpcHQgPSBwYXJzZVNjcmlwdChhcmdzKTtcblx0XHRcdFx0cmV0dXJuIHNjcmlwdFtvcGVyYXRvcl0oaW5uZXJTY3JpcHQsIC4uLmFyZ3Muc2xpY2UoMSkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBjYXNlIFwiYWx0ZXJcIjpcblx0XHRcdC8vICAgcmV0dXJuIHNjcmlwdFtvcGVyYXRvcl0oYXJnc1swXSwgcGFyc2VTY3JpcHQoYXJnc1sxXSwgLi4uYXJncy5zbGljZSgyKSkpO1xuXG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXR1cm4gc2NyaXB0W29wZXJhdG9yXShhcmdzKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,UAAU,aAAa;IACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,UAAU,aAAa;IACtB,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAE5F;AAED,qBAAa,WAAY,SAAQ,KAAK;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;gBACT,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG;CAOlD;AAED,qBAAa,YAAa,YAAW,aAAa;WACpC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIzD,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,GAAG,EAAE,MAAM;cAcP,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;IAoBvE,iBAAiB,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAMxG"}
|
|
@@ -63,4 +63,4 @@ export class KermitClient {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZXN0L2tlcm1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXZDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBQ3pDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDUixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFPWixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDNUIsS0FBSyxDQUFPO0lBQ1osSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFPO0lBQ3JCLFlBQVksSUFBWSxFQUFFLEtBQVcsRUFBRSxLQUFXO1FBQ2pELEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVk7UUFDaEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFZSxHQUFHLENBQVM7SUFFNUIsWUFBWSxHQUFXO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxLQUFLLENBQUMsd0NBQXdDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDO1FBQ3BCLENBQUM7SUFDRixDQUFDO0lBRVMsS0FBSyxDQUFDLGdCQUFnQixDQUFJLElBQVksRUFBRSxLQUFXO1FBQzVELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2RSxPQUFPLEtBQUs7YUFDVixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDMUQsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3ZCLElBQUksUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlFLENBQUM7aUJBQU0sSUFBSSxRQUFRLEVBQUUsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSw0QkFBNEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU8sUUFBUSxFQUFFLElBQVMsQ0FBQztZQUM1QixDQUFDO1FBQ0YsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFpQixFQUFFLFVBQTRCO1FBQzdFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFpQixzQkFBc0IsRUFBRTtZQUNwRSxXQUFXO1lBQ1gsVUFBVTtTQUNWLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHQgYXMgYXhpb3MgfSBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCB7IGRlZmF1bHQgYXMganNvbkJpZyB9IGZyb20gXCJqc29uLWJpZ2ludFwiO1xuaW1wb3J0IHR5cGUgeyBIYXNoIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBwYXJzZVVSTCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5pbXBvcnQgdHlwZSB7IERhdGFQdXNoUmVwb3J0IH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcblxuY29uc3Qgc3RyaW5naWZ5ID0gKHF1ZXJ5OiBhbnkpID0+XG5cdE9iamVjdC5lbnRyaWVzKHF1ZXJ5KVxuXHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCYke2tleX09JHt2YWx1ZX1gKVxuXHRcdC5qb2luKFwiXCIpXG5cdFx0LnNsaWNlKDEpO1xuXG5pbnRlcmZhY2UgSUtlcm1pdENsaWVudCB7XG5cdGdldERhdGFQdXNoUmVwb3J0KHdpdERyVHhIYXNoOiBIYXNoLCBldm1OZXR3b3JrPzogbnVtYmVyIHwgc3RyaW5nKTogUHJvbWlzZTxEYXRhUHVzaFJlcG9ydD47XG5cdC8vIHNlYXJjaERhdGFSZXF1ZXN0cyhoYXNoOiBIYXNoLCB7fSk6IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IGNsYXNzIEtlcm1pdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRyZWFkb25seSBlcnJvcj86IGFueTtcblx0cmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXHRyZWFkb25seSBxdWVyeT86IGFueTtcblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBxdWVyeT86IGFueSwgZXJyb3I/OiBhbnkpIHtcblx0XHRzdXBlcihgJHtwYXRofSR7c3RyaW5naWZ5KHF1ZXJ5KX06ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApO1xuXHRcdGRlbGV0ZSBlcnJvcj8uc3RhY2s7XG5cdFx0dGhpcy5lcnJvciA9IGVycm9yO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdFx0dGhpcy5xdWVyeSA9IHF1ZXJ5O1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXJtaXRDbGllbnQgaW1wbGVtZW50cyBJS2VybWl0Q2xpZW50IHtcblx0c3RhdGljIGFzeW5jIGZyb21FbnYodXJsPzogc3RyaW5nKTogUHJvbWlzZTxLZXJtaXRDbGllbnQ+IHtcblx0XHRyZXR1cm4gbmV3IEtlcm1pdENsaWVudCh1cmwgfHwgcHJvY2Vzcy5lbnYuV0lUTkVUX1NES19LRVJNSVRfVVJMIHx8IFwiaHR0cHM6Ly9rZXJtaXQud2l0bmV0LmlvXCIpO1xuXHR9XG5cblx0cHVibGljIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgW3NjaGVtYV0gPSBwYXJzZVVSTCh1cmwpO1xuXHRcdGlmICghc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihgS2VybWl0Q2xpZW50OiB1bnN1cHBvcnRlZCBVUkwgc2NoZW1hICR7c2NoZW1hfWApO1xuXHRcdH1cblx0XHR0aGlzLnVybCA9IHVybDtcblx0XHRpZiAoIXRoaXMudXJsLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0dGhpcy51cmwgKz0gXCIvXCI7XG5cdFx0fVxuXHRcdGlmICghdGhpcy51cmwuZW5kc1dpdGgoXCJhcGkvXCIpKSB7XG5cdFx0XHR0aGlzLnVybCArPSBcImFwaS9cIjtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUdldE1ldGhvZDxUPihwYXRoOiBzdHJpbmcsIHF1ZXJ5PzogYW55KTogUHJvbWlzZTxFcnJvciB8IGFueT4ge1xuXHRcdGNvbnN0IHVybCA9IGAke3RoaXMudXJsfSR7cGF0aH0ke3F1ZXJ5ID8gYD8ke3N0cmluZ2lmeShxdWVyeSl9YCA6IFwiXCJ9YDtcblx0XHRyZXR1cm4gYXhpb3Ncblx0XHRcdC5nZXQodXJsLCB7XG5cdFx0XHRcdHRyYW5zZm9ybVJlc3BvbnNlOiAocmVzcG9uc2UpID0+IGpzb25CaWcoKS5wYXJzZShyZXNwb25zZSksXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgS2VybWl0RXJyb3IocGF0aCwgcXVlcnksIHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlc3BvbnNlPy5zdGF0dXNDb2RlICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihwYXRoLCBxdWVyeSwgYHNlcnZlciBzdGF0dXMgY29kZTogSFRUUC8ke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlPy5kYXRhIGFzIFQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihwYXRoLCBxdWVyeSwgZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RGF0YVB1c2hSZXBvcnQod2l0RHJUeEhhc2g6IEhhc2gsIGV2bU5ldHdvcms/OiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPERhdGFQdXNoUmVwb3J0PiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FsbEFwaUdldE1ldGhvZDxEYXRhUHVzaFJlcG9ydD4oXCJnZXRfZGF0YV9wdXNoX3JlcG9ydFwiLCB7XG5cdFx0XHR3aXREclR4SGFzaCxcblx0XHRcdGV2bU5ldHdvcmssXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../src/lib/rpc/nodes.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../src/lib/rpc/nodes.ts"],"names":[],"mappings":"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"}
|