@witnet/sdk 3.0.3 → 3.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/sdk",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
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",
@@ -1,8 +1,8 @@
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(...command: any[]): Promise<any>;
5
- export function execRadonBytecode(bytecode: any, ...flags: any[]): Promise<any>;
4
+ export function cmd(timeout: any, ...command: any[]): Promise<any>;
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>;
8
8
  export function ipIsPrivateOrLocalhost(ip: any): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AAuBA,kDAOC;AA2ED,mDAKC;AAED,iDAEC;AAED,qDAYC;AAED,gFAiBC;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;AAl2BM,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"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bin/helpers.js"],"names":[],"mappings":"AAwBA,kDAOC;AA2ED,mDAKC;AAED,iDAEC;AAED,mEAYC;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;AAx1BM,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"}
@@ -7,6 +7,7 @@ import path from "node:path";
7
7
  import * as readline from "node:readline";
8
8
  import moment from "moment";
9
9
  const require = createRequire(import.meta.url);
10
+ const _TOOLKIT_RUN_TIMEOUT_MSECS = 30000;
10
11
  export const colorstrip = (str) => str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "");
11
12
  export const commas = (number) => {
12
13
  const parts = number.toString().split(".");
@@ -107,9 +108,9 @@ export function countLeaves(t, obj) {
107
108
  export function deleteExtraFlags(args) {
108
109
  return args.filter((arg) => !arg.startsWith("--"));
109
110
  }
110
- export function cmd(...command) {
111
+ export function cmd(timeout, ...command) {
111
112
  return new Promise((resolve, reject) => {
112
- exec(command.join(" "), { maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
113
+ exec(command.join(" "), { timeout, maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
113
114
  if (error) {
114
115
  reject(error);
115
116
  }
@@ -120,23 +121,13 @@ export function cmd(...command) {
120
121
  });
121
122
  });
122
123
  }
123
- export async function execRadonBytecode(bytecode, ...flags) {
124
+ export async function execRadonBytecode(bytecode, timeout, ...flags) {
124
125
  if (!isHexString(bytecode)) {
125
126
  throw EvalError("invalid hex string");
126
127
  }
127
128
  else {
128
129
  const npx = os.type() === "Windows_NT" ? "npx.cmd" : "npx";
129
- return cmd(npx, "witsdk", "radon", "dry-run", bytecode, ...flags);
130
- // .catch((err) => {
131
- // let errorMessage = err.message.split('\n').slice(1).join('\n').trim()
132
- // const errorRegex = /.*^error: (?<message>.*)$.*/gm
133
- // const matched = errorRegex.exec(err.message)
134
- // if (matched) {
135
- // errorMessage = matched.groups.message
136
- // }
137
- // console.log(errorMessage || err)
138
- // console.error(errorMessage || err)
139
- // })
130
+ return cmd(timeout, npx, "witsdk", "radon", "dry-run", bytecode, ...flags);
140
131
  }
141
132
  }
142
133
  export function extractFromArgs(args, flags) {
@@ -448,7 +439,7 @@ export function spliceWildcard(obj, argIndex, argValue, argsCount) {
448
439
  export async function toolkitRun(settings, args) {
449
440
  const cmd = `${settings.paths.toolkitBinPath} ${args.join(" ")}`;
450
441
  return new Promise((resolve, reject) => {
451
- exec(cmd, { maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
442
+ exec(cmd, { timeout: _TOOLKIT_RUN_TIMEOUT_MSECS, maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
452
443
  if (error) {
453
444
  reject(error);
454
445
  }
@@ -828,4 +819,4 @@ export function unescapeSlashes(str) {
828
819
  }
829
820
  return parsedStr;
830
821
  }
831
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLDZFQUE2RSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQ1gsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsSUFB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RyxXQUFXLENBQUM7QUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDckQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFH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SyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTztJQUMxQyxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDN0MsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxDQUFDLE9BQU87UUFBRSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJ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SyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7YUFDOUQsQ0FBQztZQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNGLENBQUM7SUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEVBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUNELE1BQU0sR0FBRyxDQUFDO0lBQ1gsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEdBQUc7SUFDbEMsMkRBQTJEO0lBQzNELHdEQUF3RDtJQUN4RCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTNELHVEQUF1RDtJQUN2RCxxQ0FBcUM7SUFDckMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFFaEUsSUFBSSxDQUFDO1FBQ0osU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ2IsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCAqIGFzIG5ldCBmcm9tIFwibm9kZTpuZXRcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJub2RlOm9zXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyByZWFkbGluZSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50XCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmV4cG9ydCBjb25zdCBjb2xvcnN0cmlwID0gKHN0cikgPT5cblx0c3RyLnJlcGxhY2UoL1tcXHUwMDFiXFx1MDA5Yl1bWygpIzs/XSooPzpbMC05XXsxLDR9KD86O1swLTldezAsNH0pKik/WzAtOUEtT1JaY2YtbnFyeT0+PF0vZywgXCJcIik7XG5cbmV4cG9ydCBjb25zdCBjb21tYXMgPSAobnVtYmVyKSA9PiB7XG5cdGNvbnN0IHBhcnRzID0gbnVtYmVyLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuXHRjb25zdCByZXN1bHQgPVxuXHRcdHBhcnRzLmxlbmd0aCA8PSAxXG5cdFx0XHQ/IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX1gXG5cdFx0XHQ6IGAke3BhcnRzWzBdLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIFwiLFwiKX0uJHtwYXJ0c1sxXX1gO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvRml4ZWRUcnVuYyh4LCBuKSB7XG5cdGNvbnN0IHYgPSAodHlwZW9mIHggPT09IFwic3RyaW5nXCIgPyB4IDogeC50b1N0cmluZygpKS5zcGxpdChcIi5cIik7XG5cdGlmIChuIDw9IDApIHJldHVybiB2WzBdO1xuXHRsZXQgZiA9IHZbMV0gfHwgXCJcIjtcblx0aWYgKGYubGVuZ3RoID4gbikgcmV0dXJuIGAke3ZbMF19LiR7Zi5zdWJzdHIoMCwgbil9YDtcblx0d2hpbGUgKGYubGVuZ3RoIDwgbikgZiArPSBcIjBcIjtcblx0cmV0dXJuIGAke3ZbMF19LiR7Zn1gO1xufVxuXG5leHBvcnQgY29uc3Qgd2hvbGVfd2l0cyA9IChudW1iZXIsIGRpZ2l0cykgPT4ge1xuXHRjb25zdCBsb29rdXAgPSBbXG5cdFx0eyB2YWx1ZTogMW4sIHN5bWJvbDogXCJwZWRyb3NcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiA2biwgc3ltYm9sOiBcIm1XaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogOW4sIHN5bWJvbDogXCIgV2l0c1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDEybiwgc3ltYm9sOiBcIktXaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogMTVuLCBzeW1ib2w6IFwiTVdpdHNcIiB9LFxuXHRdO1xuXHQvLyBjb25zdCByZWdleHAgPSAvXFwuMCskfCg/PD1cXC5bMC05XSkwKyQvXG5cdGNvbnN0IGl0ZW0gPSBsb29rdXAuZmluZExhc3QoKGl0ZW0pID0+IG51bWJlciA+PSBpdGVtLnZhbHVlKTtcblx0Y29uc3QgcXVvdGllbnQgPSBpdGVtID8gTnVtYmVyKEJpZ0ludChudW1iZXIpIC8gaXRlbS52YWx1ZSkgOiBudW1iZXIudG9TdHJpbmcoKTtcblx0Y29uc3QgZGVjaW1hbHMgPSBpdGVtID8gKGl0ZW0udmFsdWUgKyBCaWdJbnQobnVtYmVyKSAtIEJpZ0ludChxdW90aWVudCkgKiBpdGVtLnZhbHVlKS50b1N0cmluZygpLnNsaWNlKDEpIDogXCJcIjtcblx0cmV0dXJuIGl0ZW1cblx0XHQ/IGAke2NvbW1hcyhxdW90aWVudCl9JHtkZWNpbWFscyAhPT0gXCJcIiA/IGAuJHtkZWNpbWFscy5zbGljZSgwLCBkaWdpdHMpfWAgOiBcIlwifSAke2l0ZW0uc3ltYm9sfWBcblx0XHQ6IFwiKG5vIGNvaW5zKVwiO1xufTtcblxuY29uc3QgYmJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5ODs0NG0ke3N0cn1cXHgxYlswOzA7MG1gO1xuY29uc3QgYmN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMzg7NDZtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBiZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDJtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBicmVkID0gKHN0cikgPT4gYFxceDFiWzMwOzQxbSR7c3RyfVxceDFiWzA7MG1gO1xuY29uc3QgYnZpb2xldCA9IChzdHIpID0+IGBcXHgxYlszMDs0NW0ke3N0cn1cXHgxYlswOzBtYDtcblxuY29uc3QgbGN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbMTs5Nm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBsZ3JheSA9IChzdHIpID0+IGBcXHgxYlsxOzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxncmVlbiA9IChzdHIpID0+IGBcXHgxYlsxOzkybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxtYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzE7OTVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbHllbGxvdyA9IChzdHIpID0+IGBcXHgxYlsxOzkzbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ibHVlID0gKHN0cikgPT4gYFxceDFiWzk0bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1jeWFuID0gKHN0cikgPT4gYFxceDFiWzk2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1ncmVlbiA9IChzdHIpID0+IGBcXHgxYls5Mm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBtbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzk1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1yZWQgPSAoc3RyKSA9PiBgXFx4MWJbOTFtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbXllbGxvdyA9IChzdHIpID0+IGBcXHgxYls5M20ke3N0cn1cXHgxYlswbWA7XG5cbmNvbnN0IGJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbMzRtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgY3lhbiA9IChzdHIpID0+IGBcXHgxYlszNm0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBncmF5ID0gKHN0cikgPT4gYFxceDFiWzkwbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzMybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMDszNW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBub3JtYWwgPSAoc3RyKSA9PiBgXFx4MWJbOThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgcmVkID0gKHN0cikgPT4gYFxceDFiWzMxbSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IHdoaXRlID0gKHN0cikgPT4gYFxceDFiWzE7OThtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgeWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzMzbSR7c3RyfVxceDFiWzBtYDtcblxuZXhwb3J0IGNvbnN0IGNvbG9ycyA9IHtcblx0YmJsdWUsXG5cdGJjeWFuLFxuXHRiZ3JlZW4sXG5cdGJyZWQsXG5cdGJ2aW9sZXQsXG5cdGxjeWFuLFxuXHRsZ3JheSxcblx0bGdyZWVuLFxuXHRsbWFnZW50YSxcblx0bHllbGxvdyxcblx0bWJsdWUsXG5cdG1jeWFuLFxuXHRtZ3JlZW4sXG5cdG1tYWdlbnRhLFxuXHRtcmVkLFxuXHRteWVsbG93LFxuXHRibHVlLFxuXHRjeWFuLFxuXHRncmF5LFxuXHRncmVlbixcblx0bWFnZW50YSxcblx0bm9ybWFsLFxuXHRyZWQsXG5cdHdoaXRlLFxuXHR5ZWxsb3csXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gY291bnRMZWF2ZXModCwgb2JqKSB7XG5cdGlmICghb2JqIHx8IHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHJldHVybiAwO1xuXHRpZiAob2JqIGluc3RhbmNlb2YgdCkgcmV0dXJuIDE7XG5cdGlmIChBcnJheS5pc0FycmF5KG9iaikpIHJldHVybiBvYmoucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKTtcblx0ZWxzZSByZXR1cm4gT2JqZWN0LnZhbHVlcyhvYmopLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBjb3VudExlYXZlcyh0LCBpdGVtKSwgMCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVFeHRyYUZsYWdzKGFyZ3MpIHtcblx0cmV0dXJuIGFyZ3MuZmlsdGVyKChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi0tXCIpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNtZCguLi5jb21tYW5kKSB7XG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0ZXhlYyhjb21tYW5kLmpvaW4oXCIgXCIpLCB7IG1heEJ1ZmZlcjogMTAyNCAqIDEwMjQgKiAxMCB9LCAoZXJyb3IsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG5cdFx0XHRpZiAoZXJyb3IpIHtcblx0XHRcdFx0cmVqZWN0KGVycm9yKTtcblx0XHRcdH1cblx0XHRcdGlmIChzdGRlcnIpIHtcblx0XHRcdFx0cmVqZWN0KHN0ZGVycik7XG5cdFx0XHR9XG5cdFx0XHRyZXNvbHZlKHN0ZG91dCk7XG5cdFx0fSk7XG5cdH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhlY1JhZG9uQnl0ZWNvZGUoYnl0ZWNvZGUsIC4uLmZsYWdzKSB7XG5cdGlmICghaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XG5cdFx0dGhyb3cgRXZhbEVycm9yKFwiaW52YWxpZCBoZXggc3RyaW5nXCIpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IG5weCA9IG9zLnR5cGUoKSA9PT0gXCJXaW5kb3dzX05UXCIgPyBcIm5weC5jbWRcIiA6IFwibnB4XCI7XG5cdFx0cmV0dXJuIGNtZChucHgsIFwid2l0c2RrXCIsIFwicmFkb25cIiwgXCJkcnktcnVuXCIsIGJ5dGVjb2RlLCAuLi5mbGFncyk7XG5cdFx0Ly8gLmNhdGNoKChlcnIpID0+IHtcblx0XHQvLyAgICAgbGV0IGVycm9yTWVzc2FnZSA9IGVyci5tZXNzYWdlLnNwbGl0KCdcXG4nKS5zbGljZSgxKS5qb2luKCdcXG4nKS50cmltKClcblx0XHQvLyAgICAgY29uc3QgZXJyb3JSZWdleCA9IC8uKl5lcnJvcjogKD88bWVzc2FnZT4uKikkLiovZ21cblx0XHQvLyAgICAgY29uc3QgbWF0Y2hlZCA9IGVycm9yUmVnZXguZXhlYyhlcnIubWVzc2FnZSlcblx0XHQvLyAgICAgaWYgKG1hdGNoZWQpIHtcblx0XHQvLyAgICAgICAgIGVycm9yTWVzc2FnZSA9IG1hdGNoZWQuZ3JvdXBzLm1lc3NhZ2Vcblx0XHQvLyAgICAgfVxuXHRcdC8vICAgICBjb25zb2xlLmxvZyhlcnJvck1lc3NhZ2UgfHwgZXJyKVxuXHRcdC8vICAgICBjb25zb2xlLmVycm9yKGVycm9yTWVzc2FnZSB8fCBlcnIpXG5cdFx0Ly8gfSlcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEZyb21BcmdzKGFyZ3MsIGZsYWdzKSB7XG5cdGNvbnN0IGN1cmF0ZWQgPSB7fTtcblx0aWYgKGFyZ3MgJiYgZmxhZ3MpIHtcblx0XHRPYmplY3Qua2V5cyhmbGFncykuZm9yRWFjaCgoZmxhZykgPT4ge1xuXHRcdFx0Y29uc3QgZmxhZ0luZGV4ID0gYXJncy5pbmRleE9mKGAtLSR7ZmxhZ31gKTtcblx0XHRcdGlmIChmbGFnSW5kZXggPj0gMCkge1xuXHRcdFx0XHRpZiAoZmxhZ3NbZmxhZ10ucGFyYW0pIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gYXJnc1tmbGFnSW5kZXhdO1xuXHRcdFx0XHRcdGlmICghYXJnc1tmbGFnSW5kZXggKyAxXSB8fCBhcmdzW2ZsYWdJbmRleCArIDFdLnN0YXJ0c1dpdGgoXCItLVwiKSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgcGFyYW1ldGVyIGZvciAtLSR7ZmxhZ31gKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y3VyYXRlZFtmbGFnXSA9IGFyZ3NbZmxhZ0luZGV4ICsgMV07XG5cdFx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJhdGVkW2ZsYWddID0gdHJ1ZTtcblx0XHRcdFx0XHRhcmdzLnNwbGljZShmbGFnSW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIFthcmdzLCBjdXJhdGVkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21IZXhTdHJpbmcoaGV4U3RyaW5nKSB7XG5cdGlmIChoZXhTdHJpbmcuc3RhcnRzV2l0aChcIjB4XCIpKSBoZXhTdHJpbmcgPSBoZXhTdHJpbmcuc2xpY2UoMik7XG5cdHJldHVybiBVaW50OEFycmF5LmZyb20oaGV4U3RyaW5nLm1hdGNoKC8uezEsMn0vZykubWFwKChieXRlKSA9PiBwYXJzZUludChieXRlLCAxNikpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlwSXNQcml2YXRlT3JMb2NhbGhvc3QoaXApIHtcblx0aWYgKGlwLnN1YnN0cmluZygwLCA3KSA9PT0gXCI6OmZmZmY6XCIpIHtcblx0XHRpcCA9IGlwLnN1YnN0cmluZyg3KTtcblx0fVxuXG5cdGlmIChuZXQuaXNJUHY0KGlwKSkge1xuXHRcdC8vIGNoZWNrIGxvY2FsaG9zdFxuXHRcdGlmIChpcCA9PT0gXCIxMjcuMC4wLjFcIikge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gICAgICAgICAxMC4wLjAuMCAtIDEwLjI1NS4yNTUuMjU1ICAgICAgICB8fCAgIDE3Mi4xNi4wLjAgLSAxNzIuMzEuMjU1LjI1NSAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgMTkyLjE2OC4wLjAgLSAxOTIuMTY4LjI1NS4yNTVcblx0XHRyZXR1cm4gKFxuXHRcdFx0L14oMTApXFwuKC4qKVxcLiguKilcXC4oLiopJC8udGVzdChpcCkgfHxcblx0XHRcdC9eKDE3MilcXC4oMVs2LTldfDJbMC05XXwzWzAtMV0pXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKSB8fFxuXHRcdFx0L14oMTkyKVxcLigxNjgpXFwuKC4qKVxcLiguKikkLy50ZXN0KGlwKVxuXHRcdCk7XG5cdH1cblxuXHQvLyBlbHNlOiBpcCBpcyBJUHY2XG5cdGNvbnN0IGZpcnN0V29yZCA9IGlwLnNwbGl0KFwiOlwiKS5maW5kKChlbCkgPT4gISFlbCk7IC8vIGdldCBmaXJzdCBub3QgZW1wdHkgd29yZFxuXG5cdC8vIGVxdWl2YWxlbnQgb2YgMTI3LjAuMC4xIGluIElQdjZcblx0aWYgKGlwID09PSBcIjo6MVwiKSByZXR1cm4gdHJ1ZTtcblx0Ly8gVGhlIG9yaWdpbmFsIElQdjYgU2l0ZSBMb2NhbCBhZGRyZXNzZXMgKGZlYzA6Oi8xMCkgYXJlIGRlcHJlY2F0ZWQuIFJhbmdlOiBmZWMwIC0gZmVmZlxuXHRlbHNlIGlmICgvXmZlW2MtZl1bMC1mXSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIFRoZXNlIGRheXMgVW5pcXVlIExvY2FsIEFkZHJlc3NlcyAoVUxBKSBhcmUgdXNlZCBpbiBwbGFjZSBvZiBTaXRlIExvY2FsLlxuXHQvLyBSYW5nZTogZmMwMCAtIGZjZmZcblx0ZWxzZSBpZiAoL15mY1swLWZdezJ9JC8udGVzdChmaXJzdFdvcmQpKSByZXR1cm4gdHJ1ZTtcblx0Ly8gUmFuZ2U6IGZkMDAgLSBmY2ZmXG5cdGVsc2UgaWYgKC9eZmRbMC1mXXsyfSQvLnRlc3QoZmlyc3RXb3JkKSkgcmV0dXJuIHRydWU7XG5cdC8vIExpbmsgbG9jYWwgYWRkcmVzc2VzIChwcmVmaXhlZCB3aXRoIGZlODApIGFyZSBub3Qgcm91dGFibGVcblx0ZWxzZSBpZiAoZmlyc3RXb3JkID09PSBcImZlODBcIikgcmV0dXJuIHRydWU7XG5cdC8vIERpc2NhcmQgUHJlZml4XG5cdGVsc2UgaWYgKGZpcnN0V29yZCA9PT0gXCIxMDBcIikgcmV0dXJuIHRydWU7XG5cblx0Ly8gQW55IG90aGVyIElQIGFkZHJlc3MgaXMgbm90IFVuaXF1ZSBMb2NhbCBBZGRyZXNzIChVTEEpXG5cdHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSGV4U3RyaW5nT2ZMZW5ndGgoc3RyLCBsZW5ndGgpIHtcblx0cmV0dXJuIChcblx0XHQoaXNIZXhTdHJpbmcoc3RyKSAmJiAoKHN0ci5zdGFydHNXaXRoKFwiMHhcIikgJiYgc3RyLnNsaWNlKDIpLmxlbmd0aCA9PT0gbGVuZ3RoICogMikgfHwgc3RyLmxlbmd0aCA9PT0gbGVuZ3RoICogMikpIHx8XG5cdFx0aXNXaWxkY2FyZChzdHIpXG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFN0cmluZyhzdHIpIHtcblx0cmV0dXJuIChcblx0XHQodHlwZW9mIHN0ciA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0KChzdHIuc3RhcnRzV2l0aChcIjB4XCIpICYmIC9eW2EtZkEtRjAtOV0rJC9pLnRlc3Qoc3RyLnNsaWNlKDIpKSkgfHwgL15bYS1mQS1GMC05XSskL2kudGVzdChzdHIpKSkgfHxcblx0XHRpc1dpbGRjYXJkKHN0cilcblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSGV4U3RyaW5nKGJ1ZmZlciwgcHJlZml4MHggPSBmYWxzZSkge1xuXHRpZiAoYnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblx0cmV0dXJuIChcblx0XHQocHJlZml4MHggPyBcIjB4XCIgOiBcIlwiKSArXG5cdFx0QXJyYXkucHJvdG90eXBlLm1hcFxuXHRcdFx0LmNhbGwoYnVmZmVyLCAoeCkgPT4gYDAwJHt4LnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcblx0XHRcdC5qb2luKFwiXCIpXG5cdFx0XHQubWF0Y2goL1thLWZBLUYwLTldezJ9L2cpXG5cdFx0XHQuam9pbihcIlwiKVxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVUkwodXJsKSB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcGFyc2VkVXJsID0gbmV3IFVSTCh1cmwpO1xuXHRcdHJldHVybiBbYCR7cGFyc2VkVXJsLnByb3RvY29sfS8vYCwgcGFyc2VkVXJsLmhvc3QsIHBhcnNlZFVybC5wYXRobmFtZS5zbGljZSgxKSwgcGFyc2VkVXJsLnNlYXJjaC5zbGljZSgxKV07XG5cdH0gY2F0Y2gge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgVVJMIHdhcyBwcm92aWRlZDogJHt1cmx9YCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIG1vZHVsZSkge1xuXHRzaG93VXNhZ2VIZWFkbGluZShjbWQpO1xuXHRzaG93VXNhZ2VPcHRpb25zKHsgLi4ubW9kdWxlPy5mbGFncyB9KTtcblx0c2hvd1VzYWdlRmxhZ3MoeyAuLi5tb2R1bGU/LmZsYWdzIH0pO1xuXHRzaG93VXNhZ2VSb3V0ZXIoeyAuLi5tb2R1bGU/LnJvdXRlciB9KTtcblx0c2hvd1VzYWdlRW52YXJzKHsgLi4ubW9kdWxlPy5lbnZhcnMgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VSb3V0ZXIocm91dGVyKSB7XG5cdGNvbnN0IGNtZHMgPSBPYmplY3QuZW50cmllcyhyb3V0ZXIpO1xuXHRpZiAoY21kcy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuU1VCQ09NTUFORFM6XCIpO1xuXHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KC4uLmNtZHMubWFwKChbY21kXSkgPT4gY21kLmxlbmd0aCkpO1xuXHRcdGNtZHMuZm9yRWFjaCgoY21kKSA9PiB7XG5cdFx0XHRjb25zb2xlLmluZm8oXCIgIFwiLCBgJHtjbWRbMF19JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY21kWzBdLmxlbmd0aCl9YCwgXCIgIFwiLCBjbWRbMV0uaGludCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUVycm9yKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yLCBmbGFncykge1xuXHRzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUsIGVycm9yKTtcblx0aWYgKGVycm9yKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuRVJST1I6XCIpO1xuXHRcdGlmIChmbGFncz8uZGVidWcpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGNvbG9ycy5yZWQoZXJyb3I/LnN0YWNrPy5zcGxpdChcIlxcblwiKVswXSB8fCBlcnJvcikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1VzYWdlRW52YXJzKGVudmFycykge1xuXHRpZiAoZW52YXJzKSB7XG5cdFx0ZW52YXJzID0gT2JqZWN0LmVudHJpZXMoZW52YXJzKTtcblx0XHRpZiAoZW52YXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkVOVkFSUzpcIik7XG5cdFx0XHRjb25zdCBtYXhXaWR0aCA9IE1hdGgubWF4KC4uLmVudmFycy5tYXAoKFtlbnZhcl0pID0+IGVudmFyLmxlbmd0aCkpO1xuXHRcdFx0ZW52YXJzLmZvckVhY2goKFtlbnZhciwgaGludF0pID0+IHtcblx0XHRcdFx0aWYgKGVudmFyLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihcIktFWVwiKSA8IDAgJiYgcHJvY2Vzcy5lbnZbZW52YXJdKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0XHRcdFx0XCIgIFwiLFxuXHRcdFx0XHRcdFx0YCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLFxuXHRcdFx0XHRcdFx0YCA9PiBTZXR0bGVkIHRvIFwiJHtteWVsbG93KHByb2Nlc3MuZW52W2VudmFyXSl9XCJgLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYCR7eWVsbG93KGVudmFyLnRvVXBwZXJDYXNlKCkpfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gZW52YXIubGVuZ3RoKX1gLCBgICR7aGludH1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VGbGFncyhmbGFncykge1xuXHRpZiAoZmxhZ3MpIHtcblx0XHRmbGFncyA9IE9iamVjdC5lbnRyaWVzKGZsYWdzKVxuXHRcdFx0LmZpbHRlcigoWywgZmxhZ10pID0+ICFmbGFnPy5wYXJhbSlcblx0XHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0XHRpZiAoYSA8IGIpIHJldHVybiAtMTtcblx0XHRcdFx0ZWxzZSBpZiAoYSA+IGIpIHJldHVybiAxO1xuXHRcdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdFx0fSk7XG5cdFx0aWYgKGZsYWdzLmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnNvbGUuaW5mbyhcIlxcbkZMQUdTOlwiKTtcblx0XHRcdGNvbnN0IG1heExlbmd0aCA9IE1hdGgubWF4KFxuXHRcdFx0XHQuLi5mbGFnc1xuXHRcdFx0XHRcdC5maWx0ZXIoKFssIHsgaGludCB9XSkgPT4gaGludClcblx0XHRcdFx0XHQubWFwKChba2V5LCB7IHBhcmFtIH1dKSA9PiAocGFyYW0gPyBrZXkubGVuZ3RoICsgcGFyYW0ubGVuZ3RoICsgMyA6IGtleS5sZW5ndGgpKSxcblx0XHRcdCk7XG5cdFx0XHRmbGFncy5mb3JFYWNoKChmbGFnKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHN0ciA9IGAke2ZsYWdbMF19JHtmbGFnWzFdLnBhcmFtID8gZ3JheShgIDwke2ZsYWdbMV0ucGFyYW19PmApIDogXCJcIn1gO1xuXHRcdFx0XHRpZiAoZmxhZ1sxXS5oaW50KSB7XG5cdFx0XHRcdFx0Y29uc29sZS5pbmZvKFwiICBcIiwgYC0tJHtzdHJ9JHtcIiBcIi5yZXBlYXQobWF4TGVuZ3RoIC0gY29sb3JzdHJpcChzdHIpLmxlbmd0aCl9YCwgXCIgIFwiLCBmbGFnWzFdLmhpbnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZUhlYWRsaW5lKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0Y29uc29sZS5pbmZvKFwiVVNBR0U6XCIpO1xuXHRpZiAoc3ViY21kKSB7XG5cdFx0bGV0IHBhcmFtcyA9IG1vZHVsZS5yb3V0ZXJbc3ViY21kXT8ucGFyYW1zO1xuXHRcdC8vIGNvbnN0IG9wdGlvbnMgPSBtb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnNcblx0XHRpZiAocGFyYW1zKSB7XG5cdFx0XHRjb25zdCBvcHRpb25hbGl6ZSA9IChzdHIpID0+XG5cdFx0XHRcdHN0ci5lbmRzV2l0aChcIiAuLi5dXCIpID8gYFs8JHtzdHIuc2xpY2UoMSwgLTUpfT4gLi4uXWAgOiBzdHJbMF0gPT09IFwiW1wiID8gYFs8JHtzdHIuc2xpY2UoMSwgLTEpfT5dYCA6IGA8JHtzdHJ9PmA7XG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG5cdFx0XHRcdHBhcmFtcyA9IGAke3BhcmFtcy5tYXAoKHBhcmFtKSA9PiBvcHRpb25hbGl6ZShwYXJhbSkpLmpvaW4oXCIgXCIpfSBgO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cGFyYW1zID0gb3B0aW9uYWxpemUocGFyYW1zKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSAke2NvbG9ycy53aGl0ZShzdWJjbWQpfSAke3BhcmFtcyA/IGAke2NvbG9ycy5ncmVlbihwYXJhbXMpfSBgIDogXCJcIn1bT1BUSU9OU10gW0ZMQUdTXWAsXG5cdFx0KTtcblx0XHRpZiAobW9kdWxlPy5yb3V0ZXJbc3ViY21kXT8uaGludCkge1xuXHRcdFx0Y29uc29sZS5pbmZvKFwiXFxuREVTQ1JJUFRJT046XCIpO1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAke21vZHVsZS5yb3V0ZXJbc3ViY21kXS5oaW50fWApO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zb2xlLmluZm8oYCAgICR7Y29sb3JzLndoaXRlKGBucHggd2l0c2RrICR7Y21kfWApfSA8U1VCQ09NTUFORD4gLi4uIFtPUFRJT05TXSBbRkxBR1NdYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3dVc2FnZU9wdGlvbnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucylcblx0XHQuZmlsdGVyKChbLCBvcHRpb25dKSA9PiBvcHRpb24/LnBhcmFtKVxuXHRcdC5zb3J0KChbYV0sIFtiXSkgPT4ge1xuXHRcdFx0aWYgKGEgPCBiKSByZXR1cm4gLTE7XG5cdFx0XHRlbHNlIGlmIChhID4gYikgcmV0dXJuIDE7XG5cdFx0XHRlbHNlIHJldHVybiAwO1xuXHRcdH0pO1xuXHRpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc29sZS5pbmZvKFwiXFxuT1BUSU9OUzpcIik7XG5cdFx0Y29uc3QgbWF4TGVuZ3RoID0gb3B0aW9uc1xuXHRcdFx0Lm1hcCgob3B0aW9uKSA9PiAob3B0aW9uWzFdLnBhcmFtID8gb3B0aW9uWzFdLnBhcmFtLmxlbmd0aCArIG9wdGlvblswXS5sZW5ndGggKyAzIDogb3B0aW9uWzBdLmxlbmd0aCkpXG5cdFx0XHQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoY3VyciA+IHByZXYgPyBjdXJyIDogcHJldikpO1xuXHRcdG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG5cdFx0XHRpZiAob3B0aW9uWzFdLmhpbnQpIHtcblx0XHRcdFx0Y29uc3Qgc3RyID0gYCR7b3B0aW9uWzBdfSR7b3B0aW9uWzFdLnBhcmFtID8gZ3JheShgIDwke29wdGlvblsxXS5wYXJhbX0+YCkgOiBcIlwifWA7XG5cdFx0XHRcdGNvbnNvbGUuaW5mbyhcIiAgXCIsIGAtLSR7c3RyfSR7XCIgXCIucmVwZWF0KG1heExlbmd0aCAtIGNvbG9yc3RyaXAoc3RyKS5sZW5ndGgpfWAsIFwiICBcIiwgb3B0aW9uWzFdLmhpbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG93VXNhZ2VTdWJjb21tYW5kKGNtZCwgc3ViY21kLCBtb2R1bGUpIHtcblx0c2hvd1VzYWdlSGVhZGxpbmUoY21kLCBzdWJjbWQsIG1vZHVsZSk7XG5cdHNob3dVc2FnZU9wdGlvbnMoeyAuLi5tb2R1bGU/LmZsYWdzLCAuLi5tb2R1bGUucm91dGVyW3N1YmNtZF0/Lm9wdGlvbnMgfSk7XG5cdHNob3dVc2FnZUZsYWdzKHsgLi4ubW9kdWxlPy5mbGFncywgLi4ubW9kdWxlLnJvdXRlcltzdWJjbWRdPy5vcHRpb25zIH0pO1xuXHRzaG93VXNhZ2VFbnZhcnMobW9kdWxlLnJvdXRlcltzdWJjbWRdPy5lbnZhcnMgfHwgbW9kdWxlPy5lbnZhcnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvd1ZlcnNpb24oKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtjb2xvcnMubWN5YW4oYFdpdG5ldCBTREsgdiR7cmVxdWlyZShcIi4uLy4uL3BhY2thZ2UuanNvblwiKS52ZXJzaW9ufWApfWApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHN0cikge1xuXHRsZXQgbWF4QXJnc0luZGV4ID0gMDtcblx0aWYgKHN0ciAmJiB0eXBlb2Ygc3RyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0bGV0IG1hdGNoO1xuXHRcdGNvbnN0IHJlZ2V4cCA9IC9cXFxcXFxkXFxcXC9nO1xuXHRcdHdoaWxlICgobWF0Y2ggPSByZWdleHAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuXHRcdFx0Y29uc3QgYXJnc0luZGV4ID0gcGFyc2VJbnQobWF0Y2hbMF1bMV0sIDEwKSArIDE7XG5cdFx0XHRpZiAoYXJnc0luZGV4ID4gbWF4QXJnc0luZGV4KSBtYXhBcmdzSW5kZXggPSBhcmdzSW5kZXg7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXhBcmdzSW5kZXg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1JwY1dpbGRjYXJkcyh3aWxkY2FyZHMpIHtcblx0aWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwib2JqZWN0XCIpIHtcblx0XHRPYmplY3QudmFsdWVzKHdpbGRjYXJkcykuZm9yRWFjaCgod2lsZGNhcmQpID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHdpbGRjYXJkKSlcblx0XHRcdFx0d2lsZGNhcmQuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGNoZWNrUnBjV2lsZGNhcmRzKGl0ZW0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdGVsc2UgY2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkod2lsZGNhcmRzKSkge1xuXHRcdHdpbGRjYXJkcy5mb3JFYWNoKCh3aWxkY2FyZCkgPT4ge1xuXHRcdFx0Y2hlY2tScGNXaWxkY2FyZHMod2lsZGNhcmQpO1xuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB3aWxkY2FyZHMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoaXNXaWxkY2FyZCh3aWxkY2FyZHMpKSB7XG5cdFx0XHRjb25zdCBjaGFyID0gd2lsZGNhcmRzLmNoYXJBdCgxKTtcblx0XHRcdGlmIChjaGFyIDwgXCIwXCIgfHwgY2hhciA+IFwiOVwiKSB7XG5cdFx0XHRcdHRocm93IEVycm9yKFwiUlBDOiB3aWxkY2FyZHMgbm90IGluIHJhbmdlIFswIC4uIDldXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaWxkY2FyZChzdHIpIHtcblx0cmV0dXJuIHN0ci5sZW5ndGggPT09IDMgJiYgL1xcXFxcXGRcXFxcL2cudGVzdChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0aWYgKGFyZ3MubGVuZ3RoID4gMTApIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIDEwKTtcblx0aWYgKG9iaiAmJiB0eXBlb2Ygb2JqID09PSBcInN0cmluZ1wiKSB7XG5cdFx0Zm9yIChsZXQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3MubGVuZ3RoOyBhcmdJbmRleCsrKSB7XG5cdFx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRcdG9iaiA9IG9iai5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIGFyZ3MpIDogdmFsdWUsXG5cdFx0KTtcblx0fSBlbHNlIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gXCJvYmplY3RcIikge1xuXHRcdG9iaiA9IHJlcGxhY2VPYmplY3RXaWxkY2FyZHMob2JqLCBhcmdzKTtcblx0fVxuXHRyZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZU9iamVjdFdpbGRjYXJkcyhvYmosIGFyZ3MpIHtcblx0cmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRPYmplY3QuZW50cmllcyhvYmopLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG5cdFx0XHRmb3IgKGxldCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJncy5sZW5ndGg7IGFyZ0luZGV4KyspIHtcblx0XHRcdFx0Y29uc3Qgd2lsZGNhcmQgPSBgXFxcXCR7YXJnSW5kZXh9XFxcXGA7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlQWxsKHdpbGRjYXJkLCBhcmdzW2FyZ0luZGV4XSk7XG5cdFx0XHRcdHZhbHVlID0gcmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgYXJncyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW2tleSwgdmFsdWVdO1xuXHRcdH0pLFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlV2lsZGNhcmQob2JqLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkge1xuXHRpZiAob2JqICYmIHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcblx0XHRjb25zdCB3aWxkY2FyZCA9IGBcXFxcJHthcmdJbmRleH1cXFxcYDtcblx0XHRvYmogPSBvYmoucmVwbGFjZUFsbCh3aWxkY2FyZCwgYXJnVmFsdWUpO1xuXHRcdGZvciAobGV0IGogPSBhcmdJbmRleCArIDE7IGogPCBhcmdzQ291bnQ7IGorKykge1xuXHRcdFx0b2JqID0gb2JqLnJlcGxhY2VBbGwoYFxcXFwke2p9XFxcXGAsIGBcXFxcJHtqIC0gMX1cXFxcYCk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9iaiAmJiBBcnJheS5pc0FycmF5KG9iaikpIHtcblx0XHRvYmogPSBvYmoubWFwKCh2YWx1ZSkgPT5cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHNwbGljZVdpbGRjYXJkKHZhbHVlLCBhcmdJbmRleCwgYXJnVmFsdWUsIGFyZ3NDb3VudCkgOiB2YWx1ZSxcblx0XHQpO1xuXHR9XG5cdHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0b29sa2l0UnVuKHNldHRpbmdzLCBhcmdzKSB7XG5cdGNvbnN0IGNtZCA9IGAke3NldHRpbmdzLnBhdGhzLnRvb2xraXRCaW5QYXRofSAke2FyZ3Muam9pbihcIiBcIil9YDtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRleGVjKGNtZCwgeyBtYXhCdWZmZXI6IDEwMjQgKiAxMDI0ICogMTAgfSwgKGVycm9yLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuXHRcdFx0aWYgKGVycm9yKSB7XG5cdFx0XHRcdHJlamVjdChlcnJvcik7XG5cdFx0XHR9XG5cdFx0XHRpZiAoc3RkZXJyKSB7XG5cdFx0XHRcdHJlamVjdChzdGRlcnIpO1xuXHRcdFx0fVxuXHRcdFx0cmVzb2x2ZShzdGRvdXQpO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXBwZXJDYW1lbENhc2Uoc3RyKSB7XG5cdHJldHVybiBzdHIucmVwbGFjZSgvXFxiKFxcdykvZywgKF9tYXRjaCwgY2FwdHVyZSkgPT4gY2FwdHVyZS50b1VwcGVyQ2FzZSgpKS5yZXBsYWNlKC9cXHMrL2csIFwiXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9VdGYxNkJ5dGVzKHN0cikge1xuXHRjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGggKiAyKTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdFx0Ynl0ZXNbaSAqIDJdID0gY29kZSA+PiA4O1xuXHRcdGJ5dGVzW2kgKiAyICsgMV0gPSBjb2RlICYgMHhmZjtcblx0fVxuXHRyZXR1cm4gYnl0ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1V0ZjhBcnJheShzdHIpIHtcblx0Y29uc3QgdXRmOCA9IFtdO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuXHRcdGxldCBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuXHRcdGlmIChjaGFyY29kZSA8IDB4ODApIHV0ZjgucHVzaChjaGFyY29kZSk7XG5cdFx0ZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuXHRcdFx0dXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG5cdFx0fSBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcblx0XHRcdHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSwgMHg4MCB8ICgoY2hhcmNvZGUgPj4gNikgJiAweDNmKSwgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gc3Vycm9nYXRlIHBhaXJcblx0XHRcdGkrKztcblx0XHRcdC8vIFVURi0xNiBlbmNvZGVzIDB4MTAwMDAtMHgxMEZGRkYgYnlcblx0XHRcdC8vIHN1YnRyYWN0aW5nIDB4MTAwMDAgYW5kIHNwbGl0dGluZyB0aGVcblx0XHRcdC8vIDIwIGJpdHMgb2YgMHgwLTB4RkZGRkYgaW50byB0d28gaGFsdmVzXG5cdFx0XHRjaGFyY29kZSA9IDB4MTAwMDAgKyAoKChjaGFyY29kZSAmIDB4M2ZmKSA8PCAxMCkgfCAoc3RyLmNoYXJDb2RlQXQoaSkgJiAweDNmZikpO1xuXHRcdFx0dXRmOC5wdXNoKFxuXHRcdFx0XHQweGYwIHwgKGNoYXJjb2RlID4+IDE4KSxcblx0XHRcdFx0MHg4MCB8ICgoY2hhcmNvZGUgPj4gMTIpICYgMHgzZiksXG5cdFx0XHRcdDB4ODAgfCAoKGNoYXJjb2RlID4+IDYpICYgMHgzZiksXG5cdFx0XHRcdDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSxcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB1dGY4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXRmOEFycmF5VG9TdHIoYXJyYXkpIHtcblx0Y29uc3QgbGVuID0gYXJyYXkubGVuZ3RoO1xuXHRsZXQgb3V0ID0gXCJcIjtcblx0bGV0IGkgPSAwO1xuXHRsZXQgYztcblx0bGV0IGNoYXIyLCBjaGFyMztcblx0d2hpbGUgKGkgPCBsZW4pIHtcblx0XHRjID0gYXJyYXlbaSsrXTtcblx0XHRzd2l0Y2ggKGMgPj4gNCkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0Y2FzZSAxOlxuXHRcdFx0Y2FzZSAyOlxuXHRcdFx0Y2FzZSAzOlxuXHRcdFx0Y2FzZSA0OlxuXHRcdFx0Y2FzZSA1OlxuXHRcdFx0Y2FzZSA2OlxuXHRcdFx0Y2FzZSA3OlxuXHRcdFx0XHQvLyAweHh4eHh4eFxuXHRcdFx0XHRvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDEyOlxuXHRcdFx0Y2FzZSAxMzpcblx0XHRcdFx0Ly8gMTEweCB4eHh4ICAgMTB4eCB4eHh4XG5cdFx0XHRcdGNoYXIyID0gYXJyYXlbaSsrXTtcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgxZikgPDwgNikgfCAoY2hhcjIgJiAweDNmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxNDpcblx0XHRcdFx0Ly8gMTExMCB4eHh4ICAxMHh4IHh4eHggIDEweHggeHh4eFxuXHRcdFx0XHRjaGFyMiA9IGFycmF5W2krK107XG5cdFx0XHRcdGNoYXIzID0gYXJyYXlbaSsrXTtcblx0XHRcdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgwZikgPDwgMTIpIHwgKChjaGFyMiAmIDB4M2YpIDw8IDYpIHwgKChjaGFyMyAmIDB4M2YpIDw8IDApKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb24pIHtcblx0Y29uc3QgcmVhZGxpbmVJbnRlcmZhY2UgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuXHRcdGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuXHRcdG91dHB1dDogcHJvY2Vzcy5zdGRvdXQsXG5cdH0pO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIF9yZWplY3QpID0+IHtcblx0XHRyZWFkbGluZUludGVyZmFjZS5xdWVzdGlvbihgJHtxdWVzdGlvbn0gYCwgKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRyZWFkbGluZUludGVyZmFjZS5jbG9zZSgpO1xuXHRcdFx0cmVzb2x2ZShyZXNwb25zZS50cmltKCkpO1xuXHRcdH0pO1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21wdGVyKHByb21pc2UpIHtcblx0Y29uc3QgbG9hZGluZyA9ICgoKSA9PiB7XG5cdFx0Y29uc3QgaCA9IFtcInxcIiwgXCIvXCIsIFwiLVwiLCBcIlxcXFxcIl07XG5cdFx0bGV0IGkgPSAwO1xuXHRcdHJldHVybiBzZXRJbnRlcnZhbCgoKSA9PiB7XG5cdFx0XHRpID0gaSA+IDMgPyAwIDogaTtcblx0XHRcdHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXGJcXGIke2hbaV19IGApO1xuXHRcdFx0aSsrO1xuXHRcdH0sIDUwKTtcblx0fSkoKTtcblx0cmV0dXJuIHByb21pc2UudGhlbigocmVzdWx0KSA9PiB7XG5cdFx0Y2xlYXJJbnRlcnZhbChsb2FkaW5nKTtcblx0XHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcYlxcYlwiKTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaFdvcmtzcGFjZSgpIHtcblx0bGV0IHdvcmtzcGFjZSA9IHBhdGgubm9ybWFsaXplKHByb2Nlc3MuY3dkKCkpO1xuXHR3aGlsZSAoIWZzLmV4aXN0c1N5bmMoYCR7d29ya3NwYWNlfS93aXRuZXQvYXNzZXRzYCkgJiYgcGF0aC5kaXJuYW1lKHdvcmtzcGFjZSkgIT09IHdvcmtzcGFjZSkge1xuXHRcdHdvcmtzcGFjZSA9IHBhdGguZGlybmFtZSh3b3Jrc3BhY2UpO1xuXHR9XG5cdHJldHVybiB3b3Jrc3BhY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZUNoZWNrbGlzdHMoY2hlY2tsaXN0cykge1xuXHRpZiAoY2hlY2tsaXN0cyAmJiBPYmplY3Qua2V5cyhjaGVja2xpc3RzKS5sZW5ndGggPiAwKSB7XG5cdFx0Y29uc3QgaGVhZGxpbmVzID0gW1wiTk9ERVNcIiwgLi4uT2JqZWN0LmtleXMoY2hlY2tsaXN0cykubWFwKChrZXkpID0+IGA6JHtrZXl9YCldO1xuXHRcdGNoZWNrbGlzdHMgPSBPYmplY3QudmFsdWVzKGNoZWNrbGlzdHMpO1xuXHRcdGNvbnN0IHVybHMgPSBPYmplY3Qua2V5cyhjaGVja2xpc3RzWzBdKTtcblx0XHRjb25zdCByZWNvcmRzID0gdXJscy5tYXAoKHVybCkgPT4ge1xuXHRcdFx0Y29uc3QgZXJyb3JzID0gY2hlY2tsaXN0cy5maWx0ZXIoKGNoZWNrbGlzdCkgPT4gY2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvcikubGVuZ3RoO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0ZXJyb3JzID09PSBjaGVja2xpc3RzLmxlbmd0aCA/IGNvbG9ycy5yZWQodXJsKSA6IGVycm9ycyA+IDAgPyBjb2xvcnMubXllbGxvdyh1cmwpIDogY29sb3JzLm1jeWFuKHVybCksXG5cdFx0XHRcdC4uLmNoZWNrbGlzdHMubWFwKChjaGVja2xpc3QpID0+XG5cdFx0XHRcdFx0Y2hlY2tsaXN0W3VybF0gaW5zdGFuY2VvZiBFcnJvclxuXHRcdFx0XHRcdFx0PyBjb2xvcnMucmVkKGNoZWNrbGlzdFt1cmxdKVxuXHRcdFx0XHRcdFx0OiBjaGVja2xpc3RbdXJsXSA9PT0gdHJ1ZVxuXHRcdFx0XHRcdFx0XHQ/IGNvbG9ycy5sY3lhbihcIkF5ZVwiKVxuXHRcdFx0XHRcdFx0XHQ6IGNvbG9ycy5jeWFuKFwiTmF5XCIpLFxuXHRcdFx0XHQpLFxuXHRcdFx0XTtcblx0XHR9KTtcblx0XHR0cmFjZVRhYmxlKHJlY29yZHMsIHtcblx0XHRcdGhlYWRsaW5lcyxcblx0XHRcdG1heENvbHVtbldpZHRoOiAzMSxcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VIZWFkZXIoaGVhZGxpbmUsIGNvbG9yID0gbm9ybWFsLCBpbmRlbnQgPSBcIlwiKSB7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSM4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUkGApO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2NvbG9yKGhlYWRsaW5lKX0g4pSCYCk7XG5cdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSU4pSAJHtcIuKUgFwiLnJlcGVhdChoZWFkbGluZS5sZW5ndGgpfeKUgOKUmGApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJhY2VUYWJsZShyZWNvcmRzLCBvcHRpb25zKSB7XG5cdGNvbnN0IHN0cmluZ2lmeSA9IChkYXRhLCBodW1hbml6ZXJzLCBpbmRleCkgPT5cblx0XHRodW1hbml6ZXJzPy5baW5kZXhdID8gaHVtYW5pemVyc1tpbmRleF0oZGF0YSkudG9TdHJpbmcoKSA6IChkYXRhPy50b1N0cmluZygpID8/IFwiXCIpO1xuXHRjb25zdCBtYXggPSAoYSwgYikgPT4gKGEgPiBiID8gYSA6IGIpO1xuXHRjb25zdCByZWR1Y2VNYXggPSAobnVtYmVycykgPT4gbnVtYmVycy5yZWR1Y2UoKGN1cnIsIHByZXYpID0+IChwcmV2ID4gY3VyciA/IHByZXYgOiBjdXJyKSwgMCk7XG5cdGlmICghb3B0aW9ucykgb3B0aW9ucyA9IHt9O1xuXHRjb25zdCBpbmRlbnQgPSBvcHRpb25zPy5pbmRlbnQgfHwgXCJcIjtcblx0Y29uc3QgbnVtQ29sdW1ucyA9IHJlZHVjZU1heChyZWNvcmRzLm1hcCgocmVjb3JkKSA9PiByZWNvcmQ/Lmxlbmd0aCB8fCAxKSk7XG5cdGNvbnN0IG1heENvbHVtbldpZHRoID0gb3B0aW9ucz8ubWF4Q29sdW1uV2lkdGggfHwgODA7XG5cdGNvbnN0IHRhYmxlID0gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpO1xuXHRvcHRpb25zLndpZHRocyA9XG5cdFx0b3B0aW9ucz8ud2lkdGhzIHx8XG5cdFx0dGFibGUubWFwKChjb2x1bW4sIGluZGV4KSA9PiB7XG5cdFx0XHRsZXQgbWF4V2lkdGggPSByZWR1Y2VNYXgoY29sdW1uLm1hcCgoZmllbGQpID0+IGNvbG9yc3RyaXAoc3RyaW5naWZ5KGZpZWxkLCBvcHRpb25zPy5odW1hbml6ZXJzLCBpbmRleCkpLmxlbmd0aCkpO1xuXHRcdFx0aWYgKG9wdGlvbnM/LmhlYWRsaW5lcz8uW2luZGV4XSkge1xuXHRcdFx0XHRtYXhXaWR0aCA9IG1heChtYXhXaWR0aCwgY29sb3JzdHJpcChvcHRpb25zLmhlYWRsaW5lc1tpbmRleF0ucmVwbGFjZUFsbChcIjpcIiwgXCJcIikpLmxlbmd0aCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gTWF0aC5taW4obWF4V2lkdGgsIG1heENvbHVtbldpZHRoKTtcblx0XHR9KTtcblx0bGV0IGhlYWRsaW5lID0gb3B0aW9ucy53aWR0aHMubWFwKChtYXhXaWR0aCkgPT4gXCLilIBcIi5yZXBlYXQobWF4V2lkdGgpKTtcblx0Y29uc29sZS5pbmZvKGAke2luZGVudH3ilIzilIAke2hlYWRsaW5lLmpvaW4oXCLilIDilKzilIBcIil94pSA4pSQYCk7XG5cdGlmIChvcHRpb25zPy5oZWFkbGluZXMpIHtcblx0XHRoZWFkbGluZSA9IG9wdGlvbnMud2lkdGhzLm1hcCgobWF4V2lkdGgsIGluZGV4KSA9PiB7XG5cdFx0XHRjb25zdCBjYXB0aW9uID0gb3B0aW9ucy5oZWFkbGluZXNbaW5kZXhdLnJlcGxhY2VBbGwoXCI6XCIsIFwiXCIpO1xuXHRcdFx0Y29uc3QgY2FwdGlvbkxlbmd0aCA9IGNvbG9yc3RyaXAoY2FwdGlvbikubGVuZ3RoO1xuXHRcdFx0cmV0dXJuIGAke3doaXRlKGNhcHRpb24pfSR7XCIgXCIucmVwZWF0KG1heFdpZHRoIC0gY2FwdGlvbkxlbmd0aCl9YDtcblx0XHR9KTtcblx0XHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUgiAke2hlYWRsaW5lLmpvaW4oXCIg4pSCIFwiKX0g4pSCYCk7XG5cdFx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoKSA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpO1xuXHRcdGNvbnNvbGUuaW5mbyhgJHtpbmRlbnR94pSc4pSAJHtoZWFkbGluZS5qb2luKFwi4pSA4pS84pSAXCIpfeKUgOKUpGApO1xuXHR9XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7IGkrKykge1xuXHRcdGxldCBsaW5lID0gXCJcIjtcblx0XHRmb3IgKGxldCBqID0gMDsgaiA8IG51bUNvbHVtbnM7IGorKykge1xuXHRcdFx0bGV0IGRhdGEgPSB0YWJsZVtqXVtpXTtcblx0XHRcdGxldCBjb2xvcjtcblx0XHRcdGlmIChvcHRpb25zPy5jb2xvcnM/LltqXSkge1xuXHRcdFx0XHRjb2xvciA9IG9wdGlvbnMuY29sb3JzW2pdO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29sb3IgPVxuXHRcdFx0XHRcdHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiXG5cdFx0XHRcdFx0XHQ/IGdyZWVuXG5cdFx0XHRcdFx0XHQ6IE51bWJlcihkYXRhKSA9PT0gZGF0YSAmJiBkYXRhICUgMSAhPT0gMCAvLyBpcyBmbG9hdCBudW1iZXI/XG5cdFx0XHRcdFx0XHRcdD8geWVsbG93XG5cdFx0XHRcdFx0XHRcdDogKHgpID0+IHg7XG5cdFx0XHR9XG5cdFx0XHRkYXRhID0gc3RyaW5naWZ5KGRhdGEsIG9wdGlvbnM/Lmh1bWFuaXplcnMsIGopO1xuXHRcdFx0aWYgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGgpIHtcblx0XHRcdFx0d2hpbGUgKGNvbG9yc3RyaXAoZGF0YSkubGVuZ3RoID4gbWF4Q29sdW1uV2lkdGggLSAzKSB7XG5cdFx0XHRcdFx0ZGF0YSA9IGRhdGEuc2xpY2UoMCwgLTEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGEgKz0gXCIuLi5cIjtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGRhdGFMZW5ndGggPSBjb2xvcnN0cmlwKGRhdGEpLmxlbmd0aDtcblx0XHRcdGlmIChvcHRpb25zPy5oZWFkbGluZXMgJiYgb3B0aW9ucy5oZWFkbGluZXNbal1bMF0gPT09IFwiOlwiKSB7XG5cdFx0XHRcdGRhdGEgPSBgJHtjb2xvcihkYXRhKX0ke1wiIFwiLnJlcGVhdChvcHRpb25zLndpZHRoc1tqXSAtIGRhdGFMZW5ndGgpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkYXRhID0gYCR7XCIgXCIucmVwZWF0KG9wdGlvbnMud2lkdGhzW2pdIC0gZGF0YUxlbmd0aCl9JHtjb2xvcihkYXRhKX1gO1xuXHRcdFx0fVxuXHRcdFx0bGluZSArPSBg4pSCICR7ZGF0YX0gYDtcblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKGAke2luZGVudH0ke2xpbmV94pSCYCk7XG5cdH1cblx0aGVhZGxpbmUgPSBvcHRpb25zLndpZHRocy5tYXAoKG1heFdpZHRoKSA9PiBcIuKUgFwiLnJlcGVhdChtYXhXaWR0aCkpO1xuXHRjb25zb2xlLmluZm8oYCR7aW5kZW50feKUlOKUgCR7aGVhZGxpbmUuam9pbihcIuKUgOKUtOKUgFwiKX3ilIDilJhgKTtcbn1cblxuZnVuY3Rpb24gdHJhbnNwb3NlKHJlY29yZHMsIG51bUNvbHVtbnMpIHtcblx0Y29uc3QgY29sdW1ucyA9IFtdO1xuXHRmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbnVtQ29sdW1uczsgaW5kZXgrKykge1xuXHRcdGNvbHVtbnMucHVzaChyZWNvcmRzLm1hcCgocm93KSA9PiByb3dbaW5kZXhdKSk7XG5cdH1cblx0cmV0dXJuIGNvbHVtbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eEpzb25SZXBsYWNlcihrZXksIHZhbHVlKSB7XG5cdHN3aXRjaCAoa2V5KSB7XG5cdFx0Y2FzZSBcImJ5dGVzXCI6XG5cdFx0Y2FzZSBcImRlclwiOlxuXHRcdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKTtcblx0XHRjYXNlIFwidHhcIjpcblx0XHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpO1xuXHRcdGNhc2UgXCJjaGFuZ2VcIjpcblx0XHRjYXNlIFwiZmVlc1wiOlxuXHRcdGNhc2UgXCJ2YWx1ZVwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCkgLyAxMCAqKiA5O1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR4UmVjZWlwdEpzb25SZXBsYWNlcihrZXksIHZhbHVlKSB7XG5cdHN3aXRjaCAoa2V5KSB7XG5cdFx0Y2FzZSBcImJ5dGVzXCI6XG5cdFx0Y2FzZSBcImRlclwiOlxuXHRcdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHZhbHVlLCB0cnVlKTtcblx0XHRjYXNlIFwidHhcIjpcblx0XHRcdHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSwgdHhKc29uUmVwbGFjZXIpO1xuXHRcdGNhc2UgXCJjaGFuZ2VcIjpcblx0XHRjYXNlIFwiZmVlc1wiOlxuXHRcdGNhc2UgXCJ2YWx1ZVwiOlxuXHRcdFx0cmV0dXJuIHBhcnNlSW50KHZhbHVlPy5wZWRyb3MsIDEwKSAvIDEwICoqIDk7XG5cdFx0Y2FzZSBcInRpbWVzdGFtcFwiOlxuXHRcdFx0cmV0dXJuIG1vbWVudC51bml4KHZhbHVlKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKTtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uT25DaGVja3BvaW50KHJlY2VpcHQpIHtcblx0aWYgKHJlY2VpcHQ/LmNvbmZpcm1hdGlvbnMpIHtcblx0XHRjb25zb2xlLmluZm8oYCA+IENoZWNrcG9pbnQgIyR7Y29tbWFzKHJlY2VpcHQuY29uZmlybWF0aW9ucyl9Li4uYCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZShyZWNlaXB0KSB7XG5cdGNvbnN0IGNhcHRpb25zID0ge1xuXHRcdHBlbmRpbmc6IFwiQXdhaXRpbmcgcmVsYXkuLi5cIixcblx0XHQvLyBjb25maXJtZWQ6IFwiVHJhbnNhY3Rpb24gY29uZmlybWVkOlwiLFxuXHRcdC8vIGZpbmFsaXplZDogXCJUcmFuc2FjdGlvbiBmaW5hbGl6ZWQ6XCIsXG5cdFx0cmVsYXllZDogXCJBd2FpdGluZyBpbmNsdXNpb24uLi5cIixcblx0XHRtaW5lZDogXCJBd2FpdGluZyBjb25maXJtYXRpb25zLi4uXCIsXG5cdH07XG5cdGNvbnN0IGNhcHRpb24gPSBjYXB0aW9uc1tyZWNlaXB0LnN0YXR1c107XG5cdGlmIChjYXB0aW9uKSBjb25zb2xlLmluZm8oYCA+ICR7Y2FwdGlvbnNbcmVjZWlwdC5zdGF0dXNdfWApO1xuXHRpZiAoW1wiZmluYWxpemVkXCIsIFwiY29uZmlybWVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gQmxvY2sgaGFzaDogICAke2NvbG9ycy5ncmF5KHJlY2VpcHQ/LmJsb2NrSGFzaCl9YCk7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBCbG9jayBtaW5lcjogICR7Y29sb3JzLmN5YW4ocmVjZWlwdD8uYmxvY2tNaW5lcil9YCk7XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBCbG9jayBlcG9jaDogICR7Y29sb3JzLndoaXRlKGNvbW1hcyhyZWNlaXB0Py5ibG9ja0Vwb2NoKSl9YCk7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+IEluY2x1ZGVkIGF0OiAgJHtjb2xvcnMuZ3JlZW4obW9tZW50LnVuaXgocmVjZWlwdD8uYmxvY2tUaW1lc3RhbXApLmZvcm1hdChcIk1NTU0gRG8gWVlZWSwgaDptbTpzcyBhXCIpKX1gLFxuXHRcdCk7XG5cdFx0Y29uc29sZS5pbmZvKFxuXHRcdFx0YCA+ICR7cmVjZWlwdC5zdGF0dXNbMF0udG9VcHBlckNhc2UoKSArIHJlY2VpcHQuc3RhdHVzLnNsaWNlKDEpfSBhdDogJHtjb2xvcnMubWdyZWVuKG1vbWVudC51bml4KHJlY2VpcHQudGltZXN0YW1wKS5mb3JtYXQoXCJNTU1NIERvIFlZWVksIGg6bW06c3MgYVwiKSl9YCxcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uUmVjZWlwdChyZWNlaXB0KSB7XG5cdGNvbnN0IGNhcHRpb25zID0ge1xuXHRcdERhdGFSZXF1ZXN0OiBcIiA+IERSVCBoYXNoOiAgICAgXCIsXG5cdFx0VmFsdWVUcmFuc2ZlcjogXCIgPiBWVFQgaGFzaDogICAgIFwiLFxuXHR9O1xuXHRjb25zb2xlLmluZm8oYCR7Y2FwdGlvbnNbcmVjZWlwdC50eXBlXSB8fCBcIiA+IFRYIGhhc2g6ICAgICAgXCJ9JHtjb2xvcnMud2hpdGUocmVjZWlwdC5oYXNoKX1gKTtcblx0aWYgKHJlY2VpcHQ/LmRyb0hhc2gpIGNvbnNvbGUuaW5mbyhgID4gRFJPIGhhc2g6ICAgICAke2NvbG9ycy5ncmVlbihyZWNlaXB0LmRyb0hhc2gpfWApO1xuXHRpZiAocmVjZWlwdD8ucmFkSGFzaCkgY29uc29sZS5pbmZvKGAgPiBSQUQgaGFzaDogICAgICR7Y29sb3JzLm1ncmVlbihyZWNlaXB0LnJhZEhhc2gpfWApO1xuXHRpZiAocmVjZWlwdD8uZHJvU0xBKSBjb25zb2xlLmluZm8oYCA+IFNMQSBwYXJhbXM6ICAgJHtKU09OLnN0cmluZ2lmeShyZWNlaXB0LmRyb1NMQSl9YCk7XG5cdGlmIChyZWNlaXB0Py53aXRoZHJhd2VyKSB7XG5cdFx0aWYgKHJlY2VpcHQ/LnZhbGlkYXRvcikge1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgPiBWYWxpZGF0b3I6ICAgICR7Y29sb3JzLm1jeWFuKHJlY2VpcHQudmFsaWRhdG9yKX1gKTtcblx0XHR9XG5cdFx0Y29uc29sZS5pbmZvKGAgPiBXaXRoZHJhd2VyOiAgICR7Y29sb3JzLm1tYWdlbnRhKHJlY2VpcHQud2l0aGRyYXdlcil9YCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3Qgc2lnbmVycyA9IEFycmF5LmlzQXJyYXkocmVjZWlwdC5mcm9tKSA/IHJlY2VpcHQuZnJvbSA6IFtyZWNlaXB0LmZyb21dO1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gU2lnbmVyL3M6ICAgICAke2NvbG9ycy5tbWFnZW50YShzaWduZXJzWzBdKX1gKTtcblx0XHRzaWduZXJzLnNsaWNlKDEpLmZvckVhY2goKHNpZ25lcikgPT4ge1xuXHRcdFx0Y29uc29sZS5pbmZvKGAgICAgICAgICAgICAgICAgICR7Y29sb3JzLm1tYWdlbnRhKHNpZ25lcil9YCk7XG5cdFx0fSk7XG5cdH1cblx0aWYgKHJlY2VpcHQ/LnJlY2lwaWVudHMpIHtcblx0XHRjb25zb2xlLmluZm8oXG5cdFx0XHRgID4gUmVjaXBpZW50L3M6ICAke2NvbG9ycy5tYmx1ZShcblx0XHRcdFx0cmVjZWlwdC5yZWNpcGllbnRzLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpLFxuXHRcdFx0KX1gLFxuXHRcdCk7XG5cdH1cblx0aWYgKHJlY2VpcHQ/LmZlZXMpIGNvbnNvbGUuaW5mbyhgID4gTmV0d29yayBmZWU6ICAke2NvbG9ycy55ZWxsb3cocmVjZWlwdC5mZWVzLnRvU3RyaW5nKDIpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LnZhbHVlKSBjb25zb2xlLmluZm8oYCA+IFZhbHVlOiAgICAgICAgJHtjb2xvcnMubXllbGxvdyhyZWNlaXB0LnZhbHVlLnRvU3RyaW5nKDIpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LndlaWdodCkgY29uc29sZS5pbmZvKGAgPiBXZWlnaHQ6ICAgICAgICR7Y29sb3JzLm1ncmVlbihjb21tYXMocmVjZWlwdC53ZWlnaHQpKX1gKTtcblx0aWYgKHJlY2VpcHQ/LndpdG5lc3Nlcykge1xuXHRcdGNvbnNvbGUuaW5mbyhgID4gV2l0bmVzc2VzOiAgICAke3JlY2VpcHQud2l0bmVzc2VzfWApO1xuXHR9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cmFjZVRyYW5zYWN0aW9uKHRyYW5zbWl0dGVyLCBvcHRpb25zKSB7XG5cdGNvbnN0IGNvbG9yID0gb3B0aW9ucz8uY29sb3IgfHwgKCh4KSA9PiBgXFx4MWJbMzA7NDVtJHt4fVxceDFiWzBtYCk7XG5cdGxldCByZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuc2lnblRyYW5zYWN0aW9uKG9wdGlvbnMsIG9wdGlvbnM/LnJlbG9hZCk7XG5cdGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG5cdFx0Y29uc29sZS5pbmZvKGBcXG4ke2dyYXkoSlNPTi5zdHJpbmdpZnkocmVjZWlwdC50eCwgdHhKc29uUmVwbGFjZXIpKX1gKTtcblx0fVxuXHRpZiAob3B0aW9ucz8uaGVhZGxpbmUpIHtcblx0XHRjb25zb2xlLmluZm8oYFxcbiAke2NvbG9yKGAgICR7b3B0aW9ucy5oZWFkbGluZX0gIGApfVxcbmApO1xuXHR9XG5cdHRyYWNlVHJhbnNhY3Rpb25SZWNlaXB0KHJlY2VpcHQpO1xuXHRpZiAoIW9wdGlvbnM/LmZvcmNlKSB7XG5cdFx0Ly8gcHJvbXB0IHVzZXIgY29uZmlybWF0aW9uXG5cdFx0Y29uc29sZS5pbmZvKCk7XG5cdFx0Y29uc3QgYW5zd2VyID0gYXdhaXQgcmVxdWlyZShcImlucXVpcmVyXCIpLmNyZWF0ZVByb21wdE1vZHVsZSgpKFtcblx0XHRcdHtcblx0XHRcdFx0bWVzc2FnZTogXCJTZW5kIHRyYW5zYWN0aW9uP1wiLFxuXHRcdFx0XHR0eXBlOiBcImNvbmZpcm1cIixcblx0XHRcdFx0bmFtZTogXCJjb250aW51ZVwiLFxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZSxcblx0XHRcdH0sXG5cdFx0XSk7XG5cdFx0aWYgKCFhbnN3ZXIuY29udGludWUpIHtcblx0XHRcdHJldHVybiByZWNlaXB0O1xuXHRcdH1cblx0fVxuXHR0cnkge1xuXHRcdGNvbnNvbGUuaW5mbygpO1xuXHRcdHJlY2VpcHQgPSBhd2FpdCB0cmFuc21pdHRlci5zZW5kVHJhbnNhY3Rpb24oKTtcblx0XHRpZiAob3B0aW9ucz8uYXdhaXQgfHwgb3B0aW9ucz8uY29uZmlybWF0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZWNlaXB0ID0gYXdhaXQgdHJhbnNtaXR0ZXIuY29uZmlybVRyYW5zYWN0aW9uKHJlY2VpcHQuaGFzaCwge1xuXHRcdFx0XHRjb25maXJtYXRpb25zOiBvcHRpb25zPy5jb25maXJtYXRpb25zIHx8IDAsXG5cdFx0XHRcdG9uQ2hlY2twb2ludDogdHJhY2VUcmFuc2FjdGlvbk9uQ2hlY2twb2ludCxcblx0XHRcdFx0b25TdGF0dXNDaGFuZ2U6IHRyYWNlVHJhbnNhY3Rpb25PblN0YXR1c0NoYW5nZSxcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBkYXRhID0ge1xuXHRcdFx0XHRzdGF0dXM6IHJlY2VpcHQ/LnN0YXR1cyxcblx0XHRcdFx0dGltZXN0YW1wOiByZWNlaXB0Py50aW1lc3RhbXAgfHwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXG5cdFx0XHR9O1xuXHRcdFx0Y29uc29sZS5pbmZvKGRhdGEpO1xuXHRcdH1cblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0aWYgKGVycj8uaW5GbGlnaHQgJiYgZXJyLmluRmxpZ2h0KSB7XG5cdFx0XHRjb25zb2xlLmluZm8oYFxcbiR7Y29sb3JzLmdyYXkoSlNPTi5zdHJpbmdpZnkoZXJyLmluRmxpZ3Q/Lm1lc3NhZ2UsIHR4UmVjZWlwdEpzb25SZXBsYWNlcikpfWApO1xuXHRcdH1cblx0XHR0aHJvdyBlcnI7XG5cdH1cblx0cmV0dXJuIHJlY2VpcHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZVNsYXNoZXMoc3RyKSB7XG5cdC8vIGFkZCBhbm90aGVyIGVzY2FwZWQgc2xhc2ggaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYW4gb2RkXG5cdC8vIG51bWJlciBvZiBlc2NhcGVkIHNsYXNoZXMgd2hpY2ggd2lsbCBjcmFzaCBKU09OLnBhcnNlXG5cdGxldCBwYXJzZWRTdHIgPSBzdHIucmVwbGFjZSgvKF58W15cXFxcXSkoXFxcXFxcXFwpKlxcXFwkLywgXCIkJlxcXFxcIik7XG5cblx0Ly8gZXNjYXBlIHVuZXNjYXBlZCBkb3VibGUgcXVvdGVzIHRvIHByZXZlbnQgZXJyb3Igd2l0aFxuXHQvLyBhZGRlZCBkb3VibGUgcXVvdGVzIGluIGpzb24gc3RyaW5nXG5cdHBhcnNlZFN0ciA9IHBhcnNlZFN0ci5yZXBsYWNlKC8oXnxbXlxcXFxdKSgoXFxcXFxcXFwpKlwiKS9nLCBcIiQxXFxcXCQyXCIpO1xuXG5cdHRyeSB7XG5cdFx0cGFyc2VkU3RyID0gSlNPTi5wYXJzZShgXCIke3BhcnNlZFN0cn1cImApO1xuXHR9IGNhdGNoIChfZSkge1xuXHRcdHJldHVybiBzdHI7XG5cdH1cblx0cmV0dXJuIHBhcnNlZFN0cjtcbn1cbiJdfQ==
822
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iaW4vaGVscGVycy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQyxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV6QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLDZFQUE2RSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWhHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxNQUFNLEdBQ1gsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEVBQUU7UUFDckQsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9B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Q0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDcEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDckQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFDbkQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7QUFFdEQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDbkQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDL0MsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUM7QUFDaEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxTQUFTLENB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QUM7SUFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU87SUFDMUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzdDLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUMzQixNQUFNLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLE1B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QUcsSUFBSSxDQUFDO2FBQzlELENBQUM7WUFDRixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUM7SUFDRixDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksR0FBRyxFQUFFLFFBQVEsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLENBQUM7UUFDRCxNQUFNLEdBQUcsQ0FBQztJQUNYLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNoQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFHO0lBQ2xDLDJEQUEyRDtJQUMzRCx3REFBd0Q7SUFDeEQsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUUzRCx1REFBdUQ7SUFDdkQscUNBQXFDO0lBQ3JDLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWhFLElBQUksQ0FBQztRQUNKLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSBcIm5vZGU6bW9kdWxlXCI7XG5pbXBvcnQgKiBhcyBuZXQgZnJvbSBcIm5vZGU6bmV0XCI7XG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgcmVhZGxpbmUgZnJvbSBcIm5vZGU6cmVhZGxpbmVcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuXG5jb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpO1xuY29uc3QgX1RPT0xLSVRfUlVOX1RJTUVPVVRfTVNFQ1MgPSAzMDAwMDtcblxuZXhwb3J0IGNvbnN0IGNvbG9yc3RyaXAgPSAoc3RyKSA9PlxuXHRzdHIucmVwbGFjZSgvW1xcdTAwMWJcXHUwMDliXVtbKCkjOz9dKig/OlswLTldezEsNH0oPzo7WzAtOV17MCw0fSkqKT9bMC05QS1PUlpjZi1ucXJ5PT48XS9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IGNvbW1hcyA9IChudW1iZXIpID0+IHtcblx0Y29uc3QgcGFydHMgPSBudW1iZXIudG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XG5cdGNvbnN0IHJlc3VsdCA9XG5cdFx0cGFydHMubGVuZ3RoIDw9IDFcblx0XHRcdD8gYCR7cGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpfWBcblx0XHRcdDogYCR7cGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgXCIsXCIpfS4ke3BhcnRzWzFdfWA7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdG9GaXhlZFRydW5jKHgsIG4pIHtcblx0Y29uc3QgdiA9ICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIiA/IHggOiB4LnRvU3RyaW5nKCkpLnNwbGl0KFwiLlwiKTtcblx0aWYgKG4gPD0gMCkgcmV0dXJuIHZbMF07XG5cdGxldCBmID0gdlsxXSB8fCBcIlwiO1xuXHRpZiAoZi5sZW5ndGggPiBuKSByZXR1cm4gYCR7dlswXX0uJHtmLnN1YnN0cigwLCBuKX1gO1xuXHR3aGlsZSAoZi5sZW5ndGggPCBuKSBmICs9IFwiMFwiO1xuXHRyZXR1cm4gYCR7dlswXX0uJHtmfWA7XG59XG5cbmV4cG9ydCBjb25zdCB3aG9sZV93aXRzID0gKG51bWJlciwgZGlnaXRzKSA9PiB7XG5cdGNvbnN0IGxvb2t1cCA9IFtcblx0XHR7IHZhbHVlOiAxbiwgc3ltYm9sOiBcInBlZHJvc1wiIH0sXG5cdFx0eyB2YWx1ZTogMTBuICoqIDZuLCBzeW1ib2w6IFwibVdpdHNcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiA5biwgc3ltYm9sOiBcIiBXaXRzXCIgfSxcblx0XHR7IHZhbHVlOiAxMG4gKiogMTJuLCBzeW1ib2w6IFwiS1dpdHNcIiB9LFxuXHRcdHsgdmFsdWU6IDEwbiAqKiAxNW4sIHN5bWJvbDogXCJNV2l0c1wiIH0sXG5cdF07XG5cdC8vIGNvbnN0IHJlZ2V4cCA9IC9cXC4wKyR8KD88PVxcLlswLTldKTArJC9cblx0Y29uc3QgaXRlbSA9IGxvb2t1cC5maW5kTGFzdCgoaXRlbSkgPT4gbnVtYmVyID49IGl0ZW0udmFsdWUpO1xuXHRjb25zdCBxdW90aWVudCA9IGl0ZW0gPyBOdW1iZXIoQmlnSW50KG51bWJlcikgLyBpdGVtLnZhbHVlKSA6IG51bWJlci50b1N0cmluZygpO1xuXHRjb25zdCBkZWNpbWFscyA9IGl0ZW0gPyAoaXRlbS52YWx1ZSArIEJpZ0ludChudW1iZXIpIC0gQmlnSW50KHF1b3RpZW50KSAqIGl0ZW0udmFsdWUpLnRvU3RyaW5nKCkuc2xpY2UoMSkgOiBcIlwiO1xuXHRyZXR1cm4gaXRlbVxuXHRcdD8gYCR7Y29tbWFzKHF1b3RpZW50KX0ke2RlY2ltYWxzICE9PSBcIlwiID8gYC4ke2RlY2ltYWxzLnNsaWNlKDAsIGRpZ2l0cyl9YCA6IFwiXCJ9ICR7aXRlbS5zeW1ib2x9YFxuXHRcdDogXCIobm8gY29pbnMpXCI7XG59O1xuXG5jb25zdCBiYmx1ZSA9IChzdHIpID0+IGBcXHgxYlsxOzk4OzQ0bSR7c3RyfVxceDFiWzA7MDswbWA7XG5jb25zdCBiY3lhbiA9IChzdHIpID0+IGBcXHgxYlszODs0Nm0ke3N0cn1cXHgxYlswOzBtYDtcbmNvbnN0IGJncmVlbiA9IChzdHIpID0+IGBcXHgxYlszMDs0Mm0ke3N0cn1cXHgxYlswOzBtYDtcbmNvbnN0IGJyZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzA7NDFtJHtzdHJ9XFx4MWJbMDswbWA7XG5jb25zdCBidmlvbGV0ID0gKHN0cikgPT4gYFxceDFiWzMwOzQ1bSR7c3RyfVxceDFiWzA7MG1gO1xuXG5jb25zdCBsY3lhbiA9IChzdHIpID0+IGBcXHgxYlsxOzk2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGxncmF5ID0gKHN0cikgPT4gYFxceDFiWzE7OTBtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbGdyZWVuID0gKHN0cikgPT4gYFxceDFiWzE7OTJtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbG1hZ2VudGEgPSAoc3RyKSA9PiBgXFx4MWJbMTs5NW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBseWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzE7OTNtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWJsdWUgPSAoc3RyKSA9PiBgXFx4MWJbOTRtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWN5YW4gPSAoc3RyKSA9PiBgXFx4MWJbOTZtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWdyZWVuID0gKHN0cikgPT4gYFxceDFiWzkybSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG1tYWdlbnRhID0gKHN0cikgPT4gYFxceDFiWzA7OTVtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbXJlZCA9IChzdHIpID0+IGBcXHgxYls5MW0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBteWVsbG93ID0gKHN0cikgPT4gYFxceDFiWzkzbSR7c3RyfVxceDFiWzBtYDtcblxuY29uc3QgYmx1ZSA9IChzdHIpID0+IGBcXHgxYlszNG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCBjeWFuID0gKHN0cikgPT4gYFxceDFiWzM2bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IGdyYXkgPSAoc3RyKSA9PiBgXFx4MWJbOTBtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgZ3JlZW4gPSAoc3RyKSA9PiBgXFx4MWJbMzJtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3QgbWFnZW50YSA9IChzdHIpID0+IGBcXHgxYlswOzM1bSR7c3RyfVxceDFiWzBtYDtcbmNvbnN0IG5vcm1hbCA9IChzdHIpID0+IGBcXHgxYls5OG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCByZWQgPSAoc3RyKSA9PiBgXFx4MWJbMzFtJHtzdHJ9XFx4MWJbMG1gO1xuY29uc3Qgd2hpdGUgPSAoc3RyKSA9PiBgXFx4MWJbMTs5OG0ke3N0cn1cXHgxYlswbWA7XG5jb25zdCB5ZWxsb3cgPSAoc3RyKSA9PiBgXFx4MWJbMzNtJHtzdHJ9XFx4MWJbMG1gO1xuXG5leHBvcnQgY29uc3QgY29sb3JzID0ge1xuXHRiYmx1ZSxcblx0YmN5YW4sXG5cdGJncmVlbixcblx0YnJlZCxcblx0YnZpb2xldCxcblx0bGN5YW4sXG5cdGxncmF5LFxuXHRsZ3JlZW4sXG5cdGxtYWdlbnRhLFxuXHRseWVsbG93LFxuXHRtYmx1ZSxcblx0bWN5YW4sXG5cdG1ncmVlbixcblx0bW1hZ2VudGEsXG5cdG1yZWQsXG5cdG15ZWxsb3csXG5cdGJsdWUsXG5cdGN5YW4sXG5cdGdyYXksXG5cdGdyZWVuLFxuXHRtYWdlbnRhLFxuXHRub3JtYWwsXG5cdHJlZCxcblx0d2hpdGUsXG5cdHllbGxvdyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudExlYXZlcyh0LCBvYmopIHtcblx0aWYgKCFvYmogfHwgdHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIDA7XG5cdGlmIChvYmogaW5zdGFuY2VvZiB0KSByZXR1cm4gMTtcblx0aWYgKEFycmF5LmlzQXJyYXkob2JqKSkgcmV0dXJuIG9iai5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgY291bnRMZWF2ZXModCwgaXRlbSksIDApO1xuXHRlbHNlIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikucmVkdWNlKChzdW0sIGl0ZW0pID0+IHN1bSArIGNvdW50TGVhdmVzKHQsIGl0ZW0pLCAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUV4dHJhRmxhZ3MoYXJncykge1xuXHRyZXR1cm4gYXJncy5maWx0ZXIoKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLS1cIikpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY21kKHRpbWVvdXQsIC4uLmNvbW1hbmQpIHtcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRleGVjKGNvbW1hbmQuam9pbihcIiBcIiksIHsgdGltZW91dCwgbWF4QnVmZmVyOiAxMDI0ICogMTAyNCAqIDEwIH0sIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcblx0XHRcdGlmIChlcnJvcikge1xuXHRcdFx0XHRyZWplY3QoZXJyb3IpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHN0ZGVycikge1xuXHRcdFx0XHRyZWplY3Qoc3RkZXJyKTtcblx0XHRcdH1cblx0XHRcdHJlc29sdmUoc3Rkb3V0KTtcblx0XHR9KTtcblx0fSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleGVjUmFkb25CeXRlY29kZShieXRlY29kZSwgdGltZW91dCwgLi4uZmxhZ3MpIHtcblx0aWYgKCFpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHR0aHJvdyBFdmFsRXJyb3IoXCJpbnZhbGlkIGhleCBzdHJpbmdcIik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgbnB4ID0gb3MudHlwZSgpID09PSBcIldpbmRvd3NfTlRcIiA/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=
@@ -32,7 +32,10 @@ export declare class RadonRequest extends RadonArtifact {
32
32
  witnessReducer?: RadonReducer;
33
33
  });
34
34
  protected _encode(): Buffer;
35
- execDryRun(verbose?: boolean): Promise<string>;
35
+ execDryRun(options?: {
36
+ verbose: boolean;
37
+ timeout: number;
38
+ }): Promise<string>;
36
39
  get dataType(): string;
37
40
  get radHash(): string;
38
41
  toBytecode(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/index.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EACN,UAAU,IAAI,WAAW,EACzB,YAAY,IAAI,aAAa,EAC7B,UAAU,IAAI,WAAW,EACzB,cAAc,IAAI,eAAe,EACjC,UAAU,IAAI,WAAW,EACzB,YAAY,IAAI,aAAa,EAC7B,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC3B,WAAW,IAAI,YAAY,EAC3B,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,MAAM,YAAY,CAAC;AAGpB,KAAK,IAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;AAElC,cAAM,aAAa;IAClB,SAAgB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1C,SAAgB,cAAc,EAAE,YAAY,CAAC;IAC7C,SAAgB,cAAc,EAAE,YAAY,CAAC;gBAEjC,KAAK,EAAE;QAClB,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1B,cAAc,EAAE,YAAY,CAAC;QAC7B,cAAc,EAAE,YAAY,CAAC;KAC7B;IAgBM,QAAQ,IAAI,MAAM;CAOzB;AAED,qBAAa,YAAa,SAAQ,aAAa;IAC9C;;;;OAIG;WACW,YAAY,CAAC,QAAQ,EAAE,GAAG;IAexC;;;;OAIG;WACW,YAAY,CAAC,GAAG,EAAE,GAAG;gBA6BvB,KAAK,EAAE;QAClB,OAAO,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;QAC3C,cAAc,CAAC,EAAE,YAAY,CAAC;QAC9B,cAAc,CAAC,EAAE,YAAY,CAAC;KAC9B;IAaD,SAAS,CAAC,OAAO,IAAI,MAAM;IAWd,UAAU,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IASzF,IAAW,QAAQ,IAAI,MAAM,CAM5B;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAEM,UAAU,IAAI,MAAM;IAIpB,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,GAAG;IAS/B,UAAU,IAAI,GAAG;IASjB,MAAM,IAAI,MAAM;CAGvB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,cAAc,CAAC,EAAE,YAAY,CAAC;CAC9B,GAAG,YAAY,CAwBf;AAED,wBAAgB,WAAW,CAAC,SAAS,SAAS,QAAQ,GAAG,WAAW,EAAE,SAAS,EAAE;IAChF,KAAK,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACrC,GAAG,SAAS,CAGZ;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC/C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAE7B,SAAgB,WAAW,EAAE,OAAO,CAAC;IACrC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAG9C,KAAK,EAAE;QACN,OAAO,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;QAC3C,cAAc,CAAC,EAAE,YAAY,CAAC;QAC9B,cAAc,CAAC,EAAE,YAAY,CAAC;KAC9B,EACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;IAyC/B,IAAW,SAAS,IAAI,MAAM,CAE7B;IAEM,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,YAAY;CAsCjF;AAED,qBAAa,UAAW,SAAQ,aAAa;IAC5C,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBAExB,KAAK,EAAE;QAClB,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,SAAS,EAAE,cAAc,CAAC;QAC1B,cAAc,CAAC,EAAE,YAAY,CAAC;QAC9B,cAAc,CAAC,EAAE,YAAY,CAAC;KAC9B;IAmBD,IAAW,SAAS,IAAI,MAAM,CAG7B;IAED,IAAW,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,CAEpC;IAED,IAAW,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EAE5C;IAEM,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,YAAY;IAUtD,kBAAkB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,aAAa;IAgBnE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;CASxD;AAED,qBAAa,cAAc;IAC1B,SAAgB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,SAAgB,SAAS,EAAE,MAAM,CAAC;IAClC,SAAgB,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;IAC3C,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,SAAgB,IAAI,CAAC,EAAE,GAAG,CAAC;IAC3B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtC,SAAgB,GAAG,CAAC,EAAE,MAAM,CAAC;IAE7B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAGlD,KAAK,EAAE;QACN,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;QAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KACzB,EACD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IA2D5B,OAAO,IAAI,OAAO;IAIlB,eAAe,IAAI,OAAO;IAIjC;;;OAGG;IACI,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,EAAE,GAAG,cAAc;IAsCrD;;;OAGG;IACI,eAAe,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE;IAwCtD,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,GAAG;IAoB/B,UAAU,IAAI,GAAG;IAqBjB,QAAQ,IAAI,GAAG;IAItB,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM;CAKzC;AAED,yBAAiB,OAAO,CAAC;IACjB,MAAM,OAAO,gBAAU,CAAC;IACxB,MAAM,KAAK,oBAAc,CAAC;IACjC,SAAgB,IAAI,gBAEnB;IACD,SAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,eAElC;CACD;AAED,yBAAiB,QAAQ,CAAC;IAClB,MAAM,OAAO,iBAAW,CAAC;IACzB,MAAM,KAAK,qBAAe,CAAC;IAClC,SAAgB,IAAI,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,gBAE7C;IACD,SAAgB,IAAI,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,gBAE7C;IACD,SAAgB,MAAM,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,gBAE/C;IACD,SAAgB,KAAK,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,gBAE9C;IACD,SAAgB,UAAU,CAAC,GAAG,OAAO,EAAE,WAAW,EAAE,gBAEnD;IAED,SAAgB,cAAc,iBAE7B;IACD,SAAgB,UAAU,iBAEzB;CACD;AAED,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,yBAAiB,UAAU,CAAC;IACpB,MAAM,GAAG,aAAO,CAAC;IAExB,SAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAE9E;IAED,KAAY,OAAO;QAClB,IAAI,IAAM;QACV,OAAO,IAAO;QACd,QAAQ,IAAO;QACf,QAAQ,IAAO;QACf,GAAG,IAAO;KACV;IAED;;;;QAII;IACJ,SAAgB,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,kBAMpC;IAED;;;QAGI;IACJ,SAAgB,OAAO,CAAC,KAAK,EAAE;QAC9B;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,kBAWA;IAED;;;QAGI;IACJ,SAAgB,QAAQ,CAAC,KAAK,EAAE;QAC/B;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,kBAWA;IAED;;;QAGI;IACJ,SAAgB,QAAQ,CAAC,KAAK,EAAE;QAC/B;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,kBAYA;IAED;;;QAGI;IACJ,SAAgB,YAAY,CAAC,KAAK,EAAE;QACnC;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QACb;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,kBAYA;IAED;;;QAGI;IACJ,SAAgB,OAAO,CAAC,KAAK,EAAE;QAC9B;;WAEG;QACH,GAAG,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,GAAG,CAAA;SAAE,CAAC;QACtC;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAClB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACnC,kBAgBA;CACD;AACD,yBAAiB,KAAK,CAAC;IACf,MAAM,UAAU,oBAAc,CAAC;IAC/B,MAAM,YAAY,sBAAgB,CAAC;IACnC,MAAM,UAAU,oBAAc,CAAC;IAC/B,MAAM,UAAU,oBAAc,CAAC;IAC/B,MAAM,YAAY,sBAAgB,CAAC;IACnC,MAAM,QAAQ,kBAAY,CAAC;IAC3B,MAAM,WAAW,qBAAe,CAAC;IACjC,MAAM,WAAW,qBAAe,CAAC;IACjC,MAAM,cAAc,wBAAkB,CAAC;CAC9C"}
@@ -6,6 +6,7 @@ import protobuf from "protobufjs";
6
6
  const { Root: ProtoRoot } = protobuf;
7
7
  const protoRoot = ProtoRoot.fromJSON(require("../../../witnet/witnet.proto.json"));
8
8
  const RADRequest = protoRoot.lookupType("RADRequest");
9
+ const _DEFAULT_DRY_RUN_TIMEOUT_MSECS = 5000;
9
10
  import { execRadonBytecode, fromHexString, getWildcardsCountFromString, isHexString, isWildcard, parseURL, replaceWildcards, spliceWildcard, toHexString, toUtf8Array, utf8ArrayToStr, } from "../../bin/helpers.js";
10
11
  import { sha256 } from "../crypto/utils.js";
11
12
  import { Opcodes as Filters, RadonFilter } from "./filters.js";
@@ -118,8 +119,8 @@ export class RadonRequest extends RadonArtifact {
118
119
  return Buffer.from(RADRequest.encode(message).finish());
119
120
  }
120
121
  }
121
- async execDryRun(verbose = false) {
122
- return (await execRadonBytecode(this.toBytecode(), "--json", verbose ? "--verbose" : "")).trim();
122
+ async execDryRun(options) {
123
+ return execRadonBytecode(this.toBytecode(), options?.timeout ?? _DEFAULT_DRY_RUN_TIMEOUT_MSECS, "--json", options?.verbose ? "--verbose" : "").then((result) => result.trim());
123
124
  }
124
125
  get dataType() {
125
126
  return this.sources[0].method === retrievals.Methods.RNG
@@ -723,4 +724,4 @@ function findKeyInObject(dict, tag) {
723
724
  }
724
725
  }
725
726
  }
726
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUVsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNyQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV0RCxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLGFBQWEsRUFDYiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsR0FDZCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFDTixVQUFVLElBQUksV0FBVyxFQUN6QixZQUFZLElBQUksYUFBYSxFQUM3QixVQUFVLElBQUksV0FBVyxFQUN6QixjQUFj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UUFVckI7QUFFRCxTQUFTLFlBQVksQ0FBSSxDQUEwQjtJQUNsRCxPQUFPO1FBQ04sR0FBRyxDQUFDLE1BQVcsRUFBRSxJQUFZO1lBQzVCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzVELGdCQUFnQjtZQUNoQixpRUFBaUU7WUFDakUsU0FBUztZQUNULElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxTQUFTLENBQUMsS0FBSyxJQUFJLDBCQUEwQixLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksZUFBZSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUN0RyxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZCxDQUFDO0tBQ0QsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFTLEVBQUUsR0FBVztJQUM5QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbkMsSUFBSSxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7aUJBQU0sQ0FBQztnQkFDUCxNQUFNLEtBQUssR0FBUSxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLEtBQUs7b0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDekIsQ0FBQztRQUNGLENBQUM7SUFDRixDQUFDO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBjYm9yIGZyb20gXCJjYm9yXCI7XG5pbXBvcnQgZ3JhcGhRbENvbXByZXNzIGZyb20gXCJncmFwaHFsLXF1ZXJ5LWNvbXByZXNzXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCBwcm90b2J1ZiBmcm9tIFwicHJvdG9idWZqc1wiO1xuXG5jb25zdCB7IFJvb3Q6IFByb3RvUm9vdCB9ID0gcHJvdG9idWY7XG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04ocmVxdWlyZShcIi4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSk7XG5jb25zdCBSQURSZXF1ZXN0ID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUoXCJSQURSZXF1ZXN0XCIpO1xuXG5pbXBvcnQge1xuXHRleGVjUmFkb25CeXRlY29kZSxcblx0ZnJvbUhleFN0cmluZyxcblx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nLFxuXHRpc0hleFN0cmluZyxcblx0aXNXaWxkY2FyZCxcblx0cGFyc2VVUkwsXG5cdHJlcGxhY2VXaWxkY2FyZHMsXG5cdHNwbGljZVdpbGRjYXJkLFxuXHR0b0hleFN0cmluZyxcblx0dG9VdGY4QXJyYXksXG5cdHV0ZjhBcnJheVRvU3RyLFxufSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnMuanNcIjtcblxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIi4uL2NyeXB0by91dGlscy5qc1wiO1xuaW1wb3J0IHsgT3Bjb2RlcyBhcyBGaWx0ZXJzLCBSYWRvbkZpbHRlciB9IGZyb20gXCIuL2ZpbHRlcnMuanNcIjtcbmltcG9ydCB7IFJhZG9uUmVkdWNlciwgT3Bjb2RlcyBhcyBSZWR1Y2VycyB9IGZyb20gXCIuL3JlZHVjZXJzLmpzXCI7XG5pbXBvcnQge1xuXHRSYWRvbkFycmF5IGFzIF9SYWRvbkFycmF5LFxuXHRSYWRvbkJvb2xlYW4gYXMgX1JhZG9uQm9vbGVhbixcblx0UmFkb25CeXRlcyBhcyBfUmFkb25CeXRlcyxcblx0UmFkb25FbmNvZGluZ3MgYXMgX1JhZG9uRW5jb2RpbmdzLFxuXHRSYWRvbkZsb2F0IGFzIF9SYWRvbkZsb2F0LFxuXHRSYWRvbkludGVnZXIgYXMgX1JhZG9uSW50ZWdlcixcblx0UmFkb25NYXAgYXMgX1JhZG9uTWFwLFxuXHRSYWRvblNjcmlwdCBhcyBfUmFkb25TY3JpcHQsXG5cdFJhZG9uU3RyaW5nIGFzIF9SYWRvblN0cmluZyxcblx0dHlwZSBSYWRvbkFueSxcblx0dHlwZSBSYWRvbk9wZXJhdG9yLFxuXHR0eXBlIFJhZG9uU3RyaW5nLFxufSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSYWRvblNjcmlwdCB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbnR5cGUgQXJncyA9IHN0cmluZ1tdIHwgc3RyaW5nW11bXTtcblxuY2xhc3MgUmFkb25BcnRpZmFjdCB7XG5cdHB1YmxpYyByZWFkb25seSBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdO1xuXHRwdWJsaWMgcmVhZG9ubHkgc291cmNlc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcblx0cHVibGljIHJlYWRvbmx5IHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cblx0Y29uc3RydWN0b3Ioc3BlY3M6IHtcblx0XHRzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdO1xuXHRcdHNvdXJjZXNSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cdFx0d2l0bmVzc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGlmICghc3BlY3Muc291cmNlcyB8fCAhQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKSB8fCBzcGVjcy5zb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25BcnRpZmFjdDogY2Fubm90IGJ1aWxkIGlmIG5vIHJldHJpZXZhbHMgYXJlIHBhc3NlZFwiKTtcblx0XHR9XG5cdFx0c3BlY3Muc291cmNlcz8uZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xuXHRcdFx0aWYgKHJldHJpZXZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgUmFkb25BcnRpZmFjdDogcmV0cmlldmFsICMke2luZGV4fSBpcyB1bmRlZmluZWRgKTtcblx0XHRcdH0gZWxzZSBpZiAoIShyZXRyaWV2YWwgaW5zdGFuY2VvZiBSYWRvblJldHJpZXZhbCkpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9OiBpbnZhbGlkIHR5cGVgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNvdXJjZXMgPSBzcGVjcy5zb3VyY2VzO1xuXHRcdHRoaXMuc291cmNlc1JlZHVjZXIgPSBzcGVjcy5zb3VyY2VzUmVkdWNlcjtcblx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyID0gc3BlY3Mud2l0bmVzc1JlZHVjZXI7XG5cdH1cblxuXHRwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KHRoaXMuc291cmNlcz8ubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC5vcHNDb3VudCgpKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgfHwgMCkgK1xuXHRcdFx0dGhpcy5zb3VyY2VzUmVkdWNlcj8ub3BzQ291bnQoKSArXG5cdFx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyPy5vcHNDb3VudCgpXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25SZXF1ZXN0IGV4dGVuZHMgUmFkb25BcnRpZmFjdCB7XG5cdC8qKlxuXHQgKiBEZWNvZGVzIGEgUmFkb25SZXF1ZXN0IGFydGlmYWN0IG91dCBmcm9tIGEgUHJvdG9idWYtc2VyaWFsaXplZCBieXRlY29kZS5cblx0ICogQHBhcmFtIGJ5dGVjb2RlIFJhZG9uIHJlcXVlc3QgYnl0ZWNvZGUuXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21CeXRlY29kZShieXRlY29kZTogYW55KSB7XG5cdFx0bGV0IGJ1ZmZlcjtcblx0XHRpZiAoaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XG5cdFx0XHRidWZmZXIgPSBmcm9tSGV4U3RyaW5nKGJ5dGVjb2RlKTtcblx0XHR9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHRcdFx0YnVmZmVyID0gQnVmZmVyLmZyb20oYnl0ZWNvZGUpO1xuXHRcdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRcdGJ1ZmZlciA9IGJ5dGVjb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJlcXVlc3Q6IHVuc3VwcG9ydGVkIGJ5dGVjb2RlIGZvcm1hdDogJHtieXRlY29kZX1gKTtcblx0XHR9XG5cdFx0Y29uc3Qgb2JqOiBhbnkgPSBSQURSZXF1ZXN0LmRlY29kZShidWZmZXIpO1xuXHRcdHJldHVybiBSYWRvblJlcXVlc3QuZnJvbVByb3RvYnVmKG9iaik7XG5cdH1cblxuXHQvKipcblx0ICogRGVjb2RlcyBhIFJhZG9uUmVxdWVzdCBhcnRpZmFjdCBvdXQgZnJvbSBhIFByb3RvYnVmIG9iamVjdC5cblx0ICogQHBhcmFtIG9iaiBQcm90b2J1ZiBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21Qcm90b2J1ZihvYmo6IGFueSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBvYmoucmV0cmlldmUubWFwKChyZXRyaWV2YWw6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BlY3M6IGFueSA9IHt9O1xuXHRcdFx0aWYgKHJldHJpZXZhbD8udXJsKSB7XG5cdFx0XHRcdHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmw7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmV0cmlldmFsPy5oZWFkZXJzKSB7XG5cdFx0XHRcdHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRcdFx0cmV0cmlldmFsLmhlYWRlcnMubWFwKChzdHJpbmdQYWlyOiBhbnkpID0+IFtzdHJpbmdQYWlyLmxlZnQsIHN0cmluZ1BhaXIucmlnaHRdKSxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmIChyZXRyaWV2YWw/LmJvZHkgJiYgcmV0cmlldmFsLmJvZHkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRzcGVjcy5ib2R5ID0gdXRmOEFycmF5VG9TdHIoT2JqZWN0LnZhbHVlcyhyZXRyaWV2YWwuYm9keSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJldHJpZXZhbD8uc2NyaXB0KSBzcGVjcy5zY3JpcHQgPSBwYXJzZVJhZG9uU2NyaXB0KHRvSGV4U3RyaW5nKHJldHJpZXZhbC5zY3JpcHQpKTtcblx0XHRcdHNwZWNzLm1ldGhvZCA9IHJldHJpZXZhbC5raW5kO1xuXHRcdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChzcGVjcyk7XG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVjb2RlRmlsdGVyID0gKGY6IGFueSkgPT4ge1xuXHRcdFx0aWYgKGY/LmFyZ3MgJiYgZi5hcmdzLmxlbmd0aCA+IDApIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCwgY2Jvci5kZWNvZGUoVWludDhBcnJheS5mcm9tKGYuYXJncykpKTtcblx0XHRcdGVsc2UgcmV0dXJuIG5ldyBSYWRvbkZpbHRlcihmLm9wKTtcblx0XHR9O1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRcdHNvdXJjZXMsXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihvYmouYWdncmVnYXRlLnJlZHVjZXIsIG9iai5hZ2dyZWdhdGUuZmlsdGVycz8ubWFwKGRlY29kZUZpbHRlcikpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIob2JqLnRhbGx5LnJlZHVjZXIsIG9iai50YWxseS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSksXG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcihzcGVjczoge1xuXHRcdHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXTtcblx0XHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpID8gKHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSkgOiBbc3BlY3Muc291cmNlc107XG5cdFx0c3VwZXIoe1xuXHRcdFx0c291cmNlcyxcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0fSk7XG5cdFx0Y29uc3QgYXJnc0NvdW50ID0gc291cmNlcy5tYXAoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vycik7XG5cdFx0aWYgKGFyZ3NDb3VudCA+IDApIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmVxdWVzdDogcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzIHdlcmUgcGFzc2VkXCIpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBfZW5jb2RlKCk6IEJ1ZmZlciB7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMudG9Qcm90b2J1ZigpO1xuXHRcdGNvbnN0IGVyck1zZyA9IFJBRFJlcXVlc3QudmVyaWZ5KHBheWxvYWQpO1xuXHRcdGlmIChlcnJNc2cpIHtcblx0XHRcdHRocm93IEVycm9yKGVyck1zZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XG5cdFx0XHRyZXR1cm4gQnVmZmVyLmZyb20oUkFEUmVxdWVzdC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKCkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBleGVjRHJ5UnVuKHZlcmJvc2UgPSBmYWxzZSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdFx0cmV0dXJuIChhd2FpdCBleGVjUmFkb25CeXRlY29kZSh0aGlzLnRvQnl0ZWNvZGUoKSwgXCItLWpzb25cIiwgdmVyYm9zZSA/IFwiLS12ZXJib3NlXCIgOiBcIlwiKSkudHJpbSgpO1xuXHR9XG5cblx0cHVibGljIGdldCBkYXRhVHlwZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLnNvdXJjZXNbMF0ubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuUk5HXG5cdFx0XHQ/IFwiUmFkb25CeXRlc1wiXG5cdFx0XHQ6IHRoaXMuc291cmNlcz8uWzBdPy5zY3JpcHQ/Lm91dHB1dFR5cGVcblx0XHRcdFx0PyB0aGlzLnNvdXJjZXNbMF0uc2NyaXB0Lm91dHB1dFR5cGUuY29uc3RydWN0b3IubmFtZVxuXHRcdFx0XHQ6IFwiUmFkb25BbnlcIjtcblx0fVxuXG5cdHB1YmxpYyBnZXQgcmFkSGFzaCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyhzaGEyNTYodGhpcy5fZW5jb2RlKCkpLCBmYWxzZSk7XG5cdH1cblxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyh0aGlzLl9lbmNvZGUoKSk7IC8vZW5jb2RlUkFEUmVxdWVzdCh0aGlzLnRvUHJvdG9idWYoKSksIHRydWUpXG5cdH1cblxuXHRwdWJsaWMgdG9KU09OKGh1bWFuaXplPzogYm9vbGVhbik6IGFueSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC50b0pTT04oaHVtYW5pemUpKSxcblx0XHRcdGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b0pTT04oaHVtYW5pemUpLFxuXHRcdFx0dGFsbHk6IHRoaXMud2l0bmVzc1JlZHVjZXIudG9KU09OKGh1bWFuaXplKSxcblx0XHRcdC4uLihodW1hbml6ZSA/IHt9IDogeyB0aW1lX2xvY2s6IDAgfSksXG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdC8vdGltZUxvY2s6IDAsXG5cdFx0XHRyZXRyaWV2ZTogdGhpcy5zb3VyY2VzLm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWwudG9Qcm90b2J1ZigpKSxcblx0XHRcdGFnZ3JlZ2F0ZTogdGhpcy5zb3VyY2VzUmVkdWNlci50b1Byb3RvYnVmKCksXG5cdFx0XHR0YWxseTogdGhpcy53aXRuZXNzUmVkdWNlci50b1Byb3RvYnVmKCksXG5cdFx0fTtcblx0fVxuXG5cdHB1YmxpYyB3ZWlnaHQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy50b0J5dGVjb2RlKCkuc2xpY2UoMikubGVuZ3RoIC8gMjtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmFkb25SZXF1ZXN0RnJvbUFzc2V0cyhzcGVjczoge1xuXHRhc3NldHM6IE9iamVjdDtcblx0YXJnc01hcDogUmVjb3JkPHN0cmluZywgYW55IHwgc3RyaW5nW10gfCB1bmRlZmluZWQ+O1xuXHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0d2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XG59KTogUmFkb25SZXF1ZXN0IHtcblx0Y29uc3Qgc291cmNlczogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xuXHRjb25zdCBkaWN0ID0gcmV0cmlldmFscy5mcm9tUmFkb25Bc3NldHMoc3BlY3MuYXNzZXRzKTtcblx0Ly8gY29uc3QgYXJnczogc3RyaW5nW11bXSA9IFtdXG5cdE9iamVjdC5rZXlzKHNwZWNzLmFyZ3NNYXApLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGNvbnN0IHJldHJpZXZhbDogUmFkb25SZXRyaWV2YWwgPSBkaWN0W2tleV07XG5cdFx0Y29uc3QgYXJncyA9IChzcGVjcy5hcmdzTWFwIGFzIGFueSlba2V5XTtcblx0XHRpZiAocmV0cmlldmFsLmFyZ3NDb3VudCA+IDApIHtcblx0XHRcdGlmICghYXJncyB8fCBhcmdzLmxlbmd0aCA8IHJldHJpZXZhbC5hcmdzQ291bnQpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcdGBJbnN1ZmZpY2llbnQgYXJncyBwYXNzZWQgdG8gcmV0cmlldmFsIG5hbWVkIGFzICcke2tleX0nOiAke2FyZ3MubGVuZ3RofSA8ICR7cmV0cmlldmFsLmFyZ3NDb3VudH1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzKSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRzb3VyY2VzLFxuXHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIsXG5cdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlcixcblx0fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYWRvblNjcmlwdDxJbnB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uU3RyaW5nPihpbnB1dFR5cGU6IHtcblx0bmV3IChvcHM/OiBSYWRvbk9wZXJhdG9yKTogSW5wdXRUeXBlO1xufSk6IElucHV0VHlwZSB7XG5cdGlmICghaW5wdXRUeXBlKSB0aHJvdyBUeXBlRXJyb3IoXCJJbnB1dCBSYWRvbiBkYXRhIHR5cGUgbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBkZWNsYXJpbmcgYSBuZXcgUmFkb24gc2NyaXB0LlwiKTtcblx0cmV0dXJuIG5ldyBpbnB1dFR5cGUoKTtcbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uVGVtcGxhdGUgZXh0ZW5kcyBSYWRvbkFydGlmYWN0IHtcblx0cHJvdGVjdGVkIF9hcmdzQ291bnQ6IG51bWJlcjtcblxuXHRwdWJsaWMgcmVhZG9ubHkgaG9tb2dlbmVvdXM6IGJvb2xlYW47XG5cdHB1YmxpYyByZWFkb25seSBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgQXJncz47XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0c3BlY3M6IHtcblx0XHRcdHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXTtcblx0XHRcdHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHRcdFx0d2l0bmVzc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XG5cdFx0fSxcblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgQXJncz4sXG5cdCkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpID8gKHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSkgOiBbc3BlY3Muc291cmNlc107XG5cdFx0c3VwZXIoe1xuXHRcdFx0c291cmNlcyxcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0fSk7XG5cdFx0dGhpcy5fYXJnc0NvdW50ID0gc291cmNlcy5tYXAoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsPy5hcmdzQ291bnQpLnJlZHVjZSgocHJldiwgY3VycikgPT4gTWF0aC5tYXgocHJldiwgY3VyciksIDApO1xuXHRcdGlmICh0aGlzLl9hcmdzQ291bnQgPT09IDApIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uVGVtcGxhdGU6IG5vIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscyB3ZXJlIHBhc3NlZFwiKTtcblx0XHR9XG5cdFx0dGhpcy5ob21vZ2VuZW91cyA9ICFzb3VyY2VzLmZpbmQoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCAhPT0gdGhpcy5fYXJnc0NvdW50KTtcblx0XHRpZiAoc2FtcGxlcykge1xuXHRcdFx0T2JqZWN0LmtleXMoc2FtcGxlcykuZm9yRWFjaCgoc2FtcGxlKSA9PiB7XG5cdFx0XHRcdGxldCBzYW1wbGVBcmdzOiBBcmdzID0gT2JqZWN0KHNhbXBsZXMpW3NhbXBsZV07XG5cdFx0XHRcdGlmICh0eXBlb2Ygc2FtcGxlQXJncyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHNhbXBsZUFyZ3MgPSBbc2FtcGxlQXJnc107XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHNhbXBsZUFyZ3MubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdGlmICghQXJyYXkuaXNBcnJheShzYW1wbGVBcmdzWzBdKSkge1xuXHRcdFx0XHRcdFx0T2JqZWN0KHNhbXBsZXMpW3NhbXBsZV0gPSBBcnJheShzb3VyY2VzLmxlbmd0aCkuZmlsbChzYW1wbGVBcmdzKTtcblx0XHRcdFx0XHRcdHNhbXBsZUFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHNhbXBsZUFyZ3M/Lmxlbmd0aCAhPT0gc291cmNlcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdHRocm93IFR5cGVFcnJvcihcblx0XHRcdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IGFyZ3VtZW50cyBtaXNtYXRjaCBpbiBzYW1wbGUgXCIke3NhbXBsZX1cIjogJHtzYW1wbGVBcmdzPy5sZW5ndGh9IHNhbXBsZXMgZ2l2ZW4gdnMuICR7c291cmNlcy5sZW5ndGh9IGV4cGVjdGVkYCxcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNhbXBsZUFyZ3M/LmZvckVhY2goKHN1YmFyZ3MsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoc3ViYXJncy5sZW5ndGggPCBzb3VyY2VzW2luZGV4XS5hcmdzQ291bnQpIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRcdGBcXHgxYlsxOzMzbVJhZG9uUmVxdWVzdFRlbXBsYXRlOiBhcmd1bWVudHMgbWlzbWF0Y2ggaW4gdGVzdCBcXHgxYlsxOzMxbScke3NhbXBsZX0nXFx4MWJbMTszM206IFxceDFiWzE7MzdtUmV0cmlldmFsICMke2luZGV4fVxceDFiWzE7MzNtOiAke3N1YmFyZ3M/Lmxlbmd0aH0gcGFyYW1ldGVycyBnaXZlbiB2cy4gJHtzb3VyY2VzW2luZGV4XS5hcmdzQ291bnR9IGV4cGVjdGVkXFx4MWJbMG1gLFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGdldCBhcmdzQ291bnQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5fYXJnc0NvdW50O1xuXHR9XG5cblx0cHVibGljIGJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3M6IGFueSB8IGFueVtdIHwgc3RyaW5nW10gfCBzdHJpbmdbXVtdKTogUmFkb25SZXF1ZXN0IHtcblx0XHRjb25zdCBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdID0gW107XG5cdFx0aWYgKHRoaXMuaG9tb2dlbmVvdXMpIHtcblx0XHRcdC8vIGFyZ3MgY2FuIGJlIGVpdGhlciBhbnksIHN0cmluZ1tdIG9yIHN0cmluZ1swXVtdXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmdzKSAmJiBhcmdzWzBdICYmIEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcblx0XHRcdFx0aWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uVGVtcGxhdGU6IGhvbW9nZW5lb3VzIHRlbXBsYXRlOiBhcmdzIHZlY3RvciBkaW1lbnNpb24gJHthcmdzLmxlbmd0aH0gPiAxLmApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFyZ3MgPSBhcmdzWzBdO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3MubGVuZ3RoICE9PSB0aGlzLmFyZ3NDb3VudCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiBob21vZ2Vub3VzIHRlbXBsYXRlOiBtaXNzaW5nICR7dGhpcy5hcmdzQ291bnQgLSBhcmdzLmxlbmd0aH0gb3V0IG9mICR7YXJncy5sZW5ndGh9IHBhcmFtZXRlcnMuYCxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc291cmNlcy5mb3JFYWNoKChyZXRyaWV2YWwpID0+IHtcblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzKSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpIHx8IGFyZ3MubGVuZ3RoICE9PSB0aGlzLnNvdXJjZXMubGVuZ3RoKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uVGVtcGxhdGU6IGFyZ3MgdmVjdG9yIGRpbWVuc2lvbiAke2FyZ3MubGVuZ3RofSAhPSAke3RoaXMuc291cmNlcy5sZW5ndGh9YCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnNvdXJjZXMuZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmdzW2luZGV4XSkgJiYgcmV0cmlldmFsLmFyZ3NDb3VudCAhPT0gYXJnc1tpbmRleF0ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0XHRcdGBSYWRvblRlbXBsYXRlOiByZXRyaWV2YWwgIyR7aW5kZXggKyAxfTogbWlzbWF0Y2hpbmcgYXJncyBjb3VudDogJHtcblx0XHRcdFx0XHRcdFx0YXJnc1tpbmRleF0ubGVuZ3RoXG5cdFx0XHRcdFx0XHR9ICE9ICR7cmV0cmlldmFsLmFyZ3NDb3VudH0gKFske2FyZ3NbaW5kZXhdfSldYCxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNvdXJjZXMucHVzaChyZXRyaWV2YWwuZm9sZEFyZ3MoYXJnc1tpbmRleF0pKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVxdWVzdCh7XG5cdFx0XHRzb3VyY2VzLFxuXHRcdFx0c291cmNlc1JlZHVjZXI6IHRoaXMuc291cmNlc1JlZHVjZXIsXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogdGhpcy53aXRuZXNzUmVkdWNlcixcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25Nb2RhbCBleHRlbmRzIFJhZG9uVGVtcGxhdGUge1xuXHRwcm90ZWN0ZWQgX3Byb3ZpZGVyczogQXJyYXk8c3RyaW5nPjtcblxuXHRjb25zdHJ1Y3RvcihzcGVjczoge1xuXHRcdHByb3ZpZGVycz86IEFycmF5PHN0cmluZz47XG5cdFx0cmV0cmlldmFsOiBSYWRvblJldHJpZXZhbDtcblx0XHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGlmICghc3BlY3MucmV0cmlldmFsLmlzTW9kYWwoKSkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25Nb2RhbDogbm8gbW9kYWwgcmV0cmlldmFsIHdhcyBwYXNzZWQuXCIpO1xuXHRcdH1cblx0XHRzdXBlcihcblx0XHRcdHtcblx0XHRcdFx0c291cmNlczogW3NwZWNzLnJldHJpZXZhbF0sXG5cdFx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0XHR3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcy5yZXRyaWV2YWw/LnNhbXBsZXMsXG5cdFx0KTtcblx0XHRpZiAoc3BlY3M/LnByb3ZpZGVycykge1xuXHRcdFx0dGhpcy5fcHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoc3BlY3MucHJvdmlkZXJzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fcHJvdmlkZXJzID0gW107XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGdldCBhcmdzQ291bnQoKTogbnVtYmVyIHtcblx0XHRjb25zdCBfcHJvdmlkZXJzQXJnc0NvdW50ID0gTWF0aC5tYXgoLi4udGhpcy5wcm92aWRlcnMubWFwKCh1cmwpID0+IGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh1cmwpKSk7XG5cdFx0cmV0dXJuIF9wcm92aWRlcnNBcmdzQ291bnQgPiAwID8gTWF0aC5tYXgodGhpcy5fYXJnc0NvdW50LCBfcHJvdmlkZXJzQXJnc0NvdW50KSA6IHRoaXMuX2FyZ3NDb3VudDtcblx0fVxuXG5cdHB1YmxpYyBnZXQgcHJvdmlkZXJzKCk6IEFycmF5PHN0cmluZz4ge1xuXHRcdHJldHVybiB0aGlzLl9wcm92aWRlcnM7XG5cdH1cblxuXHRwdWJsaWMgc2V0IHByb3ZpZGVycyhwcm92aWRlcnM6IEFycmF5PHN0cmluZz4pIHtcblx0XHR0aGlzLl9wcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhwcm92aWRlcnMpO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkUmFkb25SZXF1ZXN0KGFyZ3M/OiBhbnkgfCBzdHJpbmdbXSk6IFJhZG9uUmVxdWVzdCB7XG5cdFx0aWYgKHRoaXMucHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogbm8gcHJvdmlkZXJzIHdlcmUgcHJldmlvdXNseSBzZXR0bGVkLmApO1xuXHRcdH1cblx0XHRjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuYnVpbGRSYWRvblRlbXBsYXRlKHRoaXMucHJvdmlkZXJzKTtcblx0XHRyZXR1cm4gdGVtcGxhdGUuaG9tb2dlbmVvdXNcblx0XHRcdD8gdGVtcGxhdGUuYnVpbGRSYWRvblJlcXVlc3QoYXJncylcblx0XHRcdDogdGVtcGxhdGUuYnVpbGRSYWRvblJlcXVlc3QodGVtcGxhdGUuc291cmNlcy5tYXAoKHNvdXJjZSkgPT4gYXJncy5zbGljZSgwLCBzb3VyY2UuYXJnc0NvdW50KSkpO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkUmFkb25UZW1wbGF0ZShwcm92aWRlcnM/OiBBcnJheTxzdHJpbmc+KTogUmFkb25UZW1wbGF0ZSB7XG5cdFx0aWYgKCFwcm92aWRlcnMpIHtcblx0XHRcdHByb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKFsuLi50aGlzLl9wcm92aWRlcnNdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWy4uLnByb3ZpZGVyc10pO1xuXHRcdH1cblx0XHRpZiAoIXByb3ZpZGVycyB8fCBwcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvbk1vZGFsOiBubyBwcm92aWRlcnMgd2VyZSBzcGVjaWZpZWQuYCk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmFkb25UZW1wbGF0ZSh7XG5cdFx0XHRzb3VyY2VzOiB0aGlzLnNvdXJjZXNbMF0uc3Bhd25SZXRyaWV2YWxzKC4uLnByb3ZpZGVycyksXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcblx0XHRcdHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxuXHRcdH0pO1xuXHR9XG5cblx0X2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPik6IEFycmF5PHN0cmluZz4ge1xuXHRcdHByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcikgPT4ge1xuXHRcdFx0Y29uc3QgW3NjaGVtYV0gPSBwYXJzZVVSTChwcm92aWRlcik7XG5cdFx0XHRpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IGludmFsaWQgcHJvdmlkZXI6ICR7cHJvdmlkZXJ9YCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHByb3ZpZGVycztcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25SZXRyaWV2YWwge1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJnc0tleXM/OiBBcnJheTxzdHJpbmc+O1xuXHRwdWJsaWMgcmVhZG9ubHkgYXJnc0NvdW50OiBudW1iZXI7XG5cdHB1YmxpYyByZWFkb25seSBtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcztcblx0cHVibGljIHJlYWRvbmx5IGF1dGhvcml0eT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IGJvZHk/OiBhbnk7XG5cdHB1YmxpYyByZWFkb25seSBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0cHVibGljIHJlYWRvbmx5IHBhdGg/OiBzdHJpbmc7XG5cdHB1YmxpYyByZWFkb25seSBxdWVyeT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IHNjaGVtYT86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IHNjcmlwdD86IF9SYWRvblNjcmlwdDtcblx0cHVibGljIHJlYWRvbmx5IHVybD86IHN0cmluZztcblxuXHRwdWJsaWMgcmVhZG9ubHkgc2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRzcGVjczoge1xuXHRcdFx0bWV0aG9kOiByZXRyaWV2YWxzLk1ldGhvZHM7XG5cdFx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0XHRcdGJvZHk/OiBhbnk7XG5cdFx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHRcdGFyZ3NLZXlzPzogQXJyYXk8c3RyaW5nPjtcblx0XHR9LFxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4sXG5cdCkge1xuXHRcdGlmIChzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5STkcgJiYgKHNwZWNzPy51cmwgfHwgc3BlY3M/LmhlYWRlcnM/LnNpemUgfHwgc3BlY3M/LmJvZHkpKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogUk5HIGFjY2VwdHMgbm8gVVJMcyBvciBoZWFkZXJzXCIpO1xuXHRcdFx0Ly8gfSBlbHNlIGlmICghc3BlY3M/LnVybCAmJiAobWV0aG9kID09IE1ldGhvZHMuSHR0cFBvc3QgfHwgbWV0aG9kID09IE1ldGhvZHMuSHR0cEdldCkpIHtcblx0XHRcdC8vICAgICB0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogVVJMIG11c3QgYmUgc3BlY2lmaWVkXCIpO1xuXHRcdH0gZWxzZSBpZiAoc3BlY3M/LmJvZHkgJiYgc3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IGJvZHkgY2Fubm90IGJlIHNwZWNpZmllZCBpbiBIVFRQLUdFVCBxdWVyaWVzXCIpO1xuXHRcdH1cblx0XHR0aGlzLm1ldGhvZCA9IHNwZWNzLm1ldGhvZDtcblx0XHRpZiAoc3BlY3M/LnVybCkge1xuXHRcdFx0dGhpcy51cmwgPSBzcGVjcy51cmw7XG5cdFx0XHRpZiAoIWlzV2lsZGNhcmQoc3BlY3MudXJsKSkge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IHBhcnRzID0gcGFyc2VVUkwoc3BlY3MudXJsKTtcblx0XHRcdFx0XHR0aGlzLnNjaGVtYSA9IHBhcnRzWzBdO1xuXHRcdFx0XHRcdGlmIChwYXJ0c1sxXSAhPT0gXCJcIikgdGhpcy5hdXRob3JpdHkgPSBwYXJ0c1sxXTtcblx0XHRcdFx0XHRpZiAocGFydHNbMl0gIT09IFwiXCIpIHRoaXMucGF0aCA9IHBhcnRzWzJdO1xuXHRcdFx0XHRcdGlmIChwYXJ0c1szXSAhPT0gXCJcIikgdGhpcy5xdWVyeSA9IHBhcnRzWzNdO1xuXHRcdFx0XHR9IGNhdGNoIHt9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBHZXQgfHxcblx0XHRcdHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBQb3N0IHx8XG5cdFx0XHRzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwSGVhZFxuXHRcdCkge1xuXHRcdFx0dGhpcy51cmwgPSBcIlxcXFwwXFxcXFwiO1xuXHRcdH1cblx0XHRpZiAoc3BlY3M/LmhlYWRlcnMpIHtcblx0XHRcdGlmICh0eXBlb2Ygc3BlY3MuaGVhZGVycyAhPT0gXCJvYmplY3RcIiB8fCBBcnJheS5pc0FycmF5KHNwZWNzLmhlYWRlcnMpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogSFRUUCBoZWFkZXJzIG11c3QgYmUgb2YgdHlwZSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XCIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5oZWFkZXJzID0gc3BlY3M/LmhlYWRlcnM7XG5cdFx0fVxuXHRcdHRoaXMuYm9keSA9IHNwZWNzPy5ib2R5O1xuXHRcdGlmIChzcGVjcz8uc2NyaXB0KSB0aGlzLnNjcmlwdCA9IG5ldyBfUmFkb25TY3JpcHQoc3BlY3M/LnNjcmlwdCk7XG5cdFx0dGhpcy5hcmdzQ291bnQgPSBNYXRoLm1heChcblx0XHRcdGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyh0aGlzPy51cmwpLFxuXHRcdFx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHRoaXM/LmJvZHkpLFxuXHRcdFx0Li4uKE9iamVjdC5rZXlzKHRoaXM/LmhlYWRlcnMgfHwge30pLm1hcCgoa2V5KSA9PiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcoa2V5KSkgPz8gW10pLFxuXHRcdFx0Li4uKE9iamVjdC52YWx1ZXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKCh2YWx1ZSkgPT4gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHZhbHVlKSkgPz8gW10pLFxuXHRcdFx0dGhpcy5zY3JpcHQ/LmFyZ3NDb3VudCgpIHx8IDAsXG5cdFx0KTtcblx0XHRpZiAoc2FtcGxlcyAmJiB0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBwYXNzZWQgc2FtcGxlcyB0byBub24tcGFyYW1ldGVyaXplZCByZXRyaWV2YWwuXCIpO1xuXHRcdH1cblx0XHR0aGlzLnNhbXBsZXMgPSBzYW1wbGVzO1xuXHRcdGlmIChzcGVjcz8uYXJnc0tleXMpIHtcblx0XHRcdGlmICh0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IHBhc3NlZCBhcmdzIGtleXMgdG8gbm9uLXBhcmFtZXRlcml6ZWQgcmV0cmlldmFsXCIpO1xuXHRcdFx0fSBlbHNlIGlmIChzcGVjcy5hcmdzS2V5cy5sZW5ndGggIT09IHRoaXMuYXJnc0NvdW50KSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uUmV0cmlldmFsOiBwYXNzZWQgaW52YWxpZCBudW1iZXIgb2YgYXJncyBrZXlzOiAke3NwZWNzLmFyZ3NLZXlzLmxlbmd0aH0gIT0gJHt0aGlzLmFyZ3NDb3VudH1gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5hcmdzS2V5cyA9IHNwZWNzLmFyZ3NLZXlzO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBpc01vZGFsKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm1ldGhvZCAhPT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJiAoIXRoaXMudXJsIHx8IHRoaXMudXJsID09PSBcIlxcXFwwXFxcXFwiKTtcblx0fVxuXG5cdHB1YmxpYyBpc1BhcmFtZXRlcml6ZWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuYXJnc0NvdW50ID4gMDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgbmV3IFJhZG9uIFJldHJpZXZhbCBieSBvcmRlcmx5IHJlcGxhY2luZyBpbmRleGVkIHdpbGRjYXJkcyB3aXRoIGdpdmVuIHBhcmFtZXRlcnMuXG5cdCAqIEZhaWxzIGlmIG5vdCBwYXJhbWV0ZXJpemVkLCBvZiBpZiBwYXNzaW5nIHRvbyBtYW55IHBhcmFtZXRlcnMuXG5cdCAqL1xuXHRwdWJsaWMgZm9sZEFyZ3MoYXJnczogYW55IHwgc3RyaW5nW10pOiBSYWRvblJldHJpZXZhbCB7XG5cdFx0aWYgKHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XG5cdFx0XHRyZXR1cm4gdGhpczsgLy90aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogY2Fubm90IGZvbGQgdW5wYXJhbWV0ZXJpemVkIHJldHJpZXZhbGApXG5cdFx0fVxuXHRcdGNvbnN0IHBhcmFtczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAoQXJyYXkuaXNBcnJheShhcmdzKSkge1xuXHRcdFx0aWYgKChhcmdzIGFzIGFueVtdKS5sZW5ndGggPiB0aGlzLmFyZ3NDb3VudCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogdG9vIG1heSBhcmdzIHBhc3NlZDogJHthcmdzLmxlbmd0aH0gPiAke3RoaXMuYXJnc0NvdW50fWApO1xuXHRcdFx0fVxuXHRcdFx0cGFyYW1zLnB1c2goLi4uKGFyZ3MgYXMgc3RyaW5nW10pKTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBhcmdzID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAoIXRoaXMuYXJnc0tleXMpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IHVuZXhwZWN0ZWQgYXJncyBtYXA6IHVuZGVmaW5lZCBhcmdzIGtleXMuYCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmFyZ3NLZXlzLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdFx0XHRcdGlmICghYXJnc1trZXldKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogbWlzc2luZyB2YWx1ZSBmb3IgcGFyYW1ldGVyIFwiJHtrZXl9XCIuYCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHBhcmFtcy5wdXNoKGFyZ3Nba2V5XSBhcyBzdHJpbmcpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cGFyYW1zLnB1c2goYXJncyBhcyBzdHJpbmcpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKHtcblx0XHRcdG1ldGhvZDogdGhpcy5tZXRob2QsXG5cdFx0XHR1cmw6IHJlcGxhY2VXaWxkY2FyZHModGhpcy51cmwsIHBhcmFtcyksXG5cdFx0XHRib2R5OiByZXBsYWNlV2lsZGNhcmRzKHRoaXMuYm9keSwgcGFyYW1zKSxcblx0XHRcdGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdFx0T2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzIHx8IHt9KS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW1xuXHRcdFx0XHRcdHJlcGxhY2VXaWxkY2FyZHMoa2V5LCBwYXJhbXMpLFxuXHRcdFx0XHRcdHJlcGxhY2VXaWxkY2FyZHModmFsdWUsIHBhcmFtcyksXG5cdFx0XHRcdF0pLFxuXHRcdFx0KSxcblx0XHRcdHNjcmlwdDogdGhpcy5zY3JpcHQ/LnJlcGxhY2VXaWxkY2FyZHMoLi4ucGFyYW1zKSxcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9uZSBvciBtb3JlIGNsb25lcyBvZiB0aGlzIHJldHJpZXZhbCwgaW4gd2hpY2ggdGhlIGluZGV4LTAgd2lsZGNhcmRcblx0ICogd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgZ2l2ZW4gdmFsdWVzLiBGYWlscyBpZiB0aGUgcmV0cmlldmFsIGlzIG5vdCBwYXJhbWV0ZXJpemVkLlxuXHQgKi9cblx0cHVibGljIHNwYXduUmV0cmlldmFscyguLi52YWx1ZXM6IHN0cmluZ1tdKTogUmFkb25SZXRyaWV2YWxbXSB7XG5cdFx0Y29uc3QgX3NwYXduZWQ6IFJhZG9uUmV0cmlldmFsW10gPSBbXTtcblx0XHRpZiAodGhpcy5pc01vZGFsKCkpIHtcblx0XHRcdHZhbHVlcy5mb3JFYWNoKCh1cmwpID0+IHtcblx0XHRcdFx0X3NwYXduZWQucHVzaChcblx0XHRcdFx0XHRuZXcgUmFkb25SZXRyaWV2YWwoe1xuXHRcdFx0XHRcdFx0YXJnc0tleXM6IHRoaXMuYXJnc0tleXMsXG5cdFx0XHRcdFx0XHRib2R5OiB0aGlzLmJvZHksXG5cdFx0XHRcdFx0XHRoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG5cdFx0XHRcdFx0XHRtZXRob2Q6IHRoaXMubWV0aG9kLFxuXHRcdFx0XHRcdFx0c2NyaXB0OiB0aGlzLnNjcmlwdD8uY2xvbmUoKSxcblx0XHRcdFx0XHRcdHVybCxcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25SZXRyaWV2YWw6IGNhbm5vdCBzcGF3biBmcm9tIHVucGFyYW1ldGVyaXplZCByZXRyaWV2YWxgKTtcblx0XHRcdH1cblx0XHRcdHZhbHVlcy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRfc3Bhd25lZC5wdXNoKFxuXHRcdFx0XHRcdG5ldyBSYWRvblJldHJpZXZhbCh7XG5cdFx0XHRcdFx0XHRtZXRob2Q6IHRoaXMubWV0aG9kLFxuXHRcdFx0XHRcdFx0dXJsOiBzcGxpY2VXaWxkY2FyZCh0aGlzLnVybCwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdGJvZHk6IHNwbGljZVdpbGRjYXJkKHRoaXMuYm9keSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdGhlYWRlcnM6IE9iamVjdC5mcm9tRW50cmllcyhcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzIHx8IHt9KS5tYXAoKFtoZWFkZXJLZXksIGhlYWRlclZhbHVlXSkgPT4gW1xuXHRcdFx0XHRcdFx0XHRcdHNwbGljZVdpbGRjYXJkKGhlYWRlcktleSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdFx0XHRzcGxpY2VXaWxkY2FyZChoZWFkZXJWYWx1ZSwgMCwgdmFsdWUsIHRoaXMuYXJnc0NvdW50KSxcblx0XHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0c2NyaXB0OiB0aGlzLnNjcmlwdD8uc3BsaWNlV2lsZGNhcmQoMCwgdmFsdWUpLFxuXHRcdFx0XHRcdFx0YXJnc0tleXM6IHRoaXMuYXJnc0tleXM/LnNsaWNlKDEpLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBfc3Bhd25lZDtcblx0fVxuXG5cdHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcblx0XHRjb25zdCBraW5kID0gW1wiXCIsIFwiSFRUUC1HRVRcIiwgXCJSTkdcIiwgXCJIVFRQLVBPU1RcIiwgXCJIVFRQLUhFQURcIl07XG5cdFx0Y29uc3QganNvbjogYW55ID0ge1xuXHRcdFx0a2luZDoga2luZFt0aGlzLm1ldGhvZF0sIC8vIGh1bWFuaXplID8gTWV0aG9kc1t0aGlzLm1ldGhvZF0gOiB0aGlzLm1ldGhvZCxcblx0XHR9O1xuXHRcdGlmICh0aGlzLnVybCkganNvbi51cmwgPSB0aGlzLnVybDtcblx0XHRpZiAodGhpcy5oZWFkZXJzKSB7XG5cdFx0XHRqc29uLmhlYWRlcnMgPSBPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5ib2R5KSB7XG5cdFx0XHRpZiAodHlwZW9mIHRoaXMuYm9keSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRqc29uLmJvZHkgPSBodW1hbml6ZSA/IHRoaXMuYm9keSA6IHRvVXRmOEFycmF5KHRoaXMuYm9keSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRqc29uLmJvZHkgPSB0aGlzLmJvZHk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGpzb24uc2NyaXB0ID0gaHVtYW5pemUgPyB0aGlzLnNjcmlwdD8udG9TdHJpbmcoKSA6IEFycmF5LmZyb20oZnJvbUhleFN0cmluZyh0aGlzLnNjcmlwdD8udG9CeXRlY29kZSgpIHx8IFwiMHg4MFwiKSk7XG5cdFx0cmV0dXJuIGpzb247XG5cdH1cblxuXHRwdWJsaWMgdG9Qcm90b2J1ZigpOiBhbnkge1xuXHRcdGNvbnN0IHByb3RvYnVmOiBhbnkgPSB7XG5cdFx0XHRraW5kOiB0aGlzLm1ldGhvZCxcblx0XHR9O1xuXHRcdGlmICh0aGlzLnVybCkgcHJvdG9idWYudXJsID0gdGhpcy51cmw7XG5cdFx0aWYgKHRoaXMuaGVhZGVycykge1xuXHRcdFx0cHJvdG9idWYuaGVhZGVycyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycykubWFwKChbaGVhZGVyS2V5LCBoZWFkZXJWYWx1ZV0pID0+IHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRsZWZ0OiBoZWFkZXJLZXksXG5cdFx0XHRcdFx0cmlnaHQ6IGhlYWRlclZhbHVlLFxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdGNvbnN0IHV0ZjhBcnJheSA9IHRvVXRmOEFycmF5KHRoaXMuYm9keSk7XG5cdFx0XHRwcm90b2J1Zi5ib2R5ID0gdXRmOEFycmF5O1xuXHRcdH1cblx0XHRwcm90b2J1Zi5zY3JpcHQgPSBPYmplY3QudmFsdWVzKFVpbnQ4QXJyYXkuZnJvbShjYm9yLmVuY29kZSh0aGlzLnNjcmlwdD8uZW5jb2RlKCkgfHwgW10pKSk7XG5cdFx0cmV0dXJuIHByb3RvYnVmO1xuXHR9XG5cblx0cHVibGljIG9wc0NvdW50KCk6IGFueSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NvdW50T3BzKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgX2NvdW50T3BzKGl0ZW1zOiBhbnlbXSk6IG51bWJlciB7XG5cdFx0cmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDBcblx0XHRcdD8gaXRlbXMubWFwKChpdGVtKSA9PiAoQXJyYXkuaXNBcnJheShpdGVtKSA/IHRoaXMuX2NvdW50T3BzKGl0ZW0pIDogMSkpLnJlZHVjZSgoc3VtLCBhKSA9PiBzdW0gKyBhKVxuXHRcdFx0OiAwO1xuXHR9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgZmlsdGVycyB7XG5cdGV4cG9ydCBjb25zdCBPcGNvZGVzID0gRmlsdGVycztcblx0ZXhwb3J0IGNvbnN0IENsYXNzID0gUmFkb25GaWx0ZXI7XG5cdGV4cG9ydCBmdW5jdGlvbiBNb2RlKCkge1xuXHRcdHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5Nb2RlKTtcblx0fVxuXHRleHBvcnQgZnVuY3Rpb24gU3RkZXYoc3RkZXY6IG51bWJlcikge1xuXHRcdHJldHVybiBuZXcgUmFkb25GaWx0ZXIoRmlsdGVycy5TdGFuZGFyZERldmlhdGlvbiwgc3RkZXYpO1xuXHR9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgcmVkdWNlcnMge1xuXHRleHBvcnQgY29uc3QgT3Bjb2RlcyA9IFJlZHVjZXJzO1xuXHRleHBvcnQgY29uc3QgQ2xhc3MgPSBSYWRvblJlZHVjZXI7XG5cdGV4cG9ydCBmdW5jdGlvbiBNb2RlKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Nb2RlLCBmaWx0ZXJzKTtcblx0fVxuXHRleHBvcnQgZnVuY3Rpb24gTWVhbiguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBNZWRpYW4oLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lZGlhbkF2ZXJhZ2UsIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBTdGRldiguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuU3RhbmRhcmREZXZpYXRpb24sIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBDb25jYXRIYXNoKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5Db25jYXRlbmF0ZUFuZEhhc2gsIGZpbHRlcnMpO1xuXHR9XG5cblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlQWdncmVnYXRlKCkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1lYW5BdmVyYWdlLCBbZmlsdGVycy5TdGRldigxLjQpXSk7XG5cdH1cblx0ZXhwb3J0IGZ1bmN0aW9uIFByaWNlVGFsbHkoKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIFtmaWx0ZXJzLlN0ZGV2KDIuNSldKTtcblx0fVxufVxuXG5pbXBvcnQgKiBhcyBjY2RyIGZyb20gXCIuL2NjZHIvaW5kZXguanNcIjtcbmV4cG9ydCBuYW1lc3BhY2UgcmV0cmlldmFscyB7XG5cdGV4cG9ydCBjb25zdCBycGMgPSBjY2RyO1xuXG5cdGV4cG9ydCBmdW5jdGlvbiBmcm9tUmFkb25Bc3NldHMoYXNzZXRzOiBPYmplY3QpOiBSZWNvcmQ8c3RyaW5nLCBSYWRvblJldHJpZXZhbD4ge1xuXHRcdHJldHVybiBuZXcgUHJveHkoYXNzZXRzLCBwcm94eUhhbmRsZXIoUmFkb25SZXRyaWV2YWwpKTtcblx0fVxuXG5cdGV4cG9ydCBlbnVtIE1ldGhvZHMge1xuXHRcdE5vbmUgPSAweDAsXG5cdFx0SHR0cEdldCA9IDB4MDEsXG5cdFx0SHR0cEhlYWQgPSAweDA0LFxuXHRcdEh0dHBQb3N0ID0gMHgwMyxcblx0XHRSTkcgPSAweDAyLFxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBXaXRuZXQgcmFuZG9tbmVzcyBkYXRhIHNvdXJjZSBvYmplY3QuXG5cdCAqIEBwYXJhbSBzY3JpcHQgKE9wdGlvbmFsKSBSYWRvbiBTY3JpcHQgdG8gYXBwbHkgdG8gdGhlIHJhbmRvbSBzZWVkIHByb3Bvc2VkIGJ5IGV2ZXJ5IHNpbmdsZSB3aXRuZXNzLFxuXHQgKiBiZWZvcmUgYWdncmVnYXRpb24uXG5cdCAqKi9cblx0ZXhwb3J0IGZ1bmN0aW9uIFJORyhzY3JpcHQ/OiBSYWRvbkFueSkge1xuXHRcdGNvbnN0IHJldHJpZXZhbCA9IG5ldyBSYWRvblJldHJpZXZhbCh7IG1ldGhvZDogTWV0aG9kcy5STkcsIHNjcmlwdCB9KTtcblx0XHRpZiAocmV0cmlldmFsPy5zY3JpcHQgJiYgcmV0cmlldmFsPy5zY3JpcHQ/LmlucHV0VHlwZT8uY29uc3RydWN0b3IubmFtZSAhPT0gXCJSYWRvbkJ5dGVzXCIpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXCJSTkcgc2NyaXB0cyByZXF1aXJlIFtSYWRvbkJ5dGVzXSBhcyBpbnB1dCB0eXBlXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gcmV0cmlldmFsO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBIVFRQL0dFVCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXG5cdCAqKi9cblx0ZXhwb3J0IGZ1bmN0aW9uIEh0dHBHZXQoc3BlY3M6IHtcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgVVJMLlxuXHRcdCAqL1xuXHRcdHVybD86IHN0cmluZztcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgaGVhZGVycy5cblx0XHQgKi9cblx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0XHQvKipcblx0XHQgKiBSYWRvblNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpLlxuXHRcdCAqL1xuXHRcdGFyZ3NLZXlzPzogc3RyaW5nW107XG5cdFx0LyoqXG5cdFx0ICogTWFwIG9mIHByZS1zZXQgcGFyYW1ldGVycyAob24gcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzLCBvbmx5KS5cblx0XHQgKi9cblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuXHR9KSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBNZXRob2RzLkh0dHBHZXQsXG5cdFx0XHRcdHVybDogc3BlY3M/LnVybCxcblx0XHRcdFx0aGVhZGVyczogc3BlY3M/LmhlYWRlcnMsXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBIVFRQL0hFQUQgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxuXHQgKiovXG5cdGV4cG9ydCBmdW5jdGlvbiBIdHRwSGVhZChzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkxcblx0XHQgKi9cblx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogSFRUUCByZXF1ZXN0IGhlYWRlcnNcblx0XHQgKi9cblx0XHRoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblx0XHQvKipcblx0XHQgKiBSYWRvbiBzY3JpcHQgZm9yIHByb2Nlc3NpbmcgcmV0dXJuZWQgdmFsdWUuXG5cdFx0ICovXG5cdFx0c2NyaXB0PzogUmFkb25Bbnk7XG5cdFx0LyoqXG5cdFx0ICogTmFtZXMgb2YgaW5kZXhlZCBwYXJhbWV0ZXJzIChvcHRpb25hbCwgaWYgYW55KVxuXHRcdCAqL1xuXHRcdGFyZ3NLZXlzPzogc3RyaW5nW107XG5cdFx0LyoqXG5cdFx0ICogTWFwIG9mIHByZS1zZXQgcGFyYW1ldGVycyAob24gcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzLCBvbmx5KS5cblx0XHQgKi9cblx0XHRzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuXHR9KSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChcblx0XHRcdHtcblx0XHRcdFx0bWV0aG9kOiBNZXRob2RzLkh0dHBIZWFkLFxuXHRcdFx0XHR1cmw6IHNwZWNzPy51cmwsXG5cdFx0XHRcdGhlYWRlcnM6IHNwZWNzPy5oZWFkZXJzLFxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXG5cdFx0XHR9LFxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgSFRUUC9QT1NUIGRhdGEgcmV0cmlldmFsIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gSHR0cFBvc3Qoc3BlY3M6IHtcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgVVJMXG5cdFx0ICovXG5cdFx0dXJsPzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBib2R5XG5cdFx0ICovXG5cdFx0Ym9keT86IHN0cmluZztcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xuXHRcdCAqL1xuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uIHNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXG5cdFx0XHRcdHVybDogc3BlY3M/LnVybCxcblx0XHRcdFx0aGVhZGVyczogc3BlY3M/LmhlYWRlcnMsXG5cdFx0XHRcdGJvZHk6IHNwZWNzPy5ib2R5LFxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXG5cdFx0XHR9LFxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgR3JhcGhRTC1xdWVyeSBkYXRhIHNvdXJjZSBvYmplY3QuXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXG5cdCAqKi9cblx0ZXhwb3J0IGZ1bmN0aW9uIEdyYXBoUUxRdWVyeShzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEdyYXBoUUwgVVJMIGVuZHBvaW50XG5cdFx0ICovXG5cdFx0dXJsPzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEdyYXBoUUwgcXVlcnlcblx0XHQgKi9cblx0XHRxdWVyeTogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uIHNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cFBvc3QsXG5cdFx0XHRcdHVybDogc3BlY3MudXJsLFxuXHRcdFx0XHRib2R5OiBge1wicXVlcnlcIjpcIiR7Z3JhcGhRbENvbXByZXNzKHNwZWNzLnF1ZXJ5KS5yZXBsYWNlQWxsKCdcIicsICdcXFxcXCInKX1cIn1gLFxuXHRcdFx0XHRoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PVVURi04XCIgfSxcblx0XHRcdFx0c2NyaXB0OiBzcGVjcz8uc2NyaXB0LFxuXHRcdFx0XHRhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxuXHRcdFx0fSxcblx0XHRcdHNwZWNzPy5zYW1wbGVzLFxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIEpTT04tUlBDIGRhdGEgcmV0cmlldmFsIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gSnNvblJQQyhzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEpTT04tUlBDIG1ldGhvZCBhbmQgcGFyYW1ldGVycy5cblx0XHQgKi9cblx0XHRycGM6IHsgbWV0aG9kOiBzdHJpbmc7IHBhcmFtcz86IGFueSB9O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uIHNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwUG9zdCxcblx0XHRcdFx0Ym9keTogSlNPTi5zdHJpbmdpZnkoe1xuXHRcdFx0XHRcdGpzb25ycGM6IFwiMi4wXCIsXG5cdFx0XHRcdFx0bWV0aG9kOiBzcGVjcy5ycGMubWV0aG9kLFxuXHRcdFx0XHRcdHBhcmFtczogc3BlY3MucnBjPy5wYXJhbXMsXG5cdFx0XHRcdFx0aWQ6IDEsXG5cdFx0XHRcdH0pLnJlcGxhY2VBbGwoXCJcXFxcXFxcXFwiLCBcIlxcXFxcIiksXG5cdFx0XHRcdGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXG5cdFx0XHR9LFxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXG5cdFx0KTtcblx0fVxufVxuZXhwb3J0IG5hbWVzcGFjZSB0eXBlcyB7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkFycmF5ID0gX1JhZG9uQXJyYXk7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkJvb2xlYW4gPSBfUmFkb25Cb29sZWFuO1xuXHRleHBvcnQgY29uc3QgUmFkb25CeXRlcyA9IF9SYWRvbkJ5dGVzO1xuXHRleHBvcnQgY29uc3QgUmFkb25GbG9hdCA9IF9SYWRvbkZsb2F0O1xuXHRleHBvcnQgY29uc3QgUmFkb25JbnRlZ2VyID0gX1JhZG9uSW50ZWdlcjtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uTWFwID0gX1JhZG9uTWFwO1xuXHRleHBvcnQgY29uc3QgUmFkb25TY3JpcHQgPSBfUmFkb25TY3JpcHQ7XG5cdGV4cG9ydCBjb25zdCBSYWRvblN0cmluZyA9IF9SYWRvblN0cmluZztcblx0ZXhwb3J0IGNvbnN0IFJhZG9uRW5jb2RpbmdzID0gX1JhZG9uRW5jb2RpbmdzO1xufVxuXG5mdW5jdGlvbiBwcm94eUhhbmRsZXI8VD4odDogeyBuZXcgKHNwZWNzOiBhbnkpOiBUIH0pIHtcblx0cmV0dXJuIHtcblx0XHRnZXQodGFyZ2V0OiBhbnksIHByb3A6IHN0cmluZykge1xuXHRcdFx0Y29uc3QgZm91bmQgPSB0YXJnZXRbcHJvcF0gPz8gZmluZEtleUluT2JqZWN0KHRhcmdldCwgcHJvcCk7XG5cdFx0XHQvLyBpZiAoIWZvdW5kKSB7XG5cdFx0XHQvLyAgICAgdGhyb3cgRXZhbEVycm9yKGBbJyR7cHJvcH0nXSB3YXMgbm90IGZvdW5kIGluIGRpY3Rpb25hcnlgKVxuXHRcdFx0Ly8gfSBlbHNlXG5cdFx0XHRpZiAoZm91bmQgJiYgIShmb3VuZCBpbnN0YW5jZW9mIHQpKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgWycke3Byb3B9J10gd2FzIGZvdW5kIHdpdGggdHlwZSAke2ZvdW5kPy5jb25zdHJ1Y3Rvcj8ubmFtZX0gaW5zdGVhZCBvZiAke3QubmFtZX0hYCk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZm91bmQ7XG5cdFx0fSxcblx0fTtcbn1cblxuZnVuY3Rpb24gZmluZEtleUluT2JqZWN0KGRpY3Q6IGFueSwgdGFnOiBzdHJpbmcpIHtcblx0Zm9yIChjb25zdCBrZXkgaW4gZGljdCkge1xuXHRcdGlmICh0eXBlb2YgZGljdFtrZXldID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRpZiAoa2V5ID09PSB0YWcpIHtcblx0XHRcdFx0cmV0dXJuIGRpY3Rba2V5XTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGZvdW5kOiBhbnkgPSBmaW5kS2V5SW5PYmplY3QoZGljdFtrZXldLCB0YWcpO1xuXHRcdFx0XHRpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdfQ==
727
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sZUFBZSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRS9DLE9BQU8sUUFBUSxNQUFNLFlBQVksQ0FBQztBQUVsQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsQ0FBQztBQUNyQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUM7QUFDbkYsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUV0RCxNQUFNLDhCQUE4QixHQUFHLElBQUksQ0FBQztBQUU1QyxPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLGFBQWEsRUFDYiwyQkFBMkIsRUFDM0IsV0FBVyxFQUNYLFVBQVUsRUFDVixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsR0FDZCxNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFDTixVQUFVLElBQUksV0FBVyxFQUN6QixZQUFZLElBQUksYUFB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ZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCBjYm9yIGZyb20gXCJjYm9yXCI7XG5pbXBvcnQgZ3JhcGhRbENvbXByZXNzIGZyb20gXCJncmFwaHFsLXF1ZXJ5LWNvbXByZXNzXCI7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCBwcm90b2J1ZiBmcm9tIFwicHJvdG9idWZqc1wiO1xuXG5jb25zdCB7IFJvb3Q6IFByb3RvUm9vdCB9ID0gcHJvdG9idWY7XG5jb25zdCBwcm90b1Jvb3QgPSBQcm90b1Jvb3QuZnJvbUpTT04ocmVxdWlyZShcIi4uLy4uLy4uL3dpdG5ldC93aXRuZXQucHJvdG8uanNvblwiKSk7XG5jb25zdCBSQURSZXF1ZXN0ID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUoXCJSQURSZXF1ZXN0XCIpO1xuXG5jb25zdCBfREVGQVVMVF9EUllfUlVOX1RJTUVPVVRfTVNFQ1MgPSA1MDAwO1xuXG5pbXBvcnQge1xuXHRleGVjUmFkb25CeXRlY29kZSxcblx0ZnJvbUhleFN0cmluZyxcblx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nLFxuXHRpc0hleFN0cmluZyxcblx0aXNXaWxkY2FyZCxcblx0cGFyc2VVUkwsXG5cdHJlcGxhY2VXaWxkY2FyZHMsXG5cdHNwbGljZVdpbGRjYXJkLFxuXHR0b0hleFN0cmluZyxcblx0dG9VdGY4QXJyYXksXG5cdHV0ZjhBcnJheVRvU3RyLFxufSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnMuanNcIjtcblxuaW1wb3J0IHsgc2hhMjU2IH0gZnJvbSBcIi4uL2NyeXB0by91dGlscy5qc1wiO1xuaW1wb3J0IHsgT3Bjb2RlcyBhcyBGaWx0ZXJzLCBSYWRvbkZpbHRlciB9IGZyb20gXCIuL2ZpbHRlcnMuanNcIjtcbmltcG9ydCB7IFJhZG9uUmVkdWNlciwgT3Bjb2RlcyBhcyBSZWR1Y2VycyB9IGZyb20gXCIuL3JlZHVjZXJzLmpzXCI7XG5pbXBvcnQge1xuXHRSYWRvbkFycmF5IGFzIF9SYWRvbkFycmF5LFxuXHRSYWRvbkJvb2xlYW4gYXMgX1JhZG9uQm9vbGVhbixcblx0UmFkb25CeXRlcyBhcyBfUmFkb25CeXRlcyxcblx0UmFkb25FbmNvZGluZ3MgYXMgX1JhZG9uRW5jb2RpbmdzLFxuXHRSYWRvbkZsb2F0IGFzIF9SYWRvbkZsb2F0LFxuXHRSYWRvbkludGVnZXIgYXMgX1JhZG9uSW50ZWdlcixcblx0UmFkb25NYXAgYXMgX1JhZG9uTWFwLFxuXHRSYWRvblNjcmlwdCBhcyBfUmFkb25TY3JpcHQsXG5cdFJhZG9uU3RyaW5nIGFzIF9SYWRvblN0cmluZyxcblx0dHlwZSBSYWRvbkFueSxcblx0dHlwZSBSYWRvbk9wZXJhdG9yLFxuXHR0eXBlIFJhZG9uU3RyaW5nLFxufSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuaW1wb3J0IHsgcGFyc2VSYWRvblNjcmlwdCB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5cbnR5cGUgQXJncyA9IHN0cmluZ1tdIHwgc3RyaW5nW11bXTtcblxuY2xhc3MgUmFkb25BcnRpZmFjdCB7XG5cdHB1YmxpYyByZWFkb25seSBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdO1xuXHRwdWJsaWMgcmVhZG9ubHkgc291cmNlc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcblx0cHVibGljIHJlYWRvbmx5IHdpdG5lc3NSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cblx0Y29uc3RydWN0b3Ioc3BlY3M6IHtcblx0XHRzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdO1xuXHRcdHNvdXJjZXNSZWR1Y2VyOiBSYWRvblJlZHVjZXI7XG5cdFx0d2l0bmVzc1JlZHVjZXI6IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGlmICghc3BlY3Muc291cmNlcyB8fCAhQXJyYXkuaXNBcnJheShzcGVjcy5zb3VyY2VzKSB8fCBzcGVjcy5zb3VyY2VzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25BcnRpZmFjdDogY2Fubm90IGJ1aWxkIGlmIG5vIHJldHJpZXZhbHMgYXJlIHBhc3NlZFwiKTtcblx0XHR9XG5cdFx0c3BlY3Muc291cmNlcz8uZm9yRWFjaCgocmV0cmlldmFsLCBpbmRleCkgPT4ge1xuXHRcdFx0aWYgKHJldHJpZXZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgUmFkb25BcnRpZmFjdDogcmV0cmlldmFsICMke2luZGV4fSBpcyB1bmRlZmluZWRgKTtcblx0XHRcdH0gZWxzZSBpZiAoIShyZXRyaWV2YWwgaW5zdGFuY2VvZiBSYWRvblJldHJpZXZhbCkpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBSYWRvbkFydGlmYWN0OiByZXRyaWV2YWwgIyR7aW5kZXh9OiBpbnZhbGlkIHR5cGVgKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHR0aGlzLnNvdXJjZXMgPSBzcGVjcy5zb3VyY2VzO1xuXHRcdHRoaXMuc291cmNlc1JlZHVjZXIgPSBzcGVjcy5zb3VyY2VzUmVkdWNlcjtcblx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyID0gc3BlY3Mud2l0bmVzc1JlZHVjZXI7XG5cdH1cblxuXHRwdWJsaWMgb3BzQ291bnQoKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0KHRoaXMuc291cmNlcz8ubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC5vcHNDb3VudCgpKS5yZWR1Y2UoKHN1bSwgYSkgPT4gc3VtICsgYSkgfHwgMCkgK1xuXHRcdFx0dGhpcy5zb3VyY2VzUmVkdWNlcj8ub3BzQ291bnQoKSArXG5cdFx0XHR0aGlzLndpdG5lc3NSZWR1Y2VyPy5vcHNDb3VudCgpXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25SZXF1ZXN0IGV4dGVuZHMgUmFkb25BcnRpZmFjdCB7XG5cdC8qKlxuXHQgKiBEZWNvZGVzIGEgUmFkb25SZXF1ZXN0IGFydGlmYWN0IG91dCBmcm9tIGEgUHJvdG9idWYtc2VyaWFsaXplZCBieXRlY29kZS5cblx0ICogQHBhcmFtIGJ5dGVjb2RlIFJhZG9uIHJlcXVlc3QgYnl0ZWNvZGUuXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21CeXRlY29kZShieXRlY29kZTogYW55KSB7XG5cdFx0bGV0IGJ1ZmZlcjtcblx0XHRpZiAoaXNIZXhTdHJpbmcoYnl0ZWNvZGUpKSB7XG5cdFx0XHRidWZmZXIgPSBmcm9tSGV4U3RyaW5nKGJ5dGVjb2RlKTtcblx0XHR9IGVsc2UgaWYgKGJ5dGVjb2RlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHRcdFx0YnVmZmVyID0gQnVmZmVyLmZyb20oYnl0ZWNvZGUpO1xuXHRcdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRcdGJ1ZmZlciA9IGJ5dGVjb2RlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJlcXVlc3Q6IHVuc3VwcG9ydGVkIGJ5dGVjb2RlIGZvcm1hdDogJHtieXRlY29kZX1gKTtcblx0XHR9XG5cdFx0Y29uc3Qgb2JqOiBhbnkgPSBSQURSZXF1ZXN0LmRlY29kZShidWZmZXIpO1xuXHRcdHJldHVybiBSYWRvblJlcXVlc3QuZnJvbVByb3RvYnVmKG9iaik7XG5cdH1cblxuXHQvKipcblx0ICogRGVjb2RlcyBhIFJhZG9uUmVxdWVzdCBhcnRpZmFjdCBvdXQgZnJvbSBhIFByb3RvYnVmIG9iamVjdC5cblx0ICogQHBhcmFtIG9iaiBQcm90b2J1ZiBvYmplY3QuXG5cdCAqIEByZXR1cm5zIFJhZG9uUmVxdWVzdCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3RhdGljIGZyb21Qcm90b2J1ZihvYmo6IGFueSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBvYmoucmV0cmlldmUubWFwKChyZXRyaWV2YWw6IGFueSkgPT4ge1xuXHRcdFx0Y29uc3Qgc3BlY3M6IGFueSA9IHt9O1xuXHRcdFx0aWYgKHJldHJpZXZhbD8udXJsKSB7XG5cdFx0XHRcdHNwZWNzLnVybCA9IHJldHJpZXZhbC51cmw7XG5cdFx0XHR9XG5cdFx0XHRpZiAocmV0cmlldmFsPy5oZWFkZXJzKSB7XG5cdFx0XHRcdHNwZWNzLmhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRcdFx0cmV0cmlldmFsLmhlYWRlcnMubWFwKChzdHJpbmdQYWlyOiBhbnkpID0+IFtzdHJpbmdQYWlyLmxlZnQsIHN0cmluZ1BhaXIucmlnaHRdKSxcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmIChyZXRyaWV2YWw/LmJvZHkgJiYgcmV0cmlldmFsLmJvZHkubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRzcGVjcy5ib2R5ID0gdXRmOEFycmF5VG9TdHIoT2JqZWN0LnZhbHVlcyhyZXRyaWV2YWwuYm9keSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJldHJpZXZhbD8uc2NyaXB0KSBzcGVjcy5zY3JpcHQgPSBwYXJzZVJhZG9uU2NyaXB0KHRvSGV4U3RyaW5nKHJldHJpZXZhbC5zY3JpcHQpKTtcblx0XHRcdHNwZWNzLm1ldGhvZCA9IHJldHJpZXZhbC5raW5kO1xuXHRcdFx0cmV0dXJuIG5ldyBSYWRvblJldHJpZXZhbChzcGVjcyk7XG5cdFx0fSk7XG5cdFx0Y29uc3QgZGVjb2RlRmlsdGVyID0gKGY6IGFueSkgPT4ge1xuXHRcdFx0aWYgKGY/LmFyZ3MgJiYgZi5hcmdzLmxlbmd0aCA+IDApIHJldHVybiBuZXcgUmFkb25GaWx0ZXIoZi5vcCwgY2Jvci5kZWNvZGUoVWludDhBcnJheS5mcm9tKGYuYXJncykpKTtcblx0XHRcdGVsc2UgcmV0dXJuIG5ldyBSYWRvbkZpbHRlcihmLm9wKTtcblx0XHR9O1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRcdHNvdXJjZXMsXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogbmV3IFJhZG9uUmVkdWNlcihvYmouYWdncmVnYXRlLnJlZHVjZXIsIG9iai5hZ2dyZWdhdGUuZmlsdGVycz8ubWFwKGRlY29kZUZpbHRlcikpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IG5ldyBSYWRvblJlZHVjZXIob2JqLnRhbGx5LnJlZHVjZXIsIG9iai50YWxseS5maWx0ZXJzPy5tYXAoZGVjb2RlRmlsdGVyKSksXG5cdFx0fSk7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcihzcGVjczoge1xuXHRcdHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsIHwgUmFkb25SZXRyaWV2YWxbXTtcblx0XHRzb3VyY2VzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0fSkge1xuXHRcdGNvbnN0IHNvdXJjZXMgPSBBcnJheS5pc0FycmF5KHNwZWNzLnNvdXJjZXMpID8gKHNwZWNzLnNvdXJjZXMgYXMgUmFkb25SZXRyaWV2YWxbXSkgOiBbc3BlY3Muc291cmNlc107XG5cdFx0c3VwZXIoe1xuXHRcdFx0c291cmNlcyxcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiBzcGVjcz8uc291cmNlc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHNwZWNzPy53aXRuZXNzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0fSk7XG5cdFx0Y29uc3QgYXJnc0NvdW50ID0gc291cmNlcy5tYXAoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBwcmV2ICsgY3Vycik7XG5cdFx0aWYgKGFyZ3NDb3VudCA+IDApIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmVxdWVzdDogcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzIHdlcmUgcGFzc2VkXCIpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBfZW5jb2RlKCk6IEJ1ZmZlciB7XG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMudG9Qcm90b2J1ZigpO1xuXHRcdGNvbnN0IGVyck1zZyA9IFJBRFJlcXVlc3QudmVyaWZ5KHBheWxvYWQpO1xuXHRcdGlmIChlcnJNc2cpIHtcblx0XHRcdHRocm93IEVycm9yKGVyck1zZyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSBSQURSZXF1ZXN0LmZyb21PYmplY3QocGF5bG9hZCk7XG5cdFx0XHRyZXR1cm4gQnVmZmVyLmZyb20oUkFEUmVxdWVzdC5lbmNvZGUobWVzc2FnZSkuZmluaXNoKCkpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBhc3luYyBleGVjRHJ5UnVuKG9wdGlvbnM/OiB7IHZlcmJvc2U6IGJvb2xlYW47IHRpbWVvdXQ6IG51bWJlciB9KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRyZXR1cm4gZXhlY1JhZG9uQnl0ZWNvZGUoXG5cdFx0XHR0aGlzLnRvQnl0ZWNvZGUoKSxcblx0XHRcdG9wdGlvbnM/LnRpbWVvdXQgPz8gX0RFRkFVTFRfRFJZX1JVTl9USU1FT1VUX01TRUNTLFxuXHRcdFx0XCItLWpzb25cIixcblx0XHRcdG9wdGlvbnM/LnZlcmJvc2UgPyBcIi0tdmVyYm9zZVwiIDogXCJcIixcblx0XHQpLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LnRyaW0oKSk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuc291cmNlc1swXS5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5STkdcblx0XHRcdD8gXCJSYWRvbkJ5dGVzXCJcblx0XHRcdDogdGhpcy5zb3VyY2VzPy5bMF0/LnNjcmlwdD8ub3V0cHV0VHlwZVxuXHRcdFx0XHQ/IHRoaXMuc291cmNlc1swXS5zY3JpcHQub3V0cHV0VHlwZS5jb25zdHJ1Y3Rvci5uYW1lXG5cdFx0XHRcdDogXCJSYWRvbkFueVwiO1xuXHR9XG5cblx0cHVibGljIGdldCByYWRIYXNoKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHNoYTI1Nih0aGlzLl9lbmNvZGUoKSksIGZhbHNlKTtcblx0fVxuXG5cdHB1YmxpYyB0b0J5dGVjb2RlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMuX2VuY29kZSgpKTsgLy9lbmNvZGVSQURSZXF1ZXN0KHRoaXMudG9Qcm90b2J1ZigpKSwgdHJ1ZSlcblx0fVxuXG5cdHB1YmxpYyB0b0pTT04oaHVtYW5pemU/OiBib29sZWFuKTogYW55IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cmV0cmlldmU6IHRoaXMuc291cmNlcy5tYXAoKHJldHJpZXZhbCkgPT4gcmV0cmlldmFsLnRvSlNPTihodW1hbml6ZSkpLFxuXHRcdFx0YWdncmVnYXRlOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLnRvSlNPTihodW1hbml6ZSksXG5cdFx0XHR0YWxseTogdGhpcy53aXRuZXNzUmVkdWNlci50b0pTT04oaHVtYW5pemUpLFxuXHRcdFx0Li4uKGh1bWFuaXplID8ge30gOiB7IHRpbWVfbG9jazogMCB9KSxcblx0XHR9O1xuXHR9XG5cblx0cHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Ly90aW1lTG9jazogMCxcblx0XHRcdHJldHJpZXZlOiB0aGlzLnNvdXJjZXMubWFwKChyZXRyaWV2YWwpID0+IHJldHJpZXZhbC50b1Byb3RvYnVmKCkpLFxuXHRcdFx0YWdncmVnYXRlOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLnRvUHJvdG9idWYoKSxcblx0XHRcdHRhbGx5OiB0aGlzLndpdG5lc3NSZWR1Y2VyLnRvUHJvdG9idWYoKSxcblx0XHR9O1xuXHR9XG5cblx0cHVibGljIHdlaWdodCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLnRvQnl0ZWNvZGUoKS5zbGljZSgyKS5sZW5ndGggLyAyO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSYWRvblJlcXVlc3RGcm9tQXNzZXRzKHNwZWNzOiB7XG5cdGFzc2V0czogT2JqZWN0O1xuXHRhcmdzTWFwOiBSZWNvcmQ8c3RyaW5nLCBhbnkgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZD47XG5cdHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcbn0pOiBSYWRvblJlcXVlc3Qge1xuXHRjb25zdCBzb3VyY2VzOiBSYWRvblJldHJpZXZhbFtdID0gW107XG5cdGNvbnN0IGRpY3QgPSByZXRyaWV2YWxzLmZyb21SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMpO1xuXHQvLyBjb25zdCBhcmdzOiBzdHJpbmdbXVtdID0gW11cblx0T2JqZWN0LmtleXMoc3BlY3MuYXJnc01hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0Y29uc3QgcmV0cmlldmFsOiBSYWRvblJldHJpZXZhbCA9IGRpY3Rba2V5XTtcblx0XHRjb25zdCBhcmdzID0gKHNwZWNzLmFyZ3NNYXAgYXMgYW55KVtrZXldO1xuXHRcdGlmIChyZXRyaWV2YWwuYXJnc0NvdW50ID4gMCkge1xuXHRcdFx0aWYgKCFhcmdzIHx8IGFyZ3MubGVuZ3RoIDwgcmV0cmlldmFsLmFyZ3NDb3VudCkge1xuXHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YEluc3VmZmljaWVudCBhcmdzIHBhc3NlZCB0byByZXRyaWV2YWwgbmFtZWQgYXMgJyR7a2V5fSc6ICR7YXJncy5sZW5ndGh9IDwgJHtyZXRyaWV2YWwuYXJnc0NvdW50fWAsXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3MpKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG5ldyBSYWRvblJlcXVlc3Qoe1xuXHRcdHNvdXJjZXMsXG5cdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlcixcblx0XHR3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyLFxuXHR9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJhZG9uU2NyaXB0PElucHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25TdHJpbmc+KGlucHV0VHlwZToge1xuXHRuZXcgKG9wcz86IFJhZG9uT3BlcmF0b3IpOiBJbnB1dFR5cGU7XG59KTogSW5wdXRUeXBlIHtcblx0aWYgKCFpbnB1dFR5cGUpIHRocm93IFR5cGVFcnJvcihcIklucHV0IFJhZG9uIGRhdGEgdHlwZSBtdXN0IGJlIHNwZWNpZmllZCB3aGVuIGRlY2xhcmluZyBhIG5ldyBSYWRvbiBzY3JpcHQuXCIpO1xuXHRyZXR1cm4gbmV3IGlucHV0VHlwZSgpO1xufVxuXG5leHBvcnQgY2xhc3MgUmFkb25UZW1wbGF0ZSBleHRlbmRzIFJhZG9uQXJ0aWZhY3Qge1xuXHRwcm90ZWN0ZWQgX2FyZ3NDb3VudDogbnVtYmVyO1xuXG5cdHB1YmxpYyByZWFkb25seSBob21vZ2VuZW91czogYm9vbGVhbjtcblx0cHVibGljIHJlYWRvbmx5IHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBBcmdzPjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRzcGVjczoge1xuXHRcdFx0c291cmNlczogUmFkb25SZXRyaWV2YWwgfCBSYWRvblJldHJpZXZhbFtdO1xuXHRcdFx0c291cmNlc1JlZHVjZXI/OiBSYWRvblJlZHVjZXI7XG5cdFx0XHR3aXRuZXNzUmVkdWNlcj86IFJhZG9uUmVkdWNlcjtcblx0XHR9LFxuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBBcmdzPixcblx0KSB7XG5cdFx0Y29uc3Qgc291cmNlcyA9IEFycmF5LmlzQXJyYXkoc3BlY3Muc291cmNlcykgPyAoc3BlY3Muc291cmNlcyBhcyBSYWRvblJldHJpZXZhbFtdKSA6IFtzcGVjcy5zb3VyY2VzXTtcblx0XHRzdXBlcih7XG5cdFx0XHRzb3VyY2VzLFxuXHRcdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0XHR3aXRuZXNzUmVkdWNlcjogc3BlY3M/LndpdG5lc3NSZWR1Y2VyIHx8IHJlZHVjZXJzLk1vZGUoKSxcblx0XHR9KTtcblx0XHR0aGlzLl9hcmdzQ291bnQgPSBzb3VyY2VzLm1hcCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWw/LmFyZ3NDb3VudCkucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBNYXRoLm1heChwcmV2LCBjdXJyKSwgMCk7XG5cdFx0aWYgKHRoaXMuX2FyZ3NDb3VudCA9PT0gMCkge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKFwiUmFkb25UZW1wbGF0ZTogbm8gcGFyYW1ldGVyaXplZCByZXRyaWV2YWxzIHdlcmUgcGFzc2VkXCIpO1xuXHRcdH1cblx0XHR0aGlzLmhvbW9nZW5lb3VzID0gIXNvdXJjZXMuZmluZCgocmV0cmlldmFsKSA9PiByZXRyaWV2YWwuYXJnc0NvdW50ICE9PSB0aGlzLl9hcmdzQ291bnQpO1xuXHRcdGlmIChzYW1wbGVzKSB7XG5cdFx0XHRPYmplY3Qua2V5cyhzYW1wbGVzKS5mb3JFYWNoKChzYW1wbGUpID0+IHtcblx0XHRcdFx0bGV0IHNhbXBsZUFyZ3M6IEFyZ3MgPSBPYmplY3Qoc2FtcGxlcylbc2FtcGxlXTtcblx0XHRcdFx0aWYgKHR5cGVvZiBzYW1wbGVBcmdzID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0c2FtcGxlQXJncyA9IFtzYW1wbGVBcmdzXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoc2FtcGxlQXJncy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KHNhbXBsZUFyZ3NbMF0pKSB7XG5cdFx0XHRcdFx0XHRPYmplY3Qoc2FtcGxlcylbc2FtcGxlXSA9IEFycmF5KHNvdXJjZXMubGVuZ3RoKS5maWxsKHNhbXBsZUFyZ3MpO1xuXHRcdFx0XHRcdFx0c2FtcGxlQXJncyA9IE9iamVjdChzYW1wbGVzKVtzYW1wbGVdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoc2FtcGxlQXJncz8ubGVuZ3RoICE9PSBzb3VyY2VzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0XHRgUmFkb25UZW1wbGF0ZTogYXJndW1lbnRzIG1pc21hdGNoIGluIHNhbXBsZSBcIiR7c2FtcGxlfVwiOiAke3NhbXBsZUFyZ3M/Lmxlbmd0aH0gc2FtcGxlcyBnaXZlbiB2cy4gJHtzb3VyY2VzLmxlbmd0aH0gZXhwZWN0ZWRgLFxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2FtcGxlQXJncz8uZm9yRWFjaCgoc3ViYXJncywgaW5kZXgpID0+IHtcblx0XHRcdFx0XHRcdGlmIChzdWJhcmdzLmxlbmd0aCA8IHNvdXJjZXNbaW5kZXhdLmFyZ3NDb3VudCkge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0XHRcdFx0YFxceDFiWzE7MzNtUmFkb25SZXF1ZXN0VGVtcGxhdGU6IGFyZ3VtZW50cyBtaXNtYXRjaCBpbiB0ZXN0IFxceDFiWzE7MzFtJyR7c2FtcGxlfSdcXHgxYlsxOzMzbTogXFx4MWJbMTszN21SZXRyaWV2YWwgIyR7aW5kZXh9XFx4MWJbMTszM206ICR7c3ViYXJncz8ubGVuZ3RofSBwYXJhbWV0ZXJzIGdpdmVuIHZzLiAke3NvdXJjZXNbaW5kZXhdLmFyZ3NDb3VudH0gZXhwZWN0ZWRcXHgxYlswbWAsXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zYW1wbGVzID0gc2FtcGxlcztcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLl9hcmdzQ291bnQ7XG5cdH1cblxuXHRwdWJsaWMgYnVpbGRSYWRvblJlcXVlc3QoYXJnczogYW55IHwgYW55W10gfCBzdHJpbmdbXSB8IHN0cmluZ1tdW10pOiBSYWRvblJlcXVlc3Qge1xuXHRcdGNvbnN0IHNvdXJjZXM6IFJhZG9uUmV0cmlldmFsW10gPSBbXTtcblx0XHRpZiAodGhpcy5ob21vZ2VuZW91cykge1xuXHRcdFx0Ly8gYXJncyBjYW4gYmUgZWl0aGVyIGFueSwgc3RyaW5nW10gb3Igc3RyaW5nWzBdW11cblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFyZ3MpICYmIGFyZ3NbMF0gJiYgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkge1xuXHRcdFx0XHRpZiAoYXJncy5sZW5ndGggPiAxKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogaG9tb2dlbmVvdXMgdGVtcGxhdGU6IGFyZ3MgdmVjdG9yIGRpbWVuc2lvbiAke2FyZ3MubGVuZ3RofSA+IDEuYCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YXJncyA9IGFyZ3NbMF07XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJncykgJiYgYXJncy5sZW5ndGggIT09IHRoaXMuYXJnc0NvdW50KSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXG5cdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IGhvbW9nZW5vdXMgdGVtcGxhdGU6IG1pc3NpbmcgJHt0aGlzLmFyZ3NDb3VudCAtIGFyZ3MubGVuZ3RofSBvdXQgb2YgJHthcmdzLmxlbmd0aH0gcGFyYW1ldGVycy5gLFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zb3VyY2VzLmZvckVhY2goKHJldHJpZXZhbCkgPT4ge1xuXHRcdFx0XHRzb3VyY2VzLnB1c2gocmV0cmlldmFsLmZvbGRBcmdzKGFyZ3MpKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIUFycmF5LmlzQXJyYXkoYXJncykgfHwgYXJncy5sZW5ndGggIT09IHRoaXMuc291cmNlcy5sZW5ndGgpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgUmFkb25UZW1wbGF0ZTogYXJncyB2ZWN0b3IgZGltZW5zaW9uICR7YXJncy5sZW5ndGh9ICE9ICR7dGhpcy5zb3VyY2VzLmxlbmd0aH1gKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc291cmNlcy5mb3JFYWNoKChyZXRyaWV2YWwsIGluZGV4KSA9PiB7XG5cdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KGFyZ3NbaW5kZXhdKSAmJiByZXRyaWV2YWwuYXJnc0NvdW50ICE9PSBhcmdzW2luZGV4XS5sZW5ndGgpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFxuXHRcdFx0XHRcdFx0YFJhZG9uVGVtcGxhdGU6IHJldHJpZXZhbCAjJHtpbmRleCArIDF9OiBtaXNtYXRjaGluZyBhcmdzIGNvdW50OiAke1xuXHRcdFx0XHRcdFx0XHRhcmdzW2luZGV4XS5sZW5ndGhcblx0XHRcdFx0XHRcdH0gIT0gJHtyZXRyaWV2YWwuYXJnc0NvdW50fSAoWyR7YXJnc1tpbmRleF19KV1gLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0c291cmNlcy5wdXNoKHJldHJpZXZhbC5mb2xkQXJncyhhcmdzW2luZGV4XSkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmFkb25SZXF1ZXN0KHtcblx0XHRcdHNvdXJjZXMsXG5cdFx0XHRzb3VyY2VzUmVkdWNlcjogdGhpcy5zb3VyY2VzUmVkdWNlcixcblx0XHRcdHdpdG5lc3NSZWR1Y2VyOiB0aGlzLndpdG5lc3NSZWR1Y2VyLFxuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbk1vZGFsIGV4dGVuZHMgUmFkb25UZW1wbGF0ZSB7XG5cdHByb3RlY3RlZCBfcHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+O1xuXG5cdGNvbnN0cnVjdG9yKHNwZWNzOiB7XG5cdFx0cHJvdmlkZXJzPzogQXJyYXk8c3RyaW5nPjtcblx0XHRyZXRyaWV2YWw6IFJhZG9uUmV0cmlldmFsO1xuXHRcdHNvdXJjZXNSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHRcdHdpdG5lc3NSZWR1Y2VyPzogUmFkb25SZWR1Y2VyO1xuXHR9KSB7XG5cdFx0aWYgKCFzcGVjcy5yZXRyaWV2YWwuaXNNb2RhbCgpKSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvbk1vZGFsOiBubyBtb2RhbCByZXRyaWV2YWwgd2FzIHBhc3NlZC5cIik7XG5cdFx0fVxuXHRcdHN1cGVyKFxuXHRcdFx0e1xuXHRcdFx0XHRzb3VyY2VzOiBbc3BlY3MucmV0cmlldmFsXSxcblx0XHRcdFx0c291cmNlc1JlZHVjZXI6IHNwZWNzPy5zb3VyY2VzUmVkdWNlciB8fCByZWR1Y2Vycy5Nb2RlKCksXG5cdFx0XHRcdHdpdG5lc3NSZWR1Y2VyOiBzcGVjcz8ud2l0bmVzc1JlZHVjZXIgfHwgcmVkdWNlcnMuTW9kZSgpLFxuXHRcdFx0fSxcblx0XHRcdHNwZWNzLnJldHJpZXZhbD8uc2FtcGxlcyxcblx0XHQpO1xuXHRcdGlmIChzcGVjcz8ucHJvdmlkZXJzKSB7XG5cdFx0XHR0aGlzLl9wcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhzcGVjcy5wcm92aWRlcnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9wcm92aWRlcnMgPSBbXTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0IGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdGNvbnN0IF9wcm92aWRlcnNBcmdzQ291bnQgPSBNYXRoLm1heCguLi50aGlzLnByb3ZpZGVycy5tYXAoKHVybCkgPT4gZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHVybCkpKTtcblx0XHRyZXR1cm4gX3Byb3ZpZGVyc0FyZ3NDb3VudCA+IDAgPyBNYXRoLm1heCh0aGlzLl9hcmdzQ291bnQsIF9wcm92aWRlcnNBcmdzQ291bnQpIDogdGhpcy5fYXJnc0NvdW50O1xuXHR9XG5cblx0cHVibGljIGdldCBwcm92aWRlcnMoKTogQXJyYXk8c3RyaW5nPiB7XG5cdFx0cmV0dXJuIHRoaXMuX3Byb3ZpZGVycztcblx0fVxuXG5cdHB1YmxpYyBzZXQgcHJvdmlkZXJzKHByb3ZpZGVyczogQXJyYXk8c3RyaW5nPikge1xuXHRcdHRoaXMuX3Byb3ZpZGVycyA9IHRoaXMuX2NoZWNrUHJvdmlkZXJzKHByb3ZpZGVycyk7XG5cdH1cblxuXHRwdWJsaWMgYnVpbGRSYWRvblJlcXVlc3QoYXJncz86IGFueSB8IHN0cmluZ1tdKTogUmFkb25SZXF1ZXN0IHtcblx0XHRpZiAodGhpcy5wcm92aWRlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvbk1vZGFsOiBubyBwcm92aWRlcnMgd2VyZSBwcmV2aW91c2x5IHNldHRsZWQuYCk7XG5cdFx0fVxuXHRcdGNvbnN0IHRlbXBsYXRlID0gdGhpcy5idWlsZFJhZG9uVGVtcGxhdGUodGhpcy5wcm92aWRlcnMpO1xuXHRcdHJldHVybiB0ZW1wbGF0ZS5ob21vZ2VuZW91c1xuXHRcdFx0PyB0ZW1wbGF0ZS5idWlsZFJhZG9uUmVxdWVzdChhcmdzKVxuXHRcdFx0OiB0ZW1wbGF0ZS5idWlsZFJhZG9uUmVxdWVzdCh0ZW1wbGF0ZS5zb3VyY2VzLm1hcCgoc291cmNlKSA9PiBhcmdzLnNsaWNlKDAsIHNvdXJjZS5hcmdzQ291bnQpKSk7XG5cdH1cblxuXHRwdWJsaWMgYnVpbGRSYWRvblRlbXBsYXRlKHByb3ZpZGVycz86IEFycmF5PHN0cmluZz4pOiBSYWRvblRlbXBsYXRlIHtcblx0XHRpZiAoIXByb3ZpZGVycykge1xuXHRcdFx0cHJvdmlkZXJzID0gdGhpcy5fY2hlY2tQcm92aWRlcnMoWy4uLnRoaXMuX3Byb3ZpZGVyc10pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm92aWRlcnMgPSB0aGlzLl9jaGVja1Byb3ZpZGVycyhbLi4ucHJvdmlkZXJzXSk7XG5cdFx0fVxuXHRcdGlmICghcHJvdmlkZXJzIHx8IHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uTW9kYWw6IG5vIHByb3ZpZGVycyB3ZXJlIHNwZWNpZmllZC5gKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBSYWRvblRlbXBsYXRlKHtcblx0XHRcdHNvdXJjZXM6IHRoaXMuc291cmNlc1swXS5zcGF3blJldHJpZXZhbHMoLi4ucHJvdmlkZXJzKSxcblx0XHRcdHNvdXJjZXNSZWR1Y2VyOiB0aGlzLnNvdXJjZXNSZWR1Y2VyLFxuXHRcdFx0d2l0bmVzc1JlZHVjZXI6IHRoaXMud2l0bmVzc1JlZHVjZXIsXG5cdFx0fSk7XG5cdH1cblxuXHRfY2hlY2tQcm92aWRlcnMocHJvdmlkZXJzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8c3RyaW5nPiB7XG5cdFx0cHJvdmlkZXJzLmZvckVhY2goKHByb3ZpZGVyKSA9PiB7XG5cdFx0XHRjb25zdCBbc2NoZW1hXSA9IHBhcnNlVVJMKHByb3ZpZGVyKTtcblx0XHRcdGlmICghc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG5cdFx0XHRcdHRocm93IFR5cGVFcnJvcihgUmFkb25Nb2RhbDogaW52YWxpZCBwcm92aWRlcjogJHtwcm92aWRlcn1gKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gcHJvdmlkZXJzO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvblJldHJpZXZhbCB7XG5cdHB1YmxpYyByZWFkb25seSBhcmdzS2V5cz86IEFycmF5PHN0cmluZz47XG5cdHB1YmxpYyByZWFkb25seSBhcmdzQ291bnQ6IG51bWJlcjtcblx0cHVibGljIHJlYWRvbmx5IG1ldGhvZDogcmV0cmlldmFscy5NZXRob2RzO1xuXHRwdWJsaWMgcmVhZG9ubHkgYXV0aG9yaXR5Pzogc3RyaW5nO1xuXHRwdWJsaWMgcmVhZG9ubHkgYm9keT86IGFueTtcblx0cHVibGljIHJlYWRvbmx5IGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRwdWJsaWMgcmVhZG9ubHkgcGF0aD86IHN0cmluZztcblx0cHVibGljIHJlYWRvbmx5IHF1ZXJ5Pzogc3RyaW5nO1xuXHRwdWJsaWMgcmVhZG9ubHkgc2NoZW1hPzogc3RyaW5nO1xuXHRwdWJsaWMgcmVhZG9ubHkgc2NyaXB0PzogX1JhZG9uU2NyaXB0O1xuXHRwdWJsaWMgcmVhZG9ubHkgdXJsPzogc3RyaW5nO1xuXG5cdHB1YmxpYyByZWFkb25seSBzYW1wbGVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+O1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHNwZWNzOiB7XG5cdFx0XHRtZXRob2Q6IHJldHJpZXZhbHMuTWV0aG9kcztcblx0XHRcdHVybD86IHN0cmluZztcblx0XHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdFx0Ym9keT86IGFueTtcblx0XHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdFx0YXJnc0tleXM/OiBBcnJheTxzdHJpbmc+O1xuXHRcdH0sXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPixcblx0KSB7XG5cdFx0aWYgKHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLlJORyAmJiAoc3BlY3M/LnVybCB8fCBzcGVjcz8uaGVhZGVycz8uc2l6ZSB8fCBzcGVjcz8uYm9keSkpIHtcblx0XHRcdHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBSTkcgYWNjZXB0cyBubyBVUkxzIG9yIGhlYWRlcnNcIik7XG5cdFx0XHQvLyB9IGVsc2UgaWYgKCFzcGVjcz8udXJsICYmIChtZXRob2QgPT0gTWV0aG9kcy5IdHRwUG9zdCB8fCBtZXRob2QgPT0gTWV0aG9kcy5IdHRwR2V0KSkge1xuXHRcdFx0Ly8gICAgIHRocm93IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBVUkwgbXVzdCBiZSBzcGVjaWZpZWRcIik7XG5cdFx0fSBlbHNlIGlmIChzcGVjcz8uYm9keSAmJiBzcGVjcy5tZXRob2QgPT09IHJldHJpZXZhbHMuTWV0aG9kcy5IdHRwR2V0KSB7XG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogYm9keSBjYW5ub3QgYmUgc3BlY2lmaWVkIGluIEhUVFAtR0VUIHF1ZXJpZXNcIik7XG5cdFx0fVxuXHRcdHRoaXMubWV0aG9kID0gc3BlY3MubWV0aG9kO1xuXHRcdGlmIChzcGVjcz8udXJsKSB7XG5cdFx0XHR0aGlzLnVybCA9IHNwZWNzLnVybDtcblx0XHRcdGlmICghaXNXaWxkY2FyZChzcGVjcy51cmwpKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgcGFydHMgPSBwYXJzZVVSTChzcGVjcy51cmwpO1xuXHRcdFx0XHRcdHRoaXMuc2NoZW1hID0gcGFydHNbMF07XG5cdFx0XHRcdFx0aWYgKHBhcnRzWzFdICE9PSBcIlwiKSB0aGlzLmF1dGhvcml0eSA9IHBhcnRzWzFdO1xuXHRcdFx0XHRcdGlmIChwYXJ0c1syXSAhPT0gXCJcIikgdGhpcy5wYXRoID0gcGFydHNbMl07XG5cdFx0XHRcdFx0aWYgKHBhcnRzWzNdICE9PSBcIlwiKSB0aGlzLnF1ZXJ5ID0gcGFydHNbM107XG5cdFx0XHRcdH0gY2F0Y2gge31cblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0c3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cEdldCB8fFxuXHRcdFx0c3BlY3MubWV0aG9kID09PSByZXRyaWV2YWxzLk1ldGhvZHMuSHR0cFBvc3QgfHxcblx0XHRcdHNwZWNzLm1ldGhvZCA9PT0gcmV0cmlldmFscy5NZXRob2RzLkh0dHBIZWFkXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnVybCA9IFwiXFxcXDBcXFxcXCI7XG5cdFx0fVxuXHRcdGlmIChzcGVjcz8uaGVhZGVycykge1xuXHRcdFx0aWYgKHR5cGVvZiBzcGVjcy5oZWFkZXJzICE9PSBcIm9iamVjdFwiIHx8IEFycmF5LmlzQXJyYXkoc3BlY3MuaGVhZGVycykpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIlJhZG9uUmV0cmlldmFsOiBIVFRQIGhlYWRlcnMgbXVzdCBiZSBvZiB0eXBlIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cIik7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmhlYWRlcnMgPSBzcGVjcz8uaGVhZGVycztcblx0XHR9XG5cdFx0dGhpcy5ib2R5ID0gc3BlY3M/LmJvZHk7XG5cdFx0aWYgKHNwZWNzPy5zY3JpcHQpIHRoaXMuc2NyaXB0ID0gbmV3IF9SYWRvblNjcmlwdChzcGVjcz8uc2NyaXB0KTtcblx0XHR0aGlzLmFyZ3NDb3VudCA9IE1hdGgubWF4KFxuXHRcdFx0Z2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHRoaXM/LnVybCksXG5cdFx0XHRnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodGhpcz8uYm9keSksXG5cdFx0XHQuLi4oT2JqZWN0LmtleXModGhpcz8uaGVhZGVycyB8fCB7fSkubWFwKChrZXkpID0+IGdldFdpbGRjYXJkc0NvdW50RnJvbVN0cmluZyhrZXkpKSA/PyBbXSksXG5cdFx0XHQuLi4oT2JqZWN0LnZhbHVlcyh0aGlzPy5oZWFkZXJzIHx8IHt9KS5tYXAoKHZhbHVlKSA9PiBnZXRXaWxkY2FyZHNDb3VudEZyb21TdHJpbmcodmFsdWUpKSA/PyBbXSksXG5cdFx0XHR0aGlzLnNjcmlwdD8uYXJnc0NvdW50KCkgfHwgMCxcblx0XHQpO1xuXHRcdGlmIChzYW1wbGVzICYmIHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKFwiUmFkb25SZXRyaWV2YWw6IHBhc3NlZCBzYW1wbGVzIHRvIG5vbi1wYXJhbWV0ZXJpemVkIHJldHJpZXZhbC5cIik7XG5cdFx0fVxuXHRcdHRoaXMuc2FtcGxlcyA9IHNhbXBsZXM7XG5cdFx0aWYgKHNwZWNzPy5hcmdzS2V5cykge1xuXHRcdFx0aWYgKHRoaXMuYXJnc0NvdW50ID09PSAwKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoXCJSYWRvblJldHJpZXZhbDogcGFzc2VkIGFyZ3Mga2V5cyB0byBub24tcGFyYW1ldGVyaXplZCByZXRyaWV2YWxcIik7XG5cdFx0XHR9IGVsc2UgaWYgKHNwZWNzLmFyZ3NLZXlzLmxlbmd0aCAhPT0gdGhpcy5hcmdzQ291bnQpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcblx0XHRcdFx0XHRgUmFkb25SZXRyaWV2YWw6IHBhc3NlZCBpbnZhbGlkIG51bWJlciBvZiBhcmdzIGtleXM6ICR7c3BlY3MuYXJnc0tleXMubGVuZ3RofSAhPSAke3RoaXMuYXJnc0NvdW50fWAsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmFyZ3NLZXlzID0gc3BlY3MuYXJnc0tleXM7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGlzTW9kYWwoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMubWV0aG9kICE9PSByZXRyaWV2YWxzLk1ldGhvZHMuUk5HICYmICghdGhpcy51cmwgfHwgdGhpcy51cmwgPT09IFwiXFxcXDBcXFxcXCIpO1xuXHR9XG5cblx0cHVibGljIGlzUGFyYW1ldGVyaXplZCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5hcmdzQ291bnQgPiAwO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgUmFkb24gUmV0cmlldmFsIGJ5IG9yZGVybHkgcmVwbGFjaW5nIGluZGV4ZWQgd2lsZGNhcmRzIHdpdGggZ2l2ZW4gcGFyYW1ldGVycy5cblx0ICogRmFpbHMgaWYgbm90IHBhcmFtZXRlcml6ZWQsIG9mIGlmIHBhc3NpbmcgdG9vIG1hbnkgcGFyYW1ldGVycy5cblx0ICovXG5cdHB1YmxpYyBmb2xkQXJncyhhcmdzOiBhbnkgfCBzdHJpbmdbXSk6IFJhZG9uUmV0cmlldmFsIHtcblx0XHRpZiAodGhpcy5hcmdzQ291bnQgPT09IDApIHtcblx0XHRcdHJldHVybiB0aGlzOyAvL3Rocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBjYW5ub3QgZm9sZCB1bnBhcmFtZXRlcml6ZWQgcmV0cmlldmFsYClcblx0XHR9XG5cdFx0Y29uc3QgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG5cdFx0XHRpZiAoKGFyZ3MgYXMgYW55W10pLmxlbmd0aCA+IHRoaXMuYXJnc0NvdW50KSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiB0b28gbWF5IGFyZ3MgcGFzc2VkOiAke2FyZ3MubGVuZ3RofSA+ICR7dGhpcy5hcmdzQ291bnR9YCk7XG5cdFx0XHR9XG5cdFx0XHRwYXJhbXMucHVzaCguLi4oYXJncyBhcyBzdHJpbmdbXSkpO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGFyZ3MgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGlmICghdGhpcy5hcmdzS2V5cykge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogdW5leHBlY3RlZCBhcmdzIG1hcDogdW5kZWZpbmVkIGFyZ3Mga2V5cy5gKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYXJnc0tleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdFx0aWYgKCFhcmdzW2tleV0pIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFJhZG9uUmV0cmlldmFsOiBtaXNzaW5nIHZhbHVlIGZvciBwYXJhbWV0ZXIgXCIke2tleX1cIi5gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cGFyYW1zLnB1c2goYXJnc1trZXldIGFzIHN0cmluZyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJhbXMucHVzaChhcmdzIGFzIHN0cmluZyk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoe1xuXHRcdFx0bWV0aG9kOiB0aGlzLm1ldGhvZCxcblx0XHRcdHVybDogcmVwbGFjZVdpbGRjYXJkcyh0aGlzLnVybCwgcGFyYW1zKSxcblx0XHRcdGJvZHk6IHJlcGxhY2VXaWxkY2FyZHModGhpcy5ib2R5LCBwYXJhbXMpLFxuXHRcdFx0aGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdFx0XHRPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBbXG5cdFx0XHRcdFx0cmVwbGFjZVdpbGRjYXJkcyhrZXksIHBhcmFtcyksXG5cdFx0XHRcdFx0cmVwbGFjZVdpbGRjYXJkcyh2YWx1ZSwgcGFyYW1zKSxcblx0XHRcdFx0XSksXG5cdFx0XHQpLFxuXHRcdFx0c2NyaXB0OiB0aGlzLnNjcmlwdD8ucmVwbGFjZVdpbGRjYXJkcyguLi5wYXJhbXMpLFxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgb25lIG9yIG1vcmUgY2xvbmVzIG9mIHRoaXMgcmV0cmlldmFsLCBpbiB3aGljaCB0aGUgaW5kZXgtMCB3aWxkY2FyZFxuXHQgKiB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBnaXZlbiB2YWx1ZXMuIEZhaWxzIGlmIHRoZSByZXRyaWV2YWwgaXMgbm90IHBhcmFtZXRlcml6ZWQuXG5cdCAqL1xuXHRwdWJsaWMgc3Bhd25SZXRyaWV2YWxzKC4uLnZhbHVlczogc3RyaW5nW10pOiBSYWRvblJldHJpZXZhbFtdIHtcblx0XHRjb25zdCBfc3Bhd25lZDogUmFkb25SZXRyaWV2YWxbXSA9IFtdO1xuXHRcdGlmICh0aGlzLmlzTW9kYWwoKSkge1xuXHRcdFx0dmFsdWVzLmZvckVhY2goKHVybCkgPT4ge1xuXHRcdFx0XHRfc3Bhd25lZC5wdXNoKFxuXHRcdFx0XHRcdG5ldyBSYWRvblJldHJpZXZhbCh7XG5cdFx0XHRcdFx0XHRhcmdzS2V5czogdGhpcy5hcmdzS2V5cyxcblx0XHRcdFx0XHRcdGJvZHk6IHRoaXMuYm9keSxcblx0XHRcdFx0XHRcdGhlYWRlcnM6IHRoaXMuaGVhZGVycyxcblx0XHRcdFx0XHRcdG1ldGhvZDogdGhpcy5tZXRob2QsXG5cdFx0XHRcdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5jbG9uZSgpLFxuXHRcdFx0XHRcdFx0dXJsLFxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICh0aGlzLmFyZ3NDb3VudCA9PT0gMCkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBSYWRvblJldHJpZXZhbDogY2Fubm90IHNwYXduIGZyb20gdW5wYXJhbWV0ZXJpemVkIHJldHJpZXZhbGApO1xuXHRcdFx0fVxuXHRcdFx0dmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG5cdFx0XHRcdF9zcGF3bmVkLnB1c2goXG5cdFx0XHRcdFx0bmV3IFJhZG9uUmV0cmlldmFsKHtcblx0XHRcdFx0XHRcdG1ldGhvZDogdGhpcy5tZXRob2QsXG5cdFx0XHRcdFx0XHR1cmw6IHNwbGljZVdpbGRjYXJkKHRoaXMudXJsLCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxuXHRcdFx0XHRcdFx0Ym9keTogc3BsaWNlV2lsZGNhcmQodGhpcy5ib2R5LCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxuXHRcdFx0XHRcdFx0aGVhZGVyczogT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdFx0XHRcdFx0XHRPYmplY3QuZW50cmllcyh0aGlzLmhlYWRlcnMgfHwge30pLm1hcCgoW2hlYWRlcktleSwgaGVhZGVyVmFsdWVdKSA9PiBbXG5cdFx0XHRcdFx0XHRcdFx0c3BsaWNlV2lsZGNhcmQoaGVhZGVyS2V5LCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxuXHRcdFx0XHRcdFx0XHRcdHNwbGljZVdpbGRjYXJkKGhlYWRlclZhbHVlLCAwLCB2YWx1ZSwgdGhpcy5hcmdzQ291bnQpLFxuXHRcdFx0XHRcdFx0XHRdKSxcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRzY3JpcHQ6IHRoaXMuc2NyaXB0Py5zcGxpY2VXaWxkY2FyZCgwLCB2YWx1ZSksXG5cdFx0XHRcdFx0XHRhcmdzS2V5czogdGhpcy5hcmdzS2V5cz8uc2xpY2UoMSksXG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIF9zcGF3bmVkO1xuXHR9XG5cblx0cHVibGljIHRvSlNPTihodW1hbml6ZT86IGJvb2xlYW4pOiBhbnkge1xuXHRcdGNvbnN0IGtpbmQgPSBbXCJcIiwgXCJIVFRQLUdFVFwiLCBcIlJOR1wiLCBcIkhUVFAtUE9TVFwiLCBcIkhUVFAtSEVBRFwiXTtcblx0XHRjb25zdCBqc29uOiBhbnkgPSB7XG5cdFx0XHRraW5kOiBraW5kW3RoaXMubWV0aG9kXSwgLy8gaHVtYW5pemUgPyBNZXRob2RzW3RoaXMubWV0aG9kXSA6IHRoaXMubWV0aG9kLFxuXHRcdH07XG5cdFx0aWYgKHRoaXMudXJsKSBqc29uLnVybCA9IHRoaXMudXJsO1xuXHRcdGlmICh0aGlzLmhlYWRlcnMpIHtcblx0XHRcdGpzb24uaGVhZGVycyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuaGVhZGVycyk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdGlmICh0eXBlb2YgdGhpcy5ib2R5ID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdGpzb24uYm9keSA9IGh1bWFuaXplID8gdGhpcy5ib2R5IDogdG9VdGY4QXJyYXkodGhpcy5ib2R5KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpzb24uYm9keSA9IHRoaXMuYm9keTtcblx0XHRcdH1cblx0XHR9XG5cdFx0anNvbi5zY3JpcHQgPSBodW1hbml6ZSA/IHRoaXMuc2NyaXB0Py50b1N0cmluZygpIDogQXJyYXkuZnJvbShmcm9tSGV4U3RyaW5nKHRoaXMuc2NyaXB0Py50b0J5dGVjb2RlKCkgfHwgXCIweDgwXCIpKTtcblx0XHRyZXR1cm4ganNvbjtcblx0fVxuXG5cdHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG5cdFx0Y29uc3QgcHJvdG9idWY6IGFueSA9IHtcblx0XHRcdGtpbmQ6IHRoaXMubWV0aG9kLFxuXHRcdH07XG5cdFx0aWYgKHRoaXMudXJsKSBwcm90b2J1Zi51cmwgPSB0aGlzLnVybDtcblx0XHRpZiAodGhpcy5oZWFkZXJzKSB7XG5cdFx0XHRwcm90b2J1Zi5oZWFkZXJzID0gT2JqZWN0LmVudHJpZXModGhpcy5oZWFkZXJzKS5tYXAoKFtoZWFkZXJLZXksIGhlYWRlclZhbHVlXSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxlZnQ6IGhlYWRlcktleSxcblx0XHRcdFx0XHRyaWdodDogaGVhZGVyVmFsdWUsXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuYm9keSkge1xuXHRcdFx0Y29uc3QgdXRmOEFycmF5ID0gdG9VdGY4QXJyYXkodGhpcy5ib2R5KTtcblx0XHRcdHByb3RvYnVmLmJvZHkgPSB1dGY4QXJyYXk7XG5cdFx0fVxuXHRcdHByb3RvYnVmLnNjcmlwdCA9IE9iamVjdC52YWx1ZXMoVWludDhBcnJheS5mcm9tKGNib3IuZW5jb2RlKHRoaXMuc2NyaXB0Py5lbmNvZGUoKSB8fCBbXSkpKTtcblx0XHRyZXR1cm4gcHJvdG9idWY7XG5cdH1cblxuXHRwdWJsaWMgb3BzQ291bnQoKTogYW55IHtcblx0XHRyZXR1cm4gdGhpcy5fY291bnRPcHModGhpcy5zY3JpcHQ/LmVuY29kZSgpIHx8IFtdKTtcblx0fVxuXG5cdHByb3RlY3RlZCBfY291bnRPcHMoaXRlbXM6IGFueVtdKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gaXRlbXMubGVuZ3RoID4gMFxuXHRcdFx0PyBpdGVtcy5tYXAoKGl0ZW0pID0+IChBcnJheS5pc0FycmF5KGl0ZW0pID8gdGhpcy5fY291bnRPcHMoaXRlbSkgOiAxKSkucmVkdWNlKChzdW0sIGEpID0+IHN1bSArIGEpXG5cdFx0XHQ6IDA7XG5cdH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBmaWx0ZXJzIHtcblx0ZXhwb3J0IGNvbnN0IE9wY29kZXMgPSBGaWx0ZXJzO1xuXHRleHBvcnQgY29uc3QgQ2xhc3MgPSBSYWRvbkZpbHRlcjtcblx0ZXhwb3J0IGZ1bmN0aW9uIE1vZGUoKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvbkZpbHRlcihGaWx0ZXJzLk1vZGUpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBTdGRldihzdGRldjogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvbkZpbHRlcihGaWx0ZXJzLlN0YW5kYXJkRGV2aWF0aW9uLCBzdGRldik7XG5cdH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSByZWR1Y2VycyB7XG5cdGV4cG9ydCBjb25zdCBPcGNvZGVzID0gUmVkdWNlcnM7XG5cdGV4cG9ydCBjb25zdCBDbGFzcyA9IFJhZG9uUmVkdWNlcjtcblx0ZXhwb3J0IGZ1bmN0aW9uIE1vZGUoLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLk1vZGUsIGZpbHRlcnMpO1xuXHR9XG5cdGV4cG9ydCBmdW5jdGlvbiBNZWFuKC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgZmlsdGVycyk7XG5cdH1cblx0ZXhwb3J0IGZ1bmN0aW9uIE1lZGlhbiguLi5maWx0ZXJzOiBSYWRvbkZpbHRlcltdKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVkaWFuQXZlcmFnZSwgZmlsdGVycyk7XG5cdH1cblx0ZXhwb3J0IGZ1bmN0aW9uIFN0ZGV2KC4uLmZpbHRlcnM6IFJhZG9uRmlsdGVyW10pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5TdGFuZGFyZERldmlhdGlvbiwgZmlsdGVycyk7XG5cdH1cblx0ZXhwb3J0IGZ1bmN0aW9uIENvbmNhdEhhc2goLi4uZmlsdGVyczogUmFkb25GaWx0ZXJbXSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZWR1Y2VyKFJlZHVjZXJzLkNvbmNhdGVuYXRlQW5kSGFzaCwgZmlsdGVycyk7XG5cdH1cblxuXHRleHBvcnQgZnVuY3Rpb24gUHJpY2VBZ2dyZWdhdGUoKSB7XG5cdFx0cmV0dXJuIG5ldyBSYWRvblJlZHVjZXIoUmVkdWNlcnMuTWVhbkF2ZXJhZ2UsIFtmaWx0ZXJzLlN0ZGV2KDEuNCldKTtcblx0fVxuXHRleHBvcnQgZnVuY3Rpb24gUHJpY2VUYWxseSgpIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmVkdWNlcihSZWR1Y2Vycy5NZWFuQXZlcmFnZSwgW2ZpbHRlcnMuU3RkZXYoMi41KV0pO1xuXHR9XG59XG5cbmltcG9ydCAqIGFzIGNjZHIgZnJvbSBcIi4vY2Nkci9pbmRleC5qc1wiO1xuZXhwb3J0IG5hbWVzcGFjZSByZXRyaWV2YWxzIHtcblx0ZXhwb3J0IGNvbnN0IHJwYyA9IGNjZHI7XG5cblx0ZXhwb3J0IGZ1bmN0aW9uIGZyb21SYWRvbkFzc2V0cyhhc3NldHM6IE9iamVjdCk6IFJlY29yZDxzdHJpbmcsIFJhZG9uUmV0cmlldmFsPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm94eShhc3NldHMsIHByb3h5SGFuZGxlcihSYWRvblJldHJpZXZhbCkpO1xuXHR9XG5cblx0ZXhwb3J0IGVudW0gTWV0aG9kcyB7XG5cdFx0Tm9uZSA9IDB4MCxcblx0XHRIdHRwR2V0ID0gMHgwMSxcblx0XHRIdHRwSGVhZCA9IDB4MDQsXG5cdFx0SHR0cFBvc3QgPSAweDAzLFxuXHRcdFJORyA9IDB4MDIsXG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIFdpdG5ldCByYW5kb21uZXNzIGRhdGEgc291cmNlIG9iamVjdC5cblx0ICogQHBhcmFtIHNjcmlwdCAoT3B0aW9uYWwpIFJhZG9uIFNjcmlwdCB0byBhcHBseSB0byB0aGUgcmFuZG9tIHNlZWQgcHJvcG9zZWQgYnkgZXZlcnkgc2luZ2xlIHdpdG5lc3MsXG5cdCAqIGJlZm9yZSBhZ2dyZWdhdGlvbi5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gUk5HKHNjcmlwdD86IFJhZG9uQW55KSB7XG5cdFx0Y29uc3QgcmV0cmlldmFsID0gbmV3IFJhZG9uUmV0cmlldmFsKHsgbWV0aG9kOiBNZXRob2RzLlJORywgc2NyaXB0IH0pO1xuXHRcdGlmIChyZXRyaWV2YWw/LnNjcmlwdCAmJiByZXRyaWV2YWw/LnNjcmlwdD8uaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lICE9PSBcIlJhZG9uQnl0ZXNcIikge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihcIlJORyBzY3JpcHRzIHJlcXVpcmUgW1JhZG9uQnl0ZXNdIGFzIGlucHV0IHR5cGVcIik7XG5cdFx0fVxuXHRcdHJldHVybiByZXRyaWV2YWw7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIEhUVFAvR0VUIGRhdGEgcmV0cmlldmFsIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gSHR0cEdldChzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkwuXG5cdFx0ICovXG5cdFx0dXJsPzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzLlxuXHRcdCAqL1xuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uU2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSkuXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cEdldCxcblx0XHRcdFx0dXJsOiBzcGVjcz8udXJsLFxuXHRcdFx0XHRoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcblx0XHRcdFx0c2NyaXB0OiBzcGVjcz8uc2NyaXB0LFxuXHRcdFx0XHRhcmdzS2V5czogc3BlY3M/LmFyZ3NLZXlzLFxuXHRcdFx0fSxcblx0XHRcdHNwZWNzPy5zYW1wbGVzLFxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIEhUVFAvSEVBRCBkYXRhIHJldHJpZXZhbCBvYmplY3QuXG5cdCAqIEBwYXJhbSBzcGVjcyBSYWRvbiBSZXRyaWV2YWwgc3BlY3MuXG5cdCAqKi9cblx0ZXhwb3J0IGZ1bmN0aW9uIEh0dHBIZWFkKHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogSFRUUCByZXF1ZXN0IFVSTFxuXHRcdCAqL1xuXHRcdHVybD86IHN0cmluZztcblx0XHQvKipcblx0XHQgKiBIVFRQIHJlcXVlc3QgaGVhZGVyc1xuXHRcdCAqL1xuXHRcdGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXHRcdC8qKlxuXHRcdCAqIFJhZG9uIHNjcmlwdCBmb3IgcHJvY2Vzc2luZyByZXR1cm5lZCB2YWx1ZS5cblx0XHQgKi9cblx0XHRzY3JpcHQ/OiBSYWRvbkFueTtcblx0XHQvKipcblx0XHQgKiBOYW1lcyBvZiBpbmRleGVkIHBhcmFtZXRlcnMgKG9wdGlvbmFsLCBpZiBhbnkpXG5cdFx0ICovXG5cdFx0YXJnc0tleXM/OiBzdHJpbmdbXTtcblx0XHQvKipcblx0XHQgKiBNYXAgb2YgcHJlLXNldCBwYXJhbWV0ZXJzIChvbiBwYXJhbWV0ZXJpemVkIHJldHJpZXZhbHMsIG9ubHkpLlxuXHRcdCAqL1xuXHRcdHNhbXBsZXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT47XG5cdH0pIHtcblx0XHRyZXR1cm4gbmV3IFJhZG9uUmV0cmlldmFsKFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IE1ldGhvZHMuSHR0cEhlYWQsXG5cdFx0XHRcdHVybDogc3BlY3M/LnVybCxcblx0XHRcdFx0aGVhZGVyczogc3BlY3M/LmhlYWRlcnMsXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBIVFRQL1BPU1QgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxuXHQgKiovXG5cdGV4cG9ydCBmdW5jdGlvbiBIdHRwUG9zdChzcGVjczoge1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBVUkxcblx0XHQgKi9cblx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogSFRUUCByZXF1ZXN0IGJvZHlcblx0XHQgKi9cblx0XHRib2R5Pzogc3RyaW5nO1xuXHRcdC8qKlxuXHRcdCAqIEhUVFAgcmVxdWVzdCBoZWFkZXJzXG5cdFx0ICovXG5cdFx0aGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcblx0XHRcdFx0dXJsOiBzcGVjcz8udXJsLFxuXHRcdFx0XHRoZWFkZXJzOiBzcGVjcz8uaGVhZGVycyxcblx0XHRcdFx0Ym9keTogc3BlY3M/LmJvZHksXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBHcmFwaFFMLXF1ZXJ5IGRhdGEgc291cmNlIG9iamVjdC5cblx0ICogQHBhcmFtIHNwZWNzIFJhZG9uIFJldHJpZXZhbCBzcGVjcy5cblx0ICoqL1xuXHRleHBvcnQgZnVuY3Rpb24gR3JhcGhRTFF1ZXJ5KHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogR3JhcGhRTCBVUkwgZW5kcG9pbnRcblx0XHQgKi9cblx0XHR1cmw/OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogR3JhcGhRTCBxdWVyeVxuXHRcdCAqL1xuXHRcdHF1ZXJ5OiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogTWV0aG9kcy5IdHRwUG9zdCxcblx0XHRcdFx0dXJsOiBzcGVjcy51cmwsXG5cdFx0XHRcdGJvZHk6IGB7XCJxdWVyeVwiOlwiJHtncmFwaFFsQ29tcHJlc3Moc3BlY3MucXVlcnkpLnJlcGxhY2VBbGwoJ1wiJywgJ1xcXFxcIicpfVwifWAsXG5cdFx0XHRcdGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcIiB9LFxuXHRcdFx0XHRzY3JpcHQ6IHNwZWNzPy5zY3JpcHQsXG5cdFx0XHRcdGFyZ3NLZXlzOiBzcGVjcz8uYXJnc0tleXMsXG5cdFx0XHR9LFxuXHRcdFx0c3BlY3M/LnNhbXBsZXMsXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgSlNPTi1SUEMgZGF0YSByZXRyaWV2YWwgb2JqZWN0LlxuXHQgKiBAcGFyYW0gc3BlY3MgUmFkb24gUmV0cmlldmFsIHNwZWNzLlxuXHQgKiovXG5cdGV4cG9ydCBmdW5jdGlvbiBKc29uUlBDKHNwZWNzOiB7XG5cdFx0LyoqXG5cdFx0ICogSlNPTi1SUEMgbWV0aG9kIGFuZCBwYXJhbWV0ZXJzLlxuXHRcdCAqL1xuXHRcdHJwYzogeyBtZXRob2Q6IHN0cmluZzsgcGFyYW1zPzogYW55IH07XG5cdFx0LyoqXG5cdFx0ICogUmFkb24gc2NyaXB0IGZvciBwcm9jZXNzaW5nIHJldHVybmVkIHZhbHVlLlxuXHRcdCAqL1xuXHRcdHNjcmlwdD86IFJhZG9uQW55O1xuXHRcdC8qKlxuXHRcdCAqIE5hbWVzIG9mIGluZGV4ZWQgcGFyYW1ldGVycyAob3B0aW9uYWwsIGlmIGFueSlcblx0XHQgKi9cblx0XHRhcmdzS2V5cz86IHN0cmluZ1tdO1xuXHRcdC8qKlxuXHRcdCAqIE1hcCBvZiBwcmUtc2V0IHBhcmFtZXRlcnMgKG9uIHBhcmFtZXRlcml6ZWQgcmV0cmlldmFscywgb25seSkuXG5cdFx0ICovXG5cdFx0c2FtcGxlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcblx0fSkge1xuXHRcdHJldHVybiBuZXcgUmFkb25SZXRyaWV2YWwoXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGhvZDogcmV0cmlldmFscy5NZXRob2RzLkh0dHBQb3N0LFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0anNvbnJwYzogXCIyLjBcIixcblx0XHRcdFx0XHRtZXRob2Q6IHNwZWNzLnJwYy5tZXRob2QsXG5cdFx0XHRcdFx0cGFyYW1zOiBzcGVjcy5ycGM/LnBhcmFtcyxcblx0XHRcdFx0XHRpZDogMSxcblx0XHRcdFx0fSkucmVwbGFjZUFsbChcIlxcXFxcXFxcXCIsIFwiXFxcXFwiKSxcblx0XHRcdFx0aGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOFwiIH0sXG5cdFx0XHRcdHNjcmlwdDogc3BlY3M/LnNjcmlwdCxcblx0XHRcdFx0YXJnc0tleXM6IHNwZWNzPy5hcmdzS2V5cyxcblx0XHRcdH0sXG5cdFx0XHRzcGVjcz8uc2FtcGxlcyxcblx0XHQpO1xuXHR9XG59XG5leHBvcnQgbmFtZXNwYWNlIHR5cGVzIHtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uQXJyYXkgPSBfUmFkb25BcnJheTtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uQm9vbGVhbiA9IF9SYWRvbkJvb2xlYW47XG5cdGV4cG9ydCBjb25zdCBSYWRvbkJ5dGVzID0gX1JhZG9uQnl0ZXM7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkZsb2F0ID0gX1JhZG9uRmxvYXQ7XG5cdGV4cG9ydCBjb25zdCBSYWRvbkludGVnZXIgPSBfUmFkb25JbnRlZ2VyO1xuXHRleHBvcnQgY29uc3QgUmFkb25NYXAgPSBfUmFkb25NYXA7XG5cdGV4cG9ydCBjb25zdCBSYWRvblNjcmlwdCA9IF9SYWRvblNjcmlwdDtcblx0ZXhwb3J0IGNvbnN0IFJhZG9uU3RyaW5nID0gX1JhZG9uU3RyaW5nO1xuXHRleHBvcnQgY29uc3QgUmFkb25FbmNvZGluZ3MgPSBfUmFkb25FbmNvZGluZ3M7XG59XG5cbmZ1bmN0aW9uIHByb3h5SGFuZGxlcjxUPih0OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfSkge1xuXHRyZXR1cm4ge1xuXHRcdGdldCh0YXJnZXQ6IGFueSwgcHJvcDogc3RyaW5nKSB7XG5cdFx0XHRjb25zdCBmb3VuZCA9IHRhcmdldFtwcm9wXSA/PyBmaW5kS2V5SW5PYmplY3QodGFyZ2V0LCBwcm9wKTtcblx0XHRcdC8vIGlmICghZm91bmQpIHtcblx0XHRcdC8vICAgICB0aHJvdyBFdmFsRXJyb3IoYFsnJHtwcm9wfSddIHdhcyBub3QgZm91bmQgaW4gZGljdGlvbmFyeWApXG5cdFx0XHQvLyB9IGVsc2Vcblx0XHRcdGlmIChmb3VuZCAmJiAhKGZvdW5kIGluc3RhbmNlb2YgdCkpIHtcblx0XHRcdFx0dGhyb3cgVHlwZUVycm9yKGBbJyR7cHJvcH0nXSB3YXMgZm91bmQgd2l0aCB0eXBlICR7Zm91bmQ/LmNvbnN0cnVjdG9yPy5uYW1lfSBpbnN0ZWFkIG9mICR7dC5uYW1lfSFgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmb3VuZDtcblx0XHR9LFxuXHR9O1xufVxuXG5mdW5jdGlvbiBmaW5kS2V5SW5PYmplY3QoZGljdDogYW55LCB0YWc6IHN0cmluZykge1xuXHRmb3IgKGNvbnN0IGtleSBpbiBkaWN0KSB7XG5cdFx0aWYgKHR5cGVvZiBkaWN0W2tleV0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdGlmIChrZXkgPT09IHRhZykge1xuXHRcdFx0XHRyZXR1cm4gZGljdFtrZXldO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgZm91bmQ6IGFueSA9IGZpbmRLZXlJbk9iamVjdChkaWN0W2tleV0sIHRhZyk7XG5cdFx0XHRcdGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@witnet/sdk",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
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",
@@ -8,6 +8,7 @@ import * as readline from "node:readline";
8
8
  import moment from "moment";
9
9
 
10
10
  const require = createRequire(import.meta.url);
11
+ const _TOOLKIT_RUN_TIMEOUT_MSECS = 30000;
11
12
 
12
13
  export const colorstrip = (str) =>
13
14
  str.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, "");
@@ -114,9 +115,9 @@ export function deleteExtraFlags(args) {
114
115
  return args.filter((arg) => !arg.startsWith("--"));
115
116
  }
116
117
 
117
- export function cmd(...command) {
118
+ export function cmd(timeout, ...command) {
118
119
  return new Promise((resolve, reject) => {
119
- exec(command.join(" "), { maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
120
+ exec(command.join(" "), { timeout, maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
120
121
  if (error) {
121
122
  reject(error);
122
123
  }
@@ -128,22 +129,12 @@ export function cmd(...command) {
128
129
  });
129
130
  }
130
131
 
131
- export async function execRadonBytecode(bytecode, ...flags) {
132
+ export async function execRadonBytecode(bytecode, timeout, ...flags) {
132
133
  if (!isHexString(bytecode)) {
133
134
  throw EvalError("invalid hex string");
134
135
  } else {
135
136
  const npx = os.type() === "Windows_NT" ? "npx.cmd" : "npx";
136
- return cmd(npx, "witsdk", "radon", "dry-run", bytecode, ...flags);
137
- // .catch((err) => {
138
- // let errorMessage = err.message.split('\n').slice(1).join('\n').trim()
139
- // const errorRegex = /.*^error: (?<message>.*)$.*/gm
140
- // const matched = errorRegex.exec(err.message)
141
- // if (matched) {
142
- // errorMessage = matched.groups.message
143
- // }
144
- // console.log(errorMessage || err)
145
- // console.error(errorMessage || err)
146
- // })
137
+ return cmd(timeout, npx, "witsdk", "radon", "dry-run", bytecode, ...flags);
147
138
  }
148
139
  }
149
140
 
@@ -477,7 +468,7 @@ export function spliceWildcard(obj, argIndex, argValue, argsCount) {
477
468
  export async function toolkitRun(settings, args) {
478
469
  const cmd = `${settings.paths.toolkitBinPath} ${args.join(" ")}`;
479
470
  return new Promise((resolve, reject) => {
480
- exec(cmd, { maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
471
+ exec(cmd, { timeout: _TOOLKIT_RUN_TIMEOUT_MSECS, maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
481
472
  if (error) {
482
473
  reject(error);
483
474
  }