@witnet/sdk 3.0.6 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env_witnet +1 -0
- package/dist/package.json +6 -6
- package/dist/src/bin/helpers.d.ts +1 -1
- package/dist/src/bin/helpers.d.ts.map +1 -1
- package/dist/src/bin/helpers.js +7 -6
- package/dist/src/lib/rest/kermit.d.ts +10 -1
- package/dist/src/lib/rest/kermit.d.ts.map +1 -1
- package/dist/src/lib/rest/kermit.js +11 -1
- package/package.json +6 -6
- package/src/bin/helpers.js +6 -5
package/.env_witnet
CHANGED
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/sdk",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"cbor": "^10.0.11",
|
|
69
69
|
"commander": "^14.0.2",
|
|
70
70
|
"dotenv": "^17.2.3",
|
|
71
|
-
"ethers": "^6.
|
|
71
|
+
"ethers": "^6.16.0",
|
|
72
72
|
"graphql-query-compress": "1.2.4",
|
|
73
|
-
"inquirer": "^12.
|
|
73
|
+
"inquirer": "^12.11.1",
|
|
74
74
|
"json-bigint": "^1.0.0",
|
|
75
75
|
"keccak256": "^1.0.6",
|
|
76
76
|
"lodash.merge": "^4.6.2",
|
|
@@ -83,13 +83,13 @@
|
|
|
83
83
|
"secp256k1": "^5.0.1"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
|
-
"@biomejs/biome": "^2.3.
|
|
86
|
+
"@biomejs/biome": "^2.3.10",
|
|
87
87
|
"@types/cbor": "^5.0.1",
|
|
88
88
|
"@types/json-bigint": "^1.0.4",
|
|
89
|
-
"@types/node": "^24.10.
|
|
89
|
+
"@types/node": "^24.10.4",
|
|
90
90
|
"@types/promise-poller": "^1.7.4",
|
|
91
91
|
"cross-env": "10.0.0",
|
|
92
|
-
"protobufjs-cli": "^1.
|
|
92
|
+
"protobufjs-cli": "^1.2.0",
|
|
93
93
|
"typescript": "^5.9.3"
|
|
94
94
|
},
|
|
95
95
|
"pnpm": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function toFixedTrunc(x: any, n: any): any;
|
|
2
2
|
export function countLeaves(t: any, obj: any): any;
|
|
3
3
|
export function deleteExtraFlags(args: any): any;
|
|
4
|
-
export function cmd(timeout: any, ...
|
|
4
|
+
export function cmd(timeout: any, ...commands: any[]): Promise<any>;
|
|
5
5
|
export function execRadonBytecode(bytecode: any, timeout: any, ...flags: any[]): Promise<any>;
|
|
6
6
|
export function extractFromArgs(args: any, flags: any): any[];
|
|
7
7
|
export function fromHexString(hexString: any): Uint8Array<ArrayBuffer>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AAwBA,kDAOC;AA2ED,mDAKC;AAED,iDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AAwBA,kDAOC;AA2ED,mDAKC;AAED,iDAEC;AAED,oEAmEC;AAED,8FAOC;AAED,8DAsBC;AAED,uEAGC;AAED,yDAsCC;AAED,gEAKC;AAED,+CAMC;AAED,qEAUC;AAED,6CAOC;AAED,uDAMC;AAED,mDASC;AAED,iGAUC;AAED,mDAmBC;AAED,iDAwBC;AAED,4EAwBC;AAED,qDAoBC;AAED,8EAKC;AAED,oCAEC;AAED,8DAWC;AAED,wDAqBC;AAED,8CAEC;AAED,2DAeC;AAED;;EAWC;AAED,4FAaC;AAED,mEAaC;AAED,gDAEC;AAED,gEAQC;AAED,6CAyBC;AAED,mDAmCC;AAED,oDAWC;AAED,4CAeC;AAED,0CAMC;AAED,uDAuBC;AAED,gGAIC;AAED,6DAiEC;AAUD,0DAcC;AAED,iEAgBC;AAED,iEAIC;AAED,mEAqBC;AAED,4DAkCC;AAED,+EAgDC;AAED,+CAeC;AA/4BM,0CACwF;AAExF,4CAON;AAWM,6DAeN;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,yCAAuD;AACvD,yCAAmD;AACnD,0CAAoD;AACpD,wCAAkD;AAClD,2CAAqD;AAErD,yCAAgD;AAChD,yCAAgD;AAChD,0CAAiD;AACjD,4CAAmD;AACnD,2CAAkD;AAClD,yCAA8C;AAC9C,yCAA8C;AAC9C,0CAA+C;AAC/C,4CAAmD;AACnD,wCAA6C;AAC7C,2CAAgD;AAEhD,wCAA6C;AAC7C,wCAA6C;AAC7C,wCAA6C;AAC7C,yCAA8C;AAC9C,2CAAkD;AAClD,0CAA+C;AAC/C,uCAA4C;AAC5C,yCAAgD;AAChD,0CAA+C"}
|
package/dist/src/bin/helpers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { exec } from "node:child_process";
|
|
1
|
+
import { exec, spawn } from "node:child_process";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import * as net from "node:net";
|
|
@@ -108,10 +108,12 @@ export function countLeaves(t, obj) {
|
|
|
108
108
|
export function deleteExtraFlags(args) {
|
|
109
109
|
return args.filter((arg) => !arg.startsWith("--"));
|
|
110
110
|
}
|
|
111
|
-
export function cmd(timeout, ...
|
|
111
|
+
export function cmd(timeout, ...commands) {
|
|
112
112
|
return new Promise((resolve, reject) => {
|
|
113
|
-
const
|
|
114
|
-
|
|
113
|
+
const [bin, ...args] = commands;
|
|
114
|
+
const child = spawn(bin, args, {
|
|
115
|
+
detached: process.env.WITSDK_DRY_RUN_DETACHED || false,
|
|
116
|
+
shell: process.platform === "win32",
|
|
115
117
|
stdio: ["ignore", "pipe", "pipe"],
|
|
116
118
|
env: {
|
|
117
119
|
...process.env,
|
|
@@ -141,7 +143,6 @@ export function cmd(timeout, ...command) {
|
|
|
141
143
|
return;
|
|
142
144
|
finished = true;
|
|
143
145
|
killTree();
|
|
144
|
-
reject(new Error(`npx command timed out after ${commas(timeout)} ms`));
|
|
145
146
|
}, timeout)
|
|
146
147
|
: null;
|
|
147
148
|
child.stdout.on("data", (d) => (stdout += d.toString()));
|
|
@@ -871,4 +872,4 @@ export function unescapeSlashes(str) {
|
|
|
871
872
|
}
|
|
872
873
|
return parsedStr;
|
|
873
874
|
}
|
|
874
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLDZFQUE2RSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQ1gsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9B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Q0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDckQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENB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TUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQUc7SUFDbEMsMkRBQTJEO0lBQzNELHdEQUF3RDtJQUN4RCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELHVEQUF1RDtJQUN2RCxxQ0FBcUM7SUFDckMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFaEUsSUFBSSxDQUFDO1FBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCAqIGFzIG5ldCBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5jb25zdCBfVE9PTEtJVF9SVU5fVElNRU9VVF9NU0VDUyA9IDMwMDAwO1xuXG5leHBvcnQgY29uc3QgY29sb3JzdHJpcCA9IChzdHIpID0+XG5cdHN0ci5yZXBsYWNlKC9bXFx1MDAxYlxcdTAwOWJdW1soKSM7P10qKD86WzAtOV17MSw0fSg/OjtbMC05XXswLDR9KSopP1swLTlBLU9SWmNmLW5xcnk9PjxdL2csIFwiXCIpO1xuXG5leHBvcnQgY29uc3QgY29tbWFzID0gKG51bWJlcikgPT4ge1xuXHRjb25zdCBwYXJ0cyA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KFwiLlwiKTtcblx0Y29uc3QgcmVzdWx0ID1cblx0XHRwYXJ0cy5sZW5ndGggPD0gMVxuXHRcdFx0PyBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9YFxuXHRcdFx0OiBgJHtwYXJ0c1swXS5yZXBsYWNlKC9cXEIoPz0oXFxkezN9KSsoPyFcXGQpKS9nLCBcIixcIil9LiR7cGFydHNbMV19YDtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0ZpeGVkVHJ1bmMoeCwgbikge1xuXHRjb25zdCB2ID0gKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiID8geCA6IHgudG9TdHJpbmcoKSkuc3BsaXQoXCIuXCIpO1xuXHRpZiAobiA8PSAwKSByZXR1cm4gdlswXTtcblx0bGV0IGYgPSB2WzFdIHx8IFwiXCI7XG5cdGlmIChmLmxlbmd0aCA+IG4pIHJldHVybiBgJHt2WzBdfS4ke2Yuc3Vic3RyKDAsIG4pfWA7XG5cdHdoaWxlIChmLmxlbmd0aCA8IG4pIGYgKz0gXCIwXCI7XG5cdHJldHVybiBgJHt2WzBdfS4ke2Z9YDtcbn1cblxuZXhwb3J0IGNvbnN0IHdob2xlX3dpdHMgPSAobnVtYmVyLCBkaWdpdHMpID0+IHtcblx0Y29uc3QgbG9va3VwID0gW1xuXHRcdHsgdmFsdWU6IDFuLCBzeW1ib2w6IFwicGVkcm9zXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogNm4sIHN5bWJvbDogXCJtV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDluLCBzeW1ib2w6IFwiIFdpdHNcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiAxMm4sIHN5bWJvbDogXCJLV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDE1biwgc3ltYm9sOiBcIk1XaXRzXCIgfSxcblx0XTtcblx0Ly8gY29uc3QgcmVnZXhwID0gL1xcLjArJHwoPzw9XFwuWzAtOV0pMCskL1xuXHRjb25zdCBpdGVtID0gbG9va3VwLmZpbmRMYXN0KChpdGVtKSA9PiBudW1iZXIgPj0gaXRlbS52YWx1ZSk7XG5cdGNvbnN0IHF1b3RpZW50ID0gaXRlbSA/IE51bWJlcihCaWdJbnQobnVtYmVyKSAvIGl0ZW0udmFsdWUpIDogbnVtYmVyLnRvU3RyaW5nKCk7XG5cdGNvbnN0IGRlY2ltYWxzID0gaXRlbSA/IChpdGVtLnZhbHVlICsgQmlnSW50KG51bWJlcikgLSBCaWdJbnQocXVvdGllbnQpICogaXRlbS52YWx1ZSkudG9TdHJpbmcoKS5zbGljZSgxKSA6IFwiXCI7XG5cdHJldHVybiBpdGVtXG5cdFx0PyBgJHtjb21tYXMocXVvdGllbnQpfSR7ZGVjaW1hbHMgIT09IFwiXCIgPyBgLiR7ZGVjaW1hbHMuc2xpY2UoMCwgZGlnaXRzKX1gIDogXCJcIn0gJHtpdGVtLnN5bWJvbH1gXG5cdFx0OiBcIihubyBjb2lucylcIjtcbn07XG5cbmNvbnN0IGJibHVlID0gKHN0cikgPT4gYFxceDFiWzE7OTg7NDRtJHtzdHJ9XFx4MWJbMDswOzBtYDtcbmNvbnN0IGJjeWFuID0gKHN0cikgPT4gYFxceDFiWzM4OzQ2bSR7c3RyfVxceDFiWzA7MG1gO1xuY29uc3QgYmdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMwOzQybSR7c3RyfVxceDFiWzA7MG1gO1xuY29uc3QgYnJlZCA9IChzdHIpID0+IGBcXHgxYlszMDs0MW0ke3N0cn1cXHgxYlswOzBtYDtcbmNvbnN0IGJ2aW9sZXQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDVtJHtzdHJ9XFx4MWJbMDswbWA7XG5cbmNvbnN0IGxjeWFuID0gKHN0cikgPT4gYFxceDFiWzE7OTZtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbMTs5MG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBsZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Mm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBsbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlsxOzk1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGx5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMTs5M20ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtYmx1ZSA9IChzdHIpID0+IGBcXHgxYls5NG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtY3lhbiA9IChzdHIpID0+IGBcXHgxYls5Nm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbOTJtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbW1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDs5NW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtcmVkID0gKHN0cikgPT4gYFxceDFiWzkxbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG15ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbOTNtJHtzdHJ9XFx4MWJbMG1gO1xuXG5jb25zdCBibHVlID0gKHN0cikgPT4gYFxceDFiWzM0bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzZtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgZ3JheSA9IChzdHIpID0+IGBcXHgxYls5MG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7MzVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3Qgbm9ybWFsID0gKHN0cikgPT4gYFxceDFiWzk4bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IHJlZCA9IChzdHIpID0+IGBcXHgxYlszMW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCB3aGl0ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlszM20ke3N0cn1cXHgxYlswbWA7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnMgPSB7XG5cdGJibHVlLFxuXHRiY3lhbixcblx0YmdyZWVuLFxuXHRicmVkLFxuXHRidmlvbGV0LFxuXHRsY3lhbixcblx0bGdyYXksXG5cdGxncmVlbixcblx0bG1hZ2VudGEsXG5cdGx5ZWxsb3csXG5cdG1ibHVlLFxuXHRtY3lhbixcblx0bWdyZWVuLFxuXHRtbWFnZW50YSxcblx0bXJlZCxcblx0bXllbGxvdyxcblx0Ymx1ZSxcblx0Y3lhbixcblx0Z3JheSxcblx0Z3JlZW4sXG5cdG1hZ2VudGEsXG5cdG5vcm1hbCxcblx0cmVkLFxuXHR3aGl0ZSxcblx0eWVsbG93LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvdW50TGVhdmVzKHQsIG9iaikge1xuXHRpZiAoIW9iaiB8fCB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSByZXR1cm4gMDtcblx0aWYgKG9iaiBpbnN0YW5jZW9mIHQpIHJldHVybiAxO1xuXHRpZiAoQXJyYXkuaXNBcnJheShvYmopKSByZXR1cm4gb2JqLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMCk7XG5cdGVsc2UgcmV0dXJuIE9iamVjdC52YWx1ZXMob2JqKS5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlRXh0cmFGbGFncyhhcmdzKSB7XG5cdHJldHVybiBhcmdzLmZpbHRlcigoYXJnKSA9PiAhYXJnLnN0YXJ0c1dpdGgoXCItLVwiKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbWQodGltZW91dCwgLi4uY29tbWFuZCkge1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdGNvbnN0IGNoaWxkID0gc3Bhd24oXCJucHhcIiwgY29tbWFuZCwge1xuXHRcdFx0ZGV0YWNoZWQ6IHByb2Nlc3MucGxhdGZvcm0gIT09IFwid2luMzJcIixcblx0XHRcdHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJwaXBlXCIsIFwicGlwZVwiXSxcblx0XHRcdGVudjoge1xuXHRcdFx0XHQuLi5wcm9jZXNzLmVudixcblx0XHRcdFx0TlBNX0NPTkZJR19ZRVM6IFwidHJ1ZVwiLCAvLyA9PiBwcmV2ZW50cyBucHggZnJvbSBzcGF3bmluZyBpbnRlcmFjdGl2ZSBwcm9tcHRzXG5cdFx0XHR9LFxuXHRcdH0pO1xuXG5cdFx0bGV0IHN0ZG91dCA9IFwiXCI7XG5cdFx0bGV0IHN0ZGVyciA9IFwiXCI7XG5cdFx0bGV0IGZpbmlzaGVkID0gZmFsc2U7XG5cblx0XHRjb25zdCBraWxsVHJlZSA9ICgpID0+IHtcblx0XHRcdGlmICghY2hpbGQucGlkKSByZXR1cm47XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiKSB7XG5cdFx0XHRcdFx0c3Bhd24oXCJ0YXNra2lsbFwiLCBbXCIvUElEXCIsIGNoaWxkLnBpZC50b1N0cmluZygpLCBcIi9UXCIsIFwiL0ZcIl0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIGtpbGwgZW50aXJlIHByb2Nlc3MgZ3JvdXBcblx0XHRcdFx0XHRwcm9jZXNzLmtpbGwoLWNoaWxkLnBpZCwgXCJTSUdLSUxMXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIHt9XG5cdFx0fTtcblxuXHRcdGNvbnN0IHRpbWVyID1cblx0XHRcdHRpbWVvdXQgPiAwXG5cdFx0XHRcdD8gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZmluaXNoZWQpIHJldHVybjtcblx0XHRcdFx0XHRcdGZpbmlzaGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGtpbGxUcmVlKCk7XG5cdFx0XHRcdFx0XHRyZWplY3QobmV3IEVycm9yKGBucHggY29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIgJHtjb21tYXModGltZW91dCl9IG1zYCkpO1xuXHRcdFx0XHRcdH0sIHRpbWVvdXQpXG5cdFx0XHRcdDogbnVsbDtcblxuXHRcdGNoaWxkLnN0ZG91dC5vbihcImRhdGFcIiwgKGQpID0+IChzdGRvdXQgKz0gZC50b1N0cmluZygpKSk7XG5cdFx0Y2hpbGQuc3RkZXJyLm9uKFwiZGF0YVwiLCAoZCkgPT4gKHN0ZGVyciArPSBkLnRvU3RyaW5nKCkpKTtcblxuXHRcdGNoaWxkLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuXHRcdFx0aWYgKGZpbmlzaGVkKSByZXR1cm47XG5cdFx0XHRmaW5pc2hlZCA9IHRydWU7XG5cdFx0XHRpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG5cdFx0XHRraWxsVHJlZSgpO1xuXHRcdFx0cmVqZWN0KGVycik7XG5cdFx0fSk7XG5cblx0XHRjaGlsZC5vbihcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcblx0XHRcdGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuXHRcdFx0ZmluaXNoZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuXG5cdFx0XHRpZiAoc2lnbmFsKSB7XG5cdFx0XHRcdHJlamVjdChuZXcgRXJyb3IoYG5weCB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAke3NpZ25hbH1gKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNvZGUgIT09IDApIHtcblx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihgbnB4IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9XFxuJHtzdGRlcnJ9YCkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjUmFkb25CeXRlY29kZShieXRlY29kZSwgdGltZW91dCwgLi4uZmxhZ3MpIHtcblx0aWYgKCFpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHR0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIjtcblx0XHRyZXR1cm4gY21kKHRpbWVvdXQsIG5weCwgXCJ3aXRzZGtcIiwgXCJyYWRvblwiLCBcImRyeS1ydW5cIiwgYnl0ZWNvZGUsIC4uLmZsYWdzKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzKGFyZ3MsIGZsYWdzKSB7XG5cdGNvbnN0IGN1cmF0ZWQgPSB7fTtcblx0aWYgKGFyZ3MgJiYgZmxhZ3MpIHtcblx0XHRPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaCgoZmxhZykgPT4ge1xuXHRcdFx0Y29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKTtcblx0XHRcdGlmIChmbGFnSW5kZXggPj0gMCkge1xuXHRcdFx0XHRpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdO1xuXHRcdFx0XHRcdGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV07XG5cdFx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gdHJ1ZTtcblx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIFthcmdzLCBjdXJhdGVkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21IZXhTdHJpbmcoaGV4U3RyaW5nKSB7XG5cdGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMik7XG5cdHJldHVybiBVaW50OEFycmF5LmZyb20oaGV4U3RyaW5nLm1hdGNoKC8uezEsMn0vZykubWFwKChieXRlKSA9PiBwYXJzZUludChieXRlLCAxNikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QoaXApIHtcblx0aWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHtcblx0XHRpcCA9IGlwLnN1YnN0cmluZyg3KTtcblx0fVxuXG5cdGlmIChuZXQuaXNJUHY0KGlwKSkge1xuXHRcdC8vIGNoZWNrIGxvY2FsaG9zdFxuXHRcdGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcblx0XHRyZXR1cm4gKFxuXHRcdFx0L14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHxcblx0XHRcdC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fFxuXHRcdFx0L14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxuXHRcdCk7XG5cdH1cblxuXHQvLyBlbHNlOiBpcCBpcyBJUHY2XG5cdGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKChlbCkgPT4gISFlbCk7IC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxuXG5cdC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcblx0aWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZTtcblx0Ly8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxuXHRlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxuXHQvLyBSYW5nZTogZmMwMCAtIGZjZmZcblx0ZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZTtcblx0Ly8gUmFuZ2U6IGZkMDAgLSBmY2ZmXG5cdGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcblx0ZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWU7XG5cdC8vIERpc2NhcmQgUHJlZml4XG5cdGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWU7XG5cblx0Ly8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGgoc3RyLCBsZW5ndGgpIHtcblx0cmV0dXJuIChcblx0XHQoaXNIZXhTdHJpbmcoc3RyKSAmJiAoKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHwgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMikpIHx8XG5cdFx0aXNXaWxkY2FyZChzdHIpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFN0cmluZyhzdHIpIHtcblx0cmV0dXJuIChcblx0XHQodHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHwgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpKSkgfHxcblx0XHRpc1dpbGRjYXJkKHN0cilcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4U3RyaW5nKGJ1ZmZlciwgcHJlZml4MHggPSBmYWxzZSkge1xuXHRpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblx0cmV0dXJuIChcblx0XHQocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArXG5cdFx0QXJyYXkucHJvdG90eXBlLm1hcFxuXHRcdFx0LmNhbGwoYnVmZmVyLCAoeCkgPT4gYDAwJHt4LnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQubWF0Y2goL1thLWZBLUYwLTldezJ9L2cpXG5cdFx0XHQuam9pbihcIlwiKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVUkwodXJsKSB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuXHRcdHJldHVybiBbYCR7cGFyc2VkVXJsLnByb3RvY29sfS8vYCwgcGFyc2VkVXJsLmhvc3QsIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSwgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKV07XG5cdH0gY2F0Y2gge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIG1vZHVsZSkge1xuXHRzaG93VXNhZ2VIZWFkbGluZShjbWQpO1xuXHRzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncyB9KTtcblx0c2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pO1xuXHRzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KTtcblx0c2hvd1VzYWdlRW52YXJzKHsgLi4ubW9kdWxlPy5lbnZhcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIocm91dGVyKSB7XG5cdGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpO1xuXHRpZiAoY21kcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpO1xuXHRcdGNtZHMuZm9yRWFjaCgoY21kKSA9PiB7XG5cdFx0XHRjb25zb2xlLmluZm8oXCIgIFwiLCBgJHtjbWRbMF19JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY21kWzBdLmxlbmd0aCl9YCwgXCIgIFwiLCBjbWRbMV0uaGludCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUVycm9yKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xuXHRzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKTtcblx0aWYgKGVycm9yKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpO1xuXHRcdGlmIChmbGFncz8uZGVidWcpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGNvbG9ycy5yZWQoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRW52YXJzKGVudmFycykge1xuXHRpZiAoZW52YXJzKSB7XG5cdFx0ZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKTtcblx0XHRpZiAoZW52YXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIik7XG5cdFx0XHRjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLmVudmFycy5tYXAoKFtlbnZhcl0pID0+IGVudmFyLmxlbmd0aCkpO1xuXHRcdFx0ZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcblx0XHRcdFx0aWYgKGVudmFyLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihcIktFWVwiKSA8IDAgJiYgcHJvY2Vzcy5lbnZbZW52YXJdKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0XHRcdFx0XCIgIFwiLFxuXHRcdFx0XHRcdFx0YCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLFxuXHRcdFx0XHRcdFx0YCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgICR7aGludH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VGbGFncyhmbGFncykge1xuXHRpZiAoZmxhZ3MpIHtcblx0XHRmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKVxuXHRcdFx0LmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSlcblx0XHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0XHRpZiAoYSA8IGIpIHJldHVybiAtMTtcblx0XHRcdFx0ZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxO1xuXHRcdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkZMQUdTOlwiKTtcblx0XHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KFxuXHRcdFx0XHQuLi5mbGFnc1xuXHRcdFx0XHRcdC5maWx0ZXIoKFssIHsgaGludCB9XSkgPT4gaGludClcblx0XHRcdFx0XHQubWFwKChba2V5LCB7IHBhcmFtIH1dKSA9PiAocGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKSxcblx0XHRcdCk7XG5cdFx0XHRmbGFncy5mb3JFYWNoKChmbGFnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gO1xuXHRcdFx0XHRpZiAoZmxhZ1sxXS5oaW50KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0Y29uc29sZS5pbmZvKFwiVVNBR0U6XCIpO1xuXHRpZiAoc3ViY21kKSB7XG5cdFx0bGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zO1xuXHRcdC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcblx0XHRpZiAocGFyYW1zKSB7XG5cdFx0XHRjb25zdCBvcHRpb25hbGl6ZSA9IChzdHIpID0+XG5cdFx0XHRcdHN0ci5lbmRzV2l0aChcIiAuLi5dXCIpID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWAgOiBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmA7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG5cdFx0XHRcdHBhcmFtcyA9IGAke3BhcmFtcy5tYXAoKHBhcmFtKSA9PiBvcHRpb25hbGl6ZShwYXJhbSkpLmpvaW4oXCIgXCIpfSBgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSAke2NvbG9ycy53aGl0ZShzdWJjbWQpfSAke3BhcmFtcyA/IGAke2NvbG9ycy5ncmVlbihwYXJhbXMpfSBgIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWAsXG5cdFx0KTtcblx0XHRpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKFwiXFxuREVTQ1JJUFRJT046XCIpO1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmluZm8oYCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucylcblx0XHQuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKVxuXHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0aWYgKGEgPCBiKSByZXR1cm4gLTE7XG5cdFx0XHRlbHNlIGlmIChhID4gYikgcmV0dXJuIDE7XG5cdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdH0pO1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIik7XG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gb3B0aW9uc1xuXHRcdFx0Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aCkpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldikpO1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG5cdFx0XHRpZiAob3B0aW9uWzFdLmhpbnQpIHtcblx0XHRcdFx0Y29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWA7XG5cdFx0XHRcdGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0c2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSk7XG5cdHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSk7XG5cdHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pO1xuXHRzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1ZlcnNpb24oKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtjb2xvcnMubWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHN0cikge1xuXHRsZXQgbWF4QXJnc0luZGV4ID0gMDtcblx0aWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0bGV0IG1hdGNoO1xuXHRcdGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nO1xuXHRcdHdoaWxlICgobWF0Y2ggPSByZWdleHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuXHRcdFx0Y29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0sIDEwKSArIDE7XG5cdFx0XHRpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXg7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXhBcmdzSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZHMpIHtcblx0aWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHRPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCgod2lsZGNhcmQpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSlcblx0XHRcdFx0d2lsZGNhcmQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xuXHRcdHdpbGRjYXJkcy5mb3JFYWNoKCh3aWxkY2FyZCkgPT4ge1xuXHRcdFx0Y2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XG5cdFx0XHRjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKTtcblx0XHRcdGlmIChjaGFyIDwgXCIwXCIgfHwgY2hhciA+IFwiOVwiKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFswIC4uIDldXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaWxkY2FyZChzdHIpIHtcblx0cmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0aWYgKGFyZ3MubGVuZ3RoID4gMTApIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIDEwKTtcblx0aWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Zm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XG5cdFx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRcdG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpIDogdmFsdWUsXG5cdFx0KTtcblx0fSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIikge1xuXHRcdG9iaiA9IHJlcGxhY2VPYmplY3RXaWxkY2FyZHMob2JqLCBhcmdzKTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU9iamVjdFdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhvYmopLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcblx0XHRcdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0XHRcdHZhbHVlID0gcmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgYXJncyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2tleSwgdmFsdWVdO1xuXHRcdH0pLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xuXHRpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpO1xuXHRcdGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xuXHRcdFx0b2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHNwbGljZVdpbGRjYXJkKHZhbHVlLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkgOiB2YWx1ZSxcblx0XHQpO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuKHNldHRpbmdzLCBhcmdzKSB7XG5cdGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YDtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRleGVjKGNtZCwgeyB0aW1lb3V0OiBfVE9PTEtJVF9SVU5fVElNRU9VVF9NU0VDUywgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcblx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ZGVycikge1xuXHRcdFx0XHRyZWplY3Qoc3RkZXJyKTtcblx0XHRcdH1cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlKHN0cikge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1xcYihcXHcpL2csIChfbWF0Y2gsIGNhcHR1cmUpID0+IGNhcHR1cmUudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXRmMTZCeXRlcyhzdHIpIHtcblx0Y29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMik7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGJ5dGVzW2kgKiAyXSA9IGNvZGUgPj4gODtcblx0XHRieXRlc1tpICogMiArIDFdID0gY29kZSAmIDB4ZmY7XG5cdH1cblx0cmV0dXJuIGJ5dGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9VdGY4QXJyYXkoc3RyKSB7XG5cdGNvbnN0IHV0ZjggPSBbXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpO1xuXHRcdGVsc2UgaWYgKGNoYXJjb2RlIDwgMHg4MDApIHtcblx0XHRcdHV0ZjgucHVzaCgweGMwIHwgKGNoYXJjb2RlID4+IDYpLCAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7XG5cdFx0XHR1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRpKys7XG5cdFx0XHQvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XG5cdFx0XHQvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXG5cdFx0XHQvLyAyMCBiaXRzIG9mIDB4MC0weEZGRkZGIGludG8gdHdvIGhhbHZlc1xuXHRcdFx0Y2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZikgPDwgMTApIHwgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKTtcblx0XHRcdHV0ZjgucHVzaChcblx0XHRcdFx0MHhmMCB8IChjaGFyY29kZSA+PiAxOCksXG5cdFx0XHRcdDB4ODAgfCAoKGNoYXJjb2RlID4+IDEyKSAmIDB4M2YpLFxuXHRcdFx0XHQweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxuXHRcdFx0XHQweDgwIHwgKGNoYXJjb2RlICYgMHgzZiksXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdXRmODtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHV0ZjhBcnJheVRvU3RyKGFycmF5KSB7XG5cdGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcblx0bGV0IG91dCA9IFwiXCI7XG5cdGxldCBpID0gMDtcblx0bGV0IGM7XG5cdGxldCBjaGFyMiwgY2hhcjM7XG5cdHdoaWxlIChpIDwgbGVuKSB7XG5cdFx0YyA9IGFycmF5W2krK107XG5cdFx0c3dpdGNoIChjID4+IDQpIHtcblx0XHRcdGNhc2UgMDpcblx0XHRcdGNhc2UgMTpcblx0XHRcdGNhc2UgMjpcblx0XHRcdGNhc2UgMzpcblx0XHRcdGNhc2UgNDpcblx0XHRcdGNhc2UgNTpcblx0XHRcdGNhc2UgNjpcblx0XHRcdGNhc2UgNzpcblx0XHRcdFx0Ly8gMHh4eHh4eHhcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxMjpcblx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdC8vIDExMHggeHh4eCAgIDEweHggeHh4eFxuXHRcdFx0XHRjaGFyMiA9IGFycmF5W2krK107XG5cdFx0XHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MWYpIDw8IDYpIHwgKGNoYXIyICYgMHgzZikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdC8vIDExMTAgeHh4eCAgMTB4eCB4eHh4ICAxMHh4IHh4eHhcblx0XHRcdFx0Y2hhcjIgPSBhcnJheVtpKytdO1xuXHRcdFx0XHRjaGFyMyA9IGFycmF5W2krK107XG5cdFx0XHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MGYpIDw8IDEyKSB8ICgoY2hhcjIgJiAweDNmKSA8PCA2KSB8ICgoY2hhcjMgJiAweDNmKSA8PCAwKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uKSB7XG5cdGNvbnN0IHJlYWRsaW5lSW50ZXJmYWNlID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcblx0XHRpbnB1dDogcHJvY2Vzcy5zdGRpbixcblx0XHRvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuXHR9KTtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG5cdFx0cmVhZGxpbmVJbnRlcmZhY2UucXVlc3Rpb24oYCR7cXVlc3Rpb259IGAsIChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKTtcblx0XHRcdHJlc29sdmUocmVzcG9uc2UudHJpbSgpKTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRlcihwcm9taXNlKSB7XG5cdGNvbnN0IGxvYWRpbmcgPSAoKCkgPT4ge1xuXHRcdGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdO1xuXHRcdGxldCBpID0gMDtcblx0XHRyZXR1cm4gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aSA9IGkgPiAzID8gMCA6IGk7XG5cdFx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxiXFxiJHtoW2ldfSBgKTtcblx0XHRcdGkrKztcblx0XHR9LCA1MCk7XG5cdH0pKCk7XG5cdHJldHVybiBwcm9taXNlLnRoZW4oKHJlc3VsdCkgPT4ge1xuXHRcdGNsZWFySW50ZXJ2YWwobG9hZGluZyk7XG5cdFx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hXb3Jrc3BhY2UoKSB7XG5cdGxldCB3b3Jrc3BhY2UgPSBwYXRoLm5vcm1hbGl6ZShwcm9jZXNzLmN3ZCgpKTtcblx0d2hpbGUgKCFmcy5leGlzdHNTeW5jKGAke3dvcmtzcGFjZX0vd2l0bmV0L2Fzc2V0c2ApICYmIHBhdGguZGlybmFtZSh3b3Jrc3BhY2UpICE9PSB3b3Jrc3BhY2UpIHtcblx0XHR3b3Jrc3BhY2UgPSBwYXRoLmRpcm5hbWUod29ya3NwYWNlKTtcblx0fVxuXHRyZXR1cm4gd29ya3NwYWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VDaGVja2xpc3RzKGNoZWNrbGlzdHMpIHtcblx0aWYgKGNoZWNrbGlzdHMgJiYgT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubGVuZ3RoID4gMCkge1xuXHRcdGNvbnN0IGhlYWRsaW5lcyA9IFtcIk5PREVTXCIsIC4uLk9iamVjdC5rZXlzKGNoZWNrbGlzdHMpLm1hcCgoa2V5KSA9PiBgOiR7a2V5fWApXTtcblx0XHRjaGVja2xpc3RzID0gT2JqZWN0LnZhbHVlcyhjaGVja2xpc3RzKTtcblx0XHRjb25zdCB1cmxzID0gT2JqZWN0LmtleXMoY2hlY2tsaXN0c1swXSk7XG5cdFx0Y29uc3QgcmVjb3JkcyA9IHVybHMubWFwKCh1cmwpID0+IHtcblx0XHRcdGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKChjaGVja2xpc3QpID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3IpLmxlbmd0aDtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdGVycm9ycyA9PT0gY2hlY2tsaXN0cy5sZW5ndGggPyBjb2xvcnMucmVkKHVybCkgOiBlcnJvcnMgPiAwID8gY29sb3JzLm15ZWxsb3codXJsKSA6IGNvbG9ycy5tY3lhbih1cmwpLFxuXHRcdFx0XHQuLi5jaGVja2xpc3RzLm1hcCgoY2hlY2tsaXN0KSA9PlxuXHRcdFx0XHRcdGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3Jcblx0XHRcdFx0XHRcdD8gY29sb3JzLnJlZChjaGVja2xpc3RbdXJsXSlcblx0XHRcdFx0XHRcdDogY2hlY2tsaXN0W3VybF0gPT09IHRydWVcblx0XHRcdFx0XHRcdFx0PyBjb2xvcnMubGN5YW4oXCJBeWVcIilcblx0XHRcdFx0XHRcdFx0OiBjb2xvcnMuY3lhbihcIk5heVwiKSxcblx0XHRcdFx0KSxcblx0XHRcdF07XG5cdFx0fSk7XG5cdFx0dHJhY2VUYWJsZShyZWNvcmRzLCB7XG5cdFx0XHRoZWFkbGluZXMsXG5cdFx0XHRtYXhDb2x1bW5XaWR0aDogMzEsXG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlSGVhZGVyKGhlYWRsaW5lLCBjb2xvciA9IG5vcm1hbCwgaW5kZW50ID0gXCJcIikge1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJBgKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtjb2xvcihoZWFkbGluZSl9IOKUgmApO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJhgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVGFibGUocmVjb3Jkcywgb3B0aW9ucykge1xuXHRjb25zdCBzdHJpbmdpZnkgPSAoZGF0YSwgaHVtYW5pemVycywgaW5kZXgpID0+XG5cdFx0aHVtYW5pemVycz8uW2luZGV4XSA/IGh1bWFuaXplcnNbaW5kZXhdKGRhdGEpLnRvU3RyaW5nKCkgOiAoZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiKTtcblx0Y29uc3QgbWF4ID0gKGEsIGIpID0+IChhID4gYiA/IGEgOiBiKTtcblx0Y29uc3QgcmVkdWNlTWF4ID0gKG51bWJlcnMpID0+IG51bWJlcnMucmVkdWNlKChjdXJyLCBwcmV2KSA9PiAocHJldiA+IGN1cnIgPyBwcmV2IDogY3VyciksIDApO1xuXHRpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcblx0Y29uc3QgaW5kZW50ID0gb3B0aW9ucz8uaW5kZW50IHx8IFwiXCI7XG5cdGNvbnN0IG51bUNvbHVtbnMgPSByZWR1Y2VNYXgocmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkPy5sZW5ndGggfHwgMSkpO1xuXHRjb25zdCBtYXhDb2x1bW5XaWR0aCA9IG9wdGlvbnM/Lm1heENvbHVtbldpZHRoIHx8IDgwO1xuXHRjb25zdCB0YWJsZSA9IHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKTtcblx0b3B0aW9ucy53aWR0aHMgPVxuXHRcdG9wdGlvbnM/LndpZHRocyB8fFxuXHRcdHRhYmxlLm1hcCgoY29sdW1uLCBpbmRleCkgPT4ge1xuXHRcdFx0bGV0IG1heFdpZHRoID0gcmVkdWNlTWF4KGNvbHVtbi5tYXAoKGZpZWxkKSA9PiBjb2xvcnN0cmlwKHN0cmluZ2lmeShmaWVsZCwgb3B0aW9ucz8uaHVtYW5pemVycywgaW5kZXgpKS5sZW5ndGgpKTtcblx0XHRcdGlmIChvcHRpb25zPy5oZWFkbGluZXM/LltpbmRleF0pIHtcblx0XHRcdFx0bWF4V2lkdGggPSBtYXgobWF4V2lkdGgsIGNvbG9yc3RyaXAob3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpKS5sZW5ndGgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1hdGgubWluKG1heFdpZHRoLCBtYXhDb2x1bW5XaWR0aCk7XG5cdFx0fSk7XG5cdGxldCBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgpID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pSs4pSAXCIpfeKUgOKUkGApO1xuXHRpZiAob3B0aW9ucz8uaGVhZGxpbmVzKSB7XG5cdFx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoLCBpbmRleCkgPT4ge1xuXHRcdFx0Y29uc3QgY2FwdGlvbiA9IG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKTtcblx0XHRcdGNvbnN0IGNhcHRpb25MZW5ndGggPSBjb2xvcnN0cmlwKGNhcHRpb24pLmxlbmd0aDtcblx0XHRcdHJldHVybiBgJHt3aGl0ZShjYXB0aW9uKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGNhcHRpb25MZW5ndGgpfWA7XG5cdFx0fSk7XG5cdFx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtoZWFkbGluZS5qb2luKFwiIOKUgiBcIil9IOKUgmApO1xuXHRcdGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0XHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUnOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUvOKUgFwiKX3ilIDilKRgKTtcblx0fVxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgbGluZSA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyBqKyspIHtcblx0XHRcdGxldCBkYXRhID0gdGFibGVbal1baV07XG5cdFx0XHRsZXQgY29sb3I7XG5cdFx0XHRpZiAob3B0aW9ucz8uY29sb3JzPy5bal0pIHtcblx0XHRcdFx0Y29sb3IgPSBvcHRpb25zLmNvbG9yc1tqXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbG9yID1cblx0XHRcdFx0XHR0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHRcdFx0PyBncmVlblxuXHRcdFx0XHRcdFx0OiBOdW1iZXIoZGF0YSkgPT09IGRhdGEgJiYgZGF0YSAlIDEgIT09IDAgLy8gaXMgZmxvYXQgbnVtYmVyP1xuXHRcdFx0XHRcdFx0XHQ/IHllbGxvd1xuXHRcdFx0XHRcdFx0XHQ6ICh4KSA9PiB4O1xuXHRcdFx0fVxuXHRcdFx0ZGF0YSA9IHN0cmluZ2lmeShkYXRhLCBvcHRpb25zPy5odW1hbml6ZXJzLCBqKTtcblx0XHRcdGlmIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoKSB7XG5cdFx0XHRcdHdoaWxlIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoIC0gMykge1xuXHRcdFx0XHRcdGRhdGEgPSBkYXRhLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhICs9IFwiLi4uXCI7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBkYXRhTGVuZ3RoID0gY29sb3JzdHJpcChkYXRhKS5sZW5ndGg7XG5cdFx0XHRpZiAob3B0aW9ucz8uaGVhZGxpbmVzICYmIG9wdGlvbnMuaGVhZGxpbmVzW2pdWzBdID09PSBcIjpcIikge1xuXHRcdFx0XHRkYXRhID0gYCR7Y29sb3IoZGF0YSl9JHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGF0YSA9IGAke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfSR7Y29sb3IoZGF0YSl9YDtcblx0XHRcdH1cblx0XHRcdGxpbmUgKz0gYOKUgiAke2RhdGF9IGA7XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR9JHtsaW5lfeKUgmApO1xuXHR9XG5cdGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLTilIBcIil94pSA4pSYYCk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKSB7XG5cdGNvbnN0IGNvbHVtbnMgPSBbXTtcblx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvbHVtbnM7IGluZGV4KyspIHtcblx0XHRjb2x1bW5zLnB1c2gocmVjb3Jkcy5tYXAoKHJvdykgPT4gcm93W2luZGV4XSkpO1xuXHR9XG5cdHJldHVybiBjb2x1bW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHhKc29uUmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuXHRzd2l0Y2ggKGtleSkge1xuXHRcdGNhc2UgXCJieXRlc1wiOlxuXHRcdGNhc2UgXCJkZXJcIjpcblx0XHRcdHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSk7XG5cdFx0Y2FzZSBcInR4XCI6XG5cdFx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKTtcblx0XHRjYXNlIFwiY2hhbmdlXCI6XG5cdFx0Y2FzZSBcImZlZXNcIjpcblx0XHRjYXNlIFwidmFsdWVcIjpcblx0XHRcdHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApIC8gMTAgKiogOTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eFJlY2VpcHRKc29uUmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuXHRzd2l0Y2ggKGtleSkge1xuXHRcdGNhc2UgXCJieXRlc1wiOlxuXHRcdGNhc2UgXCJkZXJcIjpcblx0XHRcdHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSk7XG5cdFx0Y2FzZSBcInR4XCI6XG5cdFx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKTtcblx0XHRjYXNlIFwiY2hhbmdlXCI6XG5cdFx0Y2FzZSBcImZlZXNcIjpcblx0XHRjYXNlIFwidmFsdWVcIjpcblx0XHRcdHJldHVybiBwYXJzZUludCh2YWx1ZT8ucGVkcm9zLCAxMCkgLyAxMCAqKiA5O1xuXHRcdGNhc2UgXCJ0aW1lc3RhbXBcIjpcblx0XHRcdHJldHVybiBtb21lbnQudW5peCh2YWx1ZSkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIik7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludChyZWNlaXB0KSB7XG5cdGlmIChyZWNlaXB0Py5jb25maXJtYXRpb25zKSB7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBDaGVja3BvaW50ICMke2NvbW1hcyhyZWNlaXB0LmNvbmZpcm1hdGlvbnMpfS4uLmApO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UocmVjZWlwdCkge1xuXHRjb25zdCBjYXB0aW9ucyA9IHtcblx0XHRwZW5kaW5nOiBcIkF3YWl0aW5nIHJlbGF5Li4uXCIsXG5cdFx0Ly8gY29uZmlybWVkOiBcIlRyYW5zYWN0aW9uIGNvbmZpcm1lZDpcIixcblx0XHQvLyBmaW5hbGl6ZWQ6IFwiVHJhbnNhY3Rpb24gZmluYWxpemVkOlwiLFxuXHRcdHJlbGF5ZWQ6IFwiQXdhaXRpbmcgaW5jbHVzaW9uLi4uXCIsXG5cdFx0bWluZWQ6IFwiQXdhaXRpbmcgY29uZmlybWF0aW9ucy4uLlwiLFxuXHR9O1xuXHRjb25zdCBjYXB0aW9uID0gY2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdO1xuXHRpZiAoY2FwdGlvbikgY29uc29sZS5pbmZvKGAgPiAke2NhcHRpb25zW3JlY2VpcHQuc3RhdHVzXX1gKTtcblx0aWYgKFtcImZpbmFsaXplZFwiLCBcImNvbmZpcm1lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IEJsb2NrIGhhc2g6ICAgJHtjb2xvcnMuZ3JheShyZWNlaXB0Py5ibG9ja0hhc2gpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgbWluZXI6ICAke2NvbG9ycy5jeWFuKHJlY2VpcHQ/LmJsb2NrTWluZXIpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgZXBvY2g6ICAke2NvbG9ycy53aGl0ZShjb21tYXMocmVjZWlwdD8uYmxvY2tFcG9jaCkpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdGAgPiBJbmNsdWRlZCBhdDogICR7Y29sb3JzLmdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQ/LmJsb2NrVGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YCxcblx0XHQpO1xuXHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdGAgPiAke3JlY2VpcHQuc3RhdHVzWzBdLnRvVXBwZXJDYXNlKCkgKyByZWNlaXB0LnN0YXR1cy5zbGljZSgxKX0gYXQ6ICR7Y29sb3JzLm1ncmVlbihtb21lbnQudW5peChyZWNlaXB0LnRpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWAsXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQocmVjZWlwdCkge1xuXHRjb25zdCBjYXB0aW9ucyA9IHtcblx0XHREYXRhUmVxdWVzdDogXCIgPiBEUlQgaGFzaDogICAgIFwiLFxuXHRcdFZhbHVlVHJhbnNmZXI6IFwiID4gVlRUIGhhc2g6ICAgICBcIixcblx0fTtcblx0Y29uc29sZS5pbmZvKGAke2NhcHRpb25zW3JlY2VpcHQudHlwZV0gfHwgXCIgPiBUWCBoYXNoOiAgICAgIFwifSR7Y29sb3JzLndoaXRlKHJlY2VpcHQuaGFzaCl9YCk7XG5cdGlmIChyZWNlaXB0Py5kcm9IYXNoKSBjb25zb2xlLmluZm8oYCA+IERSTyBoYXNoOiAgICAgJHtjb2xvcnMuZ3JlZW4ocmVjZWlwdC5kcm9IYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LnJhZEhhc2gpIGNvbnNvbGUuaW5mbyhgID4gUkFEIGhhc2g6ICAgICAke2NvbG9ycy5tZ3JlZW4ocmVjZWlwdC5yYWRIYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LmRyb1NMQSkgY29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApO1xuXHRpZiAocmVjZWlwdD8ud2l0aGRyYXdlcikge1xuXHRcdGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgID4gVmFsaWRhdG9yOiAgICAke2NvbG9ycy5tY3lhbihyZWNlaXB0LnZhbGlkYXRvcil9YCk7XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0aGRyYXdlcjogICAke2NvbG9ycy5tbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXTtcblx0XHRjb25zb2xlLmluZm8oYCA+IFNpZ25lci9zOiAgICAgJHtjb2xvcnMubW1hZ2VudGEoc2lnbmVyc1swXSl9YCk7XG5cdFx0c2lnbmVycy5zbGljZSgxKS5mb3JFYWNoKChzaWduZXIpID0+IHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgICAgICAgICAgICAgICAgICAke2NvbG9ycy5tbWFnZW50YShzaWduZXIpfWApO1xuXHRcdH0pO1xuXHR9XG5cdGlmIChyZWNlaXB0Py5yZWNpcGllbnRzKSB7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IFJlY2lwaWVudC9zOiAgJHtjb2xvcnMubWJsdWUoXG5cdFx0XHRcdHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKSxcblx0XHRcdCl9YCxcblx0XHQpO1xuXHR9XG5cdGlmIChyZWNlaXB0Py5mZWVzKSBjb25zb2xlLmluZm8oYCA+IE5ldHdvcmsgZmVlOiAgJHtjb2xvcnMueWVsbG93KHJlY2VpcHQuZmVlcy50b1N0cmluZygyKSl9YCk7XG5cdGlmIChyZWNlaXB0Py52YWx1ZSkgY29uc29sZS5pbmZvKGAgPiBWYWx1ZTogICAgICAgICR7Y29sb3JzLm15ZWxsb3cocmVjZWlwdC52YWx1ZS50b1N0cmluZygyKSl9YCk7XG5cdGlmIChyZWNlaXB0Py53ZWlnaHQpIGNvbnNvbGUuaW5mbyhgID4gV2VpZ2h0OiAgICAgICAke2NvbG9ycy5tZ3JlZW4oY29tbWFzKHJlY2VpcHQud2VpZ2h0KSl9YCk7XG5cdGlmIChyZWNlaXB0Py53aXRuZXNzZXMpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IFdpdG5lc3NlczogICAgJHtyZWNlaXB0LndpdG5lc3Nlc31gKTtcblx0fVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbih0cmFuc21pdHRlciwgb3B0aW9ucykge1xuXHRjb25zdCBjb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8ICgoeCkgPT4gYFxceDFiWzMwOzQ1bSR7eH1cXHgxYlswbWApO1xuXHRsZXQgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNpZ25UcmFuc2FjdGlvbihvcHRpb25zLCBvcHRpb25zPy5yZWxvYWQpO1xuXHRpZiAob3B0aW9ucz8udmVyYm9zZSkge1xuXHRcdGNvbnNvbGUuaW5mbyhgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KHJlY2VpcHQudHgsIHR4SnNvblJlcGxhY2VyKSl9YCk7XG5cdH1cblx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lKSB7XG5cdFx0Y29uc29sZS5pbmZvKGBcXG4gJHtjb2xvcihgICAke29wdGlvbnMuaGVhZGxpbmV9ICBgKX1cXG5gKTtcblx0fVxuXHR0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KTtcblx0aWYgKCFvcHRpb25zPy5mb3JjZSkge1xuXHRcdC8vIHByb21wdCB1c2VyIGNvbmZpcm1hdGlvblxuXHRcdGNvbnNvbGUuaW5mbygpO1xuXHRcdGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlcXVpcmUoXCJpbnF1aXJlclwiKS5jcmVhdGVQcm9tcHRNb2R1bGUoKShbXG5cdFx0XHR7XG5cdFx0XHRcdG1lc3NhZ2U6IFwiU2VuZCB0cmFuc2FjdGlvbj9cIixcblx0XHRcdFx0dHlwZTogXCJjb25maXJtXCIsXG5cdFx0XHRcdG5hbWU6IFwiY29udGludWVcIixcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0XHR9LFxuXHRcdF0pO1xuXHRcdGlmICghYW5zd2VyLmNvbnRpbnVlKSB7XG5cdFx0XHRyZXR1cm4gcmVjZWlwdDtcblx0XHR9XG5cdH1cblx0dHJ5IHtcblx0XHRjb25zb2xlLmluZm8oKTtcblx0XHRyZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2VuZFRyYW5zYWN0aW9uKCk7XG5cdFx0aWYgKG9wdGlvbnM/LmF3YWl0IHx8IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLmNvbmZpcm1UcmFuc2FjdGlvbihyZWNlaXB0Lmhhc2gsIHtcblx0XHRcdFx0Y29uZmlybWF0aW9uczogb3B0aW9ucz8uY29uZmlybWF0aW9ucyB8fCAwLFxuXHRcdFx0XHRvbkNoZWNrcG9pbnQ6IHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXG5cdFx0XHRcdG9uU3RhdHVzQ2hhbmdlOiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZGF0YSA9IHtcblx0XHRcdFx0c3RhdHVzOiByZWNlaXB0Py5zdGF0dXMsXG5cdFx0XHRcdHRpbWVzdGFtcDogcmVjZWlwdD8udGltZXN0YW1wIHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuXHRcdFx0fTtcblx0XHRcdGNvbnNvbGUuaW5mbyhkYXRhKTtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmIChlcnI/LmluRmxpZ2h0ICYmIGVyci5pbkZsaWdodCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKGBcXG4ke2NvbG9ycy5ncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gKTtcblx0XHR9XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG5cdHJldHVybiByZWNlaXB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVTbGFzaGVzKHN0cikge1xuXHQvLyBhZGQgYW5vdGhlciBlc2NhcGVkIHNsYXNoIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFuIG9kZFxuXHQvLyBudW1iZXIgb2YgZXNjYXBlZCBzbGFzaGVzIHdoaWNoIHdpbGwgY3Jhc2ggSlNPTi5wYXJzZVxuXHRsZXQgcGFyc2VkU3RyID0gc3RyLnJlcGxhY2UoLyhefFteXFxcXF0pKFxcXFxcXFxcKSpcXFxcJC8sIFwiJCZcXFxcXCIpO1xuXG5cdC8vIGVzY2FwZSB1bmVzY2FwZWQgZG91YmxlIHF1b3RlcyB0byBwcmV2ZW50IGVycm9yIHdpdGhcblx0Ly8gYWRkZWQgZG91YmxlIHF1b3RlcyBpbiBqc29uIHN0cmluZ1xuXHRwYXJzZWRTdHIgPSBwYXJzZWRTdHIucmVwbGFjZSgvKF58W15cXFxcXSkoKFxcXFxcXFxcKSpcIikvZywgXCIkMVxcXFwkMlwiKTtcblxuXHR0cnkge1xuXHRcdHBhcnNlZFN0ciA9IEpTT04ucGFyc2UoYFwiJHtwYXJzZWRTdHJ9XCJgKTtcblx0fSBjYXRjaCAoX2UpIHtcblx0XHRyZXR1cm4gc3RyO1xuXHR9XG5cdHJldHVybiBwYXJzZWRTdHI7XG59XG4iXX0=
|
|
875
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDakMsR0FBRyxDQUFDLE9BQU8sQ0FBQyw2RUFBNkUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNoQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sTUFBTSxHQUNYLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3JELENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENB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S0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBQ3BELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBQ3JELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBQ25ELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRXRELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2pELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2pELE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2xELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3BELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ25ELE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQy9DLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQy9DLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0FBQ2hELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdB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TUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzdDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE1BQU0sY0FBYyxHQUFHLE9BQU8sRUFBRSxjQUFjLElBQUksRUFBRSxDQUFDO0lBQ3JELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0MsT0FBTyxDQUFDLE1BQU07UUFDYixPQUFPLEVBQUUsTUFBTTtZQUNmLEtBQUssQ0FBQyxH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QUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxNQUFNLEdBQUcsQ0FBQztJQUNYLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFHO0lBQ2xDLDJEQUEyRDtJQUMzRCx3REFBd0Q7SUFDeEQsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUzRCx1REFBdUQ7SUFDdkQscUNBQXFDO0lBQ3JDLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLElBQUksQ0FBQztRQUNKLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjLCBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0ICogYXMgbmV0IGZyb20gXCJub2RlOm5ldFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm5vZGU6b3NcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCAqIGFzIHJlYWRsaW5lIGZyb20gXCJub2RlOnJlYWRsaW5lXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcblxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcbmNvbnN0IF9UT09MS0lUX1JVTl9USU1FT1VUX01TRUNTID0gMzAwMDA7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT5cblx0c3RyLnJlcGxhY2UoL1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywgXCJcIik7XG5cbmV4cG9ydCBjb25zdCBjb21tYXMgPSAobnVtYmVyKSA9PiB7XG5cdGNvbnN0IHBhcnRzID0gbnVtYmVyLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuXHRjb25zdCByZXN1bHQgPVxuXHRcdHBhcnRzLmxlbmd0aCA8PSAxXG5cdFx0XHQ/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXG5cdFx0XHQ6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWRUcnVuYyh4LCBuKSB7XG5cdGNvbnN0IHYgPSAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgPyB4IDogeC50b1N0cmluZygpKS5zcGxpdChcIi5cIik7XG5cdGlmIChuIDw9IDApIHJldHVybiB2WzBdO1xuXHRsZXQgZiA9IHZbMV0gfHwgXCJcIjtcblx0aWYgKGYubGVuZ3RoID4gbikgcmV0dXJuIGAke3ZbMF19LiR7Zi5zdWJzdHIoMCwgbil9YDtcblx0d2hpbGUgKGYubGVuZ3RoIDwgbikgZiArPSBcIjBcIjtcblx0cmV0dXJuIGAke3ZbMF19LiR7Zn1gO1xufVxuXG5leHBvcnQgY29uc3Qgd2hvbGVfd2l0cyA9IChudW1iZXIsIGRpZ2l0cykgPT4ge1xuXHRjb25zdCBsb29rdXAgPSBbXG5cdFx0eyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiA2biwgc3ltYm9sOiBcIm1XaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogOW4sIHN5bWJvbDogXCIgV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogMTVuLCBzeW1ib2w6IFwiTVdpdHNcIiB9LFxuXHRdO1xuXHQvLyBjb25zdCByZWdleHAgPSAvXFwuMCskfCg/PD1cXC5bMC05XSkwKyQvXG5cdGNvbnN0IGl0ZW0gPSBsb29rdXAuZmluZExhc3QoKGl0ZW0pID0+IG51bWJlciA+PSBpdGVtLnZhbHVlKTtcblx0Y29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKTtcblx0Y29uc3QgZGVjaW1hbHMgPSBpdGVtID8gKGl0ZW0udmFsdWUgKyBCaWdJbnQobnVtYmVyKSAtIEJpZ0ludChxdW90aWVudCkgKiBpdGVtLnZhbHVlKS50b1N0cmluZygpLnNsaWNlKDEpIDogXCJcIjtcblx0cmV0dXJuIGl0ZW1cblx0XHQ/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWBcblx0XHQ6IFwiKG5vIGNvaW5zKVwiO1xufTtcblxuY29uc3QgYmJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5ODs0NG0ke3N0cn1cXHgxYlswOzA7MG1gO1xuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBiZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDJtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBicmVkID0gKHN0cikgPT4gYFxceDFiWzMwOzQxbSR7c3RyfVxceDFiWzA7MG1gO1xuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYDtcblxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBsZ3JheSA9IChzdHIpID0+IGBcXHgxYlsxOzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxncmVlbiA9IChzdHIpID0+IGBcXHgxYlsxOzkybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlsxOzkzbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ibHVlID0gKHN0cikgPT4gYFxceDFiWzk0bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ncmVlbiA9IChzdHIpID0+IGBcXHgxYls5Mm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzk1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbXllbGxvdyA9IChzdHIpID0+IGBcXHgxYls5M20ke3N0cn1cXHgxYlswbWA7XG5cbmNvbnN0IGJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMzRtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgY3lhbiA9IChzdHIpID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDszNW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgcmVkID0gKHN0cikgPT4gYFxceDFiWzMxbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IHdoaXRlID0gKHN0cikgPT4gYFxceDFiWzE7OThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYDtcblxuZXhwb3J0IGNvbnN0IGNvbG9ycyA9IHtcblx0YmJsdWUsXG5cdGJjeWFuLFxuXHRiZ3JlZW4sXG5cdGJyZWQsXG5cdGJ2aW9sZXQsXG5cdGxjeWFuLFxuXHRsZ3JheSxcblx0bGdyZWVuLFxuXHRsbWFnZW50YSxcblx0bHllbGxvdyxcblx0bWJsdWUsXG5cdG1jeWFuLFxuXHRtZ3JlZW4sXG5cdG1tYWdlbnRhLFxuXHRtcmVkLFxuXHRteWVsbG93LFxuXHRibHVlLFxuXHRjeWFuLFxuXHRncmF5LFxuXHRncmVlbixcblx0bWFnZW50YSxcblx0bm9ybWFsLFxuXHRyZWQsXG5cdHdoaXRlLFxuXHR5ZWxsb3csXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY291bnRMZWF2ZXModCwgb2JqKSB7XG5cdGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwO1xuXHRpZiAob2JqIGluc3RhbmNlb2YgdCkgcmV0dXJuIDE7XG5cdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKTtcblx0ZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVFeHRyYUZsYWdzKGFyZ3MpIHtcblx0cmV0dXJuIGFyZ3MuZmlsdGVyKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi0tXCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNtZCh0aW1lb3V0LCAuLi5jb21tYW5kcykge1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdGNvbnN0IFtiaW4sIC4uLmFyZ3NdID0gY29tbWFuZHM7XG5cdFx0Y29uc3QgY2hpbGQgPSBzcGF3bihiaW4sIGFyZ3MsIHtcblx0XHRcdGRldGFjaGVkOiBwcm9jZXNzLmVudi5XSVRTREtfRFJZX1JVTl9ERVRBQ0hFRCB8fCBmYWxzZSxcblx0XHRcdHNoZWxsOiBwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIsXG5cdFx0XHRzdGRpbzogW1wiaWdub3JlXCIsIFwicGlwZVwiLCBcInBpcGVcIl0sXG5cdFx0XHRlbnY6IHtcblx0XHRcdFx0Li4ucHJvY2Vzcy5lbnYsXG5cdFx0XHRcdE5QTV9DT05GSUdfWUVTOiBcInRydWVcIiwgLy8gPT4gcHJldmVudHMgbnB4IGZyb20gc3Bhd25pbmcgaW50ZXJhY3RpdmUgcHJvbXB0c1xuXHRcdFx0fSxcblx0XHR9KTtcblxuXHRcdGxldCBzdGRvdXQgPSBcIlwiO1xuXHRcdGxldCBzdGRlcnIgPSBcIlwiO1xuXHRcdGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuXG5cdFx0Y29uc3Qga2lsbFRyZWUgPSAoKSA9PiB7XG5cdFx0XHRpZiAoIWNoaWxkLnBpZCkgcmV0dXJuO1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKHByb2Nlc3MucGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuXHRcdFx0XHRcdHNwYXduKFwidGFza2tpbGxcIiwgW1wiL1BJRFwiLCBjaGlsZC5waWQudG9TdHJpbmcoKSwgXCIvVFwiLCBcIi9GXCJdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBraWxsIGVudGlyZSBwcm9jZXNzIGdyb3VwXG5cdFx0XHRcdFx0cHJvY2Vzcy5raWxsKC1jaGlsZC5waWQsIFwiU0lHS0lMTFwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCB7fVxuXHRcdH07XG5cblx0XHRjb25zdCB0aW1lciA9XG5cdFx0XHR0aW1lb3V0ID4gMFxuXHRcdFx0XHQ/IHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGZpbmlzaGVkKSByZXR1cm47XG5cdFx0XHRcdFx0XHRmaW5pc2hlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRraWxsVHJlZSgpO1xuXHRcdFx0XHRcdH0sIHRpbWVvdXQpXG5cdFx0XHRcdDogbnVsbDtcblxuXHRcdGNoaWxkLnN0ZG91dC5vbihcImRhdGFcIiwgKGQpID0+IChzdGRvdXQgKz0gZC50b1N0cmluZygpKSk7XG5cdFx0Y2hpbGQuc3RkZXJyLm9uKFwiZGF0YVwiLCAoZCkgPT4gKHN0ZGVyciArPSBkLnRvU3RyaW5nKCkpKTtcblxuXHRcdGNoaWxkLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ge1xuXHRcdFx0aWYgKGZpbmlzaGVkKSByZXR1cm47XG5cdFx0XHRmaW5pc2hlZCA9IHRydWU7XG5cdFx0XHRpZiAodGltZXIpIGNsZWFyVGltZW91dCh0aW1lcik7XG5cdFx0XHRraWxsVHJlZSgpO1xuXHRcdFx0cmVqZWN0KGVycik7XG5cdFx0fSk7XG5cblx0XHRjaGlsZC5vbihcImNsb3NlXCIsIChjb2RlLCBzaWduYWwpID0+IHtcblx0XHRcdGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuXHRcdFx0ZmluaXNoZWQgPSB0cnVlO1xuXHRcdFx0aWYgKHRpbWVyKSBjbGVhclRpbWVvdXQodGltZXIpO1xuXG5cdFx0XHRpZiAoc2lnbmFsKSB7XG5cdFx0XHRcdHJlamVjdChuZXcgRXJyb3IoYG5weCB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCAke3NpZ25hbH1gKSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGNvZGUgIT09IDApIHtcblx0XHRcdFx0cmVqZWN0KG5ldyBFcnJvcihgbnB4IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAke2NvZGV9XFxuJHtzdGRlcnJ9YCkpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjUmFkb25CeXRlY29kZShieXRlY29kZSwgdGltZW91dCwgLi4uZmxhZ3MpIHtcblx0aWYgKCFpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHR0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/IFwibnB4LmNtZFwiIDogXCJucHhcIjtcblx0XHRyZXR1cm4gY21kKHRpbWVvdXQsIG5weCwgXCJ3aXRzZGtcIiwgXCJyYWRvblwiLCBcImRyeS1ydW5cIiwgYnl0ZWNvZGUsIC4uLmZsYWdzKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzKGFyZ3MsIGZsYWdzKSB7XG5cdGNvbnN0IGN1cmF0ZWQgPSB7fTtcblx0aWYgKGFyZ3MgJiYgZmxhZ3MpIHtcblx0XHRPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaCgoZmxhZykgPT4ge1xuXHRcdFx0Y29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKTtcblx0XHRcdGlmIChmbGFnSW5kZXggPj0gMCkge1xuXHRcdFx0XHRpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdO1xuXHRcdFx0XHRcdGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV07XG5cdFx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gdHJ1ZTtcblx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIFthcmdzLCBjdXJhdGVkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21IZXhTdHJpbmcoaGV4U3RyaW5nKSB7XG5cdGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMik7XG5cdHJldHVybiBVaW50OEFycmF5LmZyb20oaGV4U3RyaW5nLm1hdGNoKC8uezEsMn0vZykubWFwKChieXRlKSA9PiBwYXJzZUludChieXRlLCAxNikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QoaXApIHtcblx0aWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHtcblx0XHRpcCA9IGlwLnN1YnN0cmluZyg3KTtcblx0fVxuXG5cdGlmIChuZXQuaXNJUHY0KGlwKSkge1xuXHRcdC8vIGNoZWNrIGxvY2FsaG9zdFxuXHRcdGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcblx0XHRyZXR1cm4gKFxuXHRcdFx0L14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHxcblx0XHRcdC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fFxuXHRcdFx0L14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxuXHRcdCk7XG5cdH1cblxuXHQvLyBlbHNlOiBpcCBpcyBJUHY2XG5cdGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKChlbCkgPT4gISFlbCk7IC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxuXG5cdC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcblx0aWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZTtcblx0Ly8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxuXHRlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxuXHQvLyBSYW5nZTogZmMwMCAtIGZjZmZcblx0ZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZTtcblx0Ly8gUmFuZ2U6IGZkMDAgLSBmY2ZmXG5cdGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcblx0ZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWU7XG5cdC8vIERpc2NhcmQgUHJlZml4XG5cdGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWU7XG5cblx0Ly8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGgoc3RyLCBsZW5ndGgpIHtcblx0cmV0dXJuIChcblx0XHQoaXNIZXhTdHJpbmcoc3RyKSAmJiAoKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHwgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMikpIHx8XG5cdFx0aXNXaWxkY2FyZChzdHIpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFN0cmluZyhzdHIpIHtcblx0cmV0dXJuIChcblx0XHQodHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHwgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpKSkgfHxcblx0XHRpc1dpbGRjYXJkKHN0cilcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4U3RyaW5nKGJ1ZmZlciwgcHJlZml4MHggPSBmYWxzZSkge1xuXHRpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblx0cmV0dXJuIChcblx0XHQocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArXG5cdFx0QXJyYXkucHJvdG90eXBlLm1hcFxuXHRcdFx0LmNhbGwoYnVmZmVyLCAoeCkgPT4gYDAwJHt4LnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQubWF0Y2goL1thLWZBLUYwLTldezJ9L2cpXG5cdFx0XHQuam9pbihcIlwiKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVUkwodXJsKSB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuXHRcdHJldHVybiBbYCR7cGFyc2VkVXJsLnByb3RvY29sfS8vYCwgcGFyc2VkVXJsLmhvc3QsIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSwgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKV07XG5cdH0gY2F0Y2gge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIG1vZHVsZSkge1xuXHRzaG93VXNhZ2VIZWFkbGluZShjbWQpO1xuXHRzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncyB9KTtcblx0c2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pO1xuXHRzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KTtcblx0c2hvd1VzYWdlRW52YXJzKHsgLi4ubW9kdWxlPy5lbnZhcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIocm91dGVyKSB7XG5cdGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpO1xuXHRpZiAoY21kcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpO1xuXHRcdGNtZHMuZm9yRWFjaCgoY21kKSA9PiB7XG5cdFx0XHRjb25zb2xlLmluZm8oXCIgIFwiLCBgJHtjbWRbMF19JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY21kWzBdLmxlbmd0aCl9YCwgXCIgIFwiLCBjbWRbMV0uaGludCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUVycm9yKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xuXHRzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKTtcblx0aWYgKGVycm9yKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpO1xuXHRcdGlmIChmbGFncz8uZGVidWcpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGNvbG9ycy5yZWQoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRW52YXJzKGVudmFycykge1xuXHRpZiAoZW52YXJzKSB7XG5cdFx0ZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKTtcblx0XHRpZiAoZW52YXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIik7XG5cdFx0XHRjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLmVudmFycy5tYXAoKFtlbnZhcl0pID0+IGVudmFyLmxlbmd0aCkpO1xuXHRcdFx0ZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcblx0XHRcdFx0aWYgKGVudmFyLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihcIktFWVwiKSA8IDAgJiYgcHJvY2Vzcy5lbnZbZW52YXJdKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0XHRcdFx0XCIgIFwiLFxuXHRcdFx0XHRcdFx0YCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLFxuXHRcdFx0XHRcdFx0YCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgICR7aGludH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VGbGFncyhmbGFncykge1xuXHRpZiAoZmxhZ3MpIHtcblx0XHRmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKVxuXHRcdFx0LmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSlcblx0XHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0XHRpZiAoYSA8IGIpIHJldHVybiAtMTtcblx0XHRcdFx0ZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxO1xuXHRcdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkZMQUdTOlwiKTtcblx0XHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KFxuXHRcdFx0XHQuLi5mbGFnc1xuXHRcdFx0XHRcdC5maWx0ZXIoKFssIHsgaGludCB9XSkgPT4gaGludClcblx0XHRcdFx0XHQubWFwKChba2V5LCB7IHBhcmFtIH1dKSA9PiAocGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKSxcblx0XHRcdCk7XG5cdFx0XHRmbGFncy5mb3JFYWNoKChmbGFnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gO1xuXHRcdFx0XHRpZiAoZmxhZ1sxXS5oaW50KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0Y29uc29sZS5pbmZvKFwiVVNBR0U6XCIpO1xuXHRpZiAoc3ViY21kKSB7XG5cdFx0bGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zO1xuXHRcdC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcblx0XHRpZiAocGFyYW1zKSB7XG5cdFx0XHRjb25zdCBvcHRpb25hbGl6ZSA9IChzdHIpID0+XG5cdFx0XHRcdHN0ci5lbmRzV2l0aChcIiAuLi5dXCIpID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWAgOiBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmA7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG5cdFx0XHRcdHBhcmFtcyA9IGAke3BhcmFtcy5tYXAoKHBhcmFtKSA9PiBvcHRpb25hbGl6ZShwYXJhbSkpLmpvaW4oXCIgXCIpfSBgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSAke2NvbG9ycy53aGl0ZShzdWJjbWQpfSAke3BhcmFtcyA/IGAke2NvbG9ycy5ncmVlbihwYXJhbXMpfSBgIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWAsXG5cdFx0KTtcblx0XHRpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKFwiXFxuREVTQ1JJUFRJT046XCIpO1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmluZm8oYCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucylcblx0XHQuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKVxuXHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0aWYgKGEgPCBiKSByZXR1cm4gLTE7XG5cdFx0XHRlbHNlIGlmIChhID4gYikgcmV0dXJuIDE7XG5cdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdH0pO1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIik7XG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gb3B0aW9uc1xuXHRcdFx0Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aCkpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldikpO1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG5cdFx0XHRpZiAob3B0aW9uWzFdLmhpbnQpIHtcblx0XHRcdFx0Y29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWA7XG5cdFx0XHRcdGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0c2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSk7XG5cdHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSk7XG5cdHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pO1xuXHRzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1ZlcnNpb24oKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtjb2xvcnMubWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHN0cikge1xuXHRsZXQgbWF4QXJnc0luZGV4ID0gMDtcblx0aWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0bGV0IG1hdGNoO1xuXHRcdGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nO1xuXHRcdHdoaWxlICgobWF0Y2ggPSByZWdleHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuXHRcdFx0Y29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0sIDEwKSArIDE7XG5cdFx0XHRpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXg7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXhBcmdzSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZHMpIHtcblx0aWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHRPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCgod2lsZGNhcmQpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSlcblx0XHRcdFx0d2lsZGNhcmQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xuXHRcdHdpbGRjYXJkcy5mb3JFYWNoKCh3aWxkY2FyZCkgPT4ge1xuXHRcdFx0Y2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XG5cdFx0XHRjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKTtcblx0XHRcdGlmIChjaGFyIDwgXCIwXCIgfHwgY2hhciA+IFwiOVwiKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFswIC4uIDldXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaWxkY2FyZChzdHIpIHtcblx0cmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0aWYgKGFyZ3MubGVuZ3RoID4gMTApIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIDEwKTtcblx0aWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Zm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XG5cdFx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRcdG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpIDogdmFsdWUsXG5cdFx0KTtcblx0fSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIikge1xuXHRcdG9iaiA9IHJlcGxhY2VPYmplY3RXaWxkY2FyZHMob2JqLCBhcmdzKTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU9iamVjdFdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhvYmopLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcblx0XHRcdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0XHRcdHZhbHVlID0gcmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgYXJncyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2tleSwgdmFsdWVdO1xuXHRcdH0pLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xuXHRpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpO1xuXHRcdGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xuXHRcdFx0b2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHNwbGljZVdpbGRjYXJkKHZhbHVlLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkgOiB2YWx1ZSxcblx0XHQpO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuKHNldHRpbmdzLCBhcmdzKSB7XG5cdGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YDtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRleGVjKGNtZCwgeyB0aW1lb3V0OiBfVE9PTEtJVF9SVU5fVElNRU9VVF9NU0VDUywgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcblx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ZGVycikge1xuXHRcdFx0XHRyZWplY3Qoc3RkZXJyKTtcblx0XHRcdH1cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1VwcGVyQ2FtZWxDYXNlKHN0cikge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1xcYihcXHcpL2csIChfbWF0Y2gsIGNhcHR1cmUpID0+IGNhcHR1cmUudG9VcHBlckNhc2UoKSkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXRmMTZCeXRlcyhzdHIpIHtcblx0Y29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShzdHIubGVuZ3RoICogMik7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG5cdFx0Y29uc3QgY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGJ5dGVzW2kgKiAyXSA9IGNvZGUgPj4gODtcblx0XHRieXRlc1tpICogMiArIDFdID0gY29kZSAmIDB4ZmY7XG5cdH1cblx0cmV0dXJuIGJ5dGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9VdGY4QXJyYXkoc3RyKSB7XG5cdGNvbnN0IHV0ZjggPSBbXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcblx0XHRpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpO1xuXHRcdGVsc2UgaWYgKGNoYXJjb2RlIDwgMHg4MDApIHtcblx0XHRcdHV0ZjgucHVzaCgweGMwIHwgKGNoYXJjb2RlID4+IDYpLCAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuXHRcdH0gZWxzZSBpZiAoY2hhcmNvZGUgPCAweGQ4MDAgfHwgY2hhcmNvZGUgPj0gMHhlMDAwKSB7XG5cdFx0XHR1dGY4LnB1c2goMHhlMCB8IChjaGFyY29kZSA+PiAxMiksIDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRpKys7XG5cdFx0XHQvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XG5cdFx0XHQvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXG5cdFx0XHQvLyAyMCBiaXRzIG9mIDB4MC0weEZGRkZGIGludG8gdHdvIGhhbHZlc1xuXHRcdFx0Y2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZikgPDwgMTApIHwgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKTtcblx0XHRcdHV0ZjgucHVzaChcblx0XHRcdFx0MHhmMCB8IChjaGFyY29kZSA+PiAxOCksXG5cdFx0XHRcdDB4ODAgfCAoKGNoYXJjb2RlID4+IDEyKSAmIDB4M2YpLFxuXHRcdFx0XHQweDgwIHwgKChjaGFyY29kZSA+PiA2KSAmIDB4M2YpLFxuXHRcdFx0XHQweDgwIHwgKGNoYXJjb2RlICYgMHgzZiksXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdXRmODtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHV0ZjhBcnJheVRvU3RyKGFycmF5KSB7XG5cdGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcblx0bGV0IG91dCA9IFwiXCI7XG5cdGxldCBpID0gMDtcblx0bGV0IGM7XG5cdGxldCBjaGFyMiwgY2hhcjM7XG5cdHdoaWxlIChpIDwgbGVuKSB7XG5cdFx0YyA9IGFycmF5W2krK107XG5cdFx0c3dpdGNoIChjID4+IDQpIHtcblx0XHRcdGNhc2UgMDpcblx0XHRcdGNhc2UgMTpcblx0XHRcdGNhc2UgMjpcblx0XHRcdGNhc2UgMzpcblx0XHRcdGNhc2UgNDpcblx0XHRcdGNhc2UgNTpcblx0XHRcdGNhc2UgNjpcblx0XHRcdGNhc2UgNzpcblx0XHRcdFx0Ly8gMHh4eHh4eHhcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxMjpcblx0XHRcdGNhc2UgMTM6XG5cdFx0XHRcdC8vIDExMHggeHh4eCAgIDEweHggeHh4eFxuXHRcdFx0XHRjaGFyMiA9IGFycmF5W2krK107XG5cdFx0XHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MWYpIDw8IDYpIHwgKGNoYXIyICYgMHgzZikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTQ6XG5cdFx0XHRcdC8vIDExMTAgeHh4eCAgMTB4eCB4eHh4ICAxMHh4IHh4eHhcblx0XHRcdFx0Y2hhcjIgPSBhcnJheVtpKytdO1xuXHRcdFx0XHRjaGFyMyA9IGFycmF5W2krK107XG5cdFx0XHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDB4MGYpIDw8IDEyKSB8ICgoY2hhcjIgJiAweDNmKSA8PCA2KSB8ICgoY2hhcjMgJiAweDNmKSA8PCAwKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvbXB0KHF1ZXN0aW9uKSB7XG5cdGNvbnN0IHJlYWRsaW5lSW50ZXJmYWNlID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcblx0XHRpbnB1dDogcHJvY2Vzcy5zdGRpbixcblx0XHRvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuXHR9KTtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCBfcmVqZWN0KSA9PiB7XG5cdFx0cmVhZGxpbmVJbnRlcmZhY2UucXVlc3Rpb24oYCR7cXVlc3Rpb259IGAsIChyZXNwb25zZSkgPT4ge1xuXHRcdFx0cmVhZGxpbmVJbnRlcmZhY2UuY2xvc2UoKTtcblx0XHRcdHJlc29sdmUocmVzcG9uc2UudHJpbSgpKTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRlcihwcm9taXNlKSB7XG5cdGNvbnN0IGxvYWRpbmcgPSAoKCkgPT4ge1xuXHRcdGNvbnN0IGggPSBbXCJ8XCIsIFwiL1wiLCBcIi1cIiwgXCJcXFxcXCJdO1xuXHRcdGxldCBpID0gMDtcblx0XHRyZXR1cm4gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aSA9IGkgPiAzID8gMCA6IGk7XG5cdFx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShgXFxiXFxiJHtoW2ldfSBgKTtcblx0XHRcdGkrKztcblx0XHR9LCA1MCk7XG5cdH0pKCk7XG5cdHJldHVybiBwcm9taXNlLnRoZW4oKHJlc3VsdCkgPT4ge1xuXHRcdGNsZWFySW50ZXJ2YWwobG9hZGluZyk7XG5cdFx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoXCJcXGJcXGJcIik7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hXb3Jrc3BhY2UoKSB7XG5cdGxldCB3b3Jrc3BhY2UgPSBwYXRoLm5vcm1hbGl6ZShwcm9jZXNzLmN3ZCgpKTtcblx0d2hpbGUgKCFmcy5leGlzdHNTeW5jKGAke3dvcmtzcGFjZX0vd2l0bmV0L2Fzc2V0c2ApICYmIHBhdGguZGlybmFtZSh3b3Jrc3BhY2UpICE9PSB3b3Jrc3BhY2UpIHtcblx0XHR3b3Jrc3BhY2UgPSBwYXRoLmRpcm5hbWUod29ya3NwYWNlKTtcblx0fVxuXHRyZXR1cm4gd29ya3NwYWNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VDaGVja2xpc3RzKGNoZWNrbGlzdHMpIHtcblx0aWYgKGNoZWNrbGlzdHMgJiYgT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubGVuZ3RoID4gMCkge1xuXHRcdGNvbnN0IGhlYWRsaW5lcyA9IFtcIk5PREVTXCIsIC4uLk9iamVjdC5rZXlzKGNoZWNrbGlzdHMpLm1hcCgoa2V5KSA9PiBgOiR7a2V5fWApXTtcblx0XHRjaGVja2xpc3RzID0gT2JqZWN0LnZhbHVlcyhjaGVja2xpc3RzKTtcblx0XHRjb25zdCB1cmxzID0gT2JqZWN0LmtleXMoY2hlY2tsaXN0c1swXSk7XG5cdFx0Y29uc3QgcmVjb3JkcyA9IHVybHMubWFwKCh1cmwpID0+IHtcblx0XHRcdGNvbnN0IGVycm9ycyA9IGNoZWNrbGlzdHMuZmlsdGVyKChjaGVja2xpc3QpID0+IGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3IpLmxlbmd0aDtcblx0XHRcdHJldHVybiBbXG5cdFx0XHRcdGVycm9ycyA9PT0gY2hlY2tsaXN0cy5sZW5ndGggPyBjb2xvcnMucmVkKHVybCkgOiBlcnJvcnMgPiAwID8gY29sb3JzLm15ZWxsb3codXJsKSA6IGNvbG9ycy5tY3lhbih1cmwpLFxuXHRcdFx0XHQuLi5jaGVja2xpc3RzLm1hcCgoY2hlY2tsaXN0KSA9PlxuXHRcdFx0XHRcdGNoZWNrbGlzdFt1cmxdIGluc3RhbmNlb2YgRXJyb3Jcblx0XHRcdFx0XHRcdD8gY29sb3JzLnJlZChjaGVja2xpc3RbdXJsXSlcblx0XHRcdFx0XHRcdDogY2hlY2tsaXN0W3VybF0gPT09IHRydWVcblx0XHRcdFx0XHRcdFx0PyBjb2xvcnMubGN5YW4oXCJBeWVcIilcblx0XHRcdFx0XHRcdFx0OiBjb2xvcnMuY3lhbihcIk5heVwiKSxcblx0XHRcdFx0KSxcblx0XHRcdF07XG5cdFx0fSk7XG5cdFx0dHJhY2VUYWJsZShyZWNvcmRzLCB7XG5cdFx0XHRoZWFkbGluZXMsXG5cdFx0XHRtYXhDb2x1bW5XaWR0aDogMzEsXG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlSGVhZGVyKGhlYWRsaW5lLCBjb2xvciA9IG5vcm1hbCwgaW5kZW50ID0gXCJcIikge1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUjOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJBgKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtjb2xvcihoZWFkbGluZSl9IOKUgmApO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7XCLilIBcIi5yZXBlYXQoaGVhZGxpbmUubGVuZ3RoKX3ilIDilJhgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVGFibGUocmVjb3Jkcywgb3B0aW9ucykge1xuXHRjb25zdCBzdHJpbmdpZnkgPSAoZGF0YSwgaHVtYW5pemVycywgaW5kZXgpID0+XG5cdFx0aHVtYW5pemVycz8uW2luZGV4XSA/IGh1bWFuaXplcnNbaW5kZXhdKGRhdGEpLnRvU3RyaW5nKCkgOiAoZGF0YT8udG9TdHJpbmcoKSA/PyBcIlwiKTtcblx0Y29uc3QgbWF4ID0gKGEsIGIpID0+IChhID4gYiA/IGEgOiBiKTtcblx0Y29uc3QgcmVkdWNlTWF4ID0gKG51bWJlcnMpID0+IG51bWJlcnMucmVkdWNlKChjdXJyLCBwcmV2KSA9PiAocHJldiA+IGN1cnIgPyBwcmV2IDogY3VyciksIDApO1xuXHRpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcblx0Y29uc3QgaW5kZW50ID0gb3B0aW9ucz8uaW5kZW50IHx8IFwiXCI7XG5cdGNvbnN0IG51bUNvbHVtbnMgPSByZWR1Y2VNYXgocmVjb3Jkcy5tYXAoKHJlY29yZCkgPT4gcmVjb3JkPy5sZW5ndGggfHwgMSkpO1xuXHRjb25zdCBtYXhDb2x1bW5XaWR0aCA9IG9wdGlvbnM/Lm1heENvbHVtbldpZHRoIHx8IDgwO1xuXHRjb25zdCB0YWJsZSA9IHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKTtcblx0b3B0aW9ucy53aWR0aHMgPVxuXHRcdG9wdGlvbnM/LndpZHRocyB8fFxuXHRcdHRhYmxlLm1hcCgoY29sdW1uLCBpbmRleCkgPT4ge1xuXHRcdFx0bGV0IG1heFdpZHRoID0gcmVkdWNlTWF4KGNvbHVtbi5tYXAoKGZpZWxkKSA9PiBjb2xvcnN0cmlwKHN0cmluZ2lmeShmaWVsZCwgb3B0aW9ucz8uaHVtYW5pemVycywgaW5kZXgpKS5sZW5ndGgpKTtcblx0XHRcdGlmIChvcHRpb25zPy5oZWFkbGluZXM/LltpbmRleF0pIHtcblx0XHRcdFx0bWF4V2lkdGggPSBtYXgobWF4V2lkdGgsIGNvbG9yc3RyaXAob3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpKS5sZW5ndGgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIE1hdGgubWluKG1heFdpZHRoLCBtYXhDb2x1bW5XaWR0aCk7XG5cdFx0fSk7XG5cdGxldCBoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgpID0+IFwi4pSAXCIucmVwZWF0KG1heFdpZHRoKSk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pSs4pSAXCIpfeKUgOKUkGApO1xuXHRpZiAob3B0aW9ucz8uaGVhZGxpbmVzKSB7XG5cdFx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoLCBpbmRleCkgPT4ge1xuXHRcdFx0Y29uc3QgY2FwdGlvbiA9IG9wdGlvbnMuaGVhZGxpbmVzW2luZGV4XS5yZXBsYWNlQWxsKFwiOlwiLCBcIlwiKTtcblx0XHRcdGNvbnN0IGNhcHRpb25MZW5ndGggPSBjb2xvcnN0cmlwKGNhcHRpb24pLmxlbmd0aDtcblx0XHRcdHJldHVybiBgJHt3aGl0ZShjYXB0aW9uKX0ke1wiIFwiLnJlcGVhdChtYXhXaWR0aCAtIGNhcHRpb25MZW5ndGgpfWA7XG5cdFx0fSk7XG5cdFx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIIgJHtoZWFkbGluZS5qb2luKFwiIOKUgiBcIil9IOKUgmApO1xuXHRcdGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0XHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUnOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUvOKUgFwiKX3ilIDilKRgKTtcblx0fVxuXHRmb3IgKGxldCBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHtcblx0XHRsZXQgbGluZSA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyBqKyspIHtcblx0XHRcdGxldCBkYXRhID0gdGFibGVbal1baV07XG5cdFx0XHRsZXQgY29sb3I7XG5cdFx0XHRpZiAob3B0aW9ucz8uY29sb3JzPy5bal0pIHtcblx0XHRcdFx0Y29sb3IgPSBvcHRpb25zLmNvbG9yc1tqXTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbG9yID1cblx0XHRcdFx0XHR0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHRcdFx0PyBncmVlblxuXHRcdFx0XHRcdFx0OiBOdW1iZXIoZGF0YSkgPT09IGRhdGEgJiYgZGF0YSAlIDEgIT09IDAgLy8gaXMgZmxvYXQgbnVtYmVyP1xuXHRcdFx0XHRcdFx0XHQ/IHllbGxvd1xuXHRcdFx0XHRcdFx0XHQ6ICh4KSA9PiB4O1xuXHRcdFx0fVxuXHRcdFx0ZGF0YSA9IHN0cmluZ2lmeShkYXRhLCBvcHRpb25zPy5odW1hbml6ZXJzLCBqKTtcblx0XHRcdGlmIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoKSB7XG5cdFx0XHRcdHdoaWxlIChjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aCA+IG1heENvbHVtbldpZHRoIC0gMykge1xuXHRcdFx0XHRcdGRhdGEgPSBkYXRhLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhICs9IFwiLi4uXCI7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBkYXRhTGVuZ3RoID0gY29sb3JzdHJpcChkYXRhKS5sZW5ndGg7XG5cdFx0XHRpZiAob3B0aW9ucz8uaGVhZGxpbmVzICYmIG9wdGlvbnMuaGVhZGxpbmVzW2pdWzBdID09PSBcIjpcIikge1xuXHRcdFx0XHRkYXRhID0gYCR7Y29sb3IoZGF0YSl9JHtcIiBcIi5yZXBlYXQob3B0aW9ucy53aWR0aHNbal0gLSBkYXRhTGVuZ3RoKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZGF0YSA9IGAke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfSR7Y29sb3IoZGF0YSl9YDtcblx0XHRcdH1cblx0XHRcdGxpbmUgKz0gYOKUgiAke2RhdGF9IGA7XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR9JHtsaW5lfeKUgmApO1xuXHR9XG5cdGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilJTilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilLTilIBcIil94pSA4pSYYCk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zcG9zZShyZWNvcmRzLCBudW1Db2x1bW5zKSB7XG5cdGNvbnN0IGNvbHVtbnMgPSBbXTtcblx0Zm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG51bUNvbHVtbnM7IGluZGV4KyspIHtcblx0XHRjb2x1bW5zLnB1c2gocmVjb3Jkcy5tYXAoKHJvdykgPT4gcm93W2luZGV4XSkpO1xuXHR9XG5cdHJldHVybiBjb2x1bW5zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHhKc29uUmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuXHRzd2l0Y2ggKGtleSkge1xuXHRcdGNhc2UgXCJieXRlc1wiOlxuXHRcdGNhc2UgXCJkZXJcIjpcblx0XHRcdHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSk7XG5cdFx0Y2FzZSBcInR4XCI6XG5cdFx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKTtcblx0XHRjYXNlIFwiY2hhbmdlXCI6XG5cdFx0Y2FzZSBcImZlZXNcIjpcblx0XHRjYXNlIFwidmFsdWVcIjpcblx0XHRcdHJldHVybiBwYXJzZUludCh2YWx1ZSwgMTApIC8gMTAgKiogOTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eFJlY2VpcHRKc29uUmVwbGFjZXIoa2V5LCB2YWx1ZSkge1xuXHRzd2l0Y2ggKGtleSkge1xuXHRcdGNhc2UgXCJieXRlc1wiOlxuXHRcdGNhc2UgXCJkZXJcIjpcblx0XHRcdHJldHVybiB0b0hleFN0cmluZyh2YWx1ZSwgdHJ1ZSk7XG5cdFx0Y2FzZSBcInR4XCI6XG5cdFx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIHR4SnNvblJlcGxhY2VyKTtcblx0XHRjYXNlIFwiY2hhbmdlXCI6XG5cdFx0Y2FzZSBcImZlZXNcIjpcblx0XHRjYXNlIFwidmFsdWVcIjpcblx0XHRcdHJldHVybiBwYXJzZUludCh2YWx1ZT8ucGVkcm9zLCAxMCkgLyAxMCAqKiA5O1xuXHRcdGNhc2UgXCJ0aW1lc3RhbXBcIjpcblx0XHRcdHJldHVybiBtb21lbnQudW5peCh2YWx1ZSkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIik7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludChyZWNlaXB0KSB7XG5cdGlmIChyZWNlaXB0Py5jb25maXJtYXRpb25zKSB7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBDaGVja3BvaW50ICMke2NvbW1hcyhyZWNlaXB0LmNvbmZpcm1hdGlvbnMpfS4uLmApO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UocmVjZWlwdCkge1xuXHRjb25zdCBjYXB0aW9ucyA9IHtcblx0XHRwZW5kaW5nOiBcIkF3YWl0aW5nIHJlbGF5Li4uXCIsXG5cdFx0Ly8gY29uZmlybWVkOiBcIlRyYW5zYWN0aW9uIGNvbmZpcm1lZDpcIixcblx0XHQvLyBmaW5hbGl6ZWQ6IFwiVHJhbnNhY3Rpb24gZmluYWxpemVkOlwiLFxuXHRcdHJlbGF5ZWQ6IFwiQXdhaXRpbmcgaW5jbHVzaW9uLi4uXCIsXG5cdFx0bWluZWQ6IFwiQXdhaXRpbmcgY29uZmlybWF0aW9ucy4uLlwiLFxuXHR9O1xuXHRjb25zdCBjYXB0aW9uID0gY2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdO1xuXHRpZiAoY2FwdGlvbikgY29uc29sZS5pbmZvKGAgPiAke2NhcHRpb25zW3JlY2VpcHQuc3RhdHVzXX1gKTtcblx0aWYgKFtcImZpbmFsaXplZFwiLCBcImNvbmZpcm1lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IEJsb2NrIGhhc2g6ICAgJHtjb2xvcnMuZ3JheShyZWNlaXB0Py5ibG9ja0hhc2gpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgbWluZXI6ICAke2NvbG9ycy5jeWFuKHJlY2VpcHQ/LmJsb2NrTWluZXIpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgZXBvY2g6ICAke2NvbG9ycy53aGl0ZShjb21tYXMocmVjZWlwdD8uYmxvY2tFcG9jaCkpfWApO1xuXHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdGAgPiBJbmNsdWRlZCBhdDogICR7Y29sb3JzLmdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQ/LmJsb2NrVGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YCxcblx0XHQpO1xuXHRcdGNvbnNvbGUuaW5mbyhcblx0XHRcdGAgPiAke3JlY2VpcHQuc3RhdHVzWzBdLnRvVXBwZXJDYXNlKCkgKyByZWNlaXB0LnN0YXR1cy5zbGljZSgxKX0gYXQ6ICR7Y29sb3JzLm1ncmVlbihtb21lbnQudW5peChyZWNlaXB0LnRpbWVzdGFtcCkuZm9ybWF0KFwiTU1NTSBEbyBZWVlZLCBoOm1tOnNzIGFcIikpfWAsXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvblJlY2VpcHQocmVjZWlwdCkge1xuXHRjb25zdCBjYXB0aW9ucyA9IHtcblx0XHREYXRhUmVxdWVzdDogXCIgPiBEUlQgaGFzaDogICAgIFwiLFxuXHRcdFZhbHVlVHJhbnNmZXI6IFwiID4gVlRUIGhhc2g6ICAgICBcIixcblx0fTtcblx0Y29uc29sZS5pbmZvKGAke2NhcHRpb25zW3JlY2VpcHQudHlwZV0gfHwgXCIgPiBUWCBoYXNoOiAgICAgIFwifSR7Y29sb3JzLndoaXRlKHJlY2VpcHQuaGFzaCl9YCk7XG5cdGlmIChyZWNlaXB0Py5kcm9IYXNoKSBjb25zb2xlLmluZm8oYCA+IERSTyBoYXNoOiAgICAgJHtjb2xvcnMuZ3JlZW4ocmVjZWlwdC5kcm9IYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LnJhZEhhc2gpIGNvbnNvbGUuaW5mbyhgID4gUkFEIGhhc2g6ICAgICAke2NvbG9ycy5tZ3JlZW4ocmVjZWlwdC5yYWRIYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LmRyb1NMQSkgY29uc29sZS5pbmZvKGAgPiBTTEEgcGFyYW1zOiAgICR7SlNPTi5zdHJpbmdpZnkocmVjZWlwdC5kcm9TTEEpfWApO1xuXHRpZiAocmVjZWlwdD8ud2l0aGRyYXdlcikge1xuXHRcdGlmIChyZWNlaXB0Py52YWxpZGF0b3IpIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgID4gVmFsaWRhdG9yOiAgICAke2NvbG9ycy5tY3lhbihyZWNlaXB0LnZhbGlkYXRvcil9YCk7XG5cdFx0fVxuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0aGRyYXdlcjogICAke2NvbG9ycy5tbWFnZW50YShyZWNlaXB0LndpdGhkcmF3ZXIpfWApO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IHNpZ25lcnMgPSBBcnJheS5pc0FycmF5KHJlY2VpcHQuZnJvbSkgPyByZWNlaXB0LmZyb20gOiBbcmVjZWlwdC5mcm9tXTtcblx0XHRjb25zb2xlLmluZm8oYCA+IFNpZ25lci9zOiAgICAgJHtjb2xvcnMubW1hZ2VudGEoc2lnbmVyc1swXSl9YCk7XG5cdFx0c2lnbmVycy5zbGljZSgxKS5mb3JFYWNoKChzaWduZXIpID0+IHtcblx0XHRcdGNvbnNvbGUuaW5mbyhgICAgICAgICAgICAgICAgICAke2NvbG9ycy5tbWFnZW50YShzaWduZXIpfWApO1xuXHRcdH0pO1xuXHR9XG5cdGlmIChyZWNlaXB0Py5yZWNpcGllbnRzKSB7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IFJlY2lwaWVudC9zOiAgJHtjb2xvcnMubWJsdWUoXG5cdFx0XHRcdHJlY2VpcHQucmVjaXBpZW50cy5maWx0ZXIoKHBraCwgaW5kZXgsIGFycmF5KSA9PiBpbmRleCA9PT0gYXJyYXkuaW5kZXhPZihwa2gpKSxcblx0XHRcdCl9YCxcblx0XHQpO1xuXHR9XG5cdGlmIChyZWNlaXB0Py5mZWVzKSBjb25zb2xlLmluZm8oYCA+IE5ldHdvcmsgZmVlOiAgJHtjb2xvcnMueWVsbG93KHJlY2VpcHQuZmVlcy50b1N0cmluZygyKSl9YCk7XG5cdGlmIChyZWNlaXB0Py52YWx1ZSkgY29uc29sZS5pbmZvKGAgPiBWYWx1ZTogICAgICAgICR7Y29sb3JzLm15ZWxsb3cocmVjZWlwdC52YWx1ZS50b1N0cmluZygyKSl9YCk7XG5cdGlmIChyZWNlaXB0Py53ZWlnaHQpIGNvbnNvbGUuaW5mbyhgID4gV2VpZ2h0OiAgICAgICAke2NvbG9ycy5tZ3JlZW4oY29tbWFzKHJlY2VpcHQud2VpZ2h0KSl9YCk7XG5cdGlmIChyZWNlaXB0Py53aXRuZXNzZXMpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IFdpdG5lc3NlczogICAgJHtyZWNlaXB0LndpdG5lc3Nlc31gKTtcblx0fVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhY2VUcmFuc2FjdGlvbih0cmFuc21pdHRlciwgb3B0aW9ucykge1xuXHRjb25zdCBjb2xvciA9IG9wdGlvbnM/LmNvbG9yIHx8ICgoeCkgPT4gYFxceDFiWzMwOzQ1bSR7eH1cXHgxYlswbWApO1xuXHRsZXQgcmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLnNpZ25UcmFuc2FjdGlvbihvcHRpb25zLCBvcHRpb25zPy5yZWxvYWQpO1xuXHRpZiAob3B0aW9ucz8udmVyYm9zZSkge1xuXHRcdGNvbnNvbGUuaW5mbyhgXFxuJHtncmF5KEpTT04uc3RyaW5naWZ5KHJlY2VpcHQudHgsIHR4SnNvblJlcGxhY2VyKSl9YCk7XG5cdH1cblx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lKSB7XG5cdFx0Y29uc29sZS5pbmZvKGBcXG4gJHtjb2xvcihgICAke29wdGlvbnMuaGVhZGxpbmV9ICBgKX1cXG5gKTtcblx0fVxuXHR0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KTtcblx0aWYgKCFvcHRpb25zPy5mb3JjZSkge1xuXHRcdC8vIHByb21wdCB1c2VyIGNvbmZpcm1hdGlvblxuXHRcdGNvbnNvbGUuaW5mbygpO1xuXHRcdGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlcXVpcmUoXCJpbnF1aXJlclwiKS5jcmVhdGVQcm9tcHRNb2R1bGUoKShbXG5cdFx0XHR7XG5cdFx0XHRcdG1lc3NhZ2U6IFwiU2VuZCB0cmFuc2FjdGlvbj9cIixcblx0XHRcdFx0dHlwZTogXCJjb25maXJtXCIsXG5cdFx0XHRcdG5hbWU6IFwiY29udGludWVcIixcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0XHR9LFxuXHRcdF0pO1xuXHRcdGlmICghYW5zd2VyLmNvbnRpbnVlKSB7XG5cdFx0XHRyZXR1cm4gcmVjZWlwdDtcblx0XHR9XG5cdH1cblx0dHJ5IHtcblx0XHRjb25zb2xlLmluZm8oKTtcblx0XHRyZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2VuZFRyYW5zYWN0aW9uKCk7XG5cdFx0aWYgKG9wdGlvbnM/LmF3YWl0IHx8IG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmVjZWlwdCA9IGF3YWl0IHRyYW5zbWl0dGVyLmNvbmZpcm1UcmFuc2FjdGlvbihyZWNlaXB0Lmhhc2gsIHtcblx0XHRcdFx0Y29uZmlybWF0aW9uczogb3B0aW9ucz8uY29uZmlybWF0aW9ucyB8fCAwLFxuXHRcdFx0XHRvbkNoZWNrcG9pbnQ6IHRyYWNlVHJhbnNhY3Rpb25PbkNoZWNrcG9pbnQsXG5cdFx0XHRcdG9uU3RhdHVzQ2hhbmdlOiB0cmFjZVRyYW5zYWN0aW9uT25TdGF0dXNDaGFuZ2UsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgZGF0YSA9IHtcblx0XHRcdFx0c3RhdHVzOiByZWNlaXB0Py5zdGF0dXMsXG5cdFx0XHRcdHRpbWVzdGFtcDogcmVjZWlwdD8udGltZXN0YW1wIHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuXHRcdFx0fTtcblx0XHRcdGNvbnNvbGUuaW5mbyhkYXRhKTtcblx0XHR9XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGlmIChlcnI/LmluRmxpZ2h0ICYmIGVyci5pbkZsaWdodCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKGBcXG4ke2NvbG9ycy5ncmF5KEpTT04uc3RyaW5naWZ5KGVyci5pbkZsaWd0Py5tZXNzYWdlLCB0eFJlY2VpcHRKc29uUmVwbGFjZXIpKX1gKTtcblx0XHR9XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG5cdHJldHVybiByZWNlaXB0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5lc2NhcGVTbGFzaGVzKHN0cikge1xuXHQvLyBhZGQgYW5vdGhlciBlc2NhcGVkIHNsYXNoIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIGFuIG9kZFxuXHQvLyBudW1iZXIgb2YgZXNjYXBlZCBzbGFzaGVzIHdoaWNoIHdpbGwgY3Jhc2ggSlNPTi5wYXJzZVxuXHRsZXQgcGFyc2VkU3RyID0gc3RyLnJlcGxhY2UoLyhefFteXFxcXF0pKFxcXFxcXFxcKSpcXFxcJC8sIFwiJCZcXFxcXCIpO1xuXG5cdC8vIGVzY2FwZSB1bmVzY2FwZWQgZG91YmxlIHF1b3RlcyB0byBwcmV2ZW50IGVycm9yIHdpdGhcblx0Ly8gYWRkZWQgZG91YmxlIHF1b3RlcyBpbiBqc29uIHN0cmluZ1xuXHRwYXJzZWRTdHIgPSBwYXJzZWRTdHIucmVwbGFjZSgvKF58W15cXFxcXSkoKFxcXFxcXFxcKSpcIikvZywgXCIkMVxcXFwkMlwiKTtcblxuXHR0cnkge1xuXHRcdHBhcnNlZFN0ciA9IEpTT04ucGFyc2UoYFwiJHtwYXJzZWRTdHJ9XCJgKTtcblx0fSBjYXRjaCAoX2UpIHtcblx0XHRyZXR1cm4gc3RyO1xuXHR9XG5cdHJldHVybiBwYXJzZWRTdHI7XG59XG4iXX0=
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { Hash } from "../types.js";
|
|
1
|
+
import type { GetDataRequestEtherealReport, GetDataRequestFullReport, GetDataRequestMode, Hash, SyncStatus } from "../types.js";
|
|
2
2
|
import type { DataPushReport } from "./types.js";
|
|
3
3
|
interface IKermitClient {
|
|
4
4
|
getDataPushReport(witDrTxHash: Hash, evmNetwork?: number | string): Promise<DataPushReport>;
|
|
5
|
+
getSyncStatus(isMainnet: boolean): Promise<SyncStatus>;
|
|
6
|
+
searchDataRequests(radHash: Hash, isMainnet: boolean, options?: any): Promise<Array<GetDataRequestEtherealReport | GetDataRequestFullReport>>;
|
|
5
7
|
}
|
|
6
8
|
export declare class KermitError extends Error {
|
|
7
9
|
readonly error?: any;
|
|
@@ -15,6 +17,13 @@ export declare class KermitClient implements IKermitClient {
|
|
|
15
17
|
constructor(url: string);
|
|
16
18
|
protected callApiGetMethod<T>(path: string, query?: any): Promise<Error | any>;
|
|
17
19
|
getDataPushReport(witDrTxHash: Hash, evmNetwork?: number | string): Promise<DataPushReport>;
|
|
20
|
+
getSyncStatus(isMainnet: boolean): Promise<SyncStatus>;
|
|
21
|
+
searchDataRequests(radHash: Hash, isMainnet: boolean, options?: {
|
|
22
|
+
limit?: number;
|
|
23
|
+
offset?: number;
|
|
24
|
+
mode?: GetDataRequestMode;
|
|
25
|
+
reverse?: boolean;
|
|
26
|
+
}): Promise<Array<GetDataRequestEtherealReport | GetDataRequestFullReport>>;
|
|
18
27
|
}
|
|
19
28
|
export {};
|
|
20
29
|
//# sourceMappingURL=kermit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,4BAA4B,EAC5B,wBAAwB,EACxB,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,MAAM,aAAa,CAAC;AAGrB,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;IAC5F,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,kBAAkB,CACjB,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,wBAAwB,CAAC,CAAC,CAAC;CAC3E;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;IAO3F,aAAa,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAItD,kBAAkB,CAC9B,OAAO,EAAE,IAAI,EACb,SAAS,EAAE,OAAO,EAClB,OAAO,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,kBAAkB,CAAC;QAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,GACC,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,wBAAwB,CAAC,CAAC;CAU1E"}
|
|
@@ -62,5 +62,15 @@ export class KermitClient {
|
|
|
62
62
|
evmNetwork,
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
+
async getSyncStatus(isMainnet) {
|
|
66
|
+
return this.callApiGetMethod("sync_status", { isMainnet });
|
|
67
|
+
}
|
|
68
|
+
async searchDataRequests(radHash, isMainnet, options) {
|
|
69
|
+
return this.callApiGetMethod("search_data_requests", {
|
|
70
|
+
radHash,
|
|
71
|
+
isMainnet,
|
|
72
|
+
...options,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
65
75
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZXN0L2tlcm1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQVFqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXZDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBQ3pDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDUixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFZWixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDNUIsS0FBSyxDQUFPO0lBQ1osSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFPO0lBQ3JCLFlBQVksSUFBWSxFQUFFLEtBQVcsRUFBRSxLQUFXO1FBQ2pELEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVk7UUFDaEMsT0FBTyxJQUFJLFlBQVksQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsSUFBSSwwQkFBMEIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFZSxHQUFHLENBQVM7SUFFNUIsWUFBWSxHQUFXO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckUsTUFBTSxLQUFLLENBQUMsd0NBQXdDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7UUFDakIsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDO1FBQ3BCLENBQUM7SUFDRixDQUFDO0lBRVMsS0FBSyxDQUFDLGdCQUFnQixDQUFJLElBQVksRUFBRSxLQUFXO1FBQzVELE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN2RSxPQUFPLEtBQUs7YUFDVixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1QsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7U0FDMUQsQ0FBQzthQUNELElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3ZCLElBQUksUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUM5QyxNQUFNLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlFLENBQUM7aUJBQU0sSUFBSSxRQUFRLEVBQUUsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSw0QkFBNEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDdkYsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU8sUUFBUSxFQUFFLElBQVMsQ0FBQztZQUM1QixDQUFDO1FBQ0YsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxXQUFpQixFQUFFLFVBQTRCO1FBQzdFLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFpQixzQkFBc0IsRUFBRTtZQUNwRSxXQUFXO1lBQ1gsVUFBVTtTQUNWLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQWtCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFhLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FDOUIsT0FBYSxFQUNiLFNBQWtCLEVBQ2xCLE9BS0M7UUFFRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FDM0Isc0JBQXNCLEVBQ3RCO1lBQ0MsT0FBTztZQUNQLFNBQVM7WUFDVCxHQUFHLE9BQU87U0FDVixDQUNELENBQUM7SUFDSCxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZhdWx0IGFzIGF4aW9zIH0gZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGpzb25CaWcgfSBmcm9tIFwianNvbi1iaWdpbnRcIjtcbmltcG9ydCB0eXBlIHtcblx0R2V0RGF0YVJlcXVlc3RFdGhlcmVhbFJlcG9ydCxcblx0R2V0RGF0YVJlcXVlc3RGdWxsUmVwb3J0LFxuXHRHZXREYXRhUmVxdWVzdE1vZGUsXG5cdEhhc2gsXG5cdFN5bmNTdGF0dXMsXG59IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VVUkwgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBEYXRhUHVzaFJlcG9ydCB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XG5cbmNvbnN0IHN0cmluZ2lmeSA9IChxdWVyeTogYW55KSA9PlxuXHRPYmplY3QuZW50cmllcyhxdWVyeSlcblx0XHQubWFwKChba2V5LCB2YWx1ZV0pID0+IGAmJHtrZXl9PSR7dmFsdWV9YClcblx0XHQuam9pbihcIlwiKVxuXHRcdC5zbGljZSgxKTtcblxuaW50ZXJmYWNlIElLZXJtaXRDbGllbnQge1xuXHRnZXREYXRhUHVzaFJlcG9ydCh3aXREclR4SGFzaDogSGFzaCwgZXZtTmV0d29yaz86IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8RGF0YVB1c2hSZXBvcnQ+O1xuXHRnZXRTeW5jU3RhdHVzKGlzTWFpbm5ldDogYm9vbGVhbik6IFByb21pc2U8U3luY1N0YXR1cz47XG5cdHNlYXJjaERhdGFSZXF1ZXN0cyhcblx0XHRyYWRIYXNoOiBIYXNoLFxuXHRcdGlzTWFpbm5ldDogYm9vbGVhbixcblx0XHRvcHRpb25zPzogYW55LFxuXHQpOiBQcm9taXNlPEFycmF5PEdldERhdGFSZXF1ZXN0RXRoZXJlYWxSZXBvcnQgfCBHZXREYXRhUmVxdWVzdEZ1bGxSZXBvcnQ+Pjtcbn1cblxuZXhwb3J0IGNsYXNzIEtlcm1pdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRyZWFkb25seSBlcnJvcj86IGFueTtcblx0cmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXHRyZWFkb25seSBxdWVyeT86IGFueTtcblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBxdWVyeT86IGFueSwgZXJyb3I/OiBhbnkpIHtcblx0XHRzdXBlcihgJHtwYXRofSR7c3RyaW5naWZ5KHF1ZXJ5KX06ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApO1xuXHRcdGRlbGV0ZSBlcnJvcj8uc3RhY2s7XG5cdFx0dGhpcy5lcnJvciA9IGVycm9yO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdFx0dGhpcy5xdWVyeSA9IHF1ZXJ5O1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXJtaXRDbGllbnQgaW1wbGVtZW50cyBJS2VybWl0Q2xpZW50IHtcblx0c3RhdGljIGFzeW5jIGZyb21FbnYodXJsPzogc3RyaW5nKTogUHJvbWlzZTxLZXJtaXRDbGllbnQ+IHtcblx0XHRyZXR1cm4gbmV3IEtlcm1pdENsaWVudCh1cmwgfHwgcHJvY2Vzcy5lbnYuV0lUTkVUX1NES19LRVJNSVRfVVJMIHx8IFwiaHR0cHM6Ly9rZXJtaXQud2l0bmV0LmlvXCIpO1xuXHR9XG5cblx0cHVibGljIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgW3NjaGVtYV0gPSBwYXJzZVVSTCh1cmwpO1xuXHRcdGlmICghc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihgS2VybWl0Q2xpZW50OiB1bnN1cHBvcnRlZCBVUkwgc2NoZW1hICR7c2NoZW1hfWApO1xuXHRcdH1cblx0XHR0aGlzLnVybCA9IHVybDtcblx0XHRpZiAoIXRoaXMudXJsLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0dGhpcy51cmwgKz0gXCIvXCI7XG5cdFx0fVxuXHRcdGlmICghdGhpcy51cmwuZW5kc1dpdGgoXCJhcGkvXCIpKSB7XG5cdFx0XHR0aGlzLnVybCArPSBcImFwaS9cIjtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUdldE1ldGhvZDxUPihwYXRoOiBzdHJpbmcsIHF1ZXJ5PzogYW55KTogUHJvbWlzZTxFcnJvciB8IGFueT4ge1xuXHRcdGNvbnN0IHVybCA9IGAke3RoaXMudXJsfSR7cGF0aH0ke3F1ZXJ5ID8gYD8ke3N0cmluZ2lmeShxdWVyeSl9YCA6IFwiXCJ9YDtcblx0XHRyZXR1cm4gYXhpb3Ncblx0XHRcdC5nZXQodXJsLCB7XG5cdFx0XHRcdHRyYW5zZm9ybVJlc3BvbnNlOiAocmVzcG9uc2UpID0+IGpzb25CaWcoKS5wYXJzZShyZXNwb25zZSksXG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgS2VybWl0RXJyb3IocGF0aCwgcXVlcnksIHJlc3BvbnNlPy5lcnJvciB8fCByZXNwb25zZT8uZGF0YT8uZXJyb3IpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlc3BvbnNlPy5zdGF0dXNDb2RlICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihwYXRoLCBxdWVyeSwgYHNlcnZlciBzdGF0dXMgY29kZTogSFRUUC8ke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlPy5kYXRhIGFzIFQ7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKGVycm9yKSA9PiB7XG5cdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihwYXRoLCBxdWVyeSwgZXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0RGF0YVB1c2hSZXBvcnQod2l0RHJUeEhhc2g6IEhhc2gsIGV2bU5ldHdvcms/OiBudW1iZXIgfCBzdHJpbmcpOiBQcm9taXNlPERhdGFQdXNoUmVwb3J0PiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FsbEFwaUdldE1ldGhvZDxEYXRhUHVzaFJlcG9ydD4oXCJnZXRfZGF0YV9wdXNoX3JlcG9ydFwiLCB7XG5cdFx0XHR3aXREclR4SGFzaCxcblx0XHRcdGV2bU5ldHdvcmssXG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgZ2V0U3luY1N0YXR1cyhpc01haW5uZXQ6IGJvb2xlYW4pOiBQcm9taXNlPFN5bmNTdGF0dXM+IHtcblx0XHRyZXR1cm4gdGhpcy5jYWxsQXBpR2V0TWV0aG9kPFN5bmNTdGF0dXM+KFwic3luY19zdGF0dXNcIiwgeyBpc01haW5uZXQgfSk7XG5cdH1cblxuXHRwdWJsaWMgYXN5bmMgc2VhcmNoRGF0YVJlcXVlc3RzKFxuXHRcdHJhZEhhc2g6IEhhc2gsXG5cdFx0aXNNYWlubmV0OiBib29sZWFuLFxuXHRcdG9wdGlvbnM/OiB7XG5cdFx0XHRsaW1pdD86IG51bWJlcjtcblx0XHRcdG9mZnNldD86IG51bWJlcjtcblx0XHRcdG1vZGU/OiBHZXREYXRhUmVxdWVzdE1vZGU7XG5cdFx0XHRyZXZlcnNlPzogYm9vbGVhbjtcblx0XHR9LFxuXHQpOiBQcm9taXNlPEFycmF5PEdldERhdGFSZXF1ZXN0RXRoZXJlYWxSZXBvcnQgfCBHZXREYXRhUmVxdWVzdEZ1bGxSZXBvcnQ+PiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FsbEFwaUdldE1ldGhvZDxBcnJheTxHZXREYXRhUmVxdWVzdEV0aGVyZWFsUmVwb3J0IHwgR2V0RGF0YVJlcXVlc3RGdWxsUmVwb3J0Pj4oXG5cdFx0XHRcInNlYXJjaF9kYXRhX3JlcXVlc3RzXCIsXG5cdFx0XHR7XG5cdFx0XHRcdHJhZEhhc2gsXG5cdFx0XHRcdGlzTWFpbm5ldCxcblx0XHRcdFx0Li4ub3B0aW9ucyxcblx0XHRcdH0sXG5cdFx0KTtcblx0fVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@witnet/sdk",
|
|
3
|
-
"version": "3.0
|
|
3
|
+
"version": "3.1.0",
|
|
4
4
|
"description": "Typescript library and CLI tooling for Web3 buidlers willing to interact with the Witnet blockchain.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"cbor": "^10.0.11",
|
|
59
59
|
"commander": "^14.0.2",
|
|
60
60
|
"dotenv": "^17.2.3",
|
|
61
|
-
"ethers": "^6.
|
|
61
|
+
"ethers": "^6.16.0",
|
|
62
62
|
"graphql-query-compress": "1.2.4",
|
|
63
|
-
"inquirer": "^12.
|
|
63
|
+
"inquirer": "^12.11.1",
|
|
64
64
|
"json-bigint": "^1.0.0",
|
|
65
65
|
"keccak256": "^1.0.6",
|
|
66
66
|
"lodash.merge": "^4.6.2",
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
"secp256k1": "^5.0.1"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@biomejs/biome": "^2.3.
|
|
76
|
+
"@biomejs/biome": "^2.3.10",
|
|
77
77
|
"@types/cbor": "^5.0.1",
|
|
78
78
|
"@types/json-bigint": "^1.0.4",
|
|
79
|
-
"@types/node": "^24.10.
|
|
79
|
+
"@types/node": "^24.10.4",
|
|
80
80
|
"@types/promise-poller": "^1.7.4",
|
|
81
81
|
"cross-env": "10.0.0",
|
|
82
|
-
"protobufjs-cli": "^1.
|
|
82
|
+
"protobufjs-cli": "^1.2.0",
|
|
83
83
|
"typescript": "^5.9.3"
|
|
84
84
|
},
|
|
85
85
|
"scripts": {
|
package/src/bin/helpers.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { exec } from "node:child_process";
|
|
1
|
+
import { exec, spawn } from "node:child_process";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import * as net from "node:net";
|
|
@@ -115,10 +115,12 @@ export function deleteExtraFlags(args) {
|
|
|
115
115
|
return args.filter((arg) => !arg.startsWith("--"));
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
export function cmd(timeout, ...
|
|
118
|
+
export function cmd(timeout, ...commands) {
|
|
119
119
|
return new Promise((resolve, reject) => {
|
|
120
|
-
const
|
|
121
|
-
|
|
120
|
+
const [bin, ...args] = commands;
|
|
121
|
+
const child = spawn(bin, args, {
|
|
122
|
+
detached: process.env.WITSDK_DRY_RUN_DETACHED || false,
|
|
123
|
+
shell: process.platform === "win32",
|
|
122
124
|
stdio: ["ignore", "pipe", "pipe"],
|
|
123
125
|
env: {
|
|
124
126
|
...process.env,
|
|
@@ -148,7 +150,6 @@ export function cmd(timeout, ...command) {
|
|
|
148
150
|
if (finished) return;
|
|
149
151
|
finished = true;
|
|
150
152
|
killTree();
|
|
151
|
-
reject(new Error(`npx command timed out after ${commas(timeout)} ms`));
|
|
152
153
|
}, timeout)
|
|
153
154
|
: null;
|
|
154
155
|
|