picocode 0.9.18 → 0.9.20
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/pico.js +241 -51
- package/package.json +1 -1
package/dist/pico.js
CHANGED
|
@@ -339,7 +339,7 @@ async function connectOpenAI({ openBrowser = true, timeoutMs = 5 * 60 * 1e3, onU
|
|
|
339
339
|
codex_cli_simplified_flow: "true",
|
|
340
340
|
originator: "codex_cli_rs"
|
|
341
341
|
}).toString()}`;
|
|
342
|
-
const code = await new Promise((
|
|
342
|
+
const code = await new Promise((resolve8, reject) => {
|
|
343
343
|
const server = createServer((req, res) => {
|
|
344
344
|
const requestUrl = new URL(req.url, `http://localhost:${REDIRECT_PORT}`);
|
|
345
345
|
if (requestUrl.pathname !== "/auth/callback") {
|
|
@@ -356,7 +356,7 @@ async function connectOpenAI({ openBrowser = true, timeoutMs = 5 * 60 * 1e3, onU
|
|
|
356
356
|
cleanup();
|
|
357
357
|
if (gotError) reject(new Error(`authorization failed: ${gotError}`));
|
|
358
358
|
else if (!gotCode || gotState !== state) reject(new Error("authorization failed: missing code or state mismatch"));
|
|
359
|
-
else
|
|
359
|
+
else resolve8(gotCode);
|
|
360
360
|
});
|
|
361
361
|
const timer = setTimeout(() => {
|
|
362
362
|
cleanup();
|
|
@@ -1424,10 +1424,10 @@ var init_events = __esm({
|
|
|
1424
1424
|
|
|
1425
1425
|
// src/core/session.js
|
|
1426
1426
|
import { appendFile, readFile as readFile9, readdir as readdir4, rm, stat, unlink as unlink2 } from "node:fs/promises";
|
|
1427
|
-
import { join as
|
|
1427
|
+
import { join as join11 } from "node:path";
|
|
1428
1428
|
function createSession({ cwd, root }) {
|
|
1429
1429
|
const header = makeHeader({ cwd, root });
|
|
1430
|
-
const file =
|
|
1430
|
+
const file = join11(ensureDir(sessionsDir(root)), `${header.id}.jsonl`);
|
|
1431
1431
|
const session = openSession({ file, header });
|
|
1432
1432
|
session.append(header);
|
|
1433
1433
|
return session;
|
|
@@ -1481,7 +1481,7 @@ async function sessionMeta(file) {
|
|
|
1481
1481
|
async function listDir(dir) {
|
|
1482
1482
|
try {
|
|
1483
1483
|
const names = await readdir4(dir);
|
|
1484
|
-
return names.filter((n) => n.endsWith(".jsonl")).map((n) =>
|
|
1484
|
+
return names.filter((n) => n.endsWith(".jsonl")).map((n) => join11(dir, n));
|
|
1485
1485
|
} catch {
|
|
1486
1486
|
return [];
|
|
1487
1487
|
}
|
|
@@ -1495,14 +1495,14 @@ function deleteProjectData(root) {
|
|
|
1495
1495
|
async function listSessions({ scope: scope2, root }) {
|
|
1496
1496
|
let files = [];
|
|
1497
1497
|
if (scope2 === "everywhere") {
|
|
1498
|
-
const projectsDir =
|
|
1498
|
+
const projectsDir = join11(picoHome(), "projects");
|
|
1499
1499
|
let projects = [];
|
|
1500
1500
|
try {
|
|
1501
1501
|
projects = await readdir4(projectsDir);
|
|
1502
1502
|
} catch {
|
|
1503
1503
|
}
|
|
1504
1504
|
const nested = await Promise.all(
|
|
1505
|
-
projects.map((p) => listDir(
|
|
1505
|
+
projects.map((p) => listDir(join11(projectsDir, p, "sessions")))
|
|
1506
1506
|
);
|
|
1507
1507
|
files = nested.flat();
|
|
1508
1508
|
} else {
|
|
@@ -2038,7 +2038,7 @@ var init_recorder = __esm({
|
|
|
2038
2038
|
|
|
2039
2039
|
// src/core/tools/read.js
|
|
2040
2040
|
import { readFile as readFile12 } from "node:fs/promises";
|
|
2041
|
-
import { resolve as
|
|
2041
|
+
import { resolve as resolve4 } from "node:path";
|
|
2042
2042
|
function isBinary(buffer) {
|
|
2043
2043
|
const len = Math.min(buffer.length, 8e3);
|
|
2044
2044
|
for (let i = 0; i < len; i++) {
|
|
@@ -2056,7 +2056,7 @@ function createRead({ cwd, recorder, tracker }) {
|
|
|
2056
2056
|
limit: { type: "number", description: "max lines to return", optional: true }
|
|
2057
2057
|
},
|
|
2058
2058
|
execute: async ({ path, offset = 1, limit = MAX_LINES2 }) => {
|
|
2059
|
-
const full =
|
|
2059
|
+
const full = resolve4(cwd, path);
|
|
2060
2060
|
recorder.extra({ title: path });
|
|
2061
2061
|
const buf = await readFile12(full);
|
|
2062
2062
|
if (isBinary(buf)) throw new Error(`${path} is a binary file`);
|
|
@@ -2109,7 +2109,7 @@ var init_diff = __esm({
|
|
|
2109
2109
|
|
|
2110
2110
|
// src/core/tools/write.js
|
|
2111
2111
|
import { mkdir as mkdir2, readFile as readFile13, writeFile as writeFile7 } from "node:fs/promises";
|
|
2112
|
-
import { dirname as
|
|
2112
|
+
import { dirname as dirname4, resolve as resolve5 } from "node:path";
|
|
2113
2113
|
function createWrite({ cwd, recorder, tracker }) {
|
|
2114
2114
|
return {
|
|
2115
2115
|
name: "write",
|
|
@@ -2119,9 +2119,9 @@ function createWrite({ cwd, recorder, tracker }) {
|
|
|
2119
2119
|
content: { type: "string", description: "the full file content to write" }
|
|
2120
2120
|
},
|
|
2121
2121
|
execute: async ({ path, content }) => {
|
|
2122
|
-
const full =
|
|
2122
|
+
const full = resolve5(cwd, path);
|
|
2123
2123
|
recorder.extra({ title: path });
|
|
2124
|
-
await mkdir2(
|
|
2124
|
+
await mkdir2(dirname4(full), { recursive: true });
|
|
2125
2125
|
let before = null;
|
|
2126
2126
|
try {
|
|
2127
2127
|
before = await readFile13(full, "utf-8");
|
|
@@ -2157,7 +2157,7 @@ var init_write = __esm({
|
|
|
2157
2157
|
|
|
2158
2158
|
// src/core/tools/edit.js
|
|
2159
2159
|
import { readFile as readFile14, writeFile as writeFile8 } from "node:fs/promises";
|
|
2160
|
-
import { resolve as
|
|
2160
|
+
import { resolve as resolve6 } from "node:path";
|
|
2161
2161
|
function locate(content, old, path) {
|
|
2162
2162
|
let index = content.indexOf(old);
|
|
2163
2163
|
if (index !== -1) {
|
|
@@ -2186,7 +2186,7 @@ function createEdit({ cwd, recorder, tracker }) {
|
|
|
2186
2186
|
replaceAll: { type: "boolean", description: "replace every occurrence", optional: true }
|
|
2187
2187
|
},
|
|
2188
2188
|
execute: async ({ path, oldText, newText, replaceAll }) => {
|
|
2189
|
-
const full =
|
|
2189
|
+
const full = resolve6(cwd, path);
|
|
2190
2190
|
recorder.extra({ title: path });
|
|
2191
2191
|
const before = await readFile14(full, "utf-8");
|
|
2192
2192
|
let after;
|
|
@@ -2238,7 +2238,7 @@ function createBash({ cwd, recorder, signal, shells: shells2 }) {
|
|
|
2238
2238
|
const { id } = shells2.start(command, { cwd, description });
|
|
2239
2239
|
return { shellId: id, status: "running" };
|
|
2240
2240
|
}
|
|
2241
|
-
return new Promise((
|
|
2241
|
+
return new Promise((resolve8) => {
|
|
2242
2242
|
recorder.extra({ title: command });
|
|
2243
2243
|
const child = exec(
|
|
2244
2244
|
command,
|
|
@@ -2253,7 +2253,7 @@ function createBash({ cwd, recorder, signal, shells: shells2 }) {
|
|
|
2253
2253
|
const ms = timeout || 12e4;
|
|
2254
2254
|
const timedOut = !!err?.killed && err.code == null && !signal?.aborted;
|
|
2255
2255
|
recorder.extra({ fullOutput: [stdout, stderr].filter(Boolean).join("\n") });
|
|
2256
|
-
|
|
2256
|
+
resolve8({
|
|
2257
2257
|
stdout: capped(stdout || ""),
|
|
2258
2258
|
stderr: capped(stderr || ""),
|
|
2259
2259
|
exitCode,
|
|
@@ -2286,11 +2286,11 @@ var init_bash = __esm({
|
|
|
2286
2286
|
import { execFile as execFile2 } from "node:child_process";
|
|
2287
2287
|
import fg from "fast-glob";
|
|
2288
2288
|
function ripgrepGlob(pattern, cwd) {
|
|
2289
|
-
return new Promise((
|
|
2289
|
+
return new Promise((resolve8) => {
|
|
2290
2290
|
const args = ["--files", "--hidden", "--glob", pattern, "--glob", "!**/node_modules/**", "--glob", "!**/.git/**"];
|
|
2291
2291
|
execFile2("rg", args, { cwd, maxBuffer: 50 * 1024 * 1024 }, (err, stdout) => {
|
|
2292
|
-
if (err && err.code !== 1)
|
|
2293
|
-
else
|
|
2292
|
+
if (err && err.code !== 1) resolve8(null);
|
|
2293
|
+
else resolve8(stdout ? stdout.split("\n").filter(Boolean) : []);
|
|
2294
2294
|
});
|
|
2295
2295
|
});
|
|
2296
2296
|
}
|
|
@@ -2330,7 +2330,7 @@ var init_glob = __esm({
|
|
|
2330
2330
|
|
|
2331
2331
|
// src/core/tools/grep.js
|
|
2332
2332
|
import { execFile as execFile3 } from "node:child_process";
|
|
2333
|
-
import { relative, resolve as
|
|
2333
|
+
import { relative, resolve as resolve7 } from "node:path";
|
|
2334
2334
|
function runRipgrep(args, cwd) {
|
|
2335
2335
|
return new Promise((done) => {
|
|
2336
2336
|
execFile3("rg", args, { cwd, maxBuffer: 10 * 1024 * 1024 }, (err, stdout) => {
|
|
@@ -2363,7 +2363,7 @@ function createGrep({ cwd, recorder }) {
|
|
|
2363
2363
|
if (glob) args.push("--glob", glob);
|
|
2364
2364
|
if (mode === "content" && context) args.push("-C", String(context));
|
|
2365
2365
|
args.push(pattern.startsWith("-") ? "-e" : "--", pattern);
|
|
2366
|
-
args.push(path ?
|
|
2366
|
+
args.push(path ? resolve7(cwd, path) : cwd);
|
|
2367
2367
|
const stdout = await runRipgrep(args, cwd);
|
|
2368
2368
|
const lines = stdout.split("\n").filter(Boolean);
|
|
2369
2369
|
recorder.extra({ fullOutput: lines.join("\n") });
|
|
@@ -2589,9 +2589,9 @@ __export(update_exports, {
|
|
|
2589
2589
|
});
|
|
2590
2590
|
import { exec as exec2 } from "node:child_process";
|
|
2591
2591
|
import { readFile as readFile16, writeFile as writeFile10 } from "node:fs/promises";
|
|
2592
|
-
import { join as
|
|
2592
|
+
import { join as join14 } from "node:path";
|
|
2593
2593
|
function stateFile() {
|
|
2594
|
-
return
|
|
2594
|
+
return join14(picoHome(), "update-check.json");
|
|
2595
2595
|
}
|
|
2596
2596
|
async function readState() {
|
|
2597
2597
|
try {
|
|
@@ -2648,9 +2648,9 @@ function isDevInstall(entryUrl) {
|
|
|
2648
2648
|
return !String(entryUrl).includes("/node_modules/");
|
|
2649
2649
|
}
|
|
2650
2650
|
function runUpdate() {
|
|
2651
|
-
return new Promise((
|
|
2651
|
+
return new Promise((resolve8) => {
|
|
2652
2652
|
exec2("npm install -g picocode@latest", { timeout: 18e4 }, (err, stdout, stderr) => {
|
|
2653
|
-
|
|
2653
|
+
resolve8({ ok: !err, output: [stdout, stderr].filter(Boolean).join("\n").trim().slice(0, 400) });
|
|
2654
2654
|
});
|
|
2655
2655
|
});
|
|
2656
2656
|
}
|
|
@@ -2834,7 +2834,7 @@ var headless_exports = {};
|
|
|
2834
2834
|
__export(headless_exports, {
|
|
2835
2835
|
runHeadless: () => runHeadless
|
|
2836
2836
|
});
|
|
2837
|
-
import { join as
|
|
2837
|
+
import { join as join16 } from "node:path";
|
|
2838
2838
|
function resolveModel(models2, providers2, name) {
|
|
2839
2839
|
if (!name) return null;
|
|
2840
2840
|
const exact = models2.find((m) => m.name === name);
|
|
@@ -2885,7 +2885,7 @@ async function runHeadless(opts) {
|
|
|
2885
2885
|
let session;
|
|
2886
2886
|
let events = [];
|
|
2887
2887
|
if (opts.resume) {
|
|
2888
|
-
const file = opts.resume.includes("/") ? opts.resume :
|
|
2888
|
+
const file = opts.resume.includes("/") ? opts.resume : join16(sessionsDir(boot2.root), `${opts.resume}.jsonl`);
|
|
2889
2889
|
const loaded = await loadSession(file);
|
|
2890
2890
|
session = openSession({ file, header: loaded.header });
|
|
2891
2891
|
events = loaded.events;
|
|
@@ -3004,7 +3004,7 @@ var init_headless = __esm({
|
|
|
3004
3004
|
});
|
|
3005
3005
|
|
|
3006
3006
|
// src/main.jsx
|
|
3007
|
-
import { readFileSync as
|
|
3007
|
+
import { readFileSync as readFileSync3 } from "node:fs";
|
|
3008
3008
|
import { mount } from "@trendr/core";
|
|
3009
3009
|
|
|
3010
3010
|
// src/cli-args.js
|
|
@@ -3098,7 +3098,7 @@ function themeFromColorfgbg(value) {
|
|
|
3098
3098
|
function detectTerminalTheme({ timeoutMs = 150 } = {}) {
|
|
3099
3099
|
const fallback = () => themeFromColorfgbg(process.env.COLORFGBG) || "dark";
|
|
3100
3100
|
if (!process.stdin.isTTY || !process.stdout.isTTY) return Promise.resolve(fallback());
|
|
3101
|
-
return new Promise((
|
|
3101
|
+
return new Promise((resolve8) => {
|
|
3102
3102
|
let buffer = "";
|
|
3103
3103
|
let settled = false;
|
|
3104
3104
|
const wasRaw = process.stdin.isRaw;
|
|
@@ -3108,7 +3108,7 @@ function detectTerminalTheme({ timeoutMs = 150 } = {}) {
|
|
|
3108
3108
|
clearTimeout(timer);
|
|
3109
3109
|
process.stdin.off("data", onData);
|
|
3110
3110
|
process.stdin.setRawMode(wasRaw);
|
|
3111
|
-
|
|
3111
|
+
resolve8(theme2);
|
|
3112
3112
|
};
|
|
3113
3113
|
const onData = (chunk) => {
|
|
3114
3114
|
buffer += chunk.toString("latin1");
|
|
@@ -3169,6 +3169,157 @@ function createWakeupManager({ onFire = () => {
|
|
|
3169
3169
|
};
|
|
3170
3170
|
}
|
|
3171
3171
|
|
|
3172
|
+
// src/core/git.js
|
|
3173
|
+
import { spawn as spawn2 } from "node:child_process";
|
|
3174
|
+
import { readFileSync as readFileSync2, statSync, watch } from "node:fs";
|
|
3175
|
+
import { dirname as dirname3, isAbsolute, join as join10, resolve as resolve3 } from "node:path";
|
|
3176
|
+
var DEBOUNCE_MS = 500;
|
|
3177
|
+
var POLL_MS = 15e3;
|
|
3178
|
+
var GIT_TIMEOUT_MS = 5e3;
|
|
3179
|
+
function findGitDir(startDir) {
|
|
3180
|
+
let dir = startDir;
|
|
3181
|
+
while (true) {
|
|
3182
|
+
const candidate = join10(dir, ".git");
|
|
3183
|
+
try {
|
|
3184
|
+
const info = statSync(candidate);
|
|
3185
|
+
if (info.isDirectory()) return candidate;
|
|
3186
|
+
const text = readFileSync2(candidate, "utf-8");
|
|
3187
|
+
const match = text.match(/^gitdir:\s*(.+?)\s*$/m);
|
|
3188
|
+
if (match) return isAbsolute(match[1]) ? match[1] : resolve3(dir, match[1]);
|
|
3189
|
+
} catch {
|
|
3190
|
+
}
|
|
3191
|
+
const parent = dirname3(dir);
|
|
3192
|
+
if (parent === dir) return null;
|
|
3193
|
+
dir = parent;
|
|
3194
|
+
}
|
|
3195
|
+
}
|
|
3196
|
+
function readBranch(gitDir) {
|
|
3197
|
+
try {
|
|
3198
|
+
const head = readFileSync2(join10(gitDir, "HEAD"), "utf-8").trim();
|
|
3199
|
+
const ref = head.match(/^ref: refs\/heads\/(.+)$/);
|
|
3200
|
+
return ref ? ref[1] : head.slice(0, 7);
|
|
3201
|
+
} catch {
|
|
3202
|
+
return null;
|
|
3203
|
+
}
|
|
3204
|
+
}
|
|
3205
|
+
function parseShortstat(output) {
|
|
3206
|
+
const added = output.match(/(\d+) insertion/);
|
|
3207
|
+
const removed = output.match(/(\d+) deletion/);
|
|
3208
|
+
return {
|
|
3209
|
+
added: added ? Number(added[1]) : 0,
|
|
3210
|
+
removed: removed ? Number(removed[1]) : 0
|
|
3211
|
+
};
|
|
3212
|
+
}
|
|
3213
|
+
function createGitService({ onChange = () => {
|
|
3214
|
+
} } = {}) {
|
|
3215
|
+
let enabled = false;
|
|
3216
|
+
let root = null;
|
|
3217
|
+
let gitDir = null;
|
|
3218
|
+
let epoch = 0;
|
|
3219
|
+
let watcher = null;
|
|
3220
|
+
let poll = null;
|
|
3221
|
+
let debounce = null;
|
|
3222
|
+
let child = null;
|
|
3223
|
+
let rerun = false;
|
|
3224
|
+
let current = null;
|
|
3225
|
+
function teardown() {
|
|
3226
|
+
epoch += 1;
|
|
3227
|
+
watcher?.close();
|
|
3228
|
+
watcher = null;
|
|
3229
|
+
if (poll) clearInterval(poll);
|
|
3230
|
+
poll = null;
|
|
3231
|
+
if (debounce) clearTimeout(debounce);
|
|
3232
|
+
debounce = null;
|
|
3233
|
+
child?.kill("SIGKILL");
|
|
3234
|
+
child = null;
|
|
3235
|
+
rerun = false;
|
|
3236
|
+
if (current) {
|
|
3237
|
+
current = null;
|
|
3238
|
+
onChange();
|
|
3239
|
+
}
|
|
3240
|
+
}
|
|
3241
|
+
function setup() {
|
|
3242
|
+
teardown();
|
|
3243
|
+
if (!enabled || !root) return;
|
|
3244
|
+
gitDir = findGitDir(root);
|
|
3245
|
+
if (!gitDir) return;
|
|
3246
|
+
const started = epoch;
|
|
3247
|
+
try {
|
|
3248
|
+
watcher = watch(gitDir, () => {
|
|
3249
|
+
if (epoch === started) refresh();
|
|
3250
|
+
});
|
|
3251
|
+
watcher.on("error", () => {
|
|
3252
|
+
});
|
|
3253
|
+
} catch {
|
|
3254
|
+
watcher = null;
|
|
3255
|
+
}
|
|
3256
|
+
poll = setInterval(run, POLL_MS);
|
|
3257
|
+
poll.unref?.();
|
|
3258
|
+
run();
|
|
3259
|
+
}
|
|
3260
|
+
function refresh() {
|
|
3261
|
+
if (!enabled || !gitDir || debounce) return;
|
|
3262
|
+
debounce = setTimeout(() => {
|
|
3263
|
+
debounce = null;
|
|
3264
|
+
run();
|
|
3265
|
+
}, DEBOUNCE_MS);
|
|
3266
|
+
debounce.unref?.();
|
|
3267
|
+
}
|
|
3268
|
+
function run() {
|
|
3269
|
+
if (!enabled || !gitDir || !root) return;
|
|
3270
|
+
if (child) {
|
|
3271
|
+
rerun = true;
|
|
3272
|
+
return;
|
|
3273
|
+
}
|
|
3274
|
+
const started = epoch;
|
|
3275
|
+
const branch = readBranch(gitDir);
|
|
3276
|
+
const proc = spawn2("git", ["--no-optional-locks", "diff", "HEAD", "--shortstat"], {
|
|
3277
|
+
cwd: root,
|
|
3278
|
+
stdio: ["ignore", "pipe", "ignore"]
|
|
3279
|
+
});
|
|
3280
|
+
child = proc;
|
|
3281
|
+
let output = "";
|
|
3282
|
+
proc.stdout.on("data", (chunk) => {
|
|
3283
|
+
output += chunk;
|
|
3284
|
+
});
|
|
3285
|
+
const timeout = setTimeout(() => proc.kill("SIGKILL"), GIT_TIMEOUT_MS);
|
|
3286
|
+
timeout.unref?.();
|
|
3287
|
+
let finished = false;
|
|
3288
|
+
const done = (code) => {
|
|
3289
|
+
if (finished) return;
|
|
3290
|
+
finished = true;
|
|
3291
|
+
clearTimeout(timeout);
|
|
3292
|
+
if (child === proc) child = null;
|
|
3293
|
+
if (epoch !== started) return;
|
|
3294
|
+
const stats = code === 0 ? parseShortstat(output) : { added: 0, removed: 0 };
|
|
3295
|
+
const next = branch ? { branch, ...stats } : null;
|
|
3296
|
+
if (JSON.stringify(next) !== JSON.stringify(current)) {
|
|
3297
|
+
current = next;
|
|
3298
|
+
onChange();
|
|
3299
|
+
}
|
|
3300
|
+
if (rerun) {
|
|
3301
|
+
rerun = false;
|
|
3302
|
+
refresh();
|
|
3303
|
+
}
|
|
3304
|
+
};
|
|
3305
|
+
proc.on("close", done);
|
|
3306
|
+
proc.on("error", () => done(-1));
|
|
3307
|
+
}
|
|
3308
|
+
return {
|
|
3309
|
+
status: () => current,
|
|
3310
|
+
refresh,
|
|
3311
|
+
retarget(nextRoot) {
|
|
3312
|
+
root = nextRoot;
|
|
3313
|
+
setup();
|
|
3314
|
+
},
|
|
3315
|
+
setEnabled(value) {
|
|
3316
|
+
enabled = value === true;
|
|
3317
|
+
setup();
|
|
3318
|
+
},
|
|
3319
|
+
dispose: teardown
|
|
3320
|
+
};
|
|
3321
|
+
}
|
|
3322
|
+
|
|
3172
3323
|
// src/ui/app.jsx
|
|
3173
3324
|
init_events();
|
|
3174
3325
|
init_session();
|
|
@@ -3176,13 +3327,13 @@ init_derive();
|
|
|
3176
3327
|
import { existsSync as existsSync4 } from "node:fs";
|
|
3177
3328
|
import { writeFile as writeFile11 } from "node:fs/promises";
|
|
3178
3329
|
import { homedir as homedir5 } from "node:os";
|
|
3179
|
-
import { join as
|
|
3330
|
+
import { join as join15 } from "node:path";
|
|
3180
3331
|
import { createSignal as createSignal5, Menu as Menu2, ProgressBar, ScrollBox as ScrollBox3, Shimmer, TextArea, useFocus as useFocus2, useFocusTrap, useFrameStats, useInput as useInput3, useSelection, useToast } from "@trendr/core";
|
|
3181
3332
|
|
|
3182
3333
|
// src/core/history.js
|
|
3183
3334
|
init_paths();
|
|
3184
3335
|
import { appendFile as appendFile2, readFile as readFile10, readdir as readdir5 } from "node:fs/promises";
|
|
3185
|
-
import { join as
|
|
3336
|
+
import { join as join12 } from "node:path";
|
|
3186
3337
|
var MAX_PROMPTS_PER_SCOPE = 1e3;
|
|
3187
3338
|
async function appendPrompt(root, text) {
|
|
3188
3339
|
ensureDir(projectDir(root));
|
|
@@ -3209,14 +3360,14 @@ function loadProjectPrompts(root) {
|
|
|
3209
3360
|
return readPrompts(projectHistoryFile(root), "project");
|
|
3210
3361
|
}
|
|
3211
3362
|
async function loadGlobalPrompts() {
|
|
3212
|
-
const projectsDir =
|
|
3363
|
+
const projectsDir = join12(picoHome(), "projects");
|
|
3213
3364
|
let projects = [];
|
|
3214
3365
|
try {
|
|
3215
3366
|
projects = await readdir5(projectsDir);
|
|
3216
3367
|
} catch {
|
|
3217
3368
|
}
|
|
3218
3369
|
const nested = await Promise.all(
|
|
3219
|
-
projects.map((p) => readPrompts(
|
|
3370
|
+
projects.map((p) => readPrompts(join12(projectsDir, p, "history.jsonl"), "everywhere"))
|
|
3220
3371
|
);
|
|
3221
3372
|
return nested.flat().sort((a, b) => b.at - a.at).slice(0, MAX_PROMPTS_PER_SCOPE);
|
|
3222
3373
|
}
|
|
@@ -3229,13 +3380,13 @@ init_tools();
|
|
|
3229
3380
|
// src/core/user-tools.js
|
|
3230
3381
|
init_paths();
|
|
3231
3382
|
import { readdir as readdir6, stat as stat2 } from "node:fs/promises";
|
|
3232
|
-
import { join as
|
|
3383
|
+
import { join as join13 } from "node:path";
|
|
3233
3384
|
import { pathToFileURL } from "node:url";
|
|
3234
3385
|
function globalToolsDir() {
|
|
3235
|
-
return
|
|
3386
|
+
return join13(picoHome(), "tools");
|
|
3236
3387
|
}
|
|
3237
3388
|
function projectToolsDir(root) {
|
|
3238
|
-
return
|
|
3389
|
+
return join13(root, ".pico", "tools");
|
|
3239
3390
|
}
|
|
3240
3391
|
function validate(tool, file) {
|
|
3241
3392
|
if (!tool || typeof tool !== "object") throw new Error("default export is not a tool object");
|
|
@@ -3263,7 +3414,7 @@ async function scanDir4(dir, context, source) {
|
|
|
3263
3414
|
const errors = [];
|
|
3264
3415
|
for (const name of names) {
|
|
3265
3416
|
if (!name.endsWith(".js") && !name.endsWith(".mjs")) continue;
|
|
3266
|
-
const file =
|
|
3417
|
+
const file = join13(dir, name);
|
|
3267
3418
|
try {
|
|
3268
3419
|
tools.push({ ...await loadTool(file, context), source });
|
|
3269
3420
|
} catch (err) {
|
|
@@ -3360,11 +3511,11 @@ init_fuzzy();
|
|
|
3360
3511
|
|
|
3361
3512
|
// src/ui/completion.js
|
|
3362
3513
|
init_fuzzy();
|
|
3363
|
-
function completionContext({ value, resolve:
|
|
3514
|
+
function completionContext({ value, resolve: resolve8 }) {
|
|
3364
3515
|
if (value.includes("\n")) return null;
|
|
3365
3516
|
const m = value.match(/^\/(\S+) (.*)$/);
|
|
3366
3517
|
if (!m) return null;
|
|
3367
|
-
const source =
|
|
3518
|
+
const source = resolve8(m[1].toLowerCase());
|
|
3368
3519
|
if (!source || source.length === 0) return null;
|
|
3369
3520
|
const tokens = m[2].split(" ");
|
|
3370
3521
|
const partial = tokens[tokens.length - 1];
|
|
@@ -3385,10 +3536,10 @@ var MAX_FILES = 5e3;
|
|
|
3385
3536
|
var TTL3 = 5e3;
|
|
3386
3537
|
var cached = { at: 0, cwd: null, files: [] };
|
|
3387
3538
|
function ripgrepFiles(cwd) {
|
|
3388
|
-
return new Promise((
|
|
3539
|
+
return new Promise((resolve8) => {
|
|
3389
3540
|
const args = ["--files", "--hidden", "--glob", "!**/.git/**", "--sortr=modified"];
|
|
3390
3541
|
execFile4("rg", args, { cwd, maxBuffer: 50 * 1024 * 1024 }, (err, stdout) => {
|
|
3391
|
-
|
|
3542
|
+
resolve8(err && !stdout ? null : stdout.split("\n").filter(Boolean));
|
|
3392
3543
|
});
|
|
3393
3544
|
});
|
|
3394
3545
|
}
|
|
@@ -3424,6 +3575,7 @@ var PALETTES = {
|
|
|
3424
3575
|
panelBg: "#1e1e22",
|
|
3425
3576
|
selectBg: "#374151",
|
|
3426
3577
|
red: "#f87171",
|
|
3578
|
+
green: "#4ade80",
|
|
3427
3579
|
highlight: "#ffffff",
|
|
3428
3580
|
shiki: "nord"
|
|
3429
3581
|
},
|
|
@@ -3437,6 +3589,7 @@ var PALETTES = {
|
|
|
3437
3589
|
panelBg: "#e9e9ee",
|
|
3438
3590
|
selectBg: "#d4d4dc",
|
|
3439
3591
|
red: "#dc2626",
|
|
3592
|
+
green: "#16a34a",
|
|
3440
3593
|
highlight: "#111827",
|
|
3441
3594
|
shiki: "github-light"
|
|
3442
3595
|
},
|
|
@@ -3450,6 +3603,7 @@ var PALETTES = {
|
|
|
3450
3603
|
panelBg: "#3b4252",
|
|
3451
3604
|
selectBg: "#434c5e",
|
|
3452
3605
|
red: "#bf616a",
|
|
3606
|
+
green: "#a3be8c",
|
|
3453
3607
|
highlight: "#eceff4",
|
|
3454
3608
|
shiki: "nord"
|
|
3455
3609
|
}
|
|
@@ -3462,6 +3616,7 @@ var FAINT = PALETTES.dark.faint;
|
|
|
3462
3616
|
var PANEL_BG = PALETTES.dark.panelBg;
|
|
3463
3617
|
var SELECT_BG = PALETTES.dark.selectBg;
|
|
3464
3618
|
var RED = PALETTES.dark.red;
|
|
3619
|
+
var GREEN = PALETTES.dark.green;
|
|
3465
3620
|
var HIGHLIGHT = PALETTES.dark.highlight;
|
|
3466
3621
|
var currentPalette = "dark";
|
|
3467
3622
|
var explicitAccent = null;
|
|
@@ -3482,6 +3637,7 @@ function setPalette(name) {
|
|
|
3482
3637
|
PANEL_BG = p.panelBg;
|
|
3483
3638
|
SELECT_BG = p.selectBg;
|
|
3484
3639
|
RED = p.red;
|
|
3640
|
+
GREEN = p.green;
|
|
3485
3641
|
HIGHLIGHT = p.highlight;
|
|
3486
3642
|
setAccentValue(explicitAccent || p.accent);
|
|
3487
3643
|
}
|
|
@@ -4012,15 +4168,20 @@ function ConfigField({ field, value, focused, fm, onChange }) {
|
|
|
4012
4168
|
const layout = useLayout();
|
|
4013
4169
|
fm.item(field.name, layout);
|
|
4014
4170
|
return /* @__PURE__ */ jsxs4("box", { style: { flexDirection: "column", marginBottom: 1 }, children: [
|
|
4015
|
-
/* @__PURE__ */
|
|
4171
|
+
/* @__PURE__ */ jsxs4("box", { style: { flexDirection: "row" }, children: [
|
|
4172
|
+
/* @__PURE__ */ jsx5(Checkbox, { checked: value, label: field.label, focused, onChange }),
|
|
4173
|
+
/* @__PURE__ */ jsx5("box", { style: { flexGrow: 1 } }),
|
|
4174
|
+
/* @__PURE__ */ jsx5("text", { style: { color: FAINT }, children: field.path })
|
|
4175
|
+
] }),
|
|
4016
4176
|
/* @__PURE__ */ jsx5("text", { style: { color: FAINT }, children: ` ${field.desc}` })
|
|
4017
4177
|
] });
|
|
4018
4178
|
}
|
|
4019
4179
|
function ConfigPanel({ values, focused, onChange, onClose }) {
|
|
4020
4180
|
const fm = useFocus({ initial: "clouds" });
|
|
4021
4181
|
const fields = [
|
|
4022
|
-
{ name: "clouds", label: "Cloud animation", desc: "Show animated clouds on the empty screen" },
|
|
4023
|
-
{ name: "compactTools", label: "Compact tool history", desc: "Summarize consecutive tool calls in one row" }
|
|
4182
|
+
{ name: "clouds", label: "Cloud animation", desc: "Show animated clouds on the empty screen", path: "animation.clouds" },
|
|
4183
|
+
{ name: "compactTools", label: "Compact tool history", desc: "Summarize consecutive tool calls in one row", path: "display.compactToolHistory" },
|
|
4184
|
+
{ name: "gitStatus", label: "Git in footer", desc: "Show branch and changed line counts in the footer", path: "display.gitStatus" }
|
|
4024
4185
|
];
|
|
4025
4186
|
useInput2((event) => {
|
|
4026
4187
|
if (!focused) return;
|
|
@@ -4892,6 +5053,7 @@ function App({ boot: boot2 }) {
|
|
|
4892
5053
|
const [showDeleteConfirm, setShowDeleteConfirm] = createSignal5(false);
|
|
4893
5054
|
const [clouds, setClouds] = createSignal5(boot2.clouds);
|
|
4894
5055
|
const [compactToolHistory, setCompactToolHistory] = createSignal5(boot2.compactToolHistory);
|
|
5056
|
+
const [gitFooter, setGitFooter] = createSignal5(boot2.gitFooter);
|
|
4895
5057
|
const [showMemoryPanel, setShowMemoryPanel] = createSignal5(false);
|
|
4896
5058
|
const [memScope, setMemScope] = createSignal5(0);
|
|
4897
5059
|
const [memoryList, setMemoryList] = createSignal5([]);
|
|
@@ -4922,6 +5084,7 @@ function App({ boot: boot2 }) {
|
|
|
4922
5084
|
const [showConnectPanel, setShowConnectPanel] = createSignal5(false);
|
|
4923
5085
|
const [authProviders, setAuthProviders] = createSignal5([]);
|
|
4924
5086
|
const [shellsVersion, setShellsVersion] = createSignal5(0);
|
|
5087
|
+
const [gitVersion, setGitVersion] = createSignal5(0);
|
|
4925
5088
|
const [projects, setProjects] = createSignal5([]);
|
|
4926
5089
|
const [projectsLoading, setProjectsLoading] = createSignal5(false);
|
|
4927
5090
|
const [mcpServers, setMcpServers] = createSignal5(mcp.list());
|
|
@@ -4944,6 +5107,7 @@ function App({ boot: boot2 }) {
|
|
|
4944
5107
|
boot2.setMcpNotify(() => setMcpServers(boot2.mcp.list()));
|
|
4945
5108
|
boot2.setShellsNotify(() => setShellsVersion((v) => v + 1));
|
|
4946
5109
|
boot2.setWakeupsNotify(() => setShellsVersion((v) => v + 1));
|
|
5110
|
+
boot2.setGitNotify(() => setGitVersion((v) => v + 1));
|
|
4947
5111
|
boot2.setWakeupsFire((wakeup) => {
|
|
4948
5112
|
flash(`wake-up ${wakeup.id} fired`);
|
|
4949
5113
|
noteSystem(
|
|
@@ -5192,6 +5356,7 @@ ${tail}` : ""),
|
|
|
5192
5356
|
return next;
|
|
5193
5357
|
});
|
|
5194
5358
|
} else if (event.type === "tool_complete" || event.type === "tool_error") {
|
|
5359
|
+
boot2.git.refresh();
|
|
5195
5360
|
const entry = recorder.entries.at(-1);
|
|
5196
5361
|
setOverlay(
|
|
5197
5362
|
(o) => o.map(
|
|
@@ -5241,6 +5406,7 @@ ${tail}` : ""),
|
|
|
5241
5406
|
reDerive();
|
|
5242
5407
|
setBusy(false);
|
|
5243
5408
|
refs.abort = null;
|
|
5409
|
+
boot2.git.refresh();
|
|
5244
5410
|
if (result.stalled) {
|
|
5245
5411
|
flash("model stalled \xB7 turn interrupted");
|
|
5246
5412
|
noteSystem(
|
|
@@ -5617,7 +5783,7 @@ ${body}`);
|
|
|
5617
5783
|
return;
|
|
5618
5784
|
}
|
|
5619
5785
|
if (c.name === "export") {
|
|
5620
|
-
const file =
|
|
5786
|
+
const file = join15(cwd, `pico-export-${Date.now()}.md`);
|
|
5621
5787
|
await writeFile11(file, transcriptToMarkdown(derived().transcript, { title: `pico session \xB7 ${cwd}` }));
|
|
5622
5788
|
flash(`exported to ${file}`);
|
|
5623
5789
|
return;
|
|
@@ -5717,6 +5883,7 @@ ${body}`);
|
|
|
5717
5883
|
});
|
|
5718
5884
|
process.chdir(next.cwd);
|
|
5719
5885
|
Object.assign(boot2, next);
|
|
5886
|
+
boot2.git.retarget(next.root);
|
|
5720
5887
|
process.stdout.write(`\x1B]0;pico \xB7 ${next.root.split("/").pop()}\x07`);
|
|
5721
5888
|
next.mcp.connectAll();
|
|
5722
5889
|
setMcpServers(next.mcp.list());
|
|
@@ -6008,7 +6175,7 @@ ${body}`);
|
|
|
6008
6175
|
const v = input();
|
|
6009
6176
|
const at = v.lastIndexOf("@");
|
|
6010
6177
|
const mediaType = mediaTypeFor(f);
|
|
6011
|
-
const full =
|
|
6178
|
+
const full = join15(boot2.cwd, f);
|
|
6012
6179
|
if (mediaType && existsSync4(full)) {
|
|
6013
6180
|
const placeholder = `[Image #${++refs.imageCount}]`;
|
|
6014
6181
|
refs.attachments.set(placeholder, { path: full, mediaType });
|
|
@@ -6043,6 +6210,8 @@ ${body}`);
|
|
|
6043
6210
|
shellsVersion();
|
|
6044
6211
|
const liveShells = boot2.shells.list().filter((s) => s.status === "running");
|
|
6045
6212
|
const pendingWakeups = boot2.wakeups.pending();
|
|
6213
|
+
gitVersion();
|
|
6214
|
+
const gitInfo = gitFooter() ? boot2.git.status() : null;
|
|
6046
6215
|
if (view() === "help") {
|
|
6047
6216
|
return /* @__PURE__ */ jsx6(Help, { commands: COMMANDS, onClose: () => setView("chat") });
|
|
6048
6217
|
}
|
|
@@ -6318,12 +6487,17 @@ ${body}`);
|
|
|
6318
6487
|
showConfigPanel() && /* @__PURE__ */ jsx6(
|
|
6319
6488
|
ConfigPanel,
|
|
6320
6489
|
{
|
|
6321
|
-
values: { clouds: clouds(), compactTools: compactToolHistory() },
|
|
6490
|
+
values: { clouds: clouds(), compactTools: compactToolHistory(), gitStatus: gitFooter() },
|
|
6322
6491
|
focused: showConfigPanel(),
|
|
6323
6492
|
onChange: (name, value) => {
|
|
6324
6493
|
if (name === "clouds") {
|
|
6325
6494
|
setClouds(value);
|
|
6326
6495
|
writeConfig({ animation: { clouds: value } });
|
|
6496
|
+
} else if (name === "gitStatus") {
|
|
6497
|
+
setGitFooter(value);
|
|
6498
|
+
boot2.gitFooter = value;
|
|
6499
|
+
boot2.git.setEnabled(value);
|
|
6500
|
+
writeConfig({ display: { gitStatus: value } });
|
|
6327
6501
|
} else {
|
|
6328
6502
|
setCompactToolHistory(value);
|
|
6329
6503
|
writeConfig({ display: { compactToolHistory: value } });
|
|
@@ -6519,7 +6693,7 @@ ${body}`);
|
|
|
6519
6693
|
] }),
|
|
6520
6694
|
/* @__PURE__ */ jsxs5("box", { style: { flexDirection: "row", paddingX: 2, gap: 1, marginTop: 1 }, children: [
|
|
6521
6695
|
busy() ? /* @__PURE__ */ jsxs5("box", { style: { flexDirection: "row" }, children: [
|
|
6522
|
-
/* @__PURE__ */ jsx6(Shimmer, { color: accent(), highlight: HIGHLIGHT, duration: 1500, reverse: true, children: compacting() ? compactStatus()?.phase === "writing" ? `Compacting \xB7 writing ${compactStatus().section}/8` : "Compacting \xB7 analyzing" : turnPhase() === "thinking" ? "Thinking" : "Responding" }),
|
|
6696
|
+
/* @__PURE__ */ jsx6(Shimmer, { color: accent(), highlight: HIGHLIGHT, duration: 1500, reverse: true, children: compacting() ? compactStatus()?.phase === "writing" ? `Compacting \xB7 writing ${compactStatus().section}/8` : "Compacting \xB7 analyzing" : turnPhase() === "thinking" ? "Thinking" : turnPhase() === "tools" ? "Working" : "Responding" }),
|
|
6523
6697
|
/* @__PURE__ */ jsx6("text", { style: { color: FAINT }, children: ` (${elapsed}${compactStatus() ? ` \xB7 \u2193 ${fmtTokens(Math.round(compactStatus().chars / 4))} tokens` : ""}) \xB7 esc to interrupt` }),
|
|
6524
6698
|
compactStatus()?.phase === "writing" && /* @__PURE__ */ jsx6("box", { style: { flexDirection: "row", marginLeft: 1, width: 16 }, children: /* @__PURE__ */ jsx6(ProgressBar, { variant: "thin", value: compactStatus().section / 8, width: 16, percentage: false, color: accent() }) })
|
|
6525
6699
|
] }) : /* @__PURE__ */ jsx6("text", { style: { color: MUTED, overflow: "truncate" }, children: boot2.displayCwd }),
|
|
@@ -6528,6 +6702,11 @@ ${body}`);
|
|
|
6528
6702
|
const stats = useFrameStats();
|
|
6529
6703
|
return /* @__PURE__ */ jsx6("text", { style: { color: MUTED }, children: `\u23F1 ${(stats.renderMs ?? 0).toFixed(1)}ms \xB7 ${stats.fps}fps \xB7 ${derived().transcript.length} items` });
|
|
6530
6704
|
})(),
|
|
6705
|
+
gitInfo?.branch && /* @__PURE__ */ jsxs5("box", { style: { flexDirection: "row", gap: 1 }, children: [
|
|
6706
|
+
/* @__PURE__ */ jsx6("text", { style: { color: MUTED, overflow: "truncate" }, children: gitInfo.branch }),
|
|
6707
|
+
gitInfo.added > 0 && /* @__PURE__ */ jsx6("text", { style: { color: GREEN }, children: `+${gitInfo.added}` }),
|
|
6708
|
+
gitInfo.removed > 0 && /* @__PURE__ */ jsx6("text", { style: { color: RED }, children: `-${gitInfo.removed}` })
|
|
6709
|
+
] }),
|
|
6531
6710
|
pendingWakeups > 0 && /* @__PURE__ */ jsx6("text", { style: { color: MUTED }, children: `\u23F0 ${pendingWakeups}` }),
|
|
6532
6711
|
/* @__PURE__ */ jsx6("text", { style: { color: accent() }, children: model2().name }),
|
|
6533
6712
|
effortApplies() && effort() && /* @__PURE__ */ jsx6("text", { style: { color: MUTED }, children: `\xB7 ${effort()}` }),
|
|
@@ -6549,7 +6728,7 @@ ${body}`);
|
|
|
6549
6728
|
|
|
6550
6729
|
// src/main.jsx
|
|
6551
6730
|
import { jsx as jsx7 } from "@trendr/core/jsx-runtime";
|
|
6552
|
-
var pkg = JSON.parse(
|
|
6731
|
+
var pkg = JSON.parse(readFileSync3(new URL("../package.json", import.meta.url), "utf-8"));
|
|
6553
6732
|
var cli;
|
|
6554
6733
|
try {
|
|
6555
6734
|
cli = parseArgs(process.argv.slice(2));
|
|
@@ -6647,6 +6826,10 @@ var wakeups = createWakeupManager({
|
|
|
6647
6826
|
onChange: () => wakeupsNotify(),
|
|
6648
6827
|
onFire: (wakeup) => wakeupsFire(wakeup)
|
|
6649
6828
|
});
|
|
6829
|
+
var gitNotify = () => {
|
|
6830
|
+
};
|
|
6831
|
+
var git = createGitService({ onChange: () => gitNotify() });
|
|
6832
|
+
process.on("exit", () => git.dispose());
|
|
6650
6833
|
var bootProject = (cwd) => buildProjectBoot(cwd, { onMcpChange: () => mcpNotify() });
|
|
6651
6834
|
var config = await readConfig();
|
|
6652
6835
|
var configuredDefault = config.defaultModel && models.find((m) => m.name === config.defaultModel);
|
|
@@ -6668,12 +6851,17 @@ var boot = {
|
|
|
6668
6851
|
autoCompact: config.autoCompact !== false,
|
|
6669
6852
|
clouds: config.animation?.clouds === true,
|
|
6670
6853
|
compactToolHistory: config.display?.compactToolHistory === true,
|
|
6854
|
+
gitFooter: config.display?.gitStatus !== false,
|
|
6671
6855
|
refs: {},
|
|
6672
6856
|
shells,
|
|
6673
6857
|
wakeups,
|
|
6858
|
+
git,
|
|
6674
6859
|
setMcpNotify: (fn) => {
|
|
6675
6860
|
mcpNotify = fn;
|
|
6676
6861
|
},
|
|
6862
|
+
setGitNotify: (fn) => {
|
|
6863
|
+
gitNotify = fn;
|
|
6864
|
+
},
|
|
6677
6865
|
setShellsNotify: (fn) => {
|
|
6678
6866
|
shellsNotify = fn;
|
|
6679
6867
|
},
|
|
@@ -6688,7 +6876,9 @@ var boot = {
|
|
|
6688
6876
|
},
|
|
6689
6877
|
rebuild: bootProject
|
|
6690
6878
|
};
|
|
6879
|
+
git.retarget(boot.root);
|
|
6880
|
+
git.setEnabled(boot.gitFooter);
|
|
6691
6881
|
var app = mount(() => /* @__PURE__ */ jsx7(App, { boot }), { title: `pico \xB7 ${boot.root.split("/").pop()}`, theme });
|
|
6692
6882
|
boot.setTheme = app.setTheme;
|
|
6693
6883
|
boot.mcp.connectAll();
|
|
6694
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy9jb3JlL3VwZGF0ZS5qcyIsICIuLi9zcmMvdWkvZnV6enkuanMiLCAiLi4vc3JjL3VpL2F0dGFjaG1lbnRzLmpzIiwgIi4uL3NyYy9oZWFkbGVzcy5qcyIsICIuLi9zcmMvbWFpbi5qc3giLCAiLi4vc3JjL2NsaS1hcmdzLmpzIiwgIi4uL3NyYy9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzIiwgIi4uL3NyYy9jb3JlL3dha2V1cHMuanMiLCAiLi4vc3JjL3VpL2FwcC5qc3giLCAiLi4vc3JjL2NvcmUvaGlzdG9yeS5qcyIsICIuLi9zcmMvY29yZS91c2VyLXRvb2xzLmpzIiwgIi4uL3NyYy9jb3JlL3Jld2luZC5qcyIsICIuLi9zcmMvY29yZS9leHBvcnQuanMiLCAiLi4vc3JjL3VpL2NvbXBsZXRpb24uanMiLCAiLi4vc3JjL3VpL2ZpbGVzLmpzIiwgIi4uL3NyYy91aS9oaWdobGlnaHQuanMiLCAiLi4vc3JjL3VpL3RoZW1lLmpzIiwgIi4uL3NyYy91aS9mb3JtYXQuanMiLCAiLi4vc3JjL3VpL2FuaW1hdGVkLXZhbHVlLmpzeCIsICIuLi9zcmMvdWkvdHJhbnNjcmlwdC5qc3giLCAiLi4vc3JjL3VpL2VtcHR5LXN0YXRlLmpzeCIsICIuLi9zcmMvdWkvaGVscC5qc3giLCAiLi4vc3JjL3VpL3BhbmVscy5qc3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHNldEtleXMgfSBmcm9tICdAcHJzbS9haSdcblxuY29uc3QgUFJPVklERVJTID0gW1xuICB7IGlkOiAnZ29vZ2xlJywgbGFiZWw6ICdHZW1pbmknLCBlbnY6IFsnR0VNSU5JX0FQSV9LRVknLCAnR09PR0xFX0FJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnYW50aHJvcGljJywgbGFiZWw6ICdDbGF1ZGUnLCBlbnY6IFsnQU5USFJPUElDX0FQSV9LRVknXSB9LFxuICB7IGlkOiAnb3BlbmFpJywgbGFiZWw6ICdPcGVuQUknLCBlbnY6IFsnT1BFTkFJX0FQSV9LRVknXSB9LFxuICB7IGlkOiAneGFpJywgbGFiZWw6ICdHcm9rJywgZW52OiBbJ1hBSV9BUElfS0VZJ10gfSxcbl1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc2NvdmVyS2V5cyhlbnYgPSBwcm9jZXNzLmVudikge1xuICBjb25zdCBrZXlzID0ge31cbiAgZm9yIChjb25zdCBwIG9mIFBST1ZJREVSUykge1xuICAgIGNvbnN0IG5hbWUgPSBwLmVudi5maW5kKChuKSA9PiBlbnZbbl0pXG4gICAgaWYgKG5hbWUpIGtleXNbcC5pZF0gPSBlbnZbbmFtZV1cbiAgfVxuICByZXR1cm4ga2V5c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlLZXlzKGtleXMpIHtcbiAgc2V0S2V5cyhrZXlzKVxuICByZXR1cm4gT2JqZWN0LmtleXMoa2V5cylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGtleUhpbnQocHJvdmlkZXJJZCkge1xuICByZXR1cm4gUFJPVklERVJTLmZpbmQoKHApID0+IHAuaWQgPT09IHByb3ZpZGVySWQpPy5lbnZbMF0gfHwgYCR7cHJvdmlkZXJJZC50b1VwcGVyQ2FzZSgpfV9BUElfS0VZYFxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmaW5kTW9kZWwobW9kZWxzLCBuYW1lKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0TW9kZWwobW9kZWxzKSB7XG4gIHJldHVybiBtb2RlbHMuZmluZCgobSkgPT4gbS5hdmFpbGFibGUgIT09IGZhbHNlKSB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc3RpbWF0ZUNvc3QobW9kZWwsIHVzYWdlKSB7XG4gIGlmICghbW9kZWw/LnByaWNlIHx8ICF1c2FnZSkgcmV0dXJuIDBcbiAgY29uc3QgaW5Db3N0ID0gKHVzYWdlLnByb21wdFRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLmluXG4gIGNvbnN0IG91dENvc3QgPSAodXNhZ2UuY29tcGxldGlvblRva2VucyB8fCAwKSAqIG1vZGVsLnByaWNlLm91dFxuICByZXR1cm4gKGluQ29zdCArIG91dENvc3QpIC8gMWU2XG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuZXhwb3J0IGZ1bmN0aW9uIHBpY29Ib21lKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuUElDT19IT01FIHx8IGpvaW4oaG9tZWRpcigpLCAnLnBpY28nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEtleShyb290KSB7XG4gIHJldHVybiByZXNvbHZlKHJvb3QpLnJlcGxhY2UoL1svXFxcXDpdL2csICctJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdChjd2QpIHtcbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgaWYgKGV4aXN0c1N5bmMoam9pbihkaXIsICcuZ2l0JykpKSByZXR1cm4gZGlyXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyIHx8IGRpciA9PT0gaG9tZSkgcmV0dXJuIHJlc29sdmUoY3dkKVxuICAgIGRpciA9IHBhcmVudFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJywgcHJvamVjdEtleShyb290KSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlc3Npb25zRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ3Nlc3Npb25zJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RIaXN0b3J5RmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdoaXN0b3J5Lmpzb25sJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RNY3BGaWxlKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21jcC5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1jcEZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxTa2lsbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFNraWxsc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHJvb3QsICcucGljbycsICdza2lsbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsQWdlbnRzRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ0FHRU5UUy5tZCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVEaXIoZGlyKSB7XG4gIG1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gIHJldHVybiBkaXJcbn1cbiIsICJ7XCJnb29nbGVcIjp7XCJtb2RlbHNcIjp7XCJnZW1pbmktMy4xLWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMb3ctbGF0ZW5jeSBHZW1pbmkgbW9kZWwgZm9yIGhpZ2gtdm9sdW1lIG11bHRpbW9kYWwgYW5kIGFnZW50IHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4yNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowLjAyNSxcImlucHV0X2F1ZGlvXCI6MC41fX0sXCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtcHJldmlldy10dHNcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2ggUHJldmlldyBUVFNcIixcImRlc2NyaXB0aW9uXCI6XCJTcGVlY2ggZ2VuZXJhdGlvbiBtb2RlbCBmb3IgY29udHJvbGxhYmxlIHZvaWNlLCBuYXJyYXRpb24sIGFuZCBhdWRpbyBkZWxpdmVyeVwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTAxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1wiYXVkaW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MC41LFwib3V0cHV0XCI6MTB9fSxcImdlbWluaS0yLjUtcHJvXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtcHJvXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkdvb2dsZSdzIHByb3ZlbiByZWFzb25pbmcgbW9kZWwgZm9yIGNvZGluZywgbWF0aCwgYW5kIG11bHRpbW9kYWwgYW5hbHlzaXNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTI4LFwibWF4XCI6MzI3Njh9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4yNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjV9fX0sXCJnZW1pbmktMi41LWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSB3b3JraG9yc2UgZm9yIG11bHRpbW9kYWwgYXBwcyB3aGVyZSBsYXRlbmN5IGFuZCBwcmljZSBtYXR0ZXJcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wMyxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTMuNS1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMy41LWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy41IEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgbW9kZWwgYmFsYW5jaW5nIG11bHRpbW9kYWwgcmVhc29uaW5nLCB0b29sIHVzZSwgYW5kIGNvc3RcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMTUsXCJpbnB1dF9hdWRpb1wiOjEuNX19LFwiZ2VtbWEtNC0zMWItaXRcIjp7XCJpZFwiOlwiZ2VtbWEtNC0zMWItaXRcIixcIm5hbWVcIjpcIkdlbW1hIDQgMzFCIElUXCIsXCJkZXNjcmlwdGlvblwiOlwiTGFyZ2VzdCBHZW1tYSA0IGluc3RydWN0aW9uIG1vZGVsIGZvciBvcGVuLCBzZWxmLWhvc3RlZCBjaGF0IGFuZCByZWFzb25pbmdcIixcImZhbWlseVwiOlwiZ2VtbWFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAyXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDJcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjp0cnVlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjYyMTQ0LFwib3V0cHV0XCI6MzI3Njh9fSxcImdlbWluaS0yLjAtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuMC1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDIuMCBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkVhcmxpZXIgR2VtaW5pIEZsYXNoIHdvcmtob3JzZSBmb3IgcmVzcG9uc2l2ZSBtdWx0aW1vZGFsIGFwcHMgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdlbWluaS1lbWJlZGRpbmctMDAxXCI6e1wiaWRcIjpcImdlbWluaS1lbWJlZGRpbmctMDAxXCIsXCJuYW1lXCI6XCJHZW1pbmkgRW1iZWRkaW5nIDAwMVwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMjBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0yMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDQ4LFwib3V0cHV0XCI6MX0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MH19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3LWN1c3RvbXRvb2xzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3IEN1c3RvbSBUb29sc1wiLFwiZGVzY3JpcHRpb25cIjpcIkFkdmFuY2VkIEdlbWluaSBtb2RlbCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIG11bHRpbW9kYWwgYW5hbHlzaXNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktZmxhc2gtbGl0ZS1sYXRlc3RcIjp7XCJpZFwiOlwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHZW1pbmkgRmxhc2gtTGl0ZSBMYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJMb3ctbGF0ZW5jeSBHZW1pbmkgbW9kZWwgZm9yIGhpZ2gtdm9sdW1lIG11bHRpbW9kYWwgYW5kIGFnZW50IHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjUxMixcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdlbWluaS0zLXByby1pbWFnZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLXByby1pbWFnZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJOYW5vIEJhbmFuYSBQcm8gZm9yIGhpZ2hlci1maWRlbGl0eSBpbWFnZSBnZW5lcmF0aW9uIGFuZCBkZXNpZ24taGVhdnkgZWRpdHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEzMTA3MixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMjB9fSxcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaC1pbWFnZVwiLFwibmFtZVwiOlwiTmFubyBCYW5hbmFcIixcImRlc2NyaXB0aW9uXCI6XCJOYW5vIEJhbmFuYSBpbWFnZSBtb2RlbCBmb3IgZmFzdCBnZW5lcmF0aW9uLCBlZGl0cywgYW5kIGNoYXJhY3Rlci1jb25zaXN0ZW50IGFzc2V0c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjozMjc2OCxcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMyxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJnZW1pbmktMi41LWZsYXNoLWxpdGVcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1mbGFzaC1saXRlXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoLUxpdGVcIixcImRlc2NyaXB0aW9uXCI6XCJMZWFuIEdlbWluaSAyLjUgbGFuZSBmb3IgY2hlYXAgbXVsdGltb2RhbCB0cmFmZmljIGFuZCBxdWljayBhZ2VudHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjo1MTIsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDEsXCJpbnB1dF9hdWRpb1wiOjAuM319LFwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktb21uaS1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgT21uaSBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiVmlkZW8gZ2VuZXJhdGlvbiBhbmQgZWRpdGluZyBtb2RlbCBmb3IgZmFzdCwgY29udmVyc2F0aW9uYWwgdGV4dC0gYW5kIGltYWdlLXRvLXZpZGVvIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJnZW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0zMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEzMTA3MixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjE3LjV9fSxcImdlbWluaS0zLjEtZmxhc2gtaW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hIDJcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NjU1MzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjo2MH19LFwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy4xLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIFBybyBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhc29uaW5nLWZpcnN0IEdlbWluaSBwcmV2aWV3IGZvciBhZ2VudGljIGNvZGluZyBhbmQgY29tcGxleCBwcm9ibGVtIHNvbHZpbmdcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1tYS00LTI2Yi1hNGItaXRcIjp7XCJpZFwiOlwiZ2VtbWEtNC0yNmItYTRiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDI2QiBBNEIgSVRcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuIEdlbW1hIGluc3RydWN0aW9uIG1vZGVsIGZvciBlZmZpY2llbnQgY2hhdCBhbmQgc2VsZi1ob3N0ZWQgZGVwbG95bWVudHNcIixcImZhbWlseVwiOlwiZ2VtbWFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTAyXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMDJcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjp0cnVlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjYyMTQ0LFwib3V0cHV0XCI6MzI3Njh9fSxcImdlbWluaS0zLXByby1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLXByby1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlByZXZpZXcgR2VtaW5pIGZsYWdzaGlwIGZvciBjb21wbGV4IHJlYXNvbmluZywgY29kaW5nLCBhbmQgcmljaCBtdWx0aW1vZGFsIHByb21wdHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6NCxcIm91dHB1dFwiOjE4LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLWZsYXNoLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzIEZsYXNoIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJOZXcgR2VtaW5pIGZsYXNoIGxhbmUgYnJpbmdpbmcgZnJvbnRpZXItc3R5bGUgbXVsdGltb2RhbCByZWFzb25pbmcgdG8gY2hlYXBlciBydW5zXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC41LFwib3V0cHV0XCI6MyxcImNhY2hlX3JlYWRcIjowLjA1LFwiaW5wdXRfYXVkaW9cIjoxfX0sXCJnZW1pbmktMi41LXByby1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByby1wcmV2aWV3LXR0c1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm8gUHJldmlldyBUVFNcIixcImRlc2NyaXB0aW9uXCI6XCJTcGVlY2ggZ2VuZXJhdGlvbiBtb2RlbCBmb3IgY29udHJvbGxhYmxlIHZvaWNlLCBuYXJyYXRpb24sIGFuZCBhdWRpbyBkZWxpdmVyeVwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNS0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA1LTAxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1wiYXVkaW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjIwfX0sXCJnZW1pbmktZmxhc2gtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1sYXRlc3RcIixcIm5hbWVcIjpcIkdlbWluaSBGbGFzaCBMYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdlbWluaSBtb2RlbCBiYWxhbmNpbmcgbXVsdGltb2RhbCByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgY29zdFwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjowLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMyxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjA3NSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTMuMS1mbGFzaC1saXRlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1saXRlLXByZXZpZXdcIixcIm5hbWVcIjpcIkdlbWluaSAzLjEgRmxhc2ggTGl0ZSBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTGVnYWN5IG1vZGVsIHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgaW50ZWdyYXRpb25zXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTIuMC1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0yLjAtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDIuMCBGbGFzaC1MaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTGVnYWN5IG1vZGVsIHJldGFpbmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgaW50ZWdyYXRpb25zXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6ODE5Mn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDc1LFwib3V0cHV0XCI6MC4zfX19fSxcImFudGhyb3BpY1wiOntcIm1vZGVsc1wiOntcImNsYXVkZS1vcHVzLTQtNVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTI0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIjp7XCJpZFwiOlwiY2xhdWRlLWhhaWt1LTQtNS0yMDI1MTAwMVwiLFwibmFtZVwiOlwiQ2xhdWRlIEhhaWt1IDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgQ2xhdWRlIG1vZGVsIGZvciByZXNwb25zaXZlIGFzc2lzdGFuY2UsIGNsYXNzaWZpY2F0aW9uLCBhbmQgbGlnaHR3ZWlnaHQgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1oYWlrdVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMi0yOFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1fX0sXCJjbGF1ZGUtb3B1cy00LTEtMjAyNTA4MDVcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjFcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAzLTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjozMjAwMH0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS41LFwiY2FjaGVfd3JpdGVcIjoxOC43NX19LFwiY2xhdWRlLXNvbm5ldC00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC00LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNC41IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQmFsYW5jZWQgQ2xhdWRlIG1vZGVsIGZvciBjb2RpbmcsIGFuYWx5c2lzLCBhZ2VudCB3b3JrZmxvd3MsIGFuZCBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fSxcImNsYXVkZS1vcHVzLTQtN1wiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTdcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuN1wiLFwiZGVzY3JpcHRpb25cIjpcIlN0cm9uZ2VyIE9wdXMgdGllciBmb3IgYWR2YW5jZWQgc29mdHdhcmUgd29yayBhbmQgaGlnaC1zdGFrZXMgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMS0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE1MCxcImNhY2hlX3JlYWRcIjozLFwiY2FjaGVfd3JpdGVcIjozNy41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNwZWVkXCI6XCJmYXN0XCJ9LFwiaGVhZGVyc1wiOntcImFudGhyb3BpYy1iZXRhXCI6XCJmYXN0LW1vZGUtMjAyNi0wMi0wMVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtc29ubmV0LTVcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDVcIixcImRlc2NyaXB0aW9uXCI6XCJFdmVyeWRheSBDbGF1ZGUgYWdlbnQgbW9kZWwgZm9yIGNvZGluZywgcGxhbm5pbmcsIGJyb3dzaW5nLCBhbmQgZ2VuZXJhbCB3b3JrXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMS0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA2LTI5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDYtMzBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4yLFwiY2FjaGVfd3JpdGVcIjoyLjV9fSxcImNsYXVkZS1vcHVzLTQtNS0yMDI1MTEwMVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0yNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTAxXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtOFwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LThcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuOFwiLFwiZGVzY3JpcHRpb25cIjpcIlRvcCBDbGF1ZGUgT3B1cyB0aWVyIGZvciB0aGUgaGFyZGVzdCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDUtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NTAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLW9wdXMtNC0xXCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xIChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1mYWJsZS01XCI6e1wiaWRcIjpcImNsYXVkZS1mYWJsZS01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgRmFibGUgNVwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSBtb2RlbCBmb3IgY3JlYXRpdmUgd3JpdGluZywgYW5hbHlzaXMsIGFuZCBjb250cm9sbGVkIGFnZW50IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtZmFibGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA2LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDYtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjUwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9fSxcImNsYXVkZS1oYWlrdS00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLWhhaWt1LTQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEhhaWt1IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgQ2xhdWRlIGxhbmUgZm9yIGxpZ2h0d2VpZ2h0IGFnZW50cywgb2ZmaWNlIHRhc2tzLCBhbmQgcmVzcG9uc2l2ZSBjaGF0XCIsXCJmYW1pbHlcIjpcImNsYXVkZS1oYWlrdVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMi0yOFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1fX0sXCJjbGF1ZGUtb3B1cy00LTZcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjZcIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoLWVuZCBDbGF1ZGUgZm9yIGRpZmZpY3VsdCBjb2RpbmcsIHBsYW5uaW5nLCBhbmQgc2xvd2VyIGV4cGVydCByZWFzb25pbmdcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcIm1heFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNS0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTA0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE1MCxcImNhY2hlX3JlYWRcIjozLFwiY2FjaGVfd3JpdGVcIjozNy41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNwZWVkXCI6XCJmYXN0XCJ9LFwiaGVhZGVyc1wiOntcImFudGhyb3BpYy1iZXRhXCI6XCJmYXN0LW1vZGUtMjAyNi0wMi0wMVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiOntcImlkXCI6XCJjbGF1ZGUtc29ubmV0LTQtNS0yMDI1MDkyOVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJCYWxhbmNlZCBDbGF1ZGUgbW9kZWwgZm9yIGNvZGluZywgYW5hbHlzaXMsIGFnZW50IHdvcmtmbG93cywgYW5kIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA3LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6NjQwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19LFwiY2xhdWRlLXNvbm5ldC00LTZcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC00LTZcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNC42XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2xhdWRlIHdvcmtob3JzZSBmb3IgY29kaW5nIGFnZW50cywgY2FyZWZ1bCBhbmFseXNpcywgYW5kIHByb2R1Y3Rpb24gY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcIm1heFwiXX0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX19fSxcIm9wZW5haVwiOntcIm1vZGVsc1wiOntcIm8zXCI6e1wiaWRcIjpcIm8zXCIsXCJuYW1lXCI6XCJvM1wiLFwiZGVzY3JpcHRpb25cIjpcIkRlbGliZXJhdGUgby1zZXJpZXMgcmVhc29uZXIgZm9yIGhhcmQgbWF0aCwgY29kaW5nLCBhbmQgbXVsdGktc3RlcCBhbmFseXNpc1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiOntcImlkXCI6XCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCIsXCJuYW1lXCI6XCJ0ZXh0LWVtYmVkZGluZy0zLWxhcmdlXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcInRleHQtZW1iZWRkaW5nXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTAxLTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDEtMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MSxcIm91dHB1dFwiOjMwNzJ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xMyxcIm91dHB1dFwiOjB9fSxcImdwdC01LjItcHJvXCI6e1wiaWRcIjpcImdwdC01LjItcHJvXCIsXCJuYW1lXCI6XCJHUFQtNS4yIFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2hlci1hY2N1cmFjeSBHUFQtNS4yIHZhcmlhbnQgZm9yIHRvdWdoZXIgcmVhc29uaW5nIGFuZCByZXZpZXcgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MjEsXCJvdXRwdXRcIjoxNjh9fSxcImdwdC01LjZcIjp7XCJpZFwiOlwiZ3B0LTUuNlwiLFwibmFtZVwiOlwiR1BULTUuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkZyb250aWVyIEdQVC01LjYgbW9kZWwgZm9yIGNvbXBsZXggcHJvZmVzc2lvbmFsIHdvcmssIGNvZGluZywgYW5kIGFnZW50aWMgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1zb2xcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTVcIjp7XCJpZFwiOlwiZ3B0LTVcIixcIm5hbWVcIjpcIkdQVC01XCIsXCJkZXNjcmlwdGlvblwiOlwiT3JpZ2luYWwgR1BULTUgd29ya2hvcnNlIGZvciByZWFzb25pbmcsIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC0zLjUtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTMuNS10dXJib1wiLFwibmFtZVwiOlwiR1BULTMuNS10dXJib1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvbXBhY3QgR1BUIG1vZGVsIGZvciBsb3ctbGF0ZW5jeSBhc3Npc3RhbmNlIGFuZCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMS0wOS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTAzLTAxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjMtMTEtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTYzODUsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEuNSxcImNhY2hlX3JlYWRcIjowfX0sXCJncHQtNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUgdGllciBmb3IgdG91Z2ggYW5hbHlzaXMsIGNvZGluZyByZXZpZXdzLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiZ3B0LXByb1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEwLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTAtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MjcyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6MTIwfX0sXCJncHQtNG9cIjp7XCJpZFwiOlwiZ3B0LTRvXCIsXCJuYW1lXCI6XCJHUFQtNG9cIixcImRlc2NyaXB0aW9uXCI6XCJPbW5pLWVyYSBHUFQgZm9yIG11bHRpbW9kYWwgY2hhdCwgcHJhY3RpY2FsIGNvZGluZywgYW5kIGdlbmVyYWwgYXNzaXN0YW50c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDUtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNFwiOntcImlkXCI6XCJncHQtNFwiLFwibmFtZVwiOlwiR1BULTRcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTExXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkyLFwib3V0cHV0XCI6ODE5Mn0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjYwfX0sXCJvNC1taW5pXCI6e1wiaWRcIjpcIm80LW1pbmlcIixcIm5hbWVcIjpcIm80LW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IG8tc2VyaWVzIG1vZGVsIGZvciBjb21wYWN0IHJlYXNvbmluZywgY29kaW5nLCBhbmQgdG9vbCB1c2VcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC4yNzV9fSxcIm8zLXByb1wiOntcImlkXCI6XCJvMy1wcm9cIixcIm5hbWVcIjpcIm8zLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2gtZWZmb3J0IG8zIHRpZXIgZm9yIGRpZmZpY3VsdCB0ZWNobmljYWwgcmVhc29uaW5nIGFuZCBjYXJlZnVsIGFuc3dlcnNcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIwLFwib3V0cHV0XCI6ODB9fSxcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCI6e1wiaWRcIjpcImNoYXRncHQtaW1hZ2UtbGF0ZXN0XCIsXCJuYW1lXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNG8tMjAyNC0wNS0xM1wiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wNS0xM1wiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA1LTEzKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDUtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjE1fX0sXCJncHQtNS40LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNS40IG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJDaGVhcGVzdCBHUFQtNS40IGxhbmUgZm9yIHNpbXBsZSByb3V0aW5nLCBleHRyYWN0aW9uLCBhbmQgYnVsayBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjIsXCJvdXRwdXRcIjoxLjI1LFwiY2FjaGVfcmVhZFwiOjAuMDJ9fSxcImdwdC01LWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNSBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMS1jb2RleFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kZXggR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCBjb2RlIHJldmlldywgYW5kIHByYWN0aWNhbCBzb2Z0d2FyZSBhZ2VudHNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jb2RleC1zcGFya1wiOntcImlkXCI6XCJncHQtNS4zLWNvZGV4LXNwYXJrXCIsXCJuYW1lXCI6XCJHUFQtNS4zIENvZGV4IFNwYXJrXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4LXNwYXJrXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcImlucHV0XCI6MTAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4xLWNvZGV4LW1heFwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1heFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBNYXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4zLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4zIENoYXQgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC00by0yMDI0LTA4LTA2XCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTA4LTA2XCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMDgtMDYpXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDgtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wOC0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiOntcImlkXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJuYW1lXCI6XCJ0ZXh0LWVtYmVkZGluZy1hZGEtMDAyXCIsXCJkZXNjcmlwdGlvblwiOlwiRW1iZWRkaW5nIG1vZGVsIGZvciBzZW1hbnRpYyBzZWFyY2gsIHJldHJpZXZhbCwgY2x1c3RlcmluZywgYW5kIHJhbmtpbmcgcGlwZWxpbmVzXCIsXCJmYW1pbHlcIjpcInRleHQtZW1iZWRkaW5nXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMi0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIyLTEyLTE1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjItMTItMTVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MH19LFwibzMtbWluaVwiOntcImlkXCI6XCJvMy1taW5pXCIsXCJuYW1lXCI6XCJvMy1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiU21hbGxlciBvLXNlcmllcyByZWFzb25lciBmb3IgZWNvbm9taWNhbCBjb2RpbmcsIG1hdGgsIGFuZCBwbGFubmluZyB0YXNrc1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDEtMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMSxcIm91dHB1dFwiOjQuNCxcImNhY2hlX3JlYWRcIjowLjU1fX0sXCJncHQtNS4yXCI6e1wiaWRcIjpcImdwdC01LjJcIixcIm5hbWVcIjpcIkdQVC01LjJcIixcImRlc2NyaXB0aW9uXCI6XCJSZWxpYWJsZSBHUFQgZ2VuZXJhdGlvbiBmb3IgYnJvYWQgY29kaW5nLCB3cml0aW5nLCBhbmQgdG9vbC1hc3Npc3RlZCBwcm9kdWN0IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC01LjMtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1zbWFsbFwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMDIsXCJvdXRwdXRcIjowfX0sXCJncHQtNS42LWx1bmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi1sdW5hXCIsXCJuYW1lXCI6XCJHUFQtNS42IEx1bmFcIixcImRlc2NyaXB0aW9uXCI6XCJDb3N0LWVmZmljaWVudCBHUFQtNS42IG1vZGVsIGZvciBmYXN0LCBoaWdoLXZvbHVtZSB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ3B0LWx1bmFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC4xLFwiY2FjaGVfd3JpdGVcIjoxLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo5LFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX19LFwiZ3B0LTUuMS1jb2RleC1taW5pXCI6e1wiaWRcIjpcImdwdC01LjEtY29kZXgtbWluaVwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleCBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtcmVhbHRpbWUtMi4xXCI6e1wiaWRcIjpcImdwdC1yZWFsdGltZS0yLjFcIixcIm5hbWVcIjpcIkdQVC1SZWFsdGltZS0yLjFcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFsdGltZSBzcGVlY2gtdG8tc3BlZWNoIG1vZGVsIHdpdGggY29uZmlndXJhYmxlIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCByb2J1c3Qgdm9pY2UtYWdlbnQgYmVoYXZpb3JcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiYXVkaW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjk2MDAwLFwib3V0cHV0XCI6MzIwMDB9LFwiY29zdFwiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjI0LFwiY2FjaGVfcmVhZFwiOjAuNCxcImlucHV0X2F1ZGlvXCI6MzIsXCJvdXRwdXRfYXVkaW9cIjo2NH19LFwiZ3B0LTUuNi10ZXJyYVwiOntcImlkXCI6XCJncHQtNS42LXRlcnJhXCIsXCJuYW1lXCI6XCJHUFQtNS42IFRlcnJhXCIsXCJkZXNjcmlwdGlvblwiOlwiQmFsYW5jZWQgR1BULTUuNiBtb2RlbCBmb3IgY2FwYWJsZSwgY29zdC1lZmZpY2llbnQgZXZlcnlkYXkgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtdGVycmFcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJjYWNoZV93cml0ZVwiOjMuMTI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fX0sXCJncHQtNS4xLWNoYXQtbGF0ZXN0XCI6e1wiaWRcIjpcImdwdC01LjEtY2hhdC1sYXRlc3RcIixcIm5hbWVcIjpcIkdQVC01LjEgQ2hhdFwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BULTUuMSBmb3IgcG9saXNoZWQgYXNzaXN0YW50cywgd3JpdGluZywgYW5kIHByb2R1Y3QgY29udmVyc2F0aW9uc1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4yLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4yIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVCBtb2RlbCBmb3IgY29udmVyc2F0aW9uYWwgYXNzaXN0YW5jZSwgd3JpdGluZywgYW5kIHRvb2wgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIjp7XCJpZFwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvNC1taW5pLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvLW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA2LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDYtMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcImdwdC1pbWFnZS0xLjVcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTEuNVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTEuNVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfX0sXCJncHQtNC4xLW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTQuMS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNC4xIG5hbm9cIixcImRlc2NyaXB0aW9uXCI6XCJUaW55IEdQVC00LjEgb3B0aW9uIGZvciBjbGFzc2lmaWNhdGlvbiwgcm91dGluZywgYW5kIHZlcnkgaGlnaC12b2x1bWUgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LTRvLTIwMjQtMTEtMjBcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMTEtMjBcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0xMS0yMClcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMS0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTExLTIwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJvMVwiOntcImlkXCI6XCJvMVwiLFwibmFtZVwiOlwibzFcIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjo3LjV9fSxcIm8xLXByb1wiOntcImlkXCI6XCJvMS1wcm9cIixcIm5hbWVcIjpcIm8xLXByb1wiLFwiZGVzY3JpcHRpb25cIjpcIk8tc2VyaWVzIHJlYXNvbmluZyBtb2RlbCBmb3IgaGFyZCBhbmFseXNpcywgbWF0aCwgY29kaW5nLCBhbmQgcGxhbm5pbmdcIixcImZhbWlseVwiOlwiby1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDMtMTlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wMy0xOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1MCxcIm91dHB1dFwiOjYwMH19LFwiZ3B0LTUuNFwiOntcImlkXCI6XCJncHQtNS40XCIsXCJuYW1lXCI6XCJHUFQtNS40XCIsXCJkZXNjcmlwdGlvblwiOlwiQWdlbnQtcmVhZHkgR1BUIGZvciBjb2RpbmcgYW5kIGNvbXB1dGVyLXVzZSB3b3JrZmxvd3MgYXQgYSBsb3dlciBjb3N0XCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyMi41LFwiY2FjaGVfcmVhZFwiOjAuNX19fSxcImdwdC01LjQtbWluaVwiOntcImlkXCI6XCJncHQtNS40LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjQgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlN0cm9uZyBzbWFsbCBHUFQgZm9yIGNvZGluZyBzdWJhZ2VudHMsIHF1aWNrIHRvb2wgdXNlLCBhbmQgaGlnaC12b2x1bWUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6MC43NSxcIm91dHB1dFwiOjQuNSxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ3B0LTQuMVwiOntcImlkXCI6XCJncHQtNC4xXCIsXCJuYW1lXCI6XCJHUFQtNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiTG9uZy1saXZlZCBHUFQgd29ya2hvcnNlIGZvciBjb2RpbmcsIGluc3RydWN0aW9uIGZvbGxvd2luZywgYW5kIHByb2R1Y3Rpb24gYXBwc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJvMy1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcIm5hbWVcIjpcIm8zLWRlZXAtcmVzZWFyY2hcIixcImRlc2NyaXB0aW9uXCI6XCJSZXNlYXJjaCBtb2RlbCBmb3IgbG9uZy1ob3Jpem9uIGludmVzdGlnYXRpb24sIHN5bnRoZXNpcywgYW5kIGFuYWx5dGljYWwgcmVwb3J0c1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0MCxcImNhY2hlX3JlYWRcIjoyLjV9fSxcImdwdC01LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUtbWluaVwiLFwibmFtZVwiOlwiR1BULTUgTWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIEdQVC01IGZvciByZXNwb25zaXZlIGFnZW50cywgY29kaW5nIGhlbHAsIGFuZCBldmVyeWRheSBhdXRvbWF0aW9uXCIsXCJmYW1pbHlcIjpcImdwdC1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1pbmltYWxcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoyLFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJncHQtaW1hZ2UtMVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMVwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTFcIixcImRlc2NyaXB0aW9uXCI6XCJPcGVuQUkgaW1hZ2UgbW9kZWwgZm9yIHByb2R1Y3Rpb24gZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBicmFuZC1zYWZlIHZpc3VhbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTI0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMjRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1taW5pXCI6e1wiaWRcIjpcImdwdC00LjEtbWluaVwiLFwibmFtZVwiOlwiR1BULTQuMSBtaW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiQWZmb3JkYWJsZSBHUFQtNC4xIGxhbmUgZm9yIGZhc3QgY29kaW5nIGhlbHAgYW5kIHN0cnVjdHVyZWQgZXh0cmFjdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDRcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjQsXCJvdXRwdXRcIjoxLjYsXCJjYWNoZV9yZWFkXCI6MC4xfX0sXCJncHQtNC10dXJib1wiOntcImlkXCI6XCJncHQtNC10dXJib1wiLFwibmFtZVwiOlwiR1BULTQgVHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTEyXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjMtMTEtMDZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNC0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjMwfX0sXCJncHQtaW1hZ2UtMS1taW5pXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLW1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUtbmFub1wiOntcImlkXCI6XCJncHQtNS1uYW5vXCIsXCJuYW1lXCI6XCJHUFQtNSBOYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNSBsYW5lIGZvciByb3V0aW5nLCBleHRyYWN0aW9uLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGJ1bGsgam9ic1wiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA1LFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDA1fX0sXCJncHQtNS40LXByb1wiOntcImlkXCI6XCJncHQtNS40LXByb1wiLFwibmFtZVwiOlwiR1BULTUuNCBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJNb3JlIGV4YWN0IEdQVC01LjQgdGllciBmb3IgZGVtYW5kaW5nIHByb2Zlc3Npb25hbCByZWFzb25pbmcgYW5kIGFnZW50IHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMwLFwib3V0cHV0XCI6MTgwLFwidGllcnNcIjpbe1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwfX19LFwiZ3B0LTUuNS1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNS1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVzdC1hY2N1cmFjeSBHUFQtNS41IHRpZXIgZm9yIHNsb3dlciwgcHJlY2lzaW9uLWhlYXZ5IHJlYXNvbmluZyBhbmQgY29kaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC00by1taW5pXCI6e1wiaWRcIjpcImdwdC00by1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNG8gbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsIG9tbmkgR1BUIGZvciBjaGVhcCBtdWx0aW1vZGFsIGFzc2lzdGFuY2UgYW5kIHByb2R1Y3Rpb24tc2NhbGUgdHJhZmZpY1wiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNy0xOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA3LTE4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTUsXCJvdXRwdXRcIjowLjYsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC01LjYtc29sXCI6e1wiaWRcIjpcImdwdC01LjYtc29sXCIsXCJuYW1lXCI6XCJHUFQtNS42IFNvbFwiLFwiZGVzY3JpcHRpb25cIjpcIkZyb250aWVyIEdQVC01LjYgbW9kZWwgZm9yIGNvbXBsZXggcHJvZmVzc2lvbmFsIHdvcmssIGNvZGluZywgYW5kIGFnZW50aWMgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1zb2xcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCIsXCJtYXhcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI2LTAyLTE2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo2MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fSxcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInNlcnZpY2VfdGllclwiOlwicHJpb3JpdHlcIn19fSxcInByb1wiOntcInByb3ZpZGVyXCI6e1wiYm9keVwiOntcInJlYXNvbmluZ1wiOntcIm1vZGVcIjpcInByb1wifX19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjMwLFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo0NSxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX19LFwiZ3B0LTUtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LUNvZGV4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMiBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGUtc3BlY2lhbGlzdCBHUFQgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBsb25nLXJ1bm5pbmcgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjc1LFwib3V0cHV0XCI6MTQsXCJjYWNoZV9yZWFkXCI6MC4xNzV9fSxcImdwdC1pbWFnZS0yXCI6e1wiaWRcIjpcImdwdC1pbWFnZS0yXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMlwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtaW1hZ2VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjAsXCJpbnB1dFwiOjAsXCJvdXRwdXRcIjowfSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjoxLjI1fX0sXCJncHQtNS4xXCI6e1wiaWRcIjpcImdwdC01LjFcIixcIm5hbWVcIjpcIkdQVC01LjFcIixcImRlc2NyaXB0aW9uXCI6XCJTaGFycGVyIEdQVC01IGdlbmVyYXRpb24gZm9yIGNvZGluZywgcHJvZHVjdCB3b3JrLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMTNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS41XCI6e1wiaWRcIjpcImdwdC01LjVcIixcIm5hbWVcIjpcIkdQVC01LjVcIixcImRlc2NyaXB0aW9uXCI6XCJEZWZhdWx0IGZyb250aWVyIEdQVCBmb3IgY29kaW5nLCBjb21wdXRlciB1c2UsIHJlc2VhcmNoLCBhbmQga25vd2xlZGdlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMTItMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0yM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTIzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMi41LFwib3V0cHV0XCI6NzUsXCJjYWNoZV9yZWFkXCI6MS4yNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MX19fX19LFwieGFpXCI6e1wibW9kZWxzXCI6e1wiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLW11bHRpLWFnZW50LTAzMDlcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCBNdWx0aS1BZ2VudFwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4yMC0wMzA5LW5vbi1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktbm9uLXJlYXNvbmluZ1wiLFwibmFtZVwiOlwiR3JvayA0LjIwIChOb24tUmVhc29uaW5nKVwiLFwiZGVzY3JpcHRpb25cIjpcIkdyb2sgbW9kZWwgZm9yIGFnZW50aWMgdG9vbCB1c2UsIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbGl2ZSBhc3Npc3RhbmNlXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay00LjNcIjp7XCJpZFwiOlwiZ3Jvay00LjNcIixcIm5hbWVcIjpcIkdyb2sgNC4zXCIsXCJkZXNjcmlwdGlvblwiOlwieEFJJ3MgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2UtcXVhbGl0eVwiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIEltYWdlIFF1YWxpdHlcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLWltYWdpbmUtdmlkZW9cIjp7XCJpZFwiOlwiZ3Jvay1pbWFnaW5lLXZpZGVvXCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgVmlkZW9cIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAxLTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInZpZGVvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAyNCxcIm91dHB1dFwiOjB9fSxcImdyb2stNC41XCI6e1wiaWRcIjpcImdyb2stNC41XCIsXCJuYW1lXCI6XCJHcm9rIDQuNVwiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIGxhdGVzdCBHcm9rIGZvciBjaGF0LCBjb2RpbmcsIGFnZW50aWMgdG9vbHMsIGFuZCBsb3dlciBoYWxsdWNpbmF0aW9uIHJpc2tcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNy0wOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA3LTA4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjUwMDAwMCxcIm91dHB1dFwiOjUwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6NixcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NCxcIm91dHB1dFwiOjEyLFwiY2FjaGVfcmVhZFwiOjF9fX0sXCJncm9rLTQuMjAtMDMwOS1yZWFzb25pbmdcIjp7XCJpZFwiOlwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgKFJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJSZWFzb25pbmcgR3JvayBmb3IgZG9jdW1lbnQtaGVhdnkgYW5hbHlzaXMgYW5kIGxvbmctaG9yaXpvbiB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2staW1hZ2luZS1pbWFnZVwiOntcImlkXCI6XCJncm9rLWltYWdpbmUtaW1hZ2VcIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBJbWFnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkltYWdlIG1vZGVsIGZvciBwcm9tcHQtZHJpdmVuIGdlbmVyYXRpb24sIGVkaXRpbmcsIGFuZCB2aXN1YWwgZGVzaWduIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAxLTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDEtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJpbWFnZVwiLFwicGRmXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODAwMCxcIm91dHB1dFwiOjB9fSxcImdyb2stYnVpbGQtMC4xXCI6e1wiaWRcIjpcImdyb2stYnVpbGQtMC4xXCIsXCJuYW1lXCI6XCJHcm9rIEJ1aWxkIDAuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR3JvayBjb2RpbmcgbW9kZWwgdHVuZWQgZm9yIGFnZW50aWMgZW5naW5lZXJpbmcgYW5kIGl0ZXJhdGl2ZSBlZGl0c1wiLFwiZmFtaWx5XCI6XCJncm9rLWJ1aWxkXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI1NjAwMCxcIm91dHB1dFwiOjI1NjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo0LFwiY2FjaGVfcmVhZFwiOjAuNH19fX19fSIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCBzbmFwc2hvdCBmcm9tICcuL2NhdGFsb2ctc25hcHNob3QuanNvbicgd2l0aCB7IHR5cGU6ICdqc29uJyB9XG5cbmNvbnN0IENBVEFMT0dfVVJMID0gJ2h0dHBzOi8vbW9kZWxzLmRldi9hcGkuanNvbidcbmNvbnN0IFNVUFBPUlRFRCA9IFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ11cbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5mdW5jdGlvbiBzdWJzZXQoZGF0YSkge1xuICBjb25zdCBvdXQgPSB7fVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIFNVUFBPUlRFRCkge1xuICAgIGlmIChkYXRhW3Byb3ZpZGVyXT8ubW9kZWxzKSBvdXRbcHJvdmlkZXJdID0geyBtb2RlbHM6IGRhdGFbcHJvdmlkZXJdLm1vZGVscyB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkQ2FjaGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaGVyKENBVEFMT0dfVVJMKVxuICBpZiAoIXJlc3BvbnNlLm9rKSB0aHJvdyBuZXcgRXJyb3IoYGNhdGFsb2cgZmV0Y2ggZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICBjb25zdCBwcm92aWRlcnMgPSBzdWJzZXQoYXdhaXQgcmVzcG9uc2UuanNvbigpKVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGNhY2hlRmlsZSgpLCBKU09OLnN0cmluZ2lmeSh7IGF0OiBEYXRlLm5vdygpLCBwcm92aWRlcnMgfSkpXG4gIHJldHVybiBwcm92aWRlcnNcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDYXRhbG9nKHsgZmV0Y2hlciA9IGZldGNoIH0gPSB7fSkge1xuICBjb25zdCBjYWNoZWQgPSBhd2FpdCByZWFkQ2FjaGUoKVxuICBpZiAoY2FjaGVkICYmIERhdGUubm93KCkgLSBjYWNoZWQuYXQgPCBUVEwpIHJldHVybiBjYWNoZWQucHJvdmlkZXJzXG4gIHJlZnJlc2hDYXRhbG9nKHsgZmV0Y2hlciB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgcmV0dXJuIGNhY2hlZD8ucHJvdmlkZXJzIHx8IHNuYXBzaG90XG59XG5cbmNvbnN0IHRleHRNb2RlbCA9IChtKSA9PlxuICBtLnRvb2xfY2FsbCA9PT0gdHJ1ZSAmJlxuICAoIW0ubW9kYWxpdGllcyB8fCAobS5tb2RhbGl0aWVzLmlucHV0Py5pbmNsdWRlcygndGV4dCcpICYmIG0ubW9kYWxpdGllcy5vdXRwdXQ/LmluY2x1ZGVzKCd0ZXh0JykpKVxuXG5jb25zdCBkYXRlZER1cGxpY2F0ZSA9IChpZCkgPT4gLy1cXGR7OH0kLy50ZXN0KGlkKVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdE1vZGVscyhwcm92aWRlcnMsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG9yZGVyID0gU1VQUE9SVEVELmZpbHRlcigocCkgPT4gcHJvdmlkZXJJZHMuaW5jbHVkZXMocCkpXG4gIGNvbnN0IG1vZGVscyA9IFtdXG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2Ygb3JkZXIpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMocHJvdmlkZXJzW3Byb3ZpZGVyXT8ubW9kZWxzIHx8IHt9KVxuICAgICAgLmZpbHRlcigoW2lkLCBtXSkgPT4gdGV4dE1vZGVsKG0pICYmICFkYXRlZER1cGxpY2F0ZShpZCkpXG4gICAgICAuc29ydCgoYSwgYikgPT4gU3RyaW5nKGJbMV0ucmVsZWFzZV9kYXRlIHx8ICcnKS5sb2NhbGVDb21wYXJlKFN0cmluZyhhWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykpKVxuICAgIGZvciAoY29uc3QgW2lkLCBtXSBvZiBlbnRyaWVzKSB7XG4gICAgICBtb2RlbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGAke3Byb3ZpZGVyfS8ke2lkfWAsXG4gICAgICAgIHByb3ZpZGVyLFxuICAgICAgICBkZXNjOiBtLmRlc2NyaXB0aW9uIHx8IG0ubmFtZSB8fCBpZCxcbiAgICAgICAgcHJpY2U6IG0uY29zdCAmJiBtLmNvc3QuaW5wdXQgIT0gbnVsbCA/IHsgaW46IG0uY29zdC5pbnB1dCwgb3V0OiBtLmNvc3Qub3V0cHV0IH0gOiBudWxsLFxuICAgICAgICBlZmZvcnQ6ICEhbS5yZWFzb25pbmcsXG4gICAgICAgIC8vIHRoZSBtZWFzdXJlZCBmaWxsIG51bWJlciBpcyBpbnB1dCB0b2tlbnMsIHNvIHByZWZlciB0aGUgaW5wdXQgbGltaXRcbiAgICAgICAgLy8gYXMgdGhlIGRlbm9taW5hdG9yIHdoZXJlIHRoZSBwcm92aWRlciBkaXN0aW5ndWlzaGVzIGl0XG4gICAgICAgIGNvbnRleHQ6IG0ubGltaXQ/LmlucHV0IHx8IG0ubGltaXQ/LmNvbnRleHQgfHwgbnVsbCxcbiAgICAgIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RlbHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJJZHMpIHtcbiAgY29uc3QgbWF0Y2ggPSBuYW1lLm1hdGNoKC9eKFthLXowLTktXSspXFwvKC4rKSQvKVxuICBpZiAoIW1hdGNoIHx8ICFwcm92aWRlcklkcy5pbmNsdWRlcyhtYXRjaFsxXSkpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBwcm92aWRlcjogbWF0Y2hbMV0sXG4gICAgZGVzYzogJ25vdCBpbiBjYXRhbG9nJyxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IGZhbHNlLFxuICAgIGNvbnRleHQ6IG51bGwsXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuLy8gdGhlIGJhY2tlbmQgaGlkZXMgbW9kZWxzIGZyb20gY2xpZW50cyBiZWxvdyBhIHZlcnNpb24gZmxvb3IsIHNvIHNlbmQgYVxuLy8gdmVyc2lvbiBjb21mb3J0YWJseSBhYm92ZSBpdFxuY29uc3QgTU9ERUxTX1VSTCA9ICdodHRwczovL2NoYXRncHQuY29tL2JhY2tlbmQtYXBpL2NvZGV4L21vZGVscz9jbGllbnRfdmVyc2lvbj0yLjAuMCdcbmNvbnN0IFRUTCA9IDI0ICogNjAgKiA2MCAqIDEwMDBcblxuZnVuY3Rpb24gY2FjaGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29kZXgtbW9kZWxzLWNhY2hlLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwQ29kZXhNb2RlbHMoZW50cmllcykge1xuICByZXR1cm4gZW50cmllcy5tYXAoKG0pID0+ICh7XG4gICAgbmFtZTogYGNvZGV4LyR7bS5zbHVnfWAsXG4gICAgcHJvdmlkZXI6ICdjb2RleCcsXG4gICAgZGVzYzogYCR7bS5kZXNjcmlwdGlvbiB8fCBtLmxhYmVsIHx8IG0uc2x1Z30gXHUwMEI3IHZpYSBDaGF0R1BUIHBsYW5gLFxuICAgIHByaWNlOiBudWxsLFxuICAgIGVmZm9ydDogdHJ1ZSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRfd2luZG93IHx8IG51bGwsXG4gIH0pKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvZGV4TW9kZWxzKGNyZWRlbnRpYWxzKSB7XG4gIGxldCBjYWNoZWQgPSBudWxsXG4gIHRyeSB7XG4gICAgY2FjaGVkID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShjYWNoZUZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge31cbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkLm1vZGVscylcbiAgaWYgKCFjcmVkZW50aWFscykgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZD8ubW9kZWxzIHx8IFtdKVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChNT0RFTFNfVVJMLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjcmVkZW50aWFscy5hcGlLZXl9YCxcbiAgICAgICAgLi4uY3JlZGVudGlhbHMuaGVhZGVycyxcbiAgICAgICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gICAgICB9LFxuICAgIH0pXG4gICAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyZXNwb25zZS5zdGF0dXMpKVxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICBjb25zdCBtb2RlbHMgPSAoZGF0YS5tb2RlbHMgfHwgW10pLm1hcCgobSkgPT4gKHtcbiAgICAgIHNsdWc6IG0uc2x1ZyxcbiAgICAgIGRlc2NyaXB0aW9uOiBtLmRlc2NyaXB0aW9uLFxuICAgICAgbGFiZWw6IG0ubGFiZWwgfHwgbS5kaXNwbGF5X25hbWUsXG4gICAgICBjb250ZXh0X3dpbmRvdzogbS5jb250ZXh0X3dpbmRvdyB8fCBtLm1heF9jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICAgIH0pKVxuICAgIGlmIChtb2RlbHMubGVuZ3RoID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IG1vZGVsIGxpc3QnKVxuICAgIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICAgIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgbW9kZWxzIH0pKVxuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhtb2RlbHMpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNlcnZlciB9IGZyb20gJ25vZGU6aHR0cCdcbmltcG9ydCB7IHJhbmRvbUJ5dGVzLCBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5pbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUsIGNobW9kIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0xJRU5UX0lEID0gJ2FwcF9FTW9hbUVFWjczZjBDa1hhWHA3aHJhbm4nXG5jb25zdCBBVVRIX1VSTCA9ICdodHRwczovL2F1dGgub3BlbmFpLmNvbS9vYXV0aC9hdXRob3JpemUnXG5jb25zdCBUT0tFTl9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvdG9rZW4nXG5jb25zdCBSRURJUkVDVF9QT1JUID0gMTQ1NVxuY29uc3QgUkVESVJFQ1RfVVJJID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfS9hdXRoL2NhbGxiYWNrYFxuY29uc3QgU0NPUEUgPSAnb3BlbmlkIHByb2ZpbGUgZW1haWwgb2ZmbGluZV9hY2Nlc3MnXG5jb25zdCBSRUZSRVNIX1NLRVdfTVMgPSA1ICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGF1dGhGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnYXV0aC5qc29uJylcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cXCsvZywgJy0nKS5yZXBsYWNlKC9cXC8vZywgJ18nKS5yZXBsYWNlKC89KyQvLCAnJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZUp3dENsYWltcyh0b2tlbikge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB0b2tlbi5zcGxpdCgnLicpWzFdXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocGF5bG9hZCwgJ2Jhc2U2NHVybCcpLnRvU3RyaW5nKCd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHtcbiAgcmV0dXJuIGNsYWltc1snaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS9hdXRoJ10/LmNoYXRncHRfYWNjb3VudF9pZCB8fCBjbGFpbXMuY2hhdGdwdF9hY2NvdW50X2lkIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEF1dGgoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoYXV0aEZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQXV0aChhdXRoKSB7XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoYXV0aEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoYXV0aCwgbnVsbCwgMikgKyAnXFxuJylcbiAgYXdhaXQgY2htb2QoYXV0aEZpbGUoKSwgMG82MDApXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRva2VuUmVxdWVzdChwYXJhbXMpIHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChUT0tFTl9VUkwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgIGJvZHk6IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpLFxuICB9KVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB0b2tlbiByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9ICR7YXdhaXQgcmVzcG9uc2UudGV4dCgpfWApXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKVxufVxuXG5mdW5jdGlvbiBzdG9yZVRva2VucyhhdXRoLCB0b2tlbnMpIHtcbiAgY29uc3QgY2xhaW1zID0gdG9rZW5zLmlkX3Rva2VuID8gZGVjb2RlSnd0Q2xhaW1zKHRva2Vucy5pZF90b2tlbikgOiB7fVxuICBhdXRoLm9wZW5haSA9IHtcbiAgICBhY2Nlc3NfdG9rZW46IHRva2Vucy5hY2Nlc3NfdG9rZW4sXG4gICAgcmVmcmVzaF90b2tlbjogdG9rZW5zLnJlZnJlc2hfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4sXG4gICAgaWRfdG9rZW46IHRva2Vucy5pZF90b2tlbiB8fCBhdXRoLm9wZW5haT8uaWRfdG9rZW4sXG4gICAgYWNjb3VudF9pZDogYWNjb3VudElkRnJvbUNsYWltcyhjbGFpbXMpIHx8IGF1dGgub3BlbmFpPy5hY2NvdW50X2lkIHx8IG51bGwsXG4gICAgZW1haWw6IGNsYWltcy5lbWFpbCB8fCBhdXRoLm9wZW5haT8uZW1haWwgfHwgbnVsbCxcbiAgICBleHBpcmVzX2F0OiBEYXRlLm5vdygpICsgKHRva2Vucy5leHBpcmVzX2luIHx8IDM2MDApICogMTAwMCxcbiAgfVxuICByZXR1cm4gYXV0aFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdE9wZW5BSSh7IG9wZW5Ccm93c2VyID0gdHJ1ZSwgdGltZW91dE1zID0gNSAqIDYwICogMTAwMCwgb25VcmwgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgdmVyaWZpZXIgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoNjQpKVxuICBjb25zdCBjaGFsbGVuZ2UgPSBiYXNlNjR1cmwoY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKHZlcmlmaWVyKS5kaWdlc3QoKSlcbiAgY29uc3Qgc3RhdGUgPSBiYXNlNjR1cmwocmFuZG9tQnl0ZXMoMjQpKVxuXG4gIGNvbnN0IHVybCA9IGAke0FVVEhfVVJMfT8ke25ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgIHJlc3BvbnNlX3R5cGU6ICdjb2RlJyxcbiAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICByZWRpcmVjdF91cmk6IFJFRElSRUNUX1VSSSxcbiAgICBzY29wZTogU0NPUEUsXG4gICAgY29kZV9jaGFsbGVuZ2U6IGNoYWxsZW5nZSxcbiAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q6ICdTMjU2JyxcbiAgICBzdGF0ZSxcbiAgICBwcm9tcHQ6ICdsb2dpbicsXG4gICAgaWRfdG9rZW5fYWRkX29yZ2FuaXphdGlvbnM6ICd0cnVlJyxcbiAgICBjb2RleF9jbGlfc2ltcGxpZmllZF9mbG93OiAndHJ1ZScsXG4gICAgb3JpZ2luYXRvcjogJ2NvZGV4X2NsaV9ycycsXG4gIH0pLnRvU3RyaW5nKCl9YFxuXG4gIGNvbnN0IGNvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgc2VydmVyID0gY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgY29uc3QgcmVxdWVzdFVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtSRURJUkVDVF9QT1JUfWApXG4gICAgICBpZiAocmVxdWVzdFVybC5wYXRobmFtZSAhPT0gJy9hdXRoL2NhbGxiYWNrJykge1xuICAgICAgICByZXMud3JpdGVIZWFkKDQwNCkuZW5kKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBnb3RTdGF0ZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKVxuICAgICAgY29uc3QgZ290Q29kZSA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpXG4gICAgICBjb25zdCBnb3RFcnJvciA9IHJlcXVlc3RVcmwuc2VhcmNoUGFyYW1zLmdldCgnZXJyb3InKVxuICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWwnIH0pXG4gICAgICByZXMuZW5kKFxuICAgICAgICBnb3RDb2RlICYmIGdvdFN0YXRlID09PSBzdGF0ZVxuICAgICAgICAgID8gJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduZWQgaW4gLSB5b3UgY2FuIHJldHVybiB0byBwaWNvPC9ib2R5PjwvaHRtbD4nXG4gICAgICAgICAgOiAnPGh0bWw+PGJvZHkgc3R5bGU9XCJmb250LWZhbWlseTogc2Fucy1zZXJpZjsgcGFkZGluZzogMnJlbVwiPnNpZ24taW4gZmFpbGVkIC0gcmV0dXJuIHRvIHBpY28gYW5kIHRyeSBhZ2FpbjwvYm9keT48L2h0bWw+JyxcbiAgICAgIClcbiAgICAgIGNsZWFudXAoKVxuICAgICAgaWYgKGdvdEVycm9yKSByZWplY3QobmV3IEVycm9yKGBhdXRob3JpemF0aW9uIGZhaWxlZDogJHtnb3RFcnJvcn1gKSlcbiAgICAgIGVsc2UgaWYgKCFnb3RDb2RlIHx8IGdvdFN0YXRlICE9PSBzdGF0ZSkgcmVqZWN0KG5ldyBFcnJvcignYXV0aG9yaXphdGlvbiBmYWlsZWQ6IG1pc3NpbmcgY29kZSBvciBzdGF0ZSBtaXNtYXRjaCcpKVxuICAgICAgZWxzZSByZXNvbHZlKGdvdENvZGUpXG4gICAgfSlcblxuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3NpZ24taW4gdGltZWQgb3V0JykpXG4gICAgfSwgdGltZW91dE1zKVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHNlcnZlci5jbG9zZSgpXG4gICAgfVxuXG4gICAgc2VydmVyLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIGNsZWFudXAoKVxuICAgICAgcmVqZWN0KGVyci5jb2RlID09PSAnRUFERFJJTlVTRScgPyBuZXcgRXJyb3IoYHBvcnQgJHtSRURJUkVDVF9QT1JUfSBpcyBpbiB1c2UgKGlzIGFub3RoZXIgc2lnbi1pbiBvciBjb2RleCBydW5uaW5nPylgKSA6IGVycilcbiAgICB9KVxuICAgIHNlcnZlci5saXN0ZW4oUkVESVJFQ1RfUE9SVCwgJzEyNy4wLjAuMScsICgpID0+IHtcbiAgICAgIG9uVXJsKHVybClcbiAgICAgIGlmIChvcGVuQnJvd3NlcikgZXhlY0ZpbGUoJ29wZW4nLCBbdXJsXSwgKCkgPT4ge30pXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgIGdyYW50X3R5cGU6ICdhdXRob3JpemF0aW9uX2NvZGUnLFxuICAgIGNvZGUsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgY29kZV92ZXJpZmllcjogdmVyaWZpZXIsXG4gIH0pXG5cbiAgY29uc3QgYXV0aCA9IHN0b3JlVG9rZW5zKGF3YWl0IHJlYWRBdXRoKCksIHRva2VucylcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG4gIHJldHVybiB7IGVtYWlsOiBhdXRoLm9wZW5haS5lbWFpbCwgYWNjb3VudElkOiBhdXRoLm9wZW5haS5hY2NvdW50X2lkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNyZWRlbnRpYWxzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBjb25zdCBzdG9yZWQgPSBhdXRoLm9wZW5haVxuICBpZiAoIXN0b3JlZD8uYWNjZXNzX3Rva2VuKSByZXR1cm4gbnVsbFxuXG4gIGlmIChEYXRlLm5vdygpID4gKHN0b3JlZC5leHBpcmVzX2F0IHx8IDApIC0gUkVGUkVTSF9TS0VXX01TKSB7XG4gICAgaWYgKCFzdG9yZWQucmVmcmVzaF90b2tlbikgcmV0dXJuIG51bGxcbiAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0b2tlblJlcXVlc3Qoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgcmVmcmVzaF90b2tlbjogc3RvcmVkLnJlZnJlc2hfdG9rZW4sXG4gICAgICBjbGllbnRfaWQ6IENMSUVOVF9JRCxcbiAgICAgIHNjb3BlOiAnb3BlbmlkIHByb2ZpbGUgZW1haWwnLFxuICAgIH0pXG4gICAgY29uc3QgcmVmcmVzaGVkID0gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKVxuICAgIGF3YWl0IHdyaXRlQXV0aChyZWZyZXNoZWQpXG4gICAgcmV0dXJuIGNyZWRlbnRpYWxzRnJvbShyZWZyZXNoZWQub3BlbmFpKVxuICB9XG4gIHJldHVybiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKVxufVxuXG5mdW5jdGlvbiBjcmVkZW50aWFsc0Zyb20oc3RvcmVkKSB7XG4gIHJldHVybiB7XG4gICAgYXBpS2V5OiBzdG9yZWQuYWNjZXNzX3Rva2VuLFxuICAgIGhlYWRlcnM6IHN0b3JlZC5hY2NvdW50X2lkID8geyAnY2hhdGdwdC1hY2NvdW50LWlkJzogc3RvcmVkLmFjY291bnRfaWQgfSA6IHt9LFxuICAgIGVtYWlsOiBzdG9yZWQuZW1haWwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW5haUNvbm5lY3RlZCgpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgcmV0dXJuICEhKGF1dGgub3BlbmFpPy5hY2Nlc3NfdG9rZW4gJiYgYXV0aC5vcGVuYWk/LnJlZnJlc2hfdG9rZW4pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlTdGF0dXMoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiB7XG4gICAgY29ubmVjdGVkOiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKSxcbiAgICBlbWFpbDogYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRpc2Nvbm5lY3RPcGVuQUkoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIGRlbGV0ZSBhdXRoLm9wZW5haVxuICBhd2FpdCB3cml0ZUF1dGgoYXV0aClcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gY29uZmlnRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbmZpZy5qc29uJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25maWcoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY29uZmlnRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWcoYmFzZSwgcGF0Y2gpIHtcbiAgY29uc3QgcmVzdWx0ID0geyAuLi5iYXNlIH1cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGF0Y2gpKSB7XG4gICAgcmVzdWx0W2tleV0gPSB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyBtZXJnZUNvbmZpZyhiYXNlW2tleV0gJiYgdHlwZW9mIGJhc2Vba2V5XSA9PT0gJ29iamVjdCcgPyBiYXNlW2tleV0gOiB7fSwgdmFsdWUpXG4gICAgICA6IHZhbHVlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVDb25maWcocGF0Y2gpIHtcbiAgY29uc3QgY29uZmlnID0gbWVyZ2VDb25maWcoYXdhaXQgcmVhZENvbmZpZygpLCBwYXRjaClcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjb25maWdGaWxlKCksIEpTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMikgKyAnXFxuJylcbiAgcmV0dXJuIGNvbmZpZ1xufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxBZ2VudHNGaWxlIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZnVuY3Rpb24gcmVhZElmRXhpc3RzKHBhdGgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXhpc3RzU3luYyhwYXRoKSA/IHJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSA6IG51bGxcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dFN0b3BEaXIoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSB8fCBkaXIgPT09IGhvbWUpIHJldHVybiBkaXJcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiBhbmNlc3RvckRpcnMoY3dkLCBzdG9wRGlyKSB7XG4gIGNvbnN0IGRpcnMgPSBbXVxuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgZGlycy51bnNoaWZ0KGRpcilcbiAgICBpZiAoZGlyID09PSBzdG9wRGlyKSBicmVha1xuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgYnJlYWtcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxuICByZXR1cm4gZGlyc1xufVxuXG4vLyBBR0VOVFMubWQgaXMgY2Fub25pY2FsOyBDTEFVREUubWQgaXMgaG9ub3JlZCBwZXIgZGlyZWN0b3J5IG9ubHkgd2hlbiBub1xuLy8gQUdFTlRTLm1kIGV4aXN0cyB0aGVyZSwgc28gcmVwb3MgZG9jdW1lbnRlZCBmb3Igb3RoZXIgYWdlbnRzIHN0aWxsIHdvcmsuXG4vLyB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGU6IHRoYXQgaXMgfi8ucGljby9BR0VOVFMubWRcbi8vIGFsb25lLCBhbmQgcGVyc29uYWwgZmlsZXMgbGlrZSB+Ly5jbGF1ZGUvQ0xBVURFLm1kIGFyZSBhbm90aGVyIHRvb2wnc1xuZnVuY3Rpb24gcmVhZERpckNvbnRleHQoZGlyKSB7XG4gIGNvbnN0IGFnZW50cyA9IGpvaW4oZGlyLCAnQUdFTlRTLm1kJylcbiAgY29uc3QgYWdlbnRzQ29udGVudCA9IHJlYWRJZkV4aXN0cyhhZ2VudHMpXG4gIGlmIChhZ2VudHNDb250ZW50KSByZXR1cm4geyBwYXRoOiBhZ2VudHMsIGNvbnRlbnQ6IGFnZW50c0NvbnRlbnQgfVxuICBjb25zdCBjbGF1ZGUgPSBqb2luKGRpciwgJ0NMQVVERS5tZCcpXG4gIGNvbnN0IGNsYXVkZUNvbnRlbnQgPSByZWFkSWZFeGlzdHMoY2xhdWRlKVxuICBpZiAoY2xhdWRlQ29udGVudCkgcmV0dXJuIHsgcGF0aDogY2xhdWRlLCBjb250ZW50OiBjbGF1ZGVDb250ZW50IH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdGFydHVwQ29udGV4dChjd2QpIHtcbiAgY29uc3Qgc3RvcERpciA9IGNvbnRleHRTdG9wRGlyKGN3ZClcbiAgY29uc3QgZmlsZXMgPSBbXVxuICBjb25zdCBnbG9iYWxDb250ZW50ID0gcmVhZElmRXhpc3RzKGdsb2JhbEFnZW50c0ZpbGUoKSlcbiAgaWYgKGdsb2JhbENvbnRlbnQpIGZpbGVzLnB1c2goeyBwYXRoOiBnbG9iYWxBZ2VudHNGaWxlKCksIGNvbnRlbnQ6IGdsb2JhbENvbnRlbnQgfSlcbiAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKGN3ZCwgc3RvcERpcikpIHtcbiAgICBjb25zdCBlbnRyeSA9IHJlYWREaXJDb250ZXh0KGRpcilcbiAgICBpZiAoZW50cnkpIGZpbGVzLnB1c2goZW50cnkpXG4gIH1cbiAgcmV0dXJuIHsgZmlsZXMsIHN0b3BEaXIgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29udGV4dFRyYWNrZXIoeyBzdG9wRGlyLCBsb2FkZWQgfSkge1xuICByZXR1cm4ge1xuICAgIGxvYWRlZCxcbiAgICBjaGVjayhmaWxlUGF0aCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZGlybmFtZShyZXNvbHZlKGZpbGVQYXRoKSlcbiAgICAgIGlmICghdGFyZ2V0LnN0YXJ0c1dpdGgoc3RvcERpcikpIHJldHVybiBbXVxuICAgICAgY29uc3QgZnJlc2ggPSBbXVxuICAgICAgZm9yIChjb25zdCBkaXIgb2YgYW5jZXN0b3JEaXJzKHRhcmdldCwgc3RvcERpcikpIHtcbiAgICAgICAgaWYgKGxvYWRlZC5oYXMoam9pbihkaXIsICdBR0VOVFMubWQnKSkgfHwgbG9hZGVkLmhhcyhqb2luKGRpciwgJ0NMQVVERS5tZCcpKSkgY29udGludWVcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWFkRGlyQ29udGV4dChkaXIpXG4gICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgIGxvYWRlZC5hZGQoZW50cnkucGF0aClcbiAgICAgICAgICBmcmVzaC5wdXNoKGVudHJ5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZnJlc2hcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IGdsb2JhbFNraWxsc0RpciwgcHJvamVjdFNraWxsc0RpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUZyb250bWF0dGVyKHRleHQpIHtcbiAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eLS0tXFxuKFtcXHNcXFNdKj8pXFxuLS0tXFxuPy8pXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IG1ldGE6IHt9LCBib2R5OiB0ZXh0IH1cbiAgY29uc3QgbWV0YSA9IHt9XG4gIGZvciAoY29uc3QgbGluZSBvZiBtYXRjaFsxXS5zcGxpdCgnXFxuJykpIHtcbiAgICBjb25zdCBzZXAgPSBsaW5lLmluZGV4T2YoJzonKVxuICAgIGlmIChzZXAgPT09IC0xKSBjb250aW51ZVxuICAgIG1ldGFbbGluZS5zbGljZSgwLCBzZXApLnRyaW0oKV0gPSBsaW5lLnNsaWNlKHNlcCArIDEpLnRyaW0oKVxuICB9XG4gIHJldHVybiB7IG1ldGEsIGJvZHk6IHRleHQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3Qgc2tpbGxzID0gW11cbiAgZm9yIChjb25zdCBlbnRyeSBvZiBuYW1lcykge1xuICAgIGlmICghZW50cnkuaXNEaXJlY3RvcnkoKSkgY29udGludWVcbiAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGVudHJ5Lm5hbWUsICdTS0lMTC5tZCcpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgICAgIHNraWxscy5wdXNoKHtcbiAgICAgICAgbmFtZTogbWV0YS5uYW1lIHx8IGVudHJ5Lm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGUsXG4gICAgICB9KVxuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gc2tpbGxzXG59XG5cbmNvbnN0IEFTS19SVUxFID0gYEJlZm9yZSB3cml0aW5nIGFueXRoaW5nLCByZXNvbHZlIGFtYmlndWl0eTpcbi0gSWYgdGhlIHVzZXIgZGlkIG5vdCBzYXkgZ2xvYmFsIG9yIHByb2plY3QsIGFzayBleGFjdGx5IG9uZSBxdWVzdGlvbjogXCJnbG9iYWwgKGF2YWlsYWJsZSBldmVyeXdoZXJlKSBvciBqdXN0IHRoaXMgcHJvamVjdD9cIiBEbyBub3QgZ3Vlc3Mgc2lsZW50bHkuXG4tIElmIHRoZSBiZWhhdmlvciBvciBvdXRwdXQgaXMgdW5kZXJzcGVjaWZpZWQsIHN0YXRlIHRoZSBhc3N1bXB0aW9ucyB5b3UgYXJlIG1ha2luZyBpbiBvbmUgc2hvcnQgbGluZSBiZWZvcmUgcHJvY2VlZGluZywgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgeW91LmBcblxuY29uc3QgTkVXX1RPT0xfU0tJTEwgPSBgQ3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgcGljbyB0b29sIGlzIGFuIEVTIG1vZHVsZSB3aG9zZSBkZWZhdWx0IGV4cG9ydCBpcyBlaXRoZXIgYSB0b29sIG9iamVjdCBvciBhIGZhY3RvcnlcblxcYChjb250ZXh0KSA9PiB0b29sXFxgIHdoZXJlIGNvbnRleHQgaXMgXFxgeyBjd2QsIHJvb3QgfVxcYC4gVGhlIHRvb2wgb2JqZWN0IHNoYXBlOlxuXG5cXGBcXGBcXGBqc1xuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnd29yZF9jb3VudCcsXG4gIGRlc2NyaXB0aW9uOiAnQ291bnQgd29yZHMsIGxpbmVzLCBhbmQgY2hhcmFjdGVycyBpbiBhIGZpbGUnLFxuICBzY2hlbWE6IHtcbiAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknIH0sXG4gICAgd29yZHM6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ2luY2x1ZGUgd29yZCBjb3VudCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gIH0sXG4gIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIHdvcmRzID0gdHJ1ZSB9KSA9PiB7XG4gICAgLy8gcmV0dXJuIGFueSBKU09OLXNlcmlhbGl6YWJsZSB2YWx1ZTsgdGhyb3cgYW4gRXJyb3IgdG8gcmVwb3J0IGZhaWx1cmVcbiAgICByZXR1cm4geyBwYXRoLCB3b3JkczogNDIgfVxuICB9LFxufVxuXFxgXFxgXFxgXG5cblNjaGVtYSBwcm9wZXJ0aWVzIHN1cHBvcnQ6IHR5cGUgKHN0cmluZywgbnVtYmVyLCBib29sZWFuLCBhcnJheSwgb2JqZWN0KSwgZGVzY3JpcHRpb24sXG5vcHRpb25hbCwgZW51bSAoc3RyaW5nIHZhbHVlcyksIGl0ZW1zIChmb3IgYXJyYXlzKSwgcHJvcGVydGllcyAoZm9yIG5lc3RlZCBvYmplY3RzKS5cblxuTG9jYXRpb25zOiBcXGAucGljby90b29scy88bmFtZT4uanNcXGAgaW4gdGhlIHByb2plY3Qgcm9vdCBmb3IgcHJvamVjdCB0b29scyxcblxcYH4vLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgIGZvciB0b29scyBhdmFpbGFibGUgZXZlcnl3aGVyZS4gRGVmYXVsdCB0byB0aGUgcHJvamVjdCB1bmxlc3NcbnRoZSB1c2VyIGFza3MgZm9yIGEgZ2xvYmFsIHRvb2wuIE5vZGUgYnVpbHRpbnMgY2FuIGJlIGltcG9ydGVkOyBucG0gcGFja2FnZXMgY2Fubm90IGJlXG5hc3N1bWVkLiBUb29scyBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGEgbmV3IG9yIGVkaXRlZCB0b29sIGlzIHVzYWJsZSBvbiB0aGUgbmV4dFxubWVzc2FnZSB3aXRoIG5vIHJlc3RhcnQuXG5cblN0ZXBzOlxuMS4gRGVjaWRlIHRoZSB0b29sIG5hbWUgKHNuYWtlX2Nhc2UpLCBpbnB1dHMsIGFuZCBvdXRwdXQgc2hhcGUgZnJvbSB0aGUgdXNlcidzIHJlcXVlc3QuXG4yLiBXcml0ZSB0aGUgbW9kdWxlIHRvIHRoZSByaWdodCBsb2NhdGlvbiB3aXRoIHRoZSB3cml0ZSB0b29sLlxuMy4gU2FuaXR5LWNoZWNrIGl0IGxvYWRzOiBcXGBub2RlIC0taW5wdXQtdHlwZT1tb2R1bGUgLWUgXCJjb25zdCB0ID0gKGF3YWl0IGltcG9ydCgnZmlsZTovLzxhYnMgcGF0aD4nKSkuZGVmYXVsdDsgY29uc29sZS5sb2codC5uYW1lKVwiXFxgIChhZGp1c3QgaWYgdGhlIGV4cG9ydCBpcyBhIGZhY3RvcnkpLlxuNC4gVGVsbCB0aGUgdXNlciB0aGUgdG9vbCBpcyByZWFkeSBhbmQgd2lsbCBiZSBhdmFpbGFibGUgZnJvbSB0aGVpciBuZXh0IG1lc3NhZ2UuYFxuXG5jb25zdCBORVdfU0tJTExfU0tJTEwgPSBgQ3JlYXRlIGEgcGljbyBza2lsbCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgc2tpbGwgaXMgYSBtYXJrZG93biBmaWxlIGF0IFxcYC5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgKGdsb2JhbCkgd2l0aCBmcm9udG1hdHRlciBhbmQgYW4gaW5zdHJ1Y3Rpb24gYm9keTpcblxuXFxgXFxgXFxgXG4tLS1cbm5hbWU6IHJlbGVhc2Utbm90ZXNcbmRlc2NyaXB0aW9uOiBkcmFmdCByZWxlYXNlIG5vdGVzIGZyb20gY29tbWl0cyBzaW5jZSB0aGUgbGFzdCB0YWdcbi0tLVxuSW5zdHJ1Y3Rpb25zIHRoZSBhZ2VudCBmb2xsb3dzIHdoZW4gdGhpcyBza2lsbCBpcyBsb2FkZWQuIEJlIGltcGVyYXRpdmUgYW5kIHNwZWNpZmljLlxuXFxgXFxgXFxgXG5cblRoZSBkZXNjcmlwdGlvbiBtYXR0ZXJzIG1vc3Q6IGl0IGlzIGxpc3RlZCBpbiB0aGUgYWdlbnQncyBzeXN0ZW0gcHJvbXB0LCBhbmQgdGhlIGFnZW50XG5kZWNpZGVzIGZyb20gaXQgd2hlbiB0byBsb2FkIHRoZSBza2lsbCBvbiBpdHMgb3duLiBXcml0ZSBpdCBhcyBhIHRyaWdnZXIgY29uZGl0aW9uXG4oXCJ3aGVuIHRoZSB1c2VyIGFza3MgZm9yIFhcIiksIG5vdCBtYXJrZXRpbmcuIFRoZSBib2R5IGlzIG9ubHkgbG9hZGVkIG9uIGludm9jYXRpb24sIHNvXG5pdCBjYW4gYmUgbG9uZyBhbmQgZGV0YWlsZWQuIFN1cHBvcnRpbmcgZmlsZXMgbWF5IHNpdCBuZXh0IHRvIFNLSUxMLm1kIGluIHRoZSBzYW1lXG5kaXJlY3RvcnkgYW5kIGJlIHJlZmVyZW5jZWQgYnkgcmVsYXRpdmUgcGF0aC5cblxuU2tpbGxzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXcgc2tpbGwgaXMgdXNhYmxlIGZyb20gdGhlIG5leHQgbWVzc2FnZS5gXG5cbmNvbnN0IE5FV19DT01NQU5EX1NLSUxMID0gYENyZWF0ZSBhIHBpY28gY29tbWFuZCBmcm9tIHRoZSB1c2VyJ3MgZGVzY3JpcHRpb24uXG5cbiR7QVNLX1JVTEV9XG5cbkEgY29tbWFuZCBpcyBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgVVNFUiBpbnZva2VzIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBUaGUgYWdlbnQgbmV2ZXJcbnNlZXMgY29tbWFuZHMgdW50aWwgb25lIGlzIHJ1biwgc28gdXNlIGEgY29tbWFuZCBmb3IgdXNlci10cmlnZ2VyZWQgbWFjcm9zIGFuZCBhIHNraWxsXG5mb3IgY2FwYWJpbGl0aWVzIHRoZSBhZ2VudCBzaG91bGQgcmVhY2ggZm9yIG9uIGl0cyBvd24uXG5cbkl0IGlzIGEgbWFya2Rvd24gZmlsZSBhdCBcXGAucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgKHByb2plY3QpIG9yXG5cXGB+Ly5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCAoZ2xvYmFsKSwgb3B0aW9uYWxseSB3aXRoIGEgZGVzY3JpcHRpb24gaW4gZnJvbnRtYXR0ZXI6XG5cblxcYFxcYFxcYFxuLS0tXG5kZXNjcmlwdGlvbjogcmV2aWV3IGEgZmlsZSBmb3Igc2VjdXJpdHkgcHJvYmxlbXNcbi0tLVxuUmV2aWV3ICRBUkdVTUVOVFMgZm9yIHNlY3VyaXR5IHByb2JsZW1zLiBGb2N1cyBvbiBpbnB1dCB2YWxpZGF0aW9uIGFuZCBzZWNyZXRzLlxuXFxgXFxgXFxgXG5cblxcYCRBUkdVTUVOVFNcXGAgaXMgcmVwbGFjZWQgd2l0aCB3aGF0ZXZlciBmb2xsb3dzIHRoZSBjb21tYW5kOyB3aXRob3V0IHRoZSBwbGFjZWhvbGRlcixcbmFyZ3VtZW50cyBhcmUgYXBwZW5kZWQgYWZ0ZXIgdGhlIGJvZHkuIENvbW1hbmRzIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gYSBuZXdcbmNvbW1hbmQgYXBwZWFycyBpbiB0aGUgc2xhc2ggbWVudSBmcm9tIHRoZSBuZXh0IG1lc3NhZ2UuYFxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2tpbGxJbmRleChyb290KSB7XG4gIGNvbnN0IGJ1aWx0aW4gPSBbXG4gICAge1xuICAgICAgbmFtZTogJ25ldy10b29sJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgY3VzdG9tIHBpY28gdG9vbCBmcm9tIGEgZGVzY3JpcHRpb24gb2Ygd2hhdCBpdCBzaG91bGQgZG8nLFxuICAgICAgc291cmNlOiAnYnVpbHRpbicsXG4gICAgICBib2R5OiBORVdfVE9PTF9TS0lMTCxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICduZXctc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246ICdjcmVhdGUgYSBwaWNvIHNraWxsIHRoYXQgdGVhY2hlcyB0aGUgYWdlbnQgYSByZXVzYWJsZSBjYXBhYmlsaXR5JyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX1NLSUxMX1NLSUxMLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ25ldy1jb21tYW5kJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgcGljbyBzbGFzaCBjb21tYW5kLCBhIHByb21wdCB0ZW1wbGF0ZSB0aGUgdXNlciBpbnZva2VzJyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX0NPTU1BTkRfU0tJTEwsXG4gICAgfSxcbiAgXVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFNraWxsc0RpcigpLCAnZ2xvYmFsJylcbiAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdFNraWxsc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBza2lsbCBvZiBbLi4uYnVpbHRpbiwgLi4uZ2xvYmFsLCAuLi5wcm9qZWN0XSkgYnlOYW1lLnNldChza2lsbC5uYW1lLCBza2lsbClcbiAgY29uc3Qgc2tpbGxzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cblxuICByZXR1cm4ge1xuICAgIGxpc3Q6ICgpID0+IHNraWxscyxcbiAgICBhc3luYyBsb2FkKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNraWxsID0gYnlOYW1lLmdldChuYW1lKVxuICAgICAgaWYgKCFza2lsbCkgcmV0dXJuIG51bGxcbiAgICAgIGlmIChza2lsbC5ib2R5KSByZXR1cm4gc2tpbGwuYm9keVxuICAgICAgY29uc3QgeyBib2R5IH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKHNraWxsLmZpbGUsICd1dGYtOCcpKVxuICAgICAgcmV0dXJuIGJvZHlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbENvbW1hbmRzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnY29tbWFuZHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdENvbW1hbmRzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ2NvbW1hbmRzJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGNvbnN0IGNvbW1hbmRzID0gW11cbiAgZm9yIChjb25zdCBmaWxlIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFmaWxlLmVuZHNXaXRoKCcubWQnKSkgY29udGludWVcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBtZXRhIH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGpvaW4oZGlyLCBmaWxlKSwgJ3V0Zi04JykpXG4gICAgICBjb21tYW5kcy5wdXNoKHtcbiAgICAgICAgbmFtZTogZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIGZpbGU6IGpvaW4oZGlyLCBmaWxlKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBjb21tYW5kc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kQ29tbWFuZChib2R5LCBhcmdzKSB7XG4gIHJldHVybiBib2R5LmluY2x1ZGVzKCckQVJHVU1FTlRTJylcbiAgICA/IGJvZHkucmVwbGFjZUFsbCgnJEFSR1VNRU5UUycsIGFyZ3MpXG4gICAgOiBhcmdzXG4gICAgICA/IGAke2JvZHkudHJpbSgpfVxcblxcbiR7YXJnc31gXG4gICAgICA6IGJvZHlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSB7XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsQ29tbWFuZHNEaXIoKSwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RDb21tYW5kc0Rpcihyb290KSwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIFsuLi5nbG9iYWwsIC4uLnByb2plY3RdKSBieU5hbWUuc2V0KGNvbW1hbmQubmFtZSwgY29tbWFuZClcbiAgY29uc3QgY29tbWFuZHMgPSBbLi4uYnlOYW1lLnZhbHVlcygpXVxuXG4gIHJldHVybiB7XG4gICAgbGlzdDogKCkgPT4gY29tbWFuZHMsXG4gICAgYXN5bmMgbG9hZChuYW1lLCBhcmdzID0gJycpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBieU5hbWUuZ2V0KG5hbWUpXG4gICAgICBpZiAoIWNvbW1hbmQpIHJldHVybiBudWxsXG4gICAgICBjb25zdCB7IGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoY29tbWFuZC5maWxlLCAndXRmLTgnKSlcbiAgICAgIHJldHVybiBleHBhbmRDb21tYW5kKGJvZHkudHJpbSgpLCBhcmdzLnRyaW0oKSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBjb25uZWN0TUNQIH0gZnJvbSAnQHByc20vYWknXG5pbXBvcnQgeyBnbG9iYWxNY3BGaWxlLCBwcm9qZWN0TWNwRmlsZSwgcHJvamVjdERpciwgZW5zdXJlRGlyLCBwaWNvSG9tZSB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmZ1bmN0aW9uIHRva2VuaXplKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSBbXVxuICBjb25zdCByZSA9IC8oW0EtWmEtejAtOV8tXSs9KT9cIihbXlwiXSopXCJ8KFtBLVphLXowLTlfLV0rPSk/JyhbXiddKiknfChcXFMrKS9nXG4gIGxldCBtXG4gIHdoaWxlICgobSA9IHJlLmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobVsxXSAhPT0gdW5kZWZpbmVkIHx8IG1bM10gIT09IHVuZGVmaW5lZCkgdG9rZW5zLnB1c2goKG1bMV0gPz8gbVszXSkgKyAobVsyXSA/PyBtWzRdKSlcbiAgICBlbHNlIHRva2Vucy5wdXNoKG1bMl0gPz8gbVs0XSA/PyBtWzVdKVxuICB9XG4gIHJldHVybiB0b2tlbnNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29tbWFuZChzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKVxuXG4gIGNvbnN0IGVudiA9IHt9XG4gIHdoaWxlICh0b2tlbnMubGVuZ3RoICYmIC9eW0EtWmEtel9dW0EtWmEtejAtOV9dKj0vLnRlc3QodG9rZW5zWzBdKSkge1xuICAgIGNvbnN0IHNlcCA9IHRva2Vuc1swXS5pbmRleE9mKCc9JylcbiAgICBlbnZbdG9rZW5zWzBdLnNsaWNlKDAsIHNlcCldID0gdG9rZW5zWzBdLnNsaWNlKHNlcCArIDEpXG4gICAgdG9rZW5zLnNoaWZ0KClcbiAgfVxuICBpZiAoIXRva2Vucy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignZW1wdHkgY29tbWFuZCcpXG4gIHJldHVybiB7IGNvbW1hbmQ6IHRva2Vuc1swXSwgYXJnczogdG9rZW5zLnNsaWNlKDEpLCBlbnYgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTZXJ2ZXJTcGVjKHN0cikge1xuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzdHIpXG4gIGlmICghL15odHRwcz86XFwvXFwvLy50ZXN0KHRva2Vuc1swXSB8fCAnJykpIHJldHVybiB7IHR5cGU6ICdzdGRpbycsIC4uLnBhcnNlQ29tbWFuZChzdHIpIH1cblxuICBjb25zdCBbdXJsLCAuLi5yZXN0XSA9IHRva2Vuc1xuICBjb25zdCBoZWFkZXJzID0ge31cbiAgZm9yIChjb25zdCB0b2tlbiBvZiByZXN0KSB7XG4gICAgY29uc3Qgc2VwID0gdG9rZW4uaW5kZXhPZignPScpXG4gICAgaWYgKHNlcCA8IDEpIHRocm93IG5ldyBFcnJvcihgaHR0cCBzZXJ2ZXIgc3BlYyBvbmx5IHRha2VzIGEgdXJsIGFuZCBIZWFkZXI9dmFsdWUgcGFpcnMsIGdvdCBcIiR7dG9rZW59XCJgKVxuICAgIGhlYWRlcnNbdG9rZW4uc2xpY2UoMCwgc2VwKV0gPSB0b2tlbi5zbGljZShzZXAgKyAxKVxuICB9XG4gIHJldHVybiB7IHR5cGU6ICdodHRwJywgdXJsLCBoZWFkZXJzIH1cbn1cblxuZXhwb3J0IGNvbnN0IFJFREFDVEVEX0hFQURFUiA9ICdcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjJcdTIwMjInXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSB7XG4gIHJldHVybiAvXihhdXRob3JpemF0aW9ufHByb3h5LWF1dGhvcml6YXRpb258Y29va2llfHNldC1jb29raWV8eC1hcGkta2V5fGFwaS1rZXl8dG9rZW58c2VjcmV0KSQvaS50ZXN0KG5hbWUpXG59XG5cbmZ1bmN0aW9uIHF1b3RlSGVhZGVyVmFsdWUodmFsdWUpIHtcbiAgaWYgKCEvW1xccydcIlxcXFxdLy50ZXN0KHZhbHVlKSkgcmV0dXJuIHZhbHVlXG4gIGlmICghdmFsdWUuaW5jbHVkZXMoJ1wiJykpIHJldHVybiBgXCIke3ZhbHVlfVwiYFxuICBpZiAoIXZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkgcmV0dXJuIGAnJHt2YWx1ZX0nYFxuICB0aHJvdyBuZXcgRXJyb3IoJ2hlYWRlciB2YWx1ZXMgY2Fubm90IGNvbnRhaW4gYm90aCBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0SHR0cFNlcnZlclNwZWModXJsLCBoZWFkZXJzKSB7XG4gIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gYCR7bmFtZX09JHtxdW90ZUhlYWRlclZhbHVlKHZhbHVlKX1gKVxuICByZXR1cm4gW3VybCwgLi4udmFsdWVzXS5qb2luKCcgJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZGFjdFNlcnZlclNwZWMoY29tbWFuZCkge1xuICBsZXQgc3BlY1xuICB0cnkge1xuICAgIHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGNvbW1hbmRcbiAgfVxuICBpZiAoc3BlYy50eXBlICE9PSAnaHR0cCcpIHJldHVybiBjb21tYW5kXG4gIGNvbnN0IGhlYWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoc3BlYy5oZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IFtuYW1lLCBpc1NlbnNpdGl2ZUhlYWRlcihuYW1lKSA/IFJFREFDVEVEX0hFQURFUiA6IHZhbHVlXSkpXG4gIHJldHVybiBmb3JtYXRIdHRwU2VydmVyU3BlYyhzcGVjLnVybCwgaGVhZGVycylcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEpzb24oZmlsZSwgZmFsbGJhY2spIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbGxiYWNrXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWdpc3RyeSgpIHtcbiAgcmV0dXJuIHJlYWRKc29uKGdsb2JhbE1jcEZpbGUoKSwgeyBzZXJ2ZXJzOiB7fSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSZWdpc3RyeShyZWdpc3RyeSkge1xuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGdsb2JhbE1jcEZpbGUoKSwgSlNPTi5zdHJpbmdpZnkocmVnaXN0cnksIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUHJvamVjdENvbmZpZyhyb290KSB7XG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRKc29uKHByb2plY3RNY3BGaWxlKHJvb3QpLCB7fSlcbiAgcmV0dXJuIHsgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB8fCB7fSwgc2VydmVyczogY29uZmlnLnNlcnZlcnMgfHwge30gfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZykge1xuICBlbnN1cmVEaXIocHJvamVjdERpcihyb290KSlcbiAgYXdhaXQgd3JpdGVGaWxlKHByb2plY3RNY3BGaWxlKHJvb3QpLCBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpICsgJ1xcbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVNY3BSdW50aW1lKHsgcm9vdCwgb25DaGFuZ2UgPSAoKSA9PiB7fSB9KSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgY29uc3QgcHJvamVjdENvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gIGNvbnN0IHNlcnZlcnMgPSBuZXcgTWFwKClcblxuICBjb25zdCByZWdpc3RlciA9IChuYW1lLCBjb21tYW5kLCBzY29wZSkgPT4ge1xuICAgIHNlcnZlcnMuc2V0KG5hbWUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBjb21tYW5kLFxuICAgICAgc2NvcGUsXG4gICAgICBlbmFibGVkOiAhcHJvamVjdENvbmZpZy5kaXNhYmxlZFtuYW1lXSxcbiAgICAgIHN0YXR1czogcHJvamVjdENvbmZpZy5kaXNhYmxlZFtuYW1lXSA/ICdkaXNhYmxlZCcgOiAnaWRsZScsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGNvbm5lY3Rpb246IG51bGwsXG4gICAgICB0cmFuc3BvcnQ6IG51bGwsXG4gICAgfSlcbiAgfVxuICBmb3IgKGNvbnN0IFtuYW1lLCBjb21tYW5kXSBvZiBPYmplY3QuZW50cmllcyhyZWdpc3RyeS5zZXJ2ZXJzKSkgcmVnaXN0ZXIobmFtZSwgY29tbWFuZCwgJ2dsb2JhbCcpXG4gIGZvciAoY29uc3QgW25hbWUsIGNvbW1hbmRdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3RDb25maWcuc2VydmVycykpIHJlZ2lzdGVyKG5hbWUsIGNvbW1hbmQsICdwcm9qZWN0JylcblxuICBhc3luYyBmdW5jdGlvbiBjcmVhdGVUcmFuc3BvcnQoY29tbWFuZCkge1xuICAgIGNvbnN0IHNwZWMgPSBwYXJzZVNlcnZlclNwZWMoY29tbWFuZClcbiAgICBpZiAoc3BlYy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgIGNvbnN0IHsgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RyZWFtYWJsZUh0dHAuanMnKVxuICAgICAgcmV0dXJuIG5ldyBTdHJlYW1hYmxlSFRUUENsaWVudFRyYW5zcG9ydChuZXcgVVJMKHNwZWMudXJsKSwge1xuICAgICAgICByZXF1ZXN0SW5pdDogT2JqZWN0LmtleXMoc3BlYy5oZWFkZXJzKS5sZW5ndGggPyB7IGhlYWRlcnM6IHNwZWMuaGVhZGVycyB9IDogdW5kZWZpbmVkLFxuICAgICAgfSlcbiAgICB9XG4gICAgY29uc3QgeyBTdGRpb0NsaWVudFRyYW5zcG9ydCB9ID0gYXdhaXQgaW1wb3J0KCdAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2NsaWVudC9zdGRpby5qcycpXG4gICAgcmV0dXJuIG5ldyBTdGRpb0NsaWVudFRyYW5zcG9ydCh7XG4gICAgICBjb21tYW5kOiBzcGVjLmNvbW1hbmQsXG4gICAgICBhcmdzOiBzcGVjLmFyZ3MsXG4gICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIC4uLnNwZWMuZW52IH0sXG4gICAgICBzdGRlcnI6ICdwaXBlJyxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0aW5nJ1xuICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICBvbkNoYW5nZSgpXG4gICAgdHJ5IHtcbiAgICAgIHNlcnZlci50cmFuc3BvcnQgPSBhd2FpdCBjcmVhdGVUcmFuc3BvcnQoc2VydmVyLmNvbW1hbmQpXG4gICAgICBzZXJ2ZXIuY29ubmVjdGlvbiA9IGF3YWl0IGNvbm5lY3RNQ1Aoe1xuICAgICAgICBuYW1lLFxuICAgICAgICB0cmFuc3BvcnQ6ICgpID0+IHNlcnZlci50cmFuc3BvcnQsXG4gICAgICB9KVxuICAgICAgc2VydmVyLnN0YXR1cyA9ICdjb25uZWN0ZWQnXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gJ2Vycm9yJ1xuICAgICAgc2VydmVyLmVycm9yID0gU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMzAwKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgICBzZXJ2ZXIudHJhbnNwb3J0ID0gbnVsbFxuICAgIH1cbiAgICBvbkNoYW5nZSgpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0KG5hbWUpIHtcbiAgICBjb25zdCBzZXJ2ZXIgPSBzZXJ2ZXJzLmdldChuYW1lKVxuICAgIGlmIChzZXJ2ZXI/LmNvbm5lY3Rpb24pIHtcbiAgICAgIGF3YWl0IHNlcnZlci5jb25uZWN0aW9uLmNsb3NlKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgICBzZXJ2ZXIuY29ubmVjdGlvbiA9IG51bGxcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbm5lY3RBbGwoKSB7XG4gICAgICBjb25zdCBwZW5kaW5nID0gW11cbiAgICAgIGZvciAoY29uc3Qgc2VydmVyIG9mIHNlcnZlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgaWYgKHNlcnZlci5lbmFibGVkKSBwZW5kaW5nLnB1c2goY29ubmVjdChzZXJ2ZXIubmFtZSkpXG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKHBlbmRpbmcpXG4gICAgfSxcbiAgICBhc3luYyBhZGQobmFtZSwgY29tbWFuZCwgc2NvcGUgPSAnZ2xvYmFsJykge1xuICAgICAgaWYgKHNjb3BlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgICAgICAgY29uZmlnLnNlcnZlcnNbbmFtZV0gPSBjb21tYW5kXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gICAgICAgIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV0gPSBjb21tYW5kXG4gICAgICAgIGF3YWl0IHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpXG4gICAgICB9XG4gICAgICBzZXJ2ZXJzLnNldChuYW1lLCB7IG5hbWUsIGNvbW1hbmQsIHNjb3BlLCBlbmFibGVkOiB0cnVlLCBzdGF0dXM6ICdpZGxlJywgZXJyb3I6IG51bGwsIGNvbm5lY3Rpb246IG51bGwsIHRyYW5zcG9ydDogbnVsbCB9KVxuICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgdXBkYXRlKG5hbWUsIGNvbW1hbmQpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgICBpZiAoc2VydmVyLnNjb3BlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgICAgICAgY29uZmlnLnNlcnZlcnNbbmFtZV0gPSBjb21tYW5kXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gICAgICAgIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV0gPSBjb21tYW5kXG4gICAgICAgIGF3YWl0IHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgICBzZXJ2ZXIuY29tbWFuZCA9IGNvbW1hbmRcbiAgICAgIHNlcnZlci5zdGF0dXMgPSBzZXJ2ZXIuZW5hYmxlZCA/ICdpZGxlJyA6ICdkaXNhYmxlZCdcbiAgICAgIHNlcnZlci5lcnJvciA9IG51bGxcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIGlmIChzZXJ2ZXIuZW5hYmxlZCkgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gc2VydmVycy5nZXQobmFtZSk/LnNjb3BlXG4gICAgICBpZiAoc2NvcGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgICBkZWxldGUgY29uZmlnLnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gYXdhaXQgcmVhZFJlZ2lzdHJ5KClcbiAgICAgICAgZGVsZXRlIHJlZ2lzdHJ5LnNlcnZlcnNbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVSZWdpc3RyeShyZWdpc3RyeSlcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRpc2Nvbm5lY3QobmFtZSlcbiAgICAgIHNlcnZlcnMuZGVsZXRlKG5hbWUpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfSxcbiAgICBhc3luYyB0b2dnbGUobmFtZSkge1xuICAgICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICAgIGlmICghc2VydmVyKSByZXR1cm5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIHtcbiAgICAgICAgLy8gZmxpcCB0aGUgdmlzaWJsZSBzdGF0ZSBmaXJzdDogYSBzbG93LWNsb3Npbmcgc2VydmVyIChoZWFkbGVzc1xuICAgICAgICAvLyBicm93c2VycywgaGVhdnkgcHJvY2Vzc2VzKSBtdXN0IG5vdCBtYWtlIGRpc2FibGUgZmVlbCBkZWFkXG4gICAgICAgIHNlcnZlci5lbmFibGVkID0gZmFsc2VcbiAgICAgICAgc2VydmVyLnN0YXR1cyA9ICdkaXNhYmxlZCdcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgICBjb25maWcuZGlzYWJsZWRbbmFtZV0gPSB0cnVlXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICAgIGRpc2Nvbm5lY3QobmFtZSkuY2F0Y2goKCkgPT4ge30pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJ2ZXIuZW5hYmxlZCA9IHRydWVcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5kaXNhYmxlZFtuYW1lXVxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgICBhd2FpdCBjb25uZWN0KG5hbWUpXG4gICAgICB9XG4gICAgfSxcbiAgICByZWNvbm5lY3QobmFtZSkge1xuICAgICAgcmV0dXJuIGRpc2Nvbm5lY3QobmFtZSkudGhlbigoKSA9PiBjb25uZWN0KG5hbWUpKVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4uc2VydmVycy52YWx1ZXMoKV0ubWFwKChzKSA9PiAoe1xuICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgIGNvbW1hbmQ6IHMuY29tbWFuZCxcbiAgICAgICAgc2NvcGU6IHMuc2NvcGUsXG4gICAgICAgIGVuYWJsZWQ6IHMuZW5hYmxlZCxcbiAgICAgICAgc3RhdHVzOiBzLnN0YXR1cyxcbiAgICAgICAgZXJyb3I6IHMuZXJyb3IsXG4gICAgICAgIHRvb2xDb3VudDogcy5jb25uZWN0aW9uPy50b29scy5sZW5ndGggfHwgMCxcbiAgICAgICAgdG9vbHM6IChzLmNvbm5lY3Rpb24/LnRvb2xzIHx8IFtdKS5tYXAoKHQpID0+ICh7IG5hbWU6IHQubmFtZSwgZGVzY3JpcHRpb246IHQuZGVzY3JpcHRpb24gfHwgJycgfSkpLFxuICAgICAgfSkpXG4gICAgfSxcbiAgICB0b29scygpIHtcbiAgICAgIHJldHVybiBbLi4uc2VydmVycy52YWx1ZXMoKV1cbiAgICAgICAgLmZpbHRlcigocykgPT4gcy5jb25uZWN0aW9uKVxuICAgICAgICAuZmxhdE1hcCgocykgPT4gcy5jb25uZWN0aW9uLnRvb2xzKVxuICAgIH0sXG4gICAgY2xvc2VBbGwoKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFsuLi5zZXJ2ZXJzLmtleXMoKV0ubWFwKGRpc2Nvbm5lY3QpKVxuICAgIH0sXG4gICAgdGVybWluYXRlQWxsKCkge1xuICAgICAgZm9yIChjb25zdCBzZXJ2ZXIgb2Ygc2VydmVycy52YWx1ZXMoKSkge1xuICAgICAgICBjb25zdCBwaWQgPSBzZXJ2ZXIudHJhbnNwb3J0Py5waWRcbiAgICAgICAgaWYgKHBpZCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9jZXNzLmtpbGwocGlkLCAnU0lHVEVSTScpXG4gICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyLCB3cml0ZUZpbGUsIG1rZGlyLCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IHBhcnNlRnJvbnRtYXR0ZXIgfSBmcm9tICcuL3NraWxscy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbE1lbW9yeURpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocHJvamVjdERpcihyb290KSwgJ21lbW9yeScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbHVnaWZ5KG5hbWUpIHtcbiAgY29uc3Qgc2x1ZyA9IFN0cmluZyhuYW1lKVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgIC5yZXBsYWNlKC9eLSt8LSskL2csICcnKVxuICAgIC5zbGljZSgwLCA2MClcbiAgaWYgKCFzbHVnKSB0aHJvdyBuZXcgRXJyb3IoJ21lbW9yeSBuYW1lIG11c3QgY29udGFpbiBsZXR0ZXJzIG9yIG51bWJlcnMnKVxuICByZXR1cm4gc2x1Z1xufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc2NvcGUpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBtZW1vcmllcyA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBuYW1lcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aCgnLm1kJykpIGNvbnRpbnVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSwgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksICd1dGYtOCcpKVxuICAgICAgbWVtb3JpZXMucHVzaCh7XG4gICAgICAgIG5hbWU6IG1ldGEubmFtZSB8fCBmaWxlLnNsaWNlKDAsIC0zKSxcbiAgICAgICAgZGVzY3JpcHRpb246IG1ldGEuZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBmaWxlOiBqb2luKGRpciwgZmlsZSksXG4gICAgICAgIGJvZHk6IGJvZHkudHJpbSgpLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIG1lbW9yaWVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNZW1vcnkocm9vdCkge1xuICBjb25zdCBkaXJGb3IgPSAoc2NvcGUpID0+IChzY29wZSA9PT0gJ2dsb2JhbCcgPyBnbG9iYWxNZW1vcnlEaXIoKSA6IHByb2plY3RNZW1vcnlEaXIocm9vdCkpXG5cbiAgcmV0dXJuIHtcbiAgICBhc3luYyBsaXN0KCkge1xuICAgICAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxNZW1vcnlEaXIoKSwgJ2dsb2JhbCcpXG4gICAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0TWVtb3J5RGlyKHJvb3QpLCAncHJvamVjdCcpXG4gICAgICByZXR1cm4gWy4uLnByb2plY3QsIC4uLmdsb2JhbF1cbiAgICB9LFxuICAgIGFzeW5jIHJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlID0gJ3Byb2plY3QnIH0pIHtcbiAgICAgIGlmICghWydwcm9qZWN0JywgJ2dsb2JhbCddLmluY2x1ZGVzKHNjb3BlKSkgdGhyb3cgbmV3IEVycm9yKCdzY29wZSBtdXN0IGJlIHByb2plY3Qgb3IgZ2xvYmFsJylcbiAgICAgIGNvbnN0IHNsdWcgPSBzbHVnaWZ5KG5hbWUpXG4gICAgICBjb25zdCBkaXIgPSBkaXJGb3Ioc2NvcGUpXG4gICAgICBhd2FpdCBta2RpcihkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIGAke3NsdWd9Lm1kYClcbiAgICAgIGNvbnN0IHRleHQgPSBgLS0tXFxubmFtZTogJHtzbHVnfVxcbmRlc2NyaXB0aW9uOiAke1N0cmluZyhkZXNjcmlwdGlvbikucmVwbGFjZSgvXFxuL2csICcgJyl9XFxuLS0tXFxuJHtjb250ZW50fVxcbmBcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmaWxlLCB0ZXh0LCAndXRmLTgnKVxuICAgICAgcmV0dXJuIHsgbmFtZTogc2x1Zywgc2NvcGUsIGZpbGUgfVxuICAgIH0sXG4gICAgYXN5bmMgZm9yZ2V0KG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIG1lbW9yeSBuYW1lZCBcIiR7bmFtZX1cImApXG4gICAgICBhd2FpdCB1bmxpbmsobWVtb3J5LmZpbGUpXG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSB9XG4gICAgfSxcbiAgICBhc3luYyByZWNhbGwobmFtZSkge1xuICAgICAgY29uc3QgbWVtb3JpZXMgPSBhd2FpdCB0aGlzLmxpc3QoKVxuICAgICAgY29uc3QgbWVtb3J5ID0gbWVtb3JpZXMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKVxuICAgICAgaWYgKCFtZW1vcnkpIHtcbiAgICAgICAgY29uc3Qga25vd24gPSBtZW1vcmllcy5tYXAoKG0pID0+IG0ubmFtZSkuam9pbignLCAnKSB8fCAnbm9uZSdcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCI7IGtub3duIG1lbW9yaWVzOiAke2tub3dufWApXG4gICAgICB9XG4gICAgICByZXR1cm4geyBuYW1lOiBtZW1vcnkubmFtZSwgc2NvcGU6IG1lbW9yeS5zY29wZSwgZmlsZTogbWVtb3J5LmZpbGUsIGNvbnRlbnQ6IG1lbW9yeS5ib2R5IH1cbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZW1vcnlJbmRleChtZW1vcmllcywgcm9vdCkge1xuICBpZiAobWVtb3JpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGBZb3UgaGF2ZSBubyBzYXZlZCBtZW1vcmllcyB5ZXQuIFRoaXMgaW5kZXggbGlzdHMgdGhlbSB3aGVuIHlvdSBzYXZlIGR1cmFibGUgZmFjdHMgd2l0aCB0aGUgcmVtZW1iZXIgdG9vbDsgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dCB5b3VyIG1lbW9yaWVzIGZyb20gdGhpcyBpbmRleCBhbG9uZSwgd2l0aG91dCBzZWFyY2hpbmcgdGhlIGZpbGVzeXN0ZW0uYFxuICB9XG4gIGNvbnN0IGxpbmVzID0gbWVtb3JpZXMubWFwKChtKSA9PiBgLSAke20ubmFtZX0gKCR7bS5zY29wZX0pOiAke20uZGVzY3JpcHRpb259YClcbiAgcmV0dXJuIFtcbiAgICBgTWVtb3JpZXMgeW91IGhhdmUgc2F2ZWQuIFRoaXMgaW5kZXggaXMgY29tcGxldGU6IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIGl0IGRpcmVjdGx5LCBsb2FkIG9uZSB3aXRoIHRoZSByZWNhbGwgdG9vbCB3aGVuIGl0cyBjb250ZW50IGlzIHJlbGV2YW50LCBhbmQgbmV2ZXIgc2VhcmNoIHRoZSBmaWxlc3lzdGVtIGZvciBtZW1vcmllcy4gVGhlIGZpbGVzIGxpdmUgaW4gJHtwcm9qZWN0TWVtb3J5RGlyKHJvb3QpfSBhbmQgJHtnbG9iYWxNZW1vcnlEaXIoKX0gYW5kIGNhbiBiZSBlZGl0ZWQgb3IgZGVsZXRlZCB3aXRoIG9yZGluYXJ5IHRvb2xzIHdoZW4gYXNrZWQgdG8gY3VyYXRlIHRoZW0uYCxcbiAgICAuLi5saW5lcyxcbiAgXS5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGhvbWVkaXIgfSBmcm9tICdub2RlOm9zJ1xuaW1wb3J0IHsgZmluZFByb2plY3RSb290IH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IGxvYWRTdGFydHVwQ29udGV4dCwgY3JlYXRlQ29udGV4dFRyYWNrZXIgfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgeyBjcmVhdGVTa2lsbEluZGV4IH0gZnJvbSAnLi9za2lsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVDb21tYW5kSW5kZXggfSBmcm9tICcuL2NvbW1hbmRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWNwUnVudGltZSB9IGZyb20gJy4vbWNwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlTWVtb3J5IH0gZnJvbSAnLi9tZW1vcnkuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZFByb2plY3RCb290KGN3ZCwgeyBvbk1jcENoYW5nZSA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBob21lID0gaG9tZWRpcigpXG4gIGNvbnN0IHJvb3QgPSBmaW5kUHJvamVjdFJvb3QoY3dkKVxuICBjb25zdCBzdGFydHVwQ29udGV4dCA9IGxvYWRTdGFydHVwQ29udGV4dChjd2QpXG4gIGNvbnN0IHRyYWNrZXIgPSBjcmVhdGVDb250ZXh0VHJhY2tlcih7XG4gICAgc3RvcERpcjogc3RhcnR1cENvbnRleHQuc3RvcERpcixcbiAgICBsb2FkZWQ6IG5ldyBTZXQoc3RhcnR1cENvbnRleHQuZmlsZXMubWFwKChmKSA9PiBmLnBhdGgpKSxcbiAgfSlcbiAgcmV0dXJuIHtcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBkaXNwbGF5Q3dkOiBjd2Quc3RhcnRzV2l0aChob21lKSA/IGN3ZC5yZXBsYWNlKGhvbWUsICd+JykgOiBjd2QsXG4gICAgc3RhcnR1cENvbnRleHQsXG4gICAgdHJhY2tlcixcbiAgICBza2lsbHM6IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgocm9vdCksXG4gICAgY29tbWFuZHM6IGF3YWl0IGNyZWF0ZUNvbW1hbmRJbmRleChyb290KSxcbiAgICBtY3A6IGF3YWl0IGNyZWF0ZU1jcFJ1bnRpbWUoeyByb290LCBvbkNoYW5nZTogb25NY3BDaGFuZ2UgfSksXG4gICAgbWVtb3J5OiBjcmVhdGVNZW1vcnkocm9vdCksXG4gIH1cbn1cbiIsICJjb25zdCBERUZBVUxUX1NMSUNFX0NIQVJTID0gMjQwMDBcbmNvbnN0IE1BWF9TTElDRV9DSEFSUyA9IDEwMDAwMFxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZURyZWRnZShjb25maWcgPSB7fSwgZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3QgdXJsID0gZW52LkRSRURHRV9VUkwgfHwgY29uZmlnLmRyZWRnZT8udXJsIHx8IG51bGxcbiAgaWYgKCF1cmwpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgdXJsOiB1cmwucmVwbGFjZSgvXFwvKyQvLCAnJyksXG4gICAgYXBpS2V5OiBlbnYuRFJFREdFX0FQSV9LRVkgfHwgY29uZmlnLmRyZWRnZT8uYXBpS2V5IHx8IG51bGwsXG4gIH1cbn1cblxuY29uc3QgQ0FMTF9USU1FT1VUX01TID0gMTIwMDAwXG5cbmFzeW5jIGZ1bmN0aW9uIGNhbGwoZHJlZGdlLCBwYXRoLCBwYXJhbXMsIHNpZ25hbCkge1xuICBjb25zdCBxdWVyeSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKVxuICAvLyBib3VuZGVkIGFib3ZlIGRyZWRnZSdzIG93biA5MHMgcXVldWUgY2VpbGluZyBzbyBhIHdlZGdlZCBzZXJ2ZXIgYmVjb21lc1xuICAvLyBhIHRvb2wgZXJyb3IgaW5zdGVhZCBvZiBhIGh1bmcgdHVyblxuICBjb25zdCBzaWduYWxzID0gW0Fib3J0U2lnbmFsLnRpbWVvdXQoQ0FMTF9USU1FT1VUX01TKSwgLi4uKHNpZ25hbCA/IFtzaWduYWxdIDogW10pXVxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2RyZWRnZS51cmx9JHtwYXRofT8ke3F1ZXJ5fWAsIHtcbiAgICBzaWduYWw6IEFib3J0U2lnbmFsLmFueShzaWduYWxzKSxcbiAgICBoZWFkZXJzOiBkcmVkZ2UuYXBpS2V5ID8geyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7ZHJlZGdlLmFwaUtleX1gIH0gOiB7fSxcbiAgfSlcbiAgY29uc3QgYm9keSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKS5jYXRjaCgoKSA9PiBudWxsKVxuICBpZiAoIWJvZHkpIHRocm93IG5ldyBFcnJvcihgZHJlZGdlIHJldHVybmVkIGh0dHAgJHtyZXNwb25zZS5zdGF0dXN9IHdpdGggbm8gdXNhYmxlIGJvZHlgKVxuICByZXR1cm4gYm9keVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2ViVG9vbHMoeyBkcmVkZ2UsIHJlY29yZGVyLCBzaWduYWwgfSkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIG5hbWU6ICd3ZWJfc2VhcmNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnU2VhcmNoIHRoZSB3ZWIuIEdvb2dsZS1zdHlsZSBvcGVyYXRvcnMgd29yazogc2l0ZTosIGZpbGV0eXBlOnBkZiwgcXVvdGVkIHBocmFzZXMuIFJldHVybnMgcmFua2VkIHJlc3VsdHM7IHBhc3MgYSByZXN1bHQgdXJsIHRvIHdlYl9mZXRjaCB0byByZWFkIGl0LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgcTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2VhcmNoIHF1ZXJ5JyB9LFxuICAgICAgfSxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IHEgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBxIH0pXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9zZWFyY2gnLCB7IHEgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHRocm93IG5ldyBFcnJvcihib2R5LmVycm9yPy5tZXNzYWdlIHx8ICdzZWFyY2ggZmFpbGVkJylcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IChib2R5LnJlc3VsdHMgfHwgW10pLm1hcCgocikgPT4gKHtcbiAgICAgICAgICB0aXRsZTogci50aXRsZSxcbiAgICAgICAgICB1cmw6IHIudXJsLFxuICAgICAgICAgIHNuaXBwZXQ6IHIuc25pcHBldCxcbiAgICAgICAgICBzb3VyY2U6IHIuc291cmNlLFxuICAgICAgICB9KSlcbiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYmFja2VuZHMgPSAoYm9keS5iYWNrZW5kcyB8fCBbXSkubWFwKChiKSA9PiBgJHtiLm5hbWV9OiAke2Iuc3RhdHVzfWApLmpvaW4oJywgJylcbiAgICAgICAgICByZXR1cm4geyByZXN1bHRzLCBub3RlOiBiYWNrZW5kcyA/IGBubyByZXN1bHRzIFx1MDBCNyBiYWNrZW5kczogJHtiYWNrZW5kc31gIDogJ25vIHJlc3VsdHMnIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyByZXN1bHRzIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX2ZldGNoJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnRmV0Y2ggYSB1cmwgYW5kIHJlYWQgaXQgYXMgY2xlYW4gbWFya2Rvd24gKGh0bWwsIHBkZiwgZG9jeCwgYW5kIHRleHR1YWwgZm9ybWF0cyBsaWtlIGpzb24pLiBMb25nIGRvY3VtZW50cyBhcnJpdmUgaW4gc2xpY2VzOiB0aGUgcmVzdWx0IHNheXMgd2hpY2ggc2xpY2UgeW91IGhhdmUgKGUuZy4gXCJzbGljZSAxIG9mIDEyXCIpIGFuZCBuZXh0X2N1cnNvciBjb250aW51ZXMgZnJvbSB0aGVyZS4gRXZlcnkgc2xpY2UgeW91IGZldGNoIHBlcm1hbmVudGx5IG9jY3VwaWVzIGNvbnZlcnNhdGlvbiBjb250ZXh0LCBzbyBvbmx5IHdhbGsgY3Vyc29ycyBmb3IgY29udGVudCB5b3UgYWN0dWFsbHkgbmVlZCwgYW5kIHJhaXNlIG1heENoYXJzIG9ubHkgd2hlbiB0aGUgdGFzayBnZW51aW5lbHkgbmVlZHMgYSBiaWdnZXIgd2luZG93LicsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgdXJsOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSB1cmwgdG8gZmV0Y2gnIH0sXG4gICAgICAgIGN1cnNvcjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdwYWdpbmF0aW9uIGN1cnNvciBmcm9tIGEgcHJldmlvdXMgd2ViX2ZldGNoIG9mIHRoZSBzYW1lIHVybCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIG1heENoYXJzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogYHNsaWNlIHNpemUgaW4gY2hhcmFjdGVycywgZGVmYXVsdCAke0RFRkFVTFRfU0xJQ0VfQ0hBUlN9LCBtYXggJHtNQVhfU0xJQ0VfQ0hBUlN9YCwgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyB1cmwsIGN1cnNvciwgbWF4Q2hhcnMgfSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiB1cmwucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC8vLCAnJykuc2xpY2UoMCwgODApIH0pXG4gICAgICAgIGNvbnN0IHNsaWNlID0gTWF0aC5taW4oTUFYX1NMSUNFX0NIQVJTLCBNYXRoLm1heCgxMDAwLCBtYXhDaGFycyB8fCBERUZBVUxUX1NMSUNFX0NIQVJTKSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IGNhbGwoZHJlZGdlLCAnL2ZldGNoJywgeyB1cmwsIG1heENoYXJzOiBzbGljZSwgLi4uKGN1cnNvciAmJiB7IGN1cnNvciB9KSB9LCBzaWduYWwpXG4gICAgICAgIGlmICghYm9keS5vaykge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgbWVzc2FnZSwgcmV0cnlhYmxlIH0gPSBib2R5LmVycm9yIHx8IHt9XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2NvZGUgfHwgJ2ZldGNoIGZhaWxlZCd9OiAke21lc3NhZ2UgfHwgdXJsfSR7cmV0cnlhYmxlID8gJyAocmV0cnlhYmxlKScgOiAnJ31gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgbWFya2Rvd24sIG1ldGFkYXRhLCBwYWdpbmF0aW9uIH0gPSBib2R5LmRvY1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1hcmtkb3duLFxuICAgICAgICAgIHRpdGxlOiBtZXRhZGF0YT8udGl0bGUgfHwgbnVsbCxcbiAgICAgICAgICBmaW5hbFVybDogbWV0YWRhdGE/LmZpbmFsX3VybCB8fCB1cmwsXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/LnRvdGFsX2NodW5rcyA+IDEgJiYgeyBzbGljZTogYCR7cGFnaW5hdGlvbi5jaHVua19pbmRleCArIDF9IG9mICR7cGFnaW5hdGlvbi50b3RhbF9jaHVua3N9YCB9KSxcbiAgICAgICAgICAuLi4ocGFnaW5hdGlvbj8ubmV4dF9jdXJzb3IgJiYgeyBuZXh0X2N1cnNvcjogcGFnaW5hdGlvbi5uZXh0X2N1cnNvciB9KSxcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICBdXG59XG4iLCAiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmNvbnN0IE1BWF9MSU5FUyA9IDIwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoZWxsTWFuYWdlcih7IG9uQ2hhbmdlID0gKCkgPT4ge30sIG9uRXhpdCA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCBzaGVsbHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICBmdW5jdGlvbiBwdWJsaWNWaWV3KHNoZWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgIGNvbW1hbmQ6IHNoZWxsLmNvbW1hbmQsXG4gICAgICBkZXNjcmlwdGlvbjogc2hlbGwuZGVzY3JpcHRpb24sXG4gICAgICBjd2Q6IHNoZWxsLmN3ZCxcbiAgICAgIHN0YXR1czogc2hlbGwuc3RhdHVzLFxuICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgc3RhcnRlZEF0OiBzaGVsbC5zdGFydGVkQXQsXG4gICAgICBlbmRlZEF0OiBzaGVsbC5lbmRlZEF0LFxuICAgICAga2lsbGVkQnk6IHNoZWxsLmtpbGxlZEJ5LFxuICAgICAgbGFzdExpbmU6IHNoZWxsLmxpbmVzLmF0KC0xKSB8fCAnJyxcbiAgICAgIGxpbmVDb3VudDogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvbW1hbmQsIHsgY3dkLCBkZXNjcmlwdGlvbiB9ID0ge30pIHtcbiAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICBjb25zdCBjaGlsZCA9IHNwYXduKGNvbW1hbmQsIHtcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgICAgY3dkOiBjd2QgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgIH0pXG4gICAgY29uc3Qgc2hlbGwgPSB7XG4gICAgICBpZCxcbiAgICAgIGNvbW1hbmQsXG4gICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfHwgbnVsbCxcbiAgICAgIGN3ZDogY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICBjaGlsZCxcbiAgICAgIHN0YXR1czogJ3J1bm5pbmcnLFxuICAgICAgZXhpdENvZGU6IG51bGwsXG4gICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICBlbmRlZEF0OiBudWxsLFxuICAgICAga2lsbGVkQnk6IG51bGwsXG4gICAgICBsaW5lczogW10sXG4gICAgICBwYXJ0aWFsOiAnJyxcbiAgICB9XG5cbiAgICBjb25zdCBwdXNoID0gKGNodW5rKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gc2hlbGwucGFydGlhbCArIGNodW5rLnRvU3RyaW5nKClcbiAgICAgIGNvbnN0IGxpbmVzID0gdGV4dC5zcGxpdCgnXFxuJylcbiAgICAgIHNoZWxsLnBhcnRpYWwgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuICAgICAgc2hlbGwubGluZXMucHVzaCguLi5saW5lcylcbiAgICAgIGlmIChzaGVsbC5saW5lcy5sZW5ndGggPiBNQVhfTElORVMpIHNoZWxsLmxpbmVzLnNwbGljZSgwLCBzaGVsbC5saW5lcy5sZW5ndGggLSBNQVhfTElORVMpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgfVxuICAgIGNoaWxkLnN0ZG91dC5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQuc3RkZXJyLm9uKCdkYXRhJywgcHVzaClcbiAgICBjaGlsZC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBwdXNoKGBbZmFpbGVkIHRvIHN0YXJ0OiAke2Vyci5tZXNzYWdlfV1cXG5gKVxuICAgIH0pXG4gICAgY2hpbGQub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICBpZiAoc2hlbGwucGFydGlhbCkge1xuICAgICAgICBzaGVsbC5saW5lcy5wdXNoKHNoZWxsLnBhcnRpYWwpXG4gICAgICAgIHNoZWxsLnBhcnRpYWwgPSAnJ1xuICAgICAgfVxuICAgICAgc2hlbGwuc3RhdHVzID0gJ2V4aXRlZCdcbiAgICAgIHNoZWxsLmV4aXRDb2RlID0gY29kZSA/PyAoc2lnbmFsID8gMSA6IDApXG4gICAgICBzaGVsbC5lbmRlZEF0ID0gRGF0ZS5ub3coKVxuICAgICAgb25DaGFuZ2UoKVxuICAgICAgb25FeGl0KHB1YmxpY1ZpZXcoc2hlbGwpKVxuICAgIH0pXG5cbiAgICBzaGVsbHMuc2V0KGlkLCBzaGVsbClcbiAgICBvbkNoYW5nZSgpXG4gICAgcmV0dXJuIHsgaWQgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KGlkKSB7XG4gICAgY29uc3Qgc2hlbGwgPSBzaGVsbHMuZ2V0KFN0cmluZyhpZCkpXG4gICAgaWYgKCFzaGVsbCkgdGhyb3cgbmV3IEVycm9yKGBubyBzaGVsbCB3aXRoIGlkICR7aWR9OyBpdCBpcyBnb25lIGFuZCBjYW5ub3QgYmUgaW5zcGVjdGVkIChleGl0ZWQgc2hlbGxzIGRpc2FwcGVhciB3aGVuIGRpc21pc3NlZClgKVxuICAgIHJldHVybiBzaGVsbFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydCxcbiAgICBvdXRwdXQoaWQsIHsgdGFpbCA9IDEwMCB9ID0ge30pIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gZ2V0KGlkKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHNoZWxsLmlkLFxuICAgICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgICAgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlLFxuICAgICAgICBvdXRwdXQ6IHNoZWxsLmxpbmVzLnNsaWNlKC10YWlsKS5qb2luKCdcXG4nKSxcbiAgICAgICAgdG90YWxMaW5lczogc2hlbGwubGluZXMubGVuZ3RoLFxuICAgICAgfVxuICAgIH0sXG4gICAga2lsbChpZCwgYnkgPSAnbW9kZWwnKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIGlmIChzaGVsbC5zdGF0dXMgIT09ICdydW5uaW5nJykgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6IHNoZWxsLnN0YXR1cywgZXhpdENvZGU6IHNoZWxsLmV4aXRDb2RlIH1cbiAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gYnlcbiAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR1RFUk0nKVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykgc2hlbGwuY2hpbGQua2lsbCgnU0lHS0lMTCcpXG4gICAgICB9LCAzMDAwKS51bnJlZigpXG4gICAgICByZXR1cm4geyBpZDogc2hlbGwuaWQsIHN0YXR1czogJ2tpbGxpbmcnIH1cbiAgICB9LFxuICAgIGRpc21pc3MoaWQpIHtcbiAgICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKHNoZWxsICYmIHNoZWxsLnN0YXR1cyA9PT0gJ2V4aXRlZCcpIHtcbiAgICAgICAgc2hlbGxzLmRlbGV0ZShTdHJpbmcoaWQpKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBsaXN0KCkge1xuICAgICAgcmV0dXJuIFsuLi5zaGVsbHMudmFsdWVzKCldLm1hcChwdWJsaWNWaWV3KVxuICAgIH0sXG4gICAgcnVubmluZygpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5maWx0ZXIoKHMpID0+IHMuc3RhdHVzID09PSAncnVubmluZycpLmxlbmd0aFxuICAgIH0sXG4gICAga2lsbEFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2hlbGwgb2Ygc2hlbGxzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzaGVsbC5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgIHNoZWxsLmtpbGxlZEJ5ID0gJ3VzZXInXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnbm9kZTpjcnlwdG8nXG5cbmV4cG9ydCBjb25zdCBTRVNTSU9OX1ZFUlNJT04gPSAxXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRXZlbnQodHlwZSwgZGF0YSA9IHt9KSB7XG4gIHJldHVybiB7IGlkOiByYW5kb21VVUlEKCksIGF0OiBEYXRlLm5vdygpLCB0eXBlLCBkYXRhIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICdzZXNzaW9uJyxcbiAgICB2ZXJzaW9uOiBTRVNTSU9OX1ZFUlNJT04sXG4gICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICBjd2QsXG4gICAgcm9vdCxcbiAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUxpbmUoZXZlbnQpIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGV2ZW50KSArICdcXG4nXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmUobGluZSkge1xuICBjb25zdCB0cmltbWVkID0gbGluZS50cmltKClcbiAgaWYgKCF0cmltbWVkKSByZXR1cm4gbnVsbFxuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UodHJpbW1lZClcbiAgICByZXR1cm4gcGFyc2VkICYmIHR5cGVvZiBwYXJzZWQudHlwZSA9PT0gJ3N0cmluZycgPyBwYXJzZWQgOiBudWxsXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGluZXModGV4dCkge1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKHBhcnNlTGluZSkuZmlsdGVyKEJvb2xlYW4pXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIsIHJtLCBzdGF0LCB1bmxpbmsgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBzZXNzaW9uc0RpciwgZW5zdXJlRGlyLCBwcm9qZWN0RGlyIH0gZnJvbSAnLi9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VIZWFkZXIsIHNlcmlhbGl6ZUxpbmUsIHBhcnNlTGluZXMsIHBhcnNlTGluZSB9IGZyb20gJy4vZXZlbnRzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbih7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGhlYWRlciA9IG1ha2VIZWFkZXIoeyBjd2QsIHJvb3QgfSlcbiAgY29uc3QgZmlsZSA9IGpvaW4oZW5zdXJlRGlyKHNlc3Npb25zRGlyKHJvb3QpKSwgYCR7aGVhZGVyLmlkfS5qc29ubGApXG4gIGNvbnN0IHNlc3Npb24gPSBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KVxuICBzZXNzaW9uLmFwcGVuZChoZWFkZXIpXG4gIHJldHVybiBzZXNzaW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuU2Vzc2lvbih7IGZpbGUsIGhlYWRlciB9KSB7XG4gIGxldCBxdWV1ZSA9IFByb21pc2UucmVzb2x2ZSgpXG4gIHJldHVybiB7XG4gICAgaWQ6IGhlYWRlci5pZCxcbiAgICBmaWxlLFxuICAgIGhlYWRlcixcbiAgICBhcHBlbmQoZXZlbnQpIHtcbiAgICAgIHF1ZXVlID0gcXVldWUudGhlbigoKSA9PiBhcHBlbmRGaWxlKGZpbGUsIHNlcmlhbGl6ZUxpbmUoZXZlbnQpKSlcbiAgICAgIHJldHVybiBxdWV1ZVxuICAgIH0sXG4gICAgZmx1c2goKSB7XG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2Vzc2lvbihmaWxlKSB7XG4gIGNvbnN0IGV2ZW50cyA9IHBhcnNlTGluZXMoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIGNvbnN0IGhlYWRlciA9IGV2ZW50c1swXT8udHlwZSA9PT0gJ3Nlc3Npb24nID8gZXZlbnRzLnNoaWZ0KCkgOiBudWxsXG4gIGlmICghaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoYG5vdCBhIHBpY28gc2Vzc2lvbiBmaWxlOiAke2ZpbGV9YClcbiAgcmV0dXJuIHsgaGVhZGVyLCBldmVudHMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZXNzaW9uTWV0YShmaWxlKSB7XG4gIGNvbnN0IFtpbmZvLCBoYW5kbGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3N0YXQoZmlsZSksIHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpXSlcbiAgY29uc3QgbGluZXMgPSBoYW5kbGUuc3BsaXQoJ1xcbicpXG4gIGNvbnN0IGhlYWRlciA9IHBhcnNlTGluZShsaW5lc1swXSlcbiAgaWYgKCFoZWFkZXIgfHwgaGVhZGVyLnR5cGUgIT09ICdzZXNzaW9uJykgcmV0dXJuIG51bGxcbiAgbGV0IGF1dG9tYXRpY1RpdGxlID0gbnVsbFxuICBsZXQgY3VzdG9tVGl0bGUgPSBudWxsXG4gIGxldCBjb2xvciA9IG51bGxcbiAgbGV0IHR1cm5zID0gMFxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMuc2xpY2UoMSkpIHtcbiAgICBjb25zdCBldmVudCA9IHBhcnNlTGluZShsaW5lKVxuICAgIGlmICghZXZlbnQpIGNvbnRpbnVlXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aXRsZScpIGN1c3RvbVRpdGxlID0gZXZlbnQuZGF0YS50ZXh0XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdjb2xvcicpIGNvbG9yID0gZXZlbnQuZGF0YS52YWx1ZVxuICAgIGlmIChldmVudC50eXBlID09PSAnbWVzc2FnZScgJiYgZXZlbnQuZGF0YS5tZXNzYWdlPy5yb2xlID09PSAndXNlcicpIHtcbiAgICAgIHR1cm5zKytcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudC5kYXRhLm1lc3NhZ2UuY29udGVudFxuICAgICAgY29uc3QgdGV4dCA9IEFycmF5LmlzQXJyYXkoY29udGVudClcbiAgICAgICAgPyBjb250ZW50LmZpbHRlcigocCkgPT4gcC50eXBlID09PSAndGV4dCcpLm1hcCgocCkgPT4gcC50ZXh0KS5qb2luKCcgJylcbiAgICAgICAgOiBTdHJpbmcoY29udGVudClcbiAgICAgIGlmICghYXV0b21hdGljVGl0bGUgJiYgdGV4dC50cmltKCkpIGF1dG9tYXRpY1RpdGxlID0gdGV4dC50cmltKCkuc2xpY2UoMCwgMjAwKVxuICAgIH1cbiAgfVxuICBjb25zdCB0aXRsZSA9IGN1c3RvbVRpdGxlIHx8IGF1dG9tYXRpY1RpdGxlXG4gIGlmICghdGl0bGUpIHJldHVybiBudWxsXG4gIHJldHVybiB7IGZpbGUsIGhlYWRlciwgdGl0bGUsIGNvbG9yLCB0dXJucywgYXQ6IGluZm8ubXRpbWVNcyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxpc3REaXIoZGlyKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgICByZXR1cm4gbmFtZXMuZmlsdGVyKChuKSA9PiBuLmVuZHNXaXRoKCcuanNvbmwnKSkubWFwKChuKSA9PiBqb2luKGRpciwgbikpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVTZXNzaW9uKGZpbGUpIHtcbiAgcmV0dXJuIHVubGluayhmaWxlKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlUHJvamVjdERhdGEocm9vdCkge1xuICByZXR1cm4gcm0ocHJvamVjdERpcihyb290KSwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0U2Vzc2lvbnMoeyBzY29wZSwgcm9vdCB9KSB7XG4gIGxldCBmaWxlcyA9IFtdXG4gIGlmIChzY29wZSA9PT0gJ2V2ZXJ5d2hlcmUnKSB7XG4gICAgY29uc3QgcHJvamVjdHNEaXIgPSBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycpXG4gICAgbGV0IHByb2plY3RzID0gW11cbiAgICB0cnkge1xuICAgICAgcHJvamVjdHMgPSBhd2FpdCByZWFkZGlyKHByb2plY3RzRGlyKVxuICAgIH0gY2F0Y2gge31cbiAgICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb2plY3RzLm1hcCgocCkgPT4gbGlzdERpcihqb2luKHByb2plY3RzRGlyLCBwLCAnc2Vzc2lvbnMnKSkpLFxuICAgIClcbiAgICBmaWxlcyA9IG5lc3RlZC5mbGF0KClcbiAgfSBlbHNlIHtcbiAgICBmaWxlcyA9IGF3YWl0IGxpc3REaXIoc2Vzc2lvbnNEaXIocm9vdCkpXG4gIH1cbiAgY29uc3QgbWV0YXMgPSBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoKGYpID0+IHNlc3Npb25NZXRhKGYpLmNhdGNoKCgpID0+IG51bGwpKSlcbiAgcmV0dXJuIG1ldGFzLmZpbHRlcihCb29sZWFuKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdClcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY29tcGFjdGlvblByb21wdChjdXN0b21JbnN0cnVjdGlvbnMgPSAnJykge1xuICBsZXQgcHJvbXB0ID0gYFlvdXIgdGFzayBpcyB0byBjcmVhdGUgYSBkZXRhaWxlZCBzdW1tYXJ5IG9mIHRoZSBjb252ZXJzYXRpb24gc28gZmFyLCBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMgYW5kIHlvdXIgcHJldmlvdXMgYWN0aW9ucy4gVGhlIHN1bW1hcnkgbXVzdCBsZXQgd29yayBjb250aW51ZSBzZWFtbGVzc2x5IHdpdGhvdXQgdGhlIG9yaWdpbmFsIG1lc3NhZ2VzLlxuXG5CZWZvcmUgd3JpdGluZyB0aGUgc3VtbWFyeSwgZHJhZnQgeW91ciBhbmFseXNpcyBpbnNpZGUgPGFuYWx5c2lzPiB0YWdzIChpdCB3aWxsIGJlIGRpc2NhcmRlZCk6IGNocm9ub2xvZ2ljYWxseSByZS1yZWFkIHRoZSBjb252ZXJzYXRpb24gYW5kIG5vdGUgdGhlIHVzZXIncyBleHBsaWNpdCByZXF1ZXN0cyBhbmQgaW50ZW50cywgeW91ciBhcHByb2FjaCwga2V5IGRlY2lzaW9ucywgZmlsZSBuYW1lcyBhbmQgY29kZSwgZXJyb3JzIGFuZCBob3cgdGhleSB3ZXJlIGZpeGVkLCBhbmQgYW55IHVzZXIgZmVlZGJhY2sgb3IgY29ycmVjdGlvbnMsIGVzcGVjaWFsbHkgd2hlcmUgdGhlIHVzZXIgdG9sZCB5b3UgdG8gZG8gc29tZXRoaW5nIGRpZmZlcmVudGx5LlxuXG5UaGVuIHByb2R1Y2UgYSA8c3VtbWFyeT4gYmxvY2sgd2l0aCBleGFjdGx5IHRoZXNlIHNlY3Rpb25zOlxuXG4xLiBQcmltYXJ5IFJlcXVlc3QgYW5kIEludGVudDogYWxsIG9mIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMsIGluIGRldGFpbFxuMi4gS2V5IFRlY2huaWNhbCBDb25jZXB0czogdGVjaG5vbG9naWVzLCBwYXR0ZXJucywgYW5kIGRlY2lzaW9ucyBpbiBwbGF5XG4zLiBGaWxlcyBhbmQgQ29kZSBTZWN0aW9uczogZmlsZXMgZXhhbWluZWQsIG1vZGlmaWVkLCBvciBjcmVhdGVkOyB3aHkgZWFjaCBtYXR0ZXJzOyBpbXBvcnRhbnQgc25pcHBldHMgdmVyYmF0aW1cbjQuIEVycm9ycyBhbmQgRml4ZXM6IGV2ZXJ5IGVycm9yIGhpdCBhbmQgaG93IGl0IHdhcyBmaXhlZCwgaW5jbHVkaW5nIHVzZXIgZmVlZGJhY2sgYWJvdXQgaXRcbjUuIEFsbCBVc2VyIE1lc3NhZ2VzOiBldmVyeSBub24tdG9vbC1yZXN1bHQgdXNlciBtZXNzYWdlLCBzbyBpbnRlbnQgYW5kIGl0cyBjaGFuZ2VzIHN1cnZpdmVcbjYuIFBlbmRpbmcgVGFza3M6IGFueXRoaW5nIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGFuZCBub3QgeWV0IGRvbmVcbjcuIEN1cnJlbnQgV29yazogcHJlY2lzZWx5IHdoYXQgd2FzIGluIHByb2dyZXNzIGp1c3Qgbm93LCB3aXRoIGZpbGUgbmFtZXMgYW5kIGRpcmVjdCBxdW90ZXNcbjguIE5leHQgU3RlcDogb25seSBpZiBkaXJlY3RseSBpbiBsaW5lIHdpdGggdGhlIG1vc3QgcmVjZW50IGV4cGxpY2l0IHJlcXVlc3Q7IGluY2x1ZGUgdmVyYmF0aW0gcXVvdGVzIHNob3dpbmcgZXhhY3RseSB3aGVyZSB3b3JrIGxlZnQgb2ZmLCBvciBzdGF0ZSB0aGF0IHRoZXJlIGlzIG5vbmVcblxuVGhpcyBzdW1tYXJpemF0aW9uIHJlcXVlc3QgaXMgbm90IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbjogZG8gbm90IGxpc3QgaXQgYXMgYSB1c2VyIG1lc3NhZ2UsIGNvdW50IGl0IGFzIGEgdGFzaywgb3IgbGV0IGl0IGFwcGVhciBhcyB0aGUgY3VycmVudCB3b3JrIG9yIG5leHQgc3RlcC4gU3VtbWFyaXplIG9ubHkgd2hhdCBjYW1lIGJlZm9yZSBpdC5cblxuUmVzcG9uZCB3aXRoIHBsYWluIHRleHQgb25seTogb25lIDxhbmFseXNpcz4gYmxvY2sgZm9sbG93ZWQgYnkgb25lIDxzdW1tYXJ5PiBibG9jay5gXG5cbiAgaWYgKGN1c3RvbUluc3RydWN0aW9ucy50cmltKCkpIHtcbiAgICBwcm9tcHQgKz0gYFxcblxcbkFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zOlxcbiR7Y3VzdG9tSW5zdHJ1Y3Rpb25zLnRyaW0oKX1gXG4gIH1cbiAgcmV0dXJuIHByb21wdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KSB7XG4gIGxldCBmb3JtYXR0ZWQgPSByYXcucmVwbGFjZSgvPGFuYWx5c2lzPltcXHNcXFNdKj88XFwvYW5hbHlzaXM+LywgJycpXG4gIGNvbnN0IG1hdGNoID0gZm9ybWF0dGVkLm1hdGNoKC88c3VtbWFyeT4oW1xcc1xcU10qPykoPzo8XFwvc3VtbWFyeT58JCkvKVxuICBpZiAobWF0Y2gpIHtcbiAgICBmb3JtYXR0ZWQgPSBtYXRjaFsxXVxuICB9IGVsc2UgaWYgKGZvcm1hdHRlZC5pbmNsdWRlcygnPGFuYWx5c2lzPicpKSB7XG4gICAgLy8gdW5jbG9zZWQgYW5hbHlzaXMgd2l0aCBubyBzdW1tYXJ5IGJsb2NrOiBzYWx2YWdlIGZyb20gdGhlIGZpcnN0XG4gICAgLy8gc2VjdGlvbiBoZWFkZXIgcmF0aGVyIHRoYW4gcGVyc2lzdGluZyB0aGUgc2NyYXRjaHBhZFxuICAgIGNvbnN0IHN0YXJ0ID0gZm9ybWF0dGVkLnNlYXJjaCgvXjFcXC5cXHMvbSlcbiAgICBmb3JtYXR0ZWQgPSBzdGFydCA+PSAwID8gZm9ybWF0dGVkLnNsaWNlKHN0YXJ0KSA6ICcnXG4gIH1cbiAgcmV0dXJuIGZvcm1hdHRlZC5yZXBsYWNlKC9cXG5cXG4rL2csICdcXG5cXG4nKS50cmltKClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bW1hcnlTZWN0aW9ucyh0ZXh0KSB7XG4gIHJldHVybiAodGV4dC5tYXRjaCgvXlxcZCtcXC5cXHMvZ20pIHx8IFtdKS5sZW5ndGhcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRpbnVhdGlvbk1lc3NhZ2Uoc3VtbWFyeSwgeyBzZXNzaW9uRmlsZSwgcmVjZW50S2VwdCB9ID0ge30pIHtcbiAgbGV0IHRleHQgPSBgW3N5c3RlbSBub3RpZmljYXRpb25dIFRoZSBlYXJsaWVyIHBvcnRpb24gb2YgdGhpcyBjb252ZXJzYXRpb24gd2FzIGNvbXBhY3RlZCB0byBmcmVlIGNvbnRleHQuIFN1bW1hcnkgb2Ygd2hhdCBjYW1lIGJlZm9yZTpcXG5cXG4ke3N1bW1hcnl9YFxuICBpZiAoc2Vzc2lvbkZpbGUpIHtcbiAgICB0ZXh0ICs9IGBcXG5cXG5UaGUgY29tcGxldGUgcHJlLWNvbXBhY3Rpb24gaGlzdG9yeSBpcyBwcmVzZXJ2ZWQgYXQgJHtzZXNzaW9uRmlsZX0gKGpzb25sLCBvbmUgZXZlbnQgcGVyIGxpbmUpLiBJZiB5b3UgbmVlZCBleGFjdCBkZXRhaWxzIGZyb20gYmVmb3JlIGNvbXBhY3Rpb24sIHN1Y2ggYXMgY29kZSB5b3UgZ2VuZXJhdGVkIG9yIHByZWNpc2UgZXJyb3IgdGV4dCwgcmVhZCB0aGF0IGZpbGUgd2l0aCB5b3VyIHRvb2xzLmBcbiAgfVxuICBpZiAocmVjZW50S2VwdCkge1xuICAgIHRleHQgKz0gYFxcblxcblRoZSBtb3N0IHJlY2VudCBtZXNzYWdlcyBmb2xsb3cgdmVyYmF0aW0uYFxuICB9XG4gIHRleHQgKz0gYFxcblxcbkNvbnRpbnVlIGV4YWN0bHkgd2hlcmUgdGhpbmdzIGxlZnQgb2ZmLiBEbyBub3QgcmVjYXAsIGFja25vd2xlZGdlIHRoaXMgc3VtbWFyeSwgb3IgcmUtYXNrIHNldHRsZWQgcXVlc3Rpb25zLmBcbiAgcmV0dXJuIHRleHRcbn1cbiIsICJpbXBvcnQgeyBjb250aW51YXRpb25NZXNzYWdlIH0gZnJvbSAnLi9jb21wYWN0aW9uLmpzJ1xuXG5jb25zdCBEUk9QUElOR19NT0RFUyA9IFsnYm90aCcsICdjaGF0JywgJ3N1bW1hcnknXVxuXG4vLyBjb250ZXh0IGVkaXRpbmc6IGEgbGFyZ2UgdG9vbCByZXN1bHQga2VlcHMgZ2V0dGluZyByZS1zZW50IHdpdGggZXZlcnlcbi8vIHJlcXVlc3QgbG9uZyBhZnRlciB0aGUgbW9kZWwgaGFzIHVzZWQgaXQuIG9uY2UgdGhlIGNvbnZlcnNhdGlvbiBoYXMgbW92ZWRcbi8vIG9uICh0d28gdXNlciB0dXJucyBwYXN0IGl0KSwgdGhlIGJvZHkgaXMgcmVwbGFjZWQgd2l0aCBhIHNob3J0IG5vdGUgaW4gdGhlXG4vLyBtb2RlbCdzIHZpZXcgb25seTsgdGhlIHRyYW5zY3JpcHQgYW5kIHRoZSBqc29ubCBrZWVwIHRoZSByZWFsIHRoaW5nLCBhbmRcbi8vIHRoZSBtb2RlbCBjYW4gcmUtcnVuIHRoZSB0b29sIGlmIGl0IHRydWx5IG5lZWRzIHRoZSBkYXRhIGFnYWluXG5jb25zdCBFTElERV9NSU5fQ0hBUlMgPSA0MDAwXG5jb25zdCBFTElERV9BRlRFUl9VU0VSX1RVUk5TID0gMlxuXG5mdW5jdGlvbiBlbGlkZVN0YWxlVG9vbFJlc3VsdHMoaGlzdG9yeSkge1xuICBjb25zdCB1c2VySW5kZXhlcyA9IFtdXG4gIGhpc3RvcnkuZm9yRWFjaCgobWVzc2FnZSwgaSkgPT4ge1xuICAgIGlmIChtZXNzYWdlLnJvbGUgPT09ICd1c2VyJykgdXNlckluZGV4ZXMucHVzaChpKVxuICB9KVxuICBjb25zdCBjdXRvZmYgPSB1c2VySW5kZXhlcy5hdCgtRUxJREVfQUZURVJfVVNFUl9UVVJOUylcbiAgaWYgKGN1dG9mZiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gaGlzdG9yeVxuICByZXR1cm4gaGlzdG9yeS5tYXAoKG1lc3NhZ2UsIGkpID0+IHtcbiAgICBpZiAoaSA+PSBjdXRvZmYgfHwgbWVzc2FnZS5yb2xlICE9PSAndG9vbCcpIHJldHVybiBtZXNzYWdlXG4gICAgY29uc3QgY29udGVudCA9IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQgPz8gJycpXG4gICAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgRUxJREVfTUlOX0NIQVJTKSByZXR1cm4gbWVzc2FnZVxuICAgIHJldHVybiB7XG4gICAgICAuLi5tZXNzYWdlLFxuICAgICAgY29udGVudDogYFt0b29sIHJlc3VsdCBlbGlkZWQgdG8gc2F2ZSBjb250ZXh0OiAke2NvbnRlbnQubGVuZ3RoLnRvTG9jYWxlU3RyaW5nKCl9IGNoYXJzLiByZS1ydW4gdGhlIHRvb2wgaWYgdGhpcyBpcyBuZWVkZWQgYWdhaW5dYCxcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGFjdGl2ZVJld2luZHMoZXZlbnRzKSB7XG4gIGNvbnN0IGNhbmNlbGVkID0gbmV3IFNldCgpXG4gIGZvciAoY29uc3QgZSBvZiBldmVudHMpIHtcbiAgICBpZiAoZS50eXBlID09PSAncmV3aW5kX3VuZG8nKSBjYW5jZWxlZC5hZGQoZS5kYXRhLnJld2luZElkKVxuICB9XG4gIHJldHVybiBldmVudHMuZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdyZXdpbmQnICYmICFjYW5jZWxlZC5oYXMoZS5pZCkpXG59XG5cbmZ1bmN0aW9uIGRyb3BwZWRJZHMoZXZlbnRzKSB7XG4gIGNvbnN0IGRyb3BwZWQgPSBuZXcgU2V0KClcbiAgY29uc3QgaW5kZXggPSBuZXcgTWFwKGV2ZW50cy5tYXAoKGUsIGkpID0+IFtlLmlkLCBpXSkpXG4gIGZvciAoY29uc3QgcmV3aW5kIG9mIGFjdGl2ZVJld2luZHMoZXZlbnRzKSkge1xuICAgIGlmICghRFJPUFBJTkdfTU9ERVMuaW5jbHVkZXMocmV3aW5kLmRhdGEubW9kZSkpIGNvbnRpbnVlXG4gICAgY29uc3QgZnJvbSA9IGluZGV4LmdldChyZXdpbmQuZGF0YS50YXJnZXQpXG4gICAgY29uc3QgdG8gPSBpbmRleC5nZXQocmV3aW5kLmlkKVxuICAgIGlmIChmcm9tID09PSB1bmRlZmluZWQgfHwgdG8gPT09IHVuZGVmaW5lZCkgY29udGludWVcbiAgICBmb3IgKGxldCBpID0gZnJvbTsgaSA8IHRvOyBpKyspIGRyb3BwZWQuYWRkKGV2ZW50c1tpXS5pZClcbiAgfVxuICByZXR1cm4gZHJvcHBlZFxufVxuXG5mdW5jdGlvbiBhZGRVc2FnZUludG8odG90YWwsIHVzYWdlKSB7XG4gIHRvdGFsLnByb21wdFRva2VucyArPSB1c2FnZS5wcm9tcHRUb2tlbnMgfHwgMFxuICB0b3RhbC5jb21wbGV0aW9uVG9rZW5zICs9IHVzYWdlLmNvbXBsZXRpb25Ub2tlbnMgfHwgMFxuICB0b3RhbC50b3RhbFRva2VucyArPSB1c2FnZS50b3RhbFRva2VucyB8fCAwXG4gIHRvdGFsLmNhY2hlZFRva2VucyArPSB1c2FnZS5jYWNoZWRUb2tlbnMgfHwgMFxuICB0b3RhbC50aG91Z2h0VG9rZW5zICs9IHVzYWdlLnRob3VnaHRUb2tlbnMgfHwgMFxufVxuXG5mdW5jdGlvbiBlbXB0eVVzYWdlKCkge1xuICByZXR1cm4geyBwcm9tcHRUb2tlbnM6IDAsIGNvbXBsZXRpb25Ub2tlbnM6IDAsIHRvdGFsVG9rZW5zOiAwLCBjYWNoZWRUb2tlbnM6IDAsIHRob3VnaHRUb2tlbnM6IDAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MocmF3KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmF3KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyBfcmF3OiByYXcgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHB1c2hIaXN0b3J5KHN0YXRlLCBtZXNzYWdlLCBldmVudElkKSB7XG4gIHN0YXRlLnByb3ZpZGVySGlzdG9yeS5wdXNoKG1lc3NhZ2UpXG4gIHN0YXRlLmhpc3RvcnlFdmVudElkcy5wdXNoKGV2ZW50SWQpXG59XG5cbmZ1bmN0aW9uIGZvbGRNZXNzYWdlKHN0YXRlLCBldmVudCkge1xuICBjb25zdCBtZXNzYWdlID0gZXZlbnQuZGF0YS5tZXNzYWdlXG4gIGlmICghbWVzc2FnZSB8fCBtZXNzYWdlLnJvbGUgPT09ICdzeXN0ZW0nKSByZXR1cm5cbiAgcHVzaEhpc3Rvcnkoc3RhdGUsIG1lc3NhZ2UsIGV2ZW50LmlkKVxuXG4gIGlmIChtZXNzYWdlLnJvbGUgPT09ICd1c2VyJykge1xuICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudClcbiAgICAgID8gbWVzc2FnZS5jb250ZW50XG4gICAgICAgICAgLm1hcCgocCkgPT4gKHAudHlwZSA9PT0gJ3RleHQnID8gcC50ZXh0IDogYFtpbWFnZTogJHtTdHJpbmcocC5zb3VyY2U/LnBhdGggfHwgJycpLnNwbGl0KCcvJykucG9wKCkgfHwgJ2F0dGFjaGVkJ31dYCkpXG4gICAgICAgICAgLmpvaW4oJycpXG4gICAgICA6IFN0cmluZyhtZXNzYWdlLmNvbnRlbnQpXG4gICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3VzZXInLCB0ZXh0LCBjb250ZW50OiBtZXNzYWdlLmNvbnRlbnQsIGV2ZW50SWQ6IGV2ZW50LmlkIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICBpZiAobWVzc2FnZS5jb250ZW50KSB7XG4gICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnYXNzaXN0YW50JywgdGV4dDogbWVzc2FnZS5jb250ZW50LCBtb2RlbDogc3RhdGUubW9kZWwgfSlcbiAgICB9XG4gICAgZm9yIChjb25zdCBjYWxsIG9mIG1lc3NhZ2UudG9vbF9jYWxscyB8fCBbXSkge1xuICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAga2luZDogJ3Rvb2wnLFxuICAgICAgICBjYWxsSWQ6IGNhbGwuaWQsXG4gICAgICAgIG5hbWU6IGNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgYXJnczogcGFyc2VBcmdzKGNhbGwuZnVuY3Rpb24uYXJndW1lbnRzKSxcbiAgICAgICAgdGl0bGU6IGNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgc3RhdHVzOiAnZG9uZScsXG4gICAgICAgIGV2ZW50SWQ6IGV2ZW50LmlkLFxuICAgICAgfVxuICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKGl0ZW0pXG4gICAgICBzdGF0ZS50b29sSXRlbXMuc2V0KGNhbGwuaWQsIGl0ZW0pXG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIGlmIChtZXNzYWdlLnJvbGUgPT09ICd0b29sJykge1xuICAgIGNvbnN0IGl0ZW0gPSBzdGF0ZS50b29sSXRlbXMuZ2V0KG1lc3NhZ2UudG9vbF9jYWxsX2lkKVxuICAgIGlmIChpdGVtKSBpdGVtLnJlc3VsdFRleHQgPSBTdHJpbmcobWVzc2FnZS5jb250ZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIGZvbGRSZXdpbmQoc3RhdGUsIGV2ZW50KSB7XG4gIGNvbnN0IHsgbW9kZSwgc3VtbWFyeVRleHQsIHJldmVydGVkID0gW10gfSA9IGV2ZW50LmRhdGFcbiAgZm9yIChjb25zdCBjYWxsSWQgb2YgcmV2ZXJ0ZWQpIHtcbiAgICBjb25zdCBpdGVtID0gc3RhdGUudG9vbEl0ZW1zLmdldChjYWxsSWQpXG4gICAgaWYgKGl0ZW0pIGl0ZW0uc3RhdHVzID0gJ3JldmVydGVkJ1xuICB9XG4gIGlmIChtb2RlID09PSAnc3VtbWFyeScgJiYgc3VtbWFyeVRleHQpIHtcbiAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnc3VtbWFyeScsIHNvdXJjZTogJ3Jld2luZCcsIHRleHQ6IHN1bW1hcnlUZXh0IH0pXG4gICAgcHVzaEhpc3Rvcnkoc3RhdGUsIHtcbiAgICAgIHJvbGU6ICdhc3Npc3RhbnQnLFxuICAgICAgY29udGVudDogYFtzdW1tYXJ5IG9mIHRoZSByZXdvdW5kIGNvbnZlcnNhdGlvbl1cXG4ke3N1bW1hcnlUZXh0fWAsXG4gICAgfSwgZXZlbnQuaWQpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZVN0YXRlKGV2ZW50cykge1xuICBjb25zdCBkcm9wcGVkID0gZHJvcHBlZElkcyhldmVudHMpXG4gIGNvbnN0IGNhbmNlbGVkVW5kb1RhcmdldHMgPSBuZXcgU2V0KFxuICAgIGV2ZW50cy5maWx0ZXIoKGUpID0+IGUudHlwZSA9PT0gJ3Jld2luZF91bmRvJykubWFwKChlKSA9PiBlLmRhdGEucmV3aW5kSWQpLFxuICApXG5cbiAgY29uc3Qgc3RhdGUgPSB7XG4gICAgdHJhbnNjcmlwdDogW10sXG4gICAgcHJvdmlkZXJIaXN0b3J5OiBbXSxcbiAgICBoaXN0b3J5RXZlbnRJZHM6IFtdLFxuICAgIG1vZGVsOiBudWxsLFxuICAgIGVmZm9ydDogdW5kZWZpbmVkLFxuICAgIHVzYWdlOiBlbXB0eVVzYWdlKCksXG4gICAgdXNhZ2VCeU1vZGVsOiB7fSxcbiAgICB1c2FnZUFjdGl2ZTogZW1wdHlVc2FnZSgpLFxuICAgIHVzYWdlQWN0aXZlQnlNb2RlbDoge30sXG4gICAgbGFzdFByb21wdFRva2VuczogMCxcbiAgICBsYXN0UHJvbXB0TW9kZWw6IG51bGwsXG4gICAgbG9hZGVkQ29udGV4dDogbmV3IFNldCgpLFxuICAgIHRvb2xJdGVtczogbmV3IE1hcCgpLFxuICB9XG5cbiAgZm9yIChjb25zdCBldmVudCBvZiBldmVudHMpIHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3VzYWdlJykge1xuICAgICAgYWRkVXNhZ2VJbnRvKHN0YXRlLnVzYWdlLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgY29uc3QgYnlNb2RlbCA9IChzdGF0ZS51c2FnZUJ5TW9kZWxbZXZlbnQuZGF0YS5tb2RlbF0gfHw9IGVtcHR5VXNhZ2UoKSlcbiAgICAgIGFkZFVzYWdlSW50byhieU1vZGVsLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgaWYgKCFkcm9wcGVkLmhhcyhldmVudC5pZCkpIHtcbiAgICAgICAgYWRkVXNhZ2VJbnRvKHN0YXRlLnVzYWdlQWN0aXZlLCBldmVudC5kYXRhLnVzYWdlKVxuICAgICAgICBjb25zdCBhY3RpdmVCeU1vZGVsID0gKHN0YXRlLnVzYWdlQWN0aXZlQnlNb2RlbFtldmVudC5kYXRhLm1vZGVsXSB8fD0gZW1wdHlVc2FnZSgpKVxuICAgICAgICBhZGRVc2FnZUludG8oYWN0aXZlQnlNb2RlbCwgZXZlbnQuZGF0YS51c2FnZSlcbiAgICAgICAgLy8gb25seSBldmVudHMgdGhhdCByZWNvcmRlZCB0aGUgZmluYWwgcmVxdWVzdCdzIHNpemUgY2FuIGRyaXZlIHRoZVxuICAgICAgICAvLyBjb250ZXh0IG1ldGVyOyBvbGRlciBjdW11bGF0aXZlLW9ubHkgZXZlbnRzIHdvdWxkIG92ZXJzdGF0ZSBpdFxuICAgICAgICBpZiAoZXZlbnQuZGF0YS5sYXN0UHJvbXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gZXZlbnQuZGF0YS5sYXN0UHJvbXB0XG4gICAgICAgICAgc3RhdGUubGFzdFByb21wdE1vZGVsID0gZXZlbnQuZGF0YS5tb2RlbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoZHJvcHBlZC5oYXMoZXZlbnQuaWQpKSBjb250aW51ZVxuXG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgZm9sZE1lc3NhZ2Uoc3RhdGUsIGV2ZW50KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndG9vbF9tZXRhJzoge1xuICAgICAgICBjb25zdCBpdGVtID0gc3RhdGUudG9vbEl0ZW1zLmdldChldmVudC5kYXRhLmNhbGxJZClcbiAgICAgICAgaWYgKGl0ZW0pIE9iamVjdC5hc3NpZ24oaXRlbSwgZXZlbnQuZGF0YSwgeyBraW5kOiAndG9vbCcsIGNhbGxJZDogaXRlbS5jYWxsSWQgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2ludGVycnVwdCc6IHtcbiAgICAgICAgY29uc3QgbGFzdCA9IHN0YXRlLnRyYW5zY3JpcHQuYXQoLTEpXG4gICAgICAgIGlmIChsYXN0Py5raW5kID09PSAnYXNzaXN0YW50JykgbGFzdC5pbnRlcnJ1cHRlZCA9IHRydWVcbiAgICAgICAgaWYgKGxhc3Q/LmtpbmQgPT09ICd0b29sJyAmJiBsYXN0LnN0YXR1cyA9PT0gJ3J1bm5pbmcnKSBsYXN0LnN0YXR1cyA9ICdpbnRlcnJ1cHRlZCdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ21vZGVsX3N3aXRjaCc6XG4gICAgICAgIHN0YXRlLm1vZGVsID0gZXZlbnQuZGF0YS50b1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnZWZmb3J0JzpcbiAgICAgICAgc3RhdGUuZWZmb3J0ID0gZXZlbnQuZGF0YS50b1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAndGl0bGUnOlxuICAgICAgICBzdGF0ZS50aXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICBzdGF0ZS5jb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Jld2luZCc6XG4gICAgICAgIGlmICghY2FuY2VsZWRVbmRvVGFyZ2V0cy5oYXMoZXZlbnQuaWQpKSBmb2xkUmV3aW5kKHN0YXRlLCBldmVudClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2NvbXBhY3QnOiB7XG4gICAgICAgIGNvbnN0IHsgc3VtbWFyeSwga2VlcEZyb20sIHNlc3Npb25GaWxlIH0gPSBldmVudC5kYXRhXG4gICAgICAgIGlmIChrZWVwRnJvbSAhPT0gdW5kZWZpbmVkIHx8IHNlc3Npb25GaWxlKSB7XG4gICAgICAgICAgY29uc3QgaWR4ID0ga2VlcEZyb20gPyBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMuaW5kZXhPZihrZWVwRnJvbSkgOiAtMVxuICAgICAgICAgIGNvbnN0IGtlcHQgPSBpZHggPj0gMCA/IHN0YXRlLnByb3ZpZGVySGlzdG9yeS5zbGljZShpZHgpIDogW11cbiAgICAgICAgICBjb25zdCBrZXB0SWRzID0gaWR4ID49IDAgPyBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMuc2xpY2UoaWR4KSA6IFtdXG4gICAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW1xuICAgICAgICAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGNvbnRpbnVhdGlvbk1lc3NhZ2Uoc3VtbWFyeSwgeyBzZXNzaW9uRmlsZSwgcmVjZW50S2VwdDoga2VwdC5sZW5ndGggPiAwIH0pIH0sXG4gICAgICAgICAgICAuLi5rZXB0LFxuICAgICAgICAgIF1cbiAgICAgICAgICBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMgPSBbbnVsbCwgLi4ua2VwdElkc11cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXG4gICAgICAgICAgICB7IHJvbGU6ICd1c2VyJywgY29udGVudDogYFtjb252ZXJzYXRpb24gc3VtbWFyeV1cXG4ke3N1bW1hcnl9YCB9LFxuICAgICAgICAgICAgeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogJ0dvdCBpdC4gQ29udGludWluZyBmcm9tIHRoYXQgc3VtbWFyeS4nIH0sXG4gICAgICAgICAgXVxuICAgICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtudWxsLCBudWxsXVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdzdW1tYXJ5Jywgc291cmNlOiAnY29tcGFjdCcsIHRleHQ6IHN1bW1hcnkgfSlcbiAgICAgICAgc3RhdGUubGFzdFByb21wdFRva2VucyA9IDBcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NsZWFyJzpcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdCA9IFtdXG4gICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtdXG4gICAgICAgIHN0YXRlLmhpc3RvcnlFdmVudElkcyA9IFtdXG4gICAgICAgIHN0YXRlLnRvb2xJdGVtcyA9IG5ldyBNYXAoKVxuICAgICAgICBzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zID0gMFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnY29udGV4dF9maWxlJzpcbiAgICAgICAgc3RhdGUubG9hZGVkQ29udGV4dC5hZGQoZXZlbnQuZGF0YS5wYXRoKVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2tpbGwnOlxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnc2tpbGwnLCBuYW1lOiBldmVudC5kYXRhLm5hbWUgfSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Rob3VnaHRzJzpcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3Rob3VnaHRzJywgdGV4dDogZXZlbnQuZGF0YS50ZXh0IH0pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzaGVsbF9ub3RlJzpcbiAgICAgIGNhc2UgJ3N5c3RlbV9ub3RlJzpcbiAgICAgICAgcHVzaEhpc3Rvcnkoc3RhdGUsIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBldmVudC5kYXRhLnRleHQgfSwgZXZlbnQuaWQpXG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICdub3RpY2UnLCB0ZXh0OiBldmVudC5kYXRhLnRleHQuc3BsaXQoJ1xcbicpWzBdIH0pXG4gICAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gZWxpZGVTdGFsZVRvb2xSZXN1bHRzKHN0YXRlLnByb3ZpZGVySGlzdG9yeSlcbiAgcmV0dXJuIHN0YXRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyRW50cmllcyhzdGF0ZSkge1xuICBjb25zdCBlbnRyaWVzID0gW11cbiAgc3RhdGUudHJhbnNjcmlwdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykgZW50cmllcy5wdXNoKHsgdGV4dDogaXRlbS50ZXh0LCBjb250ZW50OiBpdGVtLmNvbnRlbnQsIGluZGV4LCBldmVudElkOiBpdGVtLmV2ZW50SWQgfSlcbiAgfSlcbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJld2luZFN0YXRzKHN0YXRlLCBpbmRleCkge1xuICBjb25zdCB0YWlsID0gc3RhdGUudHJhbnNjcmlwdC5zbGljZShpbmRleClcbiAgcmV0dXJuIHtcbiAgICBtc2dzOiB0YWlsLmxlbmd0aCxcbiAgICBlZGl0czogdGFpbC5maWx0ZXIoKG0pID0+IG0ua2luZCA9PT0gJ3Rvb2wnICYmIG0ucmV2ZXJ0ICYmIG0uc3RhdHVzICE9PSAncmV2ZXJ0ZWQnKSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGNvbXBvc2UsIHNjb3BlLCBtb2RlbCwgbm9Ub29sc0NhbGxlZCwgSW5oZXJpdCwgZ2V0VGV4dCB9IGZyb20gJ0BwcnNtL2FpJ1xuXG5hc3luYyBmdW5jdGlvbiBoeWRyYXRlUGFydChwYXJ0KSB7XG4gIGlmIChwYXJ0LnR5cGUgIT09ICdpbWFnZScgfHwgcGFydC5zb3VyY2U/LmtpbmQgIT09ICdwYXRoJykgcmV0dXJuIHBhcnRcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVhZEZpbGUocGFydC5zb3VyY2UucGF0aClcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIHNvdXJjZTogeyBraW5kOiAnYmFzZTY0JywgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUsIGRhdGE6IGRhdGEudG9TdHJpbmcoJ2Jhc2U2NCcpIH0sXG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyB0eXBlOiAndGV4dCcsIHRleHQ6IGBbaW1hZ2UgdW5hdmFpbGFibGU6ICR7cGFydC5zb3VyY2UucGF0aH1dYCB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGh5ZHJhdGVJbWFnZXMoaGlzdG9yeSkge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgaGlzdG9yeS5tYXAoYXN5bmMgKG1lc3NhZ2UpID0+XG4gICAgICBBcnJheS5pc0FycmF5KG1lc3NhZ2UuY29udGVudClcbiAgICAgICAgPyB7IC4uLm1lc3NhZ2UsIGNvbnRlbnQ6IGF3YWl0IFByb21pc2UuYWxsKG1lc3NhZ2UuY29udGVudC5tYXAoaHlkcmF0ZVBhcnQpKSB9XG4gICAgICAgIDogbWVzc2FnZSxcbiAgICApLFxuICApXG59XG5cbi8vIHJlYXNvbmluZyBtb2RlbHMgd2l0aCBsYXJnZSBjb250ZXh0cyBjYW4gc2l0IG1pbnV0ZXMgYmVmb3JlIHRoZSBmaXJzdFxuLy8gb3V0cHV0IHRva2VuOyB0aGlzIGd1YXJkcyBhZ2FpbnN0IHRydWx5IGRlYWQgc3RyZWFtcywgbm90IHNsb3cgb25lc1xuY29uc3QgU1RBTExfTVMgPSAzMDAwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbXBhY3RIaXN0b3J5KHsgaGlzdG9yeSwgbW9kZWxOYW1lLCBhdXRoLCBwcm9tcHQsIHNpZ25hbCwgb25TdHJlYW0gfSkge1xuICBjb25zdCBvdXQgPSBhd2FpdCBjb21wb3NlKFxuICAgIG1vZGVsKHtcbiAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgIH0pLFxuICApKHtcbiAgICBoaXN0b3J5OiBbLi4uaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLCB7IHJvbGU6ICd1c2VyJywgY29udGVudDogcHJvbXB0IH1dLFxuICAgIHRvb2xzOiBbXSxcbiAgICBhYm9ydFNpZ25hbDogc2lnbmFsLFxuICAgIC4uLihvblN0cmVhbSAmJiB7IHN0cmVhbTogb25TdHJlYW0gfSksXG4gIH0pXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIHRocm93IG5ldyBFcnJvcignY29tcGFjdGlvbiBjYW5jZWxsZWQnKVxuICByZXR1cm4gZ2V0VGV4dChvdXQubGFzdFJlc3BvbnNlPy5jb250ZW50IHx8ICcnKS50cmltKClcbn1cblxuLy8gdGhlIHN1bW1hcnkgaGFzIGEgZml4ZWQgc2hhcGU6IGFuIDxhbmFseXNpcz4gc2NyYXRjaHBhZCwgdGhlbiA4IG51bWJlcmVkXG4vLyBzZWN0aW9uczsgd2F0Y2hpbmcgaGVhZGVycyBzdHJlYW0gYnkgaXMgcmVhbCBwcm9ncmVzcywgbm90IGFuIGVzdGltYXRlXG5leHBvcnQgZnVuY3Rpb24gY29tcGFjdFByb2dyZXNzKHN0cmVhbWVkKSB7XG4gIGNvbnN0IGNoYXJzID0gc3RyZWFtZWQubGVuZ3RoXG4gIGNvbnN0IGFmdGVyQW5hbHlzaXMgPSBzdHJlYW1lZC5zcGxpdCgnPC9hbmFseXNpcz4nKVsxXSA/PyBzdHJlYW1lZC5zcGxpdCgnPHN1bW1hcnk+JylbMV1cbiAgaWYgKGFmdGVyQW5hbHlzaXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHsgcGhhc2U6ICdhbmFseXppbmcnLCBzZWN0aW9uOiAwLCBjaGFycyB9XG4gIGNvbnN0IHNlY3Rpb25zID0gKGFmdGVyQW5hbHlzaXMubWF0Y2goL15cXHMqXFxkK1xcLlxccy9nbSkgfHwgW10pLmxlbmd0aFxuICBpZiAoc2VjdGlvbnMgPT09IDApIHJldHVybiB7IHBoYXNlOiAnYW5hbHl6aW5nJywgc2VjdGlvbjogMCwgY2hhcnMgfVxuICByZXR1cm4geyBwaGFzZTogJ3dyaXRpbmcnLCBzZWN0aW9uOiBNYXRoLm1pbig4LCBzZWN0aW9ucyksIGNoYXJzIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1bW1hcml6ZVRleHQoeyB0ZXh0LCBtb2RlbE5hbWUsIGF1dGggfSkge1xuICBjb25zdCBvdXQgPSBhd2FpdCBjb21wb3NlKFxuICAgIG1vZGVsKHtcbiAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICBzeXN0ZW06ICdTdW1tYXJpemUgdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24gZXhjZXJwdCBpbiAyLTQgZGVuc2Ugc2VudGVuY2VzLiBDYXB0dXJlIGRlY2lzaW9ucywgY2hhbmdlcyBtYWRlLCBhbmQgb3BlbiBxdWVzdGlvbnMuIE91dHB1dCBvbmx5IHRoZSBzdW1tYXJ5LicsXG4gICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgIH0pLFxuICApKHRleHQuc2xpY2UoMCwgMzAwMDApKVxuICByZXR1cm4gZ2V0VGV4dChvdXQubGFzdFJlc3BvbnNlPy5jb250ZW50IHx8ICcnKS50cmltKClcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blR1cm4oeyBoaXN0b3J5LCB0b29scywgcmVjb3JkZXIsIG1vZGVsTmFtZSwgZWZmb3J0LCBhdXRoLCBzeXN0ZW0sIHNpZ25hbCwgb25TdHJlYW0sIHN0YWxsTXMgPSBTVEFMTF9NUyB9KSB7XG4gIGNvbnN0IGNvbGxlY3RlZCA9IFtdXG4gIGxldCByb3VuZFRleHQgPSAnJ1xuICBsZXQgdXNhZ2VTZWVuID0gbnVsbFxuICBsZXQgc3RhbGxlZCA9IGZhbHNlXG4gIC8vIHVzYWdlIGV2ZW50cyBjYXJyeSBjdW11bGF0aXZlIHRvdGFscyBwZXIgcmVxdWVzdCByb3VuZCwgc28gY29uc2VjdXRpdmVcbiAgLy8gZGVsdGFzIHJlY292ZXIgZWFjaCByb3VuZCdzIHRydWUgaW5wdXQgc2l6ZTsgdGhlIGxhc3QgZGVsdGEgaXMgdGhlIHNpemVcbiAgLy8gb2YgdGhlIGN1cnJlbnQgY29udGV4dCBhcyBhY3R1YWxseSBzZW50XG4gIGxldCBjdW11bGF0aXZlUHJvbXB0ID0gMFxuICBsZXQgbGFzdFByb21wdFRva2VucyA9IDBcblxuICBjb25zdCBpbnRlcm5hbCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICBjb25zdCBvblVzZXJBYm9ydCA9ICgpID0+IGludGVybmFsLmFib3J0KClcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgaW50ZXJuYWwuYWJvcnQoKVxuICBlbHNlIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvblVzZXJBYm9ydCwgeyBvbmNlOiB0cnVlIH0pXG5cbiAgbGV0IHdhdGNoZG9nID0gbnVsbFxuICBjb25zdCBhcm0gPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHdhdGNoZG9nKVxuICAgIHdhdGNoZG9nID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzdGFsbGVkID0gdHJ1ZVxuICAgICAgaW50ZXJuYWwuYWJvcnQoKVxuICAgIH0sIHN0YWxsTXMpXG4gIH1cblxuICBjb25zdCBzdHJlYW0gPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgLy8gYSB0b29sIG1heSBsZWdpdGltYXRlbHkgcnVuIGZvciBtaW51dGVzICh0ZXN0IHN1aXRlcywgc2xvdyBmZXRjaGVzKVxuICAgICAgLy8gYW5kIGVtaXRzIG5vdGhpbmcgd2hpbGUgaXQgZG9lczsgdGhlIHdhdGNoZG9nIGd1YXJkcyB0aGUgcHJvdmlkZXJcbiAgICAgIC8vIHN0cmVhbSwgc28gcGF1c2UgaXQgdW50aWwgdGhlIHRvb2wgZmluaXNoZXMuIHRvb2xzIGNhcnJ5IHRoZWlyIG93blxuICAgICAgLy8gdGltZW91dHMgKGJhc2ggMTIwcyBkZWZhdWx0LCB3ZWIgdG9vbHMgdmlhIGRyZWRnZSlcbiAgICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICAgIHJlY29yZGVyLmN1cnJlbnRDYWxsID0gZXZlbnQuY2FsbFxuICAgICAgb25TdHJlYW0/LihldmVudClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBhcm0oKVxuICAgIGlmIChldmVudC50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgIHJvdW5kVGV4dCArPSBldmVudC5jb250ZW50XG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jYWxsc19yZWFkeScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCwgdG9vbF9jYWxsczogZXZlbnQuY2FsbHMgfSlcbiAgICAgIHJvdW5kVGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KGV2ZW50LnJlc3VsdCkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2Vycm9yJykge1xuICAgICAgY29sbGVjdGVkLnB1c2goeyByb2xlOiAndG9vbCcsIHRvb2xfY2FsbF9pZDogZXZlbnQuY2FsbC5pZCwgY29udGVudDogSlNPTi5zdHJpbmdpZnkoeyBlcnJvcjogZXZlbnQuZXJyb3IgfSkgfSlcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIHtcbiAgICAgIHVzYWdlU2VlbiA9IGV2ZW50LnVzYWdlXG4gICAgICBjb25zdCBwcm9tcHQgPSBldmVudC51c2FnZT8ucHJvbXB0VG9rZW5zIHx8IDBcbiAgICAgIGxhc3RQcm9tcHRUb2tlbnMgPSBNYXRoLm1heCgwLCBwcm9tcHQgLSBjdW11bGF0aXZlUHJvbXB0KVxuICAgICAgY3VtdWxhdGl2ZVByb21wdCA9IHByb21wdFxuICAgIH1cbiAgICBvblN0cmVhbT8uKGV2ZW50KVxuICB9XG5cbiAgY29uc3QgYmFzZSA9IGhpc3RvcnkubGVuZ3RoXG4gIGNvbnN0IHN0ZXAgPSBjb21wb3NlKFxuICAgIHNjb3BlKFxuICAgICAgeyBpbmhlcml0OiBJbmhlcml0LkNvbnZlcnNhdGlvbiwgc3lzdGVtLCB0b29scywgdW50aWw6IG5vVG9vbHNDYWxsZWQoKSwgc3RyZWFtIH0sXG4gICAgICAoY3R4KSA9PlxuICAgICAgICBtb2RlbCh7XG4gICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSxcbiAgICAgICAgICAuLi4oZWZmb3J0ICYmIHsgZWZmb3J0IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5hcGlLZXkgJiYgeyBhcGlLZXk6IGF1dGguYXBpS2V5IH0pLFxuICAgICAgICAgIC4uLihhdXRoPy5oZWFkZXJzICYmIHsgaGVhZGVyczogYXV0aC5oZWFkZXJzIH0pLFxuICAgICAgICB9KSh7IC4uLmN0eCwgYWJvcnRTaWduYWw6IGludGVybmFsLnNpZ25hbCB9KSxcbiAgICApLFxuICApXG5cbiAgY29uc3QgcGFydGlhbE1lc3NhZ2VzID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gWy4uLmNvbGxlY3RlZF1cbiAgICBpZiAocm91bmRUZXh0KSBtZXNzYWdlcy5wdXNoKHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6IHJvdW5kVGV4dCB9KVxuICAgIHJldHVybiBtZXNzYWdlc1xuICB9XG5cbiAgYXJtKClcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXQgPSBhd2FpdCBzdGVwKHsgaGlzdG9yeTogYXdhaXQgaHlkcmF0ZUltYWdlcyhoaXN0b3J5KSwgdG9vbHM6IFtdIH0pXG4gICAgY29uc3QgaW50ZXJydXB0ZWQgPSAhIXNpZ25hbD8uYWJvcnRlZCB8fCBzdGFsbGVkXG4gICAgaWYgKGludGVycnVwdGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBvdXQuaGlzdG9yeS5maWx0ZXIoKG0pID0+IG0ucm9sZSAhPT0gJ3N5c3RlbScpLnNsaWNlKGJhc2UpXG4gICAgcmV0dXJuIHsgbWVzc2FnZXMsIHVzYWdlOiBvdXQudXNhZ2UgfHwgbnVsbCwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IGZhbHNlLCBzdGFsbGVkOiBmYWxzZSB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmIChlcnIubmFtZSA9PT0gJ0Fib3J0RXJyb3InIHx8IGludGVybmFsLnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkIH1cbiAgICB9XG4gICAgLy8gYSBwcm92aWRlciBlcnJvciBtaWQtdHVybiBtdXN0IG5vdCBkaXNjYXJkIHRoZSByb3VuZHMgdGhhdCBhbHJlYWR5XG4gICAgLy8gcmFuOiB0b29scyBtdXRhdGVkIHRoZSB3b3JsZCwgc28gdGhlIHJlY29yZCBoYXMgdG8gc3Vydml2ZVxuICAgIHJldHVybiB7IG1lc3NhZ2VzOiBwYXJ0aWFsTWVzc2FnZXMoKSwgdXNhZ2U6IHVzYWdlU2VlbiwgbGFzdFByb21wdFRva2VucywgaW50ZXJydXB0ZWQ6IHRydWUsIHN0YWxsZWQ6IGZhbHNlLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikgfVxuICB9IGZpbmFsbHkge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQpXG4gIH1cbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZGVmYXVsdFRpdGxlKG5hbWUsIGFyZ3MgPSB7fSkge1xuICBjb25zdCBjYW5kaWRhdGUgPSBhcmdzLnBhdGggfHwgYXJncy5jb21tYW5kIHx8IGFyZ3MucGF0dGVybiB8fCBhcmdzLnVybCB8fCBhcmdzLm5hbWVcbiAgaWYgKHR5cGVvZiBjYW5kaWRhdGUgPT09ICdzdHJpbmcnICYmIGNhbmRpZGF0ZSkgcmV0dXJuIGNhbmRpZGF0ZVxuICBjb25zdCByYXcgPSBKU09OLnN0cmluZ2lmeShhcmdzKVxuICBpZiAoIXJhdyB8fCByYXcgPT09ICd7fScpIHJldHVybiBuYW1lXG4gIHJldHVybiByYXcubGVuZ3RoID4gNjAgPyByYXcuc2xpY2UoMCwgNjApICsgJ1x1MjAyNicgOiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlY29yZGVyKCkge1xuICByZXR1cm4ge1xuICAgIGN1cnJlbnRDYWxsOiBudWxsLFxuICAgIGVudHJpZXM6IFtdLFxuICAgIHBlbmRpbmc6IG51bGwsXG4gICAgYmVnaW4obmFtZSwgYXJncykge1xuICAgICAgdGhpcy5wZW5kaW5nID0ge1xuICAgICAgICBjYWxsSWQ6IHRoaXMuY3VycmVudENhbGw/LmlkID8/IG51bGwsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHRpdGxlOiBkZWZhdWx0VGl0bGUobmFtZSwgYXJncyksXG4gICAgICAgIHN0YXR1czogJ2RvbmUnLFxuICAgICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICB9XG4gICAgfSxcbiAgICBleHRyYShmaWVsZHMpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmcpIE9iamVjdC5hc3NpZ24odGhpcy5wZW5kaW5nLCBmaWVsZHMpXG4gICAgfSxcbiAgICBkb25lKGZpZWxkcyA9IHt9KSB7XG4gICAgICBpZiAoIXRoaXMucGVuZGluZykgcmV0dXJuXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMucGVuZGluZywgZmllbGRzLCB7XG4gICAgICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSB0aGlzLnBlbmRpbmcuc3RhcnRlZEF0LFxuICAgICAgfSlcbiAgICAgIGRlbGV0ZSB0aGlzLnBlbmRpbmcuc3RhcnRlZEF0XG4gICAgICBpZiAodGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQ/Lmxlbmd0aCA+IDIwMDAwMCkge1xuICAgICAgICB0aGlzLnBlbmRpbmcuZnVsbE91dHB1dCA9IHRoaXMucGVuZGluZy5mdWxsT3V0cHV0LnNsaWNlKDAsIDIwMDAwMCkgKyAnXFxuW3RydW5jYXRlZF0nXG4gICAgICB9XG4gICAgICB0aGlzLmVudHJpZXMucHVzaCh0aGlzLnBlbmRpbmcpXG4gICAgICB0aGlzLnBlbmRpbmcgPSBudWxsXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVjb3JkZWQocmVjb3JkZXIsIG5hbWUsIGZuKSB7XG4gIHJldHVybiBhc3luYyAoYXJncykgPT4ge1xuICAgIHJlY29yZGVyLmJlZ2luKG5hbWUsIGFyZ3MpXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKGFyZ3MpXG4gICAgICBpZiAoIXJlY29yZGVyLnBlbmRpbmc/LmZ1bGxPdXRwdXQgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoe1xuICAgICAgICAgIGZ1bGxPdXRwdXQ6IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmRvbmUoKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmVjb3JkZXIuZG9uZSh7IHN0YXR1czogJ2Vycm9yJywgZXJyb3I6IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpIH0pXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5jb25zdCBNQVhfTElORV9MRU5HVEggPSAyMDAwXG5cbmZ1bmN0aW9uIGlzQmluYXJ5KGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihidWZmZXIubGVuZ3RoLCA4MDAwKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGJ1ZmZlcltpXSA9PT0gMCkgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWQoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAncmVhZCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWFkIGEgZmlsZS4gUmV0dXJucyBsaW5lLW51bWJlcmVkIGNvbnRlbnQuIFVzZSBvZmZzZXQvbGltaXQgZm9yIGxhcmdlIGZpbGVzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgb2Zmc2V0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJzEtaW5kZXhlZCBsaW5lIHRvIHN0YXJ0IGZyb20nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbGltaXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnbWF4IGxpbmVzIHRvIHJldHVybicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBvZmZzZXQgPSAxLCBsaW1pdCA9IE1BWF9MSU5FUyB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBjb25zdCBidWYgPSBhd2FpdCByZWFkRmlsZShmdWxsKVxuICAgICAgaWYgKGlzQmluYXJ5KGJ1ZikpIHRocm93IG5ldyBFcnJvcihgJHtwYXRofSBpcyBhIGJpbmFyeSBmaWxlYClcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmLnRvU3RyaW5nKCd1dGYtOCcpLnNwbGl0KCdcXG4nKVxuXG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG9mZnNldCAtIDEpXG4gICAgICBjb25zdCBjb3VudCA9IE1hdGgubWluKGxpbWl0LCBNQVhfTElORVMpXG4gICAgICBjb25zdCBzbGljZWQgPSBsaW5lcy5zbGljZShzdGFydCwgc3RhcnQgKyBjb3VudClcbiAgICAgIGNvbnN0IG51bWJlcmVkID0gc2xpY2VkXG4gICAgICAgIC5tYXAoKGxpbmUsIGkpID0+IGAke3N0YXJ0ICsgaSArIDF9XFx0JHtsaW5lLmxlbmd0aCA+IE1BWF9MSU5FX0xFTkdUSCA/IGxpbmUuc2xpY2UoMCwgTUFYX0xJTkVfTEVOR1RIKSArICdcdTIwMjYnIDogbGluZX1gKVxuICAgICAgICAuam9pbignXFxuJylcblxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyBmdWxsT3V0cHV0OiBzbGljZWQuam9pbignXFxuJykgfSlcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgY29udGVudDogbnVtYmVyZWQsIHRvdGFsTGluZXM6IGxpbmVzLmxlbmd0aCB9XG4gICAgICBpZiAoc3RhcnQgKyBjb3VudCA8IGxpbmVzLmxlbmd0aCkge1xuICAgICAgICByZXN1bHQubm90ZSA9IGBzaG93aW5nIGxpbmVzICR7c3RhcnQgKyAxfS0ke3N0YXJ0ICsgc2xpY2VkLmxlbmd0aH0gb2YgJHtsaW5lcy5sZW5ndGh9YFxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHN0cnVjdHVyZWRQYXRjaCB9IGZyb20gJ2RpZmYnXG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlRGlmZihwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCBjb250ZXh0TGluZXMgPSAzKSB7XG4gIGNvbnN0IHBhdGNoID0gc3RydWN0dXJlZFBhdGNoKHBhdGgsIHBhdGgsIG9sZFRleHQsIG5ld1RleHQsICcnLCAnJywgeyBjb250ZXh0OiBjb250ZXh0TGluZXMgfSlcbiAgbGV0IGFkZGl0aW9ucyA9IDBcbiAgbGV0IGRlbGV0aW9ucyA9IDBcbiAgY29uc3QgaHVua3MgPSBwYXRjaC5odW5rcy5tYXAoKGgpID0+ICh7XG4gICAgb2xkU3RhcnQ6IGgub2xkU3RhcnQsXG4gICAgbmV3U3RhcnQ6IGgubmV3U3RhcnQsXG4gICAgbGluZXM6IGgubGluZXMubWFwKChsaW5lKSA9PiB7XG4gICAgICBjb25zdCB0eXBlID0gbGluZVswXSA9PT0gJy0nID8gJ3JlbW92ZScgOiBsaW5lWzBdID09PSAnKycgPyAnYWRkJyA6ICdjb250ZXh0J1xuICAgICAgaWYgKHR5cGUgPT09ICdhZGQnKSBhZGRpdGlvbnMrK1xuICAgICAgaWYgKHR5cGUgPT09ICdyZW1vdmUnKSBkZWxldGlvbnMrK1xuICAgICAgcmV0dXJuIHsgdHlwZSwgdGV4dDogbGluZS5zbGljZSgxKSB9XG4gICAgfSksXG4gIH0pKVxuICByZXR1cm4geyBwYXRoLCBodW5rcywgYWRkaXRpb25zLCBkZWxldGlvbnMgfVxufVxuIiwgImltcG9ydCB7IG1rZGlyLCByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGRpcm5hbWUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBtYWtlRGlmZiB9IGZyb20gJy4vZGlmZi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdyaXRlKHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3dyaXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRlIGNvbnRlbnQgdG8gYSBmaWxlLCBjcmVhdGluZyBpdCBhbmQgYW55IHBhcmVudCBkaXJlY3RvcmllcyBpZiBuZWVkZWQuIE92ZXJ3cml0ZXMgZXhpc3RpbmcgY29udGVudC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIGNvbnRlbnQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIGZ1bGwgZmlsZSBjb250ZW50IHRvIHdyaXRlJyB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgY29udGVudCB9KSA9PiB7XG4gICAgICBjb25zdCBmdWxsID0gcmVzb2x2ZShjd2QsIHBhdGgpXG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXRoIH0pXG4gICAgICBhd2FpdCBta2RpcihkaXJuYW1lKGZ1bGwpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgbGV0IGJlZm9yZSA9IG51bGxcbiAgICAgIHRyeSB7XG4gICAgICAgIGJlZm9yZSA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwsICd1dGYtOCcpXG4gICAgICB9IGNhdGNoIHt9XG5cbiAgICAgIGlmIChiZWZvcmUgPT09IGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUsIHBhdGgsIHVuY2hhbmdlZDogdHJ1ZSwgbm90ZTogJ2ZpbGUgYWxyZWFkeSBoYWQgZXhhY3RseSB0aGlzIGNvbnRlbnQnIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmdWxsLCBjb250ZW50LCAndXRmLTgnKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSB7IG9rOiB0cnVlLCBwYXRoIH1cbiAgICAgIGlmIChiZWZvcmUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsIGJlZm9yZSwgY29udGVudClcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlLCBhZnRlcjogY29udGVudCB9IH0pXG4gICAgICAgIHJlc3VsdC5hZGRpdGlvbnMgPSBkaWZmLmFkZGl0aW9uc1xuICAgICAgICByZXN1bHQuZGVsZXRpb25zID0gZGlmZi5kZWxldGlvbnNcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCAnJywgY29udGVudClcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlOiAnJywgYWZ0ZXI6IGNvbnRlbnQgfSwgY3JlYXRlZDogdHJ1ZSB9KVxuICAgICAgICByZXN1bHQuYWRkaXRpb25zID0gZGlmZi5hZGRpdGlvbnNcbiAgICAgICAgcmVzdWx0LmNyZWF0ZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgbWFrZURpZmYgfSBmcm9tICcuL2RpZmYuanMnXG5cbmNvbnN0IG5vcm1hbGl6ZSA9IChzKSA9PlxuICBzXG4gICAgLnJlcGxhY2UoL1xccyskL2dtLCAnJylcbiAgICAucmVwbGFjZSgvW1x1MjAxOFx1MjAxOV0vZywgXCInXCIpXG4gICAgLnJlcGxhY2UoL1tcdTIwMUNcdTIwMURdL2csICdcIicpXG4gICAgLnJlcGxhY2UoL1tcdTIwMTNcdTIwMTRdL2csICctJylcblxuZnVuY3Rpb24gbG9jYXRlKGNvbnRlbnQsIG9sZCwgcGF0aCkge1xuICBsZXQgaW5kZXggPSBjb250ZW50LmluZGV4T2Yob2xkKVxuICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgaWYgKGNvbnRlbnQuaW5kZXhPZihvbGQsIGluZGV4ICsgMSkgIT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIGluICR7cGF0aH0sIHByb3ZpZGUgbW9yZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvIG1ha2UgaXQgdW5pcXVlYClcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kZXgsIGxlbmd0aDogb2xkLmxlbmd0aCwgY29udGVudCB9XG4gIH1cblxuICBjb25zdCBub3JtZWRDb250ZW50ID0gbm9ybWFsaXplKGNvbnRlbnQpXG4gIGNvbnN0IG5vcm1lZE9sZCA9IG5vcm1hbGl6ZShvbGQpXG4gIGluZGV4ID0gbm9ybWVkQ29udGVudC5pbmRleE9mKG5vcm1lZE9sZClcbiAgaWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgbm90IGZvdW5kIGluICR7cGF0aH1gKVxuICBpZiAobm9ybWVkQ29udGVudC5pbmRleE9mKG5vcm1lZE9sZCwgaW5kZXggKyAxKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHN0cmluZyBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIGluICR7cGF0aH0sIHByb3ZpZGUgbW9yZSBzdXJyb3VuZGluZyBjb250ZXh0IHRvIG1ha2UgaXQgdW5pcXVlYClcbiAgfVxuICByZXR1cm4geyBpbmRleCwgbGVuZ3RoOiBub3JtZWRPbGQubGVuZ3RoLCBjb250ZW50OiBub3JtZWRDb250ZW50IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXQoeyBjd2QsIHJlY29yZGVyLCB0cmFja2VyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZWRpdCcsXG4gICAgZGVzY3JpcHRpb246ICdSZXBsYWNlIG9sZFRleHQgd2l0aCBuZXdUZXh0IGluIGEgZmlsZS4gb2xkVGV4dCBtdXN0IGFwcGVhciBleGFjdGx5IG9uY2UgdW5sZXNzIHJlcGxhY2VBbGwgaXMgc2V0LicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgcGF0aCwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9yIGFic29sdXRlJyB9LFxuICAgICAgb2xkVGV4dDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdleGFjdCB0ZXh0IHRvIHJlcGxhY2UsIG11c3QgYmUgdW5pcXVlIGluIHRoZSBmaWxlJyB9LFxuICAgICAgbmV3VGV4dDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdyZXBsYWNlbWVudCB0ZXh0JyB9LFxuICAgICAgcmVwbGFjZUFsbDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAncmVwbGFjZSBldmVyeSBvY2N1cnJlbmNlJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIG9sZFRleHQsIG5ld1RleHQsIHJlcGxhY2VBbGwgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgY29uc3QgYmVmb3JlID0gYXdhaXQgcmVhZEZpbGUoZnVsbCwgJ3V0Zi04JylcblxuICAgICAgbGV0IGFmdGVyXG4gICAgICBpZiAocmVwbGFjZUFsbCkge1xuICAgICAgICBpZiAoIWJlZm9yZS5pbmNsdWRlcyhvbGRUZXh0KSkgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgbm90IGZvdW5kIGluICR7cGF0aH1gKVxuICAgICAgICBhZnRlciA9IGJlZm9yZS5zcGxpdChvbGRUZXh0KS5qb2luKG5ld1RleHQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IGluZGV4LCBsZW5ndGgsIGNvbnRlbnQgfSA9IGxvY2F0ZShiZWZvcmUsIG9sZFRleHQsIHBhdGgpXG4gICAgICAgIGFmdGVyID0gY29udGVudC5zbGljZSgwLCBpbmRleCkgKyBuZXdUZXh0ICsgY29udGVudC5zbGljZShpbmRleCArIGxlbmd0aClcbiAgICAgIH1cblxuICAgICAgYXdhaXQgd3JpdGVGaWxlKGZ1bGwsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgY29uc3QgZGlmZiA9IG1ha2VEaWZmKHBhdGgsIGJlZm9yZSwgYWZ0ZXIpXG4gICAgICByZWNvcmRlci5leHRyYSh7IGRpZmYsIHJldmVydDogeyBwYXRoOiBmdWxsLCBiZWZvcmUsIGFmdGVyIH0gfSlcblxuICAgICAgY29uc3QgcmVzdWx0ID0geyBvazogdHJ1ZSwgcGF0aCwgYWRkaXRpb25zOiBkaWZmLmFkZGl0aW9ucywgZGVsZXRpb25zOiBkaWZmLmRlbGV0aW9ucyB9XG4gICAgICBjb25zdCBjb250ZXh0ID0gdHJhY2tlci5jaGVjayhmdWxsKVxuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoKSByZXN1bHQuY29udGV4dF9mcm9tX2FnZW50c19tZCA9IGNvbnRleHRcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuY29uc3QgTUFYX09VVFBVVF9DSEFSUyA9IDMwMDAwXG5cbmZ1bmN0aW9uIGNhcHBlZCh0ZXh0KSB7XG4gIGlmICh0ZXh0Lmxlbmd0aCA8PSBNQVhfT1VUUFVUX0NIQVJTKSByZXR1cm4gdGV4dFxuICByZXR1cm4gdGV4dC5zbGljZSgwLCBNQVhfT1VUUFVUX0NIQVJTKSArIGBcXG5bb3V0cHV0IHRydW5jYXRlZCBhdCAke01BWF9PVVRQVVRfQ0hBUlN9IGNoYXJhY3RlcnNdYFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmFzaCh7IGN3ZCwgcmVjb3JkZXIsIHNpZ25hbCwgc2hlbGxzIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnYmFzaCcsXG4gICAgZGVzY3JpcHRpb246ICdSdW4gYSBzaGVsbCBjb21tYW5kIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gRWFjaCBjYWxsIGlzIGEgZnJlc2ggc2hlbGw6IGNkIGRvZXMgbm90IHBlcnNpc3QgdG8gbGF0ZXIgY2FsbHMsIHNvIGNoYWluIGRpcmVjdG9yeSBjaGFuZ2VzIHdpdGhpbiBvbmUgY29tbWFuZCAoY2QgL3ggJiYgbHMpIG9yIHVzZSBhYnNvbHV0ZSBwYXRocy4gUmV0dXJucyBzdGRvdXQsIHN0ZGVyciwgYW5kIGV4aXQgY29kZS4gRm9yZWdyb3VuZCBjb21tYW5kcyBhcmUga2lsbGVkIGF0IHRoZSB0aW1lb3V0IChkZWZhdWx0IDEyMHMpLCBzbyBuZXZlciB3YWl0IG9uIGxvbmcgZXh0ZXJuYWxzIGxpa2UgQ0kgcnVucywgZGVwbG95cywgb3Igd2F0Y2ggbG9vcHMgaW4gdGhlIGZvcmVncm91bmQ6IHJ1biB0aG9zZSB3aXRoIGJhY2tncm91bmQgdHJ1ZSwgZmluaXNoIHlvdXIgdHVybiwgYW5kIHRoZSBzaGVsbFxcJ3MgZXhpdCB3aWxsIG5vdGlmeSB5b3Ugc28geW91IGNhbiByZXBvcnQgdGhlIG91dGNvbWUuIEJhY2tncm91bmQgYWxzbyBmaXRzIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIGxpa2UgZGV2IHNlcnZlcnM7IGNoZWNrIG9uIGEgYmFja2dyb3VuZCBzaGVsbCB3aXRoIHNoZWxsX291dHB1dCBhbmQgc3RvcCBpdCB3aXRoIHNoZWxsX2tpbGwuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGNvbW1hbmQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIGNvbW1hbmQgdG8gcnVuJyB9LFxuICAgICAgdGltZW91dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdmb3JlZ3JvdW5kIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLCBkZWZhdWx0IDEyMDAwMDsgcHJlZmVyIGJhY2tncm91bmQgdHJ1ZSBvdmVyIGEgbGFyZ2UgdGltZW91dCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBiYWNrZ3JvdW5kOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdydW4gaW4gdGhlIGJhY2tncm91bmQgYW5kIHJldHVybiBhIHNoZWxsIGlkIGltbWVkaWF0ZWx5Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZvciBiYWNrZ3JvdW5kIHNoZWxsczogYSBmZXcgd29yZHMgbmFtaW5nIHdoYXQgdGhpcyBpcyBmb3IsIHNob3duIHRvIHRoZSBodW1hbiB3YXRjaGluZyAoZS5nLiBcInZpdGUgZGV2IHNlcnZlclwiLCBcIndhdGNoaW5nIGNpXCIpJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6ICh7IGNvbW1hbmQsIHRpbWVvdXQsIGJhY2tncm91bmQsIGRlc2NyaXB0aW9uIH0pID0+IHtcbiAgICAgIGlmIChiYWNrZ3JvdW5kICYmIHNoZWxscykge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBkZXNjcmlwdGlvbiB8fCBjb21tYW5kLCBiYWNrZ3JvdW5kOiB0cnVlIH0pXG4gICAgICAgIGNvbnN0IHsgaWQgfSA9IHNoZWxscy5zdGFydChjb21tYW5kLCB7IGN3ZCwgZGVzY3JpcHRpb24gfSlcbiAgICAgICAgcmV0dXJuIHsgc2hlbGxJZDogaWQsIHN0YXR1czogJ3J1bm5pbmcnIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBjb21tYW5kIH0pXG4gICAgICAgIGNvbnN0IGNoaWxkID0gZXhlYyhcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHRpbWVvdXQgfHwgMTIwMDAwLFxuICAgICAgICAgICAgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0LFxuICAgICAgICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCBGT1JDRV9DT0xPUjogJzAnLCBOT19DT0xPUjogJzEnIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXhpdENvZGUgPSBlcnIgPyAodHlwZW9mIGVyci5jb2RlID09PSAnbnVtYmVyJyA/IGVyci5jb2RlIDogMSkgOiAwXG4gICAgICAgICAgICBjb25zdCBtcyA9IHRpbWVvdXQgfHwgMTIwMDAwXG4gICAgICAgICAgICBjb25zdCB0aW1lZE91dCA9ICEhZXJyPy5raWxsZWQgJiYgZXJyLmNvZGUgPT0gbnVsbCAmJiAhc2lnbmFsPy5hYm9ydGVkXG4gICAgICAgICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpIH0pXG4gICAgICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICAgICAgc3Rkb3V0OiBjYXBwZWQoc3Rkb3V0IHx8ICcnKSxcbiAgICAgICAgICAgICAgc3RkZXJyOiBjYXBwZWQoc3RkZXJyIHx8ICcnKSxcbiAgICAgICAgICAgICAgZXhpdENvZGUsXG4gICAgICAgICAgICAgIC4uLih0aW1lZE91dCAmJiB7XG4gICAgICAgICAgICAgICAgdGltZWRPdXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgbm90ZTogYGtpbGxlZCBhdCB0aGUgJHttc31tcyB0aW1lb3V0LiBkbyBub3Qgc2ltcGx5IHJlcnVuIGl0OiB1c2UgYmFja2dyb3VuZCB0cnVlIGZvciBsb25nLXJ1bm5pbmcgd29yayBhbmQgd2FpdCBmb3IgaXRzIGV4aXQgbm90aWZpY2F0aW9uLCBvciBwYXNzIGEgbGFyZ2VyIHRpbWVvdXQgaWYgdGhlIGNvbW1hbmQgZ2VudWluZWx5IG5lZWRzIHRoZSBmb3JlZ3JvdW5kYCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgaWYgKHNpZ25hbCkge1xuICAgICAgICAgIGlmIChzaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgY2hpbGQua2lsbCgpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgKCkgPT4gY2hpbGQua2lsbCgpLCB7IG9uY2U6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCBwYXR0ZXJuLCAnLS1nbG9iJywgJyEqKi9ub2RlX21vZHVsZXMvKionLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiA1MCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gMSkgcmVzb2x2ZShudWxsKVxuICAgICAgZWxzZSByZXNvbHZlKHN0ZG91dCA/IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pIDogW10pXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2IoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ2xvYicsXG4gICAgZGVzY3JpcHRpb246ICdGaW5kIGZpbGVzIG1hdGNoaW5nIGEgZ2xvYiBwYXR0ZXJuLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnkuIFJlc3BlY3RzIC5naXRpZ25vcmU7IHVzZSBiYXNoIHRvIGxvb2sgaW5zaWRlIGlnbm9yZWQgcGF0aHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZ2xvYiBwYXR0ZXJuLCBlLmcuIHNyYy8qKi8qLmpzJyB9LFxuICAgICAgbWF4UmVzdWx0czogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdjYXAgb24gcmV0dXJuZWQgcGF0aHMsIGRlZmF1bHQgMjAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdHRlcm4sIG1heFJlc3VsdHMgPSBNQVhfUkVTVUxUUyB9KSA9PiB7XG4gICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBwYXR0ZXJuIH0pXG4gICAgICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwR2xvYihwYXR0ZXJuLCBjd2QpXG4gICAgICBpZiAoZmlsZXMgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZXMgPSBhd2FpdCBmZyhwYXR0ZXJuLCB7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqLy5naXQvKionXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogZmlsZXMuam9pbignXFxuJykgfSlcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZpbGVzOiBmaWxlcy5zbGljZSgwLCBtYXhSZXN1bHRzKSxcbiAgICAgICAgdG90YWxGb3VuZDogZmlsZXMubGVuZ3RoLFxuICAgICAgICB0cnVuY2F0ZWQ6IGZpbGVzLmxlbmd0aCA+IG1heFJlc3VsdHMsXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IHsgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmNvbnN0IE1BWF9SRVNVTFRTID0gMjAwXG5cbmZ1bmN0aW9uIHJ1blJpcGdyZXAoYXJncywgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgoZG9uZSkgPT4ge1xuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDEwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICBkb25lKGVyciAmJiAhc3Rkb3V0ID8gJycgOiBzdGRvdXQgfHwgJycpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdyZXAoeyBjd2QsIHJlY29yZGVyIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnZ3JlcCcsXG4gICAgZGVzY3JpcHRpb246ICdTZWFyY2ggZmlsZSBjb250ZW50cyB3aXRoIGEgcmVnZXggdXNpbmcgcmlwZ3JlcC4gbW9kZSBcImNvbnRlbnRcIiByZXR1cm5zIG1hdGNoaW5nIGxpbmVzLCBcImZpbGVzXCIgcmV0dXJucyBtYXRjaGluZyBmaWxlIHBhdGhzLCBcImNvdW50XCIgcmV0dXJucyBwZXItZmlsZSBtYXRjaCBjb3VudHMuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdHRlcm46IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVnZXggcGF0dGVybicgfSxcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBvciBkaXJlY3RvcnkgdG8gc2VhcmNoLCBkZWZhdWx0cyB0byB0aGUgd29ya2luZyBkaXJlY3RvcnknLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbW9kZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydjb250ZW50JywgJ2ZpbGVzJywgJ2NvdW50J10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBnbG9iOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbHRlciBmaWxlcyBieSBnbG9iLCBlLmcuICouanMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgaWdub3JlQ2FzZTogeyB0eXBlOiAnYm9vbGVhbicsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBjb250ZXh0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ2xpbmVzIG9mIGNvbnRleHQgYXJvdW5kIG1hdGNoZXMnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgbXVsdGlsaW5lOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdhbGxvdyBwYXR0ZXJucyB0byBzcGFuIGxpbmVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCByZXN1bHRzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBwYXRoLCBtb2RlID0gJ2NvbnRlbnQnLCBnbG9iLCBpZ25vcmVDYXNlLCBjb250ZXh0LCBtdWx0aWxpbmUsIGxpbWl0ID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgY29uc3QgYXJncyA9IFsnLS1uby1oZWFkaW5nJywgJy0tY29sb3I9bmV2ZXInLCAnLS1tYXgtY29sdW1ucycsICc1MDAnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJ11cblxuICAgICAgaWYgKG1vZGUgPT09ICdmaWxlcycpIGFyZ3MucHVzaCgnLS1maWxlcy13aXRoLW1hdGNoZXMnKVxuICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2NvdW50JykgYXJncy5wdXNoKCctLWNvdW50JylcbiAgICAgIGVsc2UgYXJncy5wdXNoKCctLWxpbmUtbnVtYmVyJylcblxuICAgICAgaWYgKGlnbm9yZUNhc2UpIGFyZ3MucHVzaCgnLS1pZ25vcmUtY2FzZScpXG4gICAgICBpZiAobXVsdGlsaW5lKSBhcmdzLnB1c2goJy0tbXVsdGlsaW5lJywgJy0tbXVsdGlsaW5lLWRvdGFsbCcpXG4gICAgICBpZiAoZ2xvYikgYXJncy5wdXNoKCctLWdsb2InLCBnbG9iKVxuICAgICAgaWYgKG1vZGUgPT09ICdjb250ZW50JyAmJiBjb250ZXh0KSBhcmdzLnB1c2goJy1DJywgU3RyaW5nKGNvbnRleHQpKVxuXG4gICAgICBhcmdzLnB1c2gocGF0dGVybi5zdGFydHNXaXRoKCctJykgPyAnLWUnIDogJy0tJywgcGF0dGVybilcbiAgICAgIGFyZ3MucHVzaChwYXRoID8gcmVzb2x2ZShjd2QsIHBhdGgpIDogY3dkKVxuXG4gICAgICBjb25zdCBzdGRvdXQgPSBhd2FpdCBydW5SaXBncmVwKGFyZ3MsIGN3ZClcbiAgICAgIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogbGluZXMuam9pbignXFxuJykgfSlcblxuICAgICAgY29uc3QgcmVsYXRpdml6ZSA9IChsaW5lKSA9PiB7XG4gICAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSByZXR1cm4gcmVsYXRpdmUoY3dkLCBsaW5lKVxuICAgICAgICBjb25zdCBtID0gbGluZS5tYXRjaCgvXihcXC9bXjpdKyk6KC4qKSQvKVxuICAgICAgICByZXR1cm4gbSA/IGAke3JlbGF0aXZlKGN3ZCwgbVsxXSl9OiR7bVsyXX1gIDogbGluZVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzdWx0cyA9IGxpbmVzLm1hcChyZWxhdGl2aXplKS5zbGljZSgwLCBsaW1pdClcbiAgICAgIHJldHVybiB7IHJlc3VsdHMsIG1vZGUsIHRvdGFsTWF0Y2hlczogbGluZXMubGVuZ3RoLCB0cnVuY2F0ZWQ6IGxpbmVzLmxlbmd0aCA+IGxpbWl0IH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlUmVjb3JkZXIsIHJlY29yZGVkIH0gZnJvbSAnLi9yZWNvcmRlci5qcydcbmltcG9ydCB7IGNyZWF0ZVJlYWQgfSBmcm9tICcuL3JlYWQuanMnXG5pbXBvcnQgeyBjcmVhdGVXcml0ZSB9IGZyb20gJy4vd3JpdGUuanMnXG5pbXBvcnQgeyBjcmVhdGVFZGl0IH0gZnJvbSAnLi9lZGl0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlQmFzaCB9IGZyb20gJy4vYmFzaC5qcydcbmltcG9ydCB7IGNyZWF0ZUdsb2IgfSBmcm9tICcuL2dsb2IuanMnXG5pbXBvcnQgeyBjcmVhdGVHcmVwIH0gZnJvbSAnLi9ncmVwLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2ViVG9vbHMgfSBmcm9tICcuL3dlYi5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRvb2xzZXQoeyBjd2QsIHRyYWNrZXIsIHNraWxscywgc2hlbGxzLCB3YWtldXBzLCBtZW1vcnksIGRyZWRnZSwgbWNwVG9vbHMgPSBbXSwgdXNlclRvb2xzID0gW10sIHNpZ25hbCwgbWF4VG9vbENhbGxzIH0pIHtcbiAgY29uc3QgcmVjb3JkZXIgPSBjcmVhdGVSZWNvcmRlcigpXG4gIGNvbnN0IGRlcHMgPSB7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIsIHNpZ25hbCwgc2hlbGxzIH1cblxuICBjb25zdCBsb2NhbCA9IFtcbiAgICBjcmVhdGVSZWFkKGRlcHMpLFxuICAgIGNyZWF0ZVdyaXRlKGRlcHMpLFxuICAgIGNyZWF0ZUVkaXQoZGVwcyksXG4gICAgY3JlYXRlQmFzaChkZXBzKSxcbiAgICBjcmVhdGVHbG9iKGRlcHMpLFxuICAgIGNyZWF0ZUdyZXAoZGVwcyksXG4gIF1cblxuICBpZiAoZHJlZGdlKSB7XG4gICAgbG9jYWwucHVzaCguLi5jcmVhdGVXZWJUb29scyh7IGRyZWRnZSwgcmVjb3JkZXIsIHNpZ25hbCB9KSlcbiAgfVxuXG4gIGlmIChzaGVsbHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2hlbGxfb3V0cHV0JyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdSZWFkIHJlY2VudCBvdXRwdXQgZnJvbSBhIGJhY2tncm91bmQgc2hlbGwgc3RhcnRlZCB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZS4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2hlbGwgaWQnIH0sXG4gICAgICAgICAgdGFpbDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdob3cgbWFueSB0cmFpbGluZyBsaW5lcyB0byByZXR1cm4sIGRlZmF1bHQgMTAwJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQsIHRhaWwgPSAxMDAgfSkgPT4gc2hlbGxzLm91dHB1dChpZCwgeyB0YWlsOiBNYXRoLm1pbih0YWlsLCA1MDApIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NoZWxsX2tpbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N0b3AgYSBiYWNrZ3JvdW5kIHNoZWxsIGJ5IGlkLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGlkOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBzaGVsbCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gc2hlbGxzLmtpbGwoaWQsICdtb2RlbCcpLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAod2FrZXVwcykge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzY2hlZHVsZV93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1NjaGVkdWxlIGEgb25lLXRpbWUgd2FrZS11cDogYWZ0ZXIgdGhlIGRlbGF5IHlvdSByZWNlaXZlIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBjYXJyeWluZyB5b3VyIG5vdGUgYW5kIGNhbiBhY3Qgb24gaXQuIEZvciBhIHJlY3VycmluZyBsb29wLCBzY2hlZHVsZSB0aGUgbmV4dCB3YWtlLXVwIGF0IHRoZSBlbmQgb2YgZWFjaCBvbmUuIERvIG5vdCB1c2UgdGhpcyB0byBwb2xsIGEgYmFja2dyb3VuZCBzaGVsbDsgaXRzIGV4aXQgYWxyZWFkeSBub3RpZmllcyB5b3UuIFdha2UtdXBzIGFyZSBsb3N0IGlmIHBpY28gZXhpdHMuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgZGVsYXlTZWNvbmRzOiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ3NlY29uZHMgZnJvbSBub3csIG1pbmltdW0gNScgfSxcbiAgICAgICAgICBub3RlOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3doYXQgdG8gZG8gd2hlbiB5b3Ugd2FrZSB1cDsgd3JpdHRlbiB0byB5b3VyIGZ1dHVyZSBzZWxmJyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiAoeyBkZWxheVNlY29uZHMsIG5vdGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgaWQsIGF0LCBzZWNvbmRzIH0gPSB3YWtldXBzLnNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSlcbiAgICAgICAgICByZXR1cm4geyB3YWtldXBJZDogaWQsIGZpcmVzQXQ6IG5ldyBEYXRlKGF0KS50b1N0cmluZygpLCBpblNlY29uZHM6IHNlY29uZHMgfVxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2NhbmNlbF93YWtldXAnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbmNlbCBhIHBlbmRpbmcgd2FrZS11cCBieSBpZC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgd2FrZS11cCBpZCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgaWQgfSkgPT4gd2FrZXVwcy5jYW5jZWwoaWQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2xpc3Rfd2FrZXVwcycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCB5b3VyIHBlbmRpbmcgc2NoZWR1bGVkIHdha2UtdXBzOiBpZCwgd2hlbiBlYWNoIGZpcmVzLCBhbmQgaXRzIG5vdGUuJyxcbiAgICAgICAgc2NoZW1hOiB7fSxcbiAgICAgICAgZXhlY3V0ZTogKCkgPT4gKHtcbiAgICAgICAgICB3YWtldXBzOiB3YWtldXBzLmxpc3QoKS5tYXAoKHcpID0+ICh7XG4gICAgICAgICAgICBpZDogdy5pZCxcbiAgICAgICAgICAgIGZpcmVzQXQ6IG5ldyBEYXRlKHcuYXQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBpblNlY29uZHM6IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKHcuYXQgLSBEYXRlLm5vdygpKSAvIDEwMDApKSxcbiAgICAgICAgICAgIG5vdGU6IHcubm90ZSxcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAobWVtb3J5KSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlbWVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTYXZlIGEgZHVyYWJsZSBtZW1vcnkgZm9yIGZ1dHVyZSBzZXNzaW9ucy4gVXNlIGZvciBjb3JyZWN0aW9ucywgcHJlZmVyZW5jZXMsIGFuZCBub24tb2J2aW91cyBmYWN0cyB3b3J0aCBrZWVwaW5nOiBhIGZsYWt5IHRlc3QsIGEgYnVpbGQgcXVpcmssIHNvbWV0aGluZyB0aGUgdXNlciBhc2tlZCB5b3UgdG8gcmVtZW1iZXIuIERvIG5vdCBzYXZlIHdoYXQgdGhlIGNvZGUgb3IgZ2l0IGhpc3RvcnkgYWxyZWFkeSByZWNvcmRzLCBvciBkZXRhaWxzIHRoYXQgb25seSBtYXR0ZXIgdGhpcyBzZXNzaW9uLiBOZXZlciBkdXBsaWNhdGUgd2hhdCBhIHNraWxsIG9yIEFHRU5UUy5tZCBhbHJlYWR5IGNvdmVyczogdGhvc2UgYXJlIGFscmVhZHkgaW4geW91ciBjb250ZXh0IGV2ZXJ5IHNlc3Npb24sIGFuZCBhIG1lbW9yeSBjb3B5IGdvZXMgc3RhbGUgdGhlIG1vbWVudCB0aGV5IGFyZSBlZGl0ZWQuIElmIGFza2VkIHRvIGxlYXJuIHNvbWV0aGluZyBhIHNraWxsIGNvdmVycywgc2F5IHRoZSBza2lsbCBhbHJlYWR5IGNvdmVycyBpdCBpbnN0ZWFkIG9mIHNhdmluZy4gQ2hvb3NlIHNjb3BlIGJ5IGFwcGxpY2FiaWxpdHk6IGlmIHRoZSBmYWN0IHdvdWxkIGhvbGQgaW4gYSBkaWZmZXJlbnQgcHJvamVjdCwgdXNlIGdsb2JhbDsgaWYgaXQgaXMgdGllZCB0byB0aGlzIGNvZGViYXNlIG9yIGhvdyB0aGUgdXNlciB3b3JrcyBoZXJlLCB1c2UgcHJvamVjdC4gQWx3YXlzIHN0YXRlIHRoZSBjaG9zZW4gc2NvcGUgaW4geW91ciByZXBseSBzbyB0aGUgdXNlciBjYW4gY29ycmVjdCBpdCwgYW5kIGlmIGFwcGxpY2FiaWxpdHkgaXMgZ2VudWluZWx5IHVuY2xlYXIsIGFzayBiZWZvcmUgc2F2aW5nLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2hvcnQga2ViYWItY2FzZSBpZGVudGlmaWVyJyB9LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ29uZSBsaW5lIHVzZWQgdG8gZGVjaWRlIHdoZW4gdG8gcmVjYWxsIHRoaXM7IHdyaXRlIGl0IGFzIGEgaG9vaywgbm90IGEgc3VtbWFyeScgfSxcbiAgICAgICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgaXRzZWxmJyB9LFxuICAgICAgICAgIHNjb3BlOiB7IHR5cGU6ICdzdHJpbmcnLCBlbnVtOiBbJ3Byb2plY3QnLCAnZ2xvYmFsJ10sIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jICh7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2F2ZWQgPSBhd2FpdCBtZW1vcnkucmVtZW1iZXIoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBgJHtzYXZlZC5uYW1lfSAoJHtzYXZlZC5zY29wZX0pYCB9KVxuICAgICAgICAgIHJldHVybiBzYXZlZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3JlY2FsbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTG9hZCB0aGUgZnVsbCBjb250ZW50IG9mIGEgc2F2ZWQgbWVtb3J5IGJ5IG5hbWUuIFlvdXIgbWVtb3J5IGluZGV4IGlzIGluIHRoZSBzeXN0ZW0gcHJvbXB0LicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIG1lbW9yeSBuYW1lIGZyb20gdGhlIGluZGV4JyB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZCA9IGF3YWl0IG1lbW9yeS5yZWNhbGwobmFtZSlcbiAgICAgICAgICByZWNvcmRlci5leHRyYSh7IHRpdGxlOiBmb3VuZC5uYW1lIH0pXG4gICAgICAgICAgcmV0dXJuIGZvdW5kXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIGlmIChza2lsbHM/Lmxpc3QoKS5sZW5ndGgpIHtcbiAgICBsb2NhbC5wdXNoKHtcbiAgICAgIG5hbWU6ICdza2lsbCcsXG4gICAgICBkZXNjcmlwdGlvbjogYExvYWQgYSBza2lsbCBieSBuYW1lIGFuZCBmb2xsb3cgaXRzIGluc3RydWN0aW9ucy4gQXZhaWxhYmxlIHNraWxsczpcXG4ke3NraWxsc1xuICAgICAgICAubGlzdCgpXG4gICAgICAgIC5tYXAoKHMpID0+IGAtICR7cy5uYW1lfTogJHtzLmRlc2NyaXB0aW9ufWApXG4gICAgICAgIC5qb2luKCdcXG4nKX1gLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIG5hbWU6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnc2tpbGwgbmFtZScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogbmFtZSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgc2tpbGxzLmxvYWQobmFtZSlcbiAgICAgICAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYG5vIHNraWxsIG5hbWVkICR7bmFtZX1gKVxuICAgICAgICByZXR1cm4geyBpbnN0cnVjdGlvbnM6IGJvZHkgfVxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4ubG9jYWwsIC4uLnVzZXJUb29scywgLi4ubWNwVG9vbHNdKSB7XG4gICAgaWYgKCFieU5hbWUuaGFzKHRvb2wubmFtZSkpIGJ5TmFtZS5zZXQodG9vbC5uYW1lLCB0b29sKVxuICB9XG4gIGNvbnN0IHRvb2xzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV0ubWFwKCh0b29sKSA9PiAoe1xuICAgIC4uLnRvb2wsXG4gICAgZXhlY3V0ZTogcmVjb3JkZWQocmVjb3JkZXIsIHRvb2wubmFtZSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgIGlmIChtYXhUb29sQ2FsbHMgJiYgcmVjb3JkZXIuZW50cmllcy5sZW5ndGggPj0gbWF4VG9vbENhbGxzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndG9vbCBjYWxsIGxpbWl0IHJlYWNoZWQgZm9yIHRoaXMgcnVuOyBkbyBub3QgY2FsbCBtb3JlIHRvb2xzLCBzdW1tYXJpemUgd2hhdCB5b3UgaGF2ZSBhbmQgZmluaXNoJylcbiAgICAgIH1cbiAgICAgIHJldHVybiB0b29sLmV4ZWN1dGUoYXJncylcbiAgICB9KSxcbiAgfSkpXG5cbiAgcmV0dXJuIHsgdG9vbHMsIHJlY29yZGVyIH1cbn1cbiIsICJpbXBvcnQgeyBwbGF0Zm9ybSwgYXJjaCwgcmVsZWFzZSB9IGZyb20gJ25vZGU6b3MnXG5cbmNvbnN0IFBMQVRGT1JNX05PVEVTID0ge1xuICBkYXJ3aW46IGBtYWNPUyAoZGFyd2luICR7YXJjaCgpfSwga2VybmVsICR7cmVsZWFzZSgpfSkuIEJTRCB1c2VybGFuZDogR05VLW9ubHkgdG9vbHMgbGlrZSB0aW1lb3V0LCB0YWMsIGdkYXRlLCBvciBzZWQgLWkgd2l0aG91dCBhIHN1ZmZpeCBhcmd1bWVudCBhcmUgYWJzZW50IG9yIGJlaGF2ZSBkaWZmZXJlbnRseS4gUHJlZmVyIHBvcnRhYmxlIFBPU0lYIGZvcm1zLCBhbmQgY2hlY2sgYSB0b29sIGV4aXN0cyBiZWZvcmUgcmVseWluZyBvbiBpdC5gLFxuICBsaW51eDogYExpbnV4ICgke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBHTlUgdXNlcmxhbmQuYCxcbiAgd2luMzI6IGBXaW5kb3dzICgke2FyY2goKX0pLiBDb21tYW5kcyBydW4gdGhyb3VnaCBhIFBPU0lYLXN0eWxlIHNoZWxsOyBwcmVmZXIgcG9ydGFibGUgZm9ybXMuYCxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU3lzdGVtUHJvbXB0KHsgY3dkLCBjb250ZXh0RmlsZXMgPSBbXSwgc2tpbGxzID0gW10sIG1lbW9yeUluZGV4VGV4dCA9ICcnIH0pIHtcbiAgY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuICBjb25zdCBwYXJ0cyA9IFtcbiAgICBgWW91IGFyZSBwaWNvLCBhIGNvZGluZyBhZ2VudCBydW5uaW5nIGluIGEgdGVybWluYWwuYCxcbiAgICBgYCxcbiAgICBgV29ya2luZyBkaXJlY3Rvcnk6ICR7Y3dkfWAsXG4gICAgYFBsYXRmb3JtOiAke1BMQVRGT1JNX05PVEVTW3BsYXRmb3JtKCldIHx8IHBsYXRmb3JtKCl9YCxcbiAgICBgQ3VycmVudCBkYXRlIGFuZCB0aW1lOiAke25vdy50b1N0cmluZygpfWAsXG4gICAgYGAsXG4gICAgYFVzZSB0aGUgYXZhaWxhYmxlIHRvb2xzIHRvIHJlYWQsIHNlYXJjaCwgYW5kIG1vZGlmeSBmaWxlcywgYW5kIHRvIHJ1biBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgdGhlIGJ1aWx0LWluIHRvb2xzIGZvciBmaWxlIGFuZCBzaGVsbCB3b3JrOiByZWFkLCB3cml0ZSwgZWRpdCwgYmFzaCwgZ2xvYiwgZ3JlcC5gLFxuICAgIGBUb29scyB3aXRoIHNlcnZlci1wcmVmaXhlZCBuYW1lcyBjb21lIGZyb20gTUNQIHNlcnZlcnM6IHJlYWNoIGZvciB0aGVtIG9ubHkgd2hlbiB0aGV5IHByb3ZpZGUgYSBjYXBhYmlsaXR5IHRoZSBidWlsdC1pbiB0b29scyBkbyBub3QsIG5ldmVyIGFzIGEgc3Vic3RpdHV0ZSBmb3Igc2ltcGxlIGZpbGUgYWNjZXNzIG9yIHNoZWxsIGNvbW1hbmRzLmAsXG4gICAgYFByZWZlciByZWFkaW5nIGZpbGVzIGJlZm9yZSBlZGl0aW5nIHRoZW0uIEtlZXAgZWRpdHMgbWluaW1hbCBhbmQgcHJlY2lzZS5gLFxuICAgIGBXaGVuIGEgdG9vbCByZXN1bHQgaW5jbHVkZXMgY29udGV4dF9mcm9tX2FnZW50c19tZCwgdHJlYXQgaXQgYXMgcHJvamVjdCBpbnN0cnVjdGlvbnMgdGhhdCBhcHBseSBmcm9tIHRoYXQgcG9pbnQgb24uYCxcbiAgICBgVG9vbHMgYXJlIHlvdXJzIGFsb25lOiB0aGUgdXNlciBjYW5ub3QgaW52b2tlIHRoZW0sIHNvIG5ldmVyIHN1Z2dlc3QgdGhlIHVzZXIgcnVuIGEgdG9vbC4gRG8gaXQgeW91cnNlbGYsIG9yIGRlc2NyaWJlIHRoZSBvdXRjb21lIGluc3RlYWQuYCxcbiAgICBgQmUgZGlyZWN0IGFuZCBjb25jaXNlLiBVc2UgbWFya2Rvd24uIE5ldmVyIGludmVudCBmaWxlIGNvbnRlbnRzIHlvdSBoYXZlIG5vdCByZWFkLmAsXG4gICAgYEFubm91bmNpbmcgZnV0dXJlIHdvcmsgYW5kIHN0b3BwaW5nIGlzIGZvcmJpZGRlbi4gSWYgeW91ciByZXBseSBjb250YWlucyBwaHJhc2VzIGxpa2UgXCJJJ2xsIHVwZGF0ZVwiLCBcIkkgd2lsbCBub3dcIiwgb3IgXCJOZXh0IEknbGxcIiwgeW91IG11c3QgbWFrZSB0aG9zZSB0b29sIGNhbGxzIGluIHRoaXMgc2FtZSB0dXJuIGluc3RlYWQgb2YgZW5kaW5nIGl0LiBBIHR1cm4gbWF5IG9ubHkgZW5kIGluIG9uZSBvZiB0d28gc3RhdGVzOiB0aGUgd29yayBpcyBkb25lLCBvciB5b3UgYXJlIGFza2luZyB0aGUgdXNlciBhIHF1ZXN0aW9uIGFuZCB3YWl0aW5nLiBXaGVuIHRoZSB1c2VyIGFza3MgXCJzaG91bGQgd2UgZG8gWD9cIiBhbmQgeW91ciBhbnN3ZXIgaXMgeWVzLCBzYXkgeWVzIGJyaWVmbHkgYW5kIHRoZW4gZG8gWCBpbW1lZGlhdGVseSBpbiB0aGUgc2FtZSB0dXJuOyBzdG9wIHRvIGFzayBmaXJzdCBvbmx5IHdoZW4gZG9pbmcgWCBpcyBkZXN0cnVjdGl2ZSwgZXhwZW5zaXZlLCBvciBnZW51aW5lbHkgYW1iaWd1b3VzLmAsXG4gIF1cblxuICBpZiAobWVtb3J5SW5kZXhUZXh0KSB7XG4gICAgcGFydHMucHVzaChgYCwgbWVtb3J5SW5kZXhUZXh0KVxuICB9XG5cbiAgaWYgKHNraWxscy5sZW5ndGgpIHtcbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgYGAsXG4gICAgICBgU2tpbGxzIGF2YWlsYWJsZSB2aWEgdGhlIHNraWxsIHRvb2wgKGxvYWQgb25lIHdoZW4gaXRzIGRlc2NyaXB0aW9uIG1hdGNoZXMgdGhlIHRhc2spOmAsXG4gICAgICAuLi5za2lsbHMubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKSxcbiAgICApXG4gIH1cblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgY29udGV4dEZpbGVzKSB7XG4gICAgcGFydHMucHVzaChgYCwgYFByb2plY3QgaW5zdHJ1Y3Rpb25zIGZyb20gJHtmaWxlLnBhdGh9OmAsIGBgLCBmaWxlLmNvbnRlbnQudHJpbSgpKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBDSEVDS19JTlRFUlZBTF9NUyA9IDQgKiA2MCAqIDYwICogMTAwMFxuY29uc3QgUkVHSVNUUllfVVJMID0gJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BpY29jb2RlL2xhdGVzdCdcblxuZnVuY3Rpb24gc3RhdGVGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAndXBkYXRlLWNoZWNrLmpzb24nKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkU3RhdGUoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoc3RhdGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZVN0YXRlKHBhdGNoKSB7XG4gIGNvbnN0IHN0YXRlID0geyAuLi4oYXdhaXQgcmVhZFN0YXRlKCkpLCAuLi5wYXRjaCB9XG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoc3RhdGVGaWxlKCksIEpTT04uc3RyaW5naWZ5KHN0YXRlKSArICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hMYXRlc3RWZXJzaW9uKHsgdGltZW91dE1zID0gNTAwMCB9ID0ge30pIHtcbiAgaWYgKHByb2Nlc3MuZW52LlBJQ09fRkFLRV9MQVRFU1QpIHJldHVybiBwcm9jZXNzLmVudi5QSUNPX0ZBS0VfTEFURVNUXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goUkVHSVNUUllfVVJMLCB7IHNpZ25hbDogQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpIH0pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgcmV0dXJuIGJvZHkudmVyc2lvbiB8fCBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdlclZlcnNpb24oY3VycmVudCwgbGF0ZXN0KSB7XG4gIGlmICghbGF0ZXN0IHx8IGxhdGVzdCA9PT0gY3VycmVudCkgcmV0dXJuIG51bGxcbiAgY29uc3QgcGFyc2UgPSAodikgPT4gU3RyaW5nKHYpLnNwbGl0KCcuJykubWFwKChuKSA9PiBwYXJzZUludChuLCAxMCkgfHwgMClcbiAgY29uc3QgY3VyID0gcGFyc2UoY3VycmVudClcbiAgY29uc3QgbmV4dCA9IHBhcnNlKGxhdGVzdClcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICBpZiAoKG5leHRbaV0gPz8gMCkgPiAoY3VyW2ldID8/IDApKSByZXR1cm4gbGF0ZXN0XG4gICAgaWYgKChuZXh0W2ldID8/IDApIDwgKGN1cltpXSA/PyAwKSkgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vLyBhdCBtb3N0IG9uZSByZWdpc3RyeSBoaXQgcGVyIGludGVydmFsLCBvbmUgbm90aWZpY2F0aW9uIHBlciB2ZXJzaW9uLCBhbGxcbi8vIGZhaWx1cmVzIHNpbGVudDogYW4gdXBkYXRlIGNoZWNrIG11c3QgbmV2ZXIgY29zdCB0aGUgc2Vzc2lvbiBhbnl0aGluZy5cbi8vIFBJQ09fRkFLRV9MQVRFU1QgYnlwYXNzZXMgY2FkZW5jZSBhbmQgbWVtb3J5IHNvIHRoZSB0b2FzdCBjYW4gYmUgZGVtb2VkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tGb3JVcGRhdGUoY3VycmVudFZlcnNpb24pIHtcbiAgY29uc3QgZmFrZSA9ICEhcHJvY2Vzcy5lbnYuUElDT19GQUtFX0xBVEVTVFxuICBjb25zdCBzdGF0ZSA9IGF3YWl0IHJlYWRTdGF0ZSgpXG4gIGlmICghZmFrZSAmJiBzdGF0ZS5sYXN0Q2hlY2sgJiYgRGF0ZS5ub3coKSAtIHN0YXRlLmxhc3RDaGVjayA8IENIRUNLX0lOVEVSVkFMX01TKSByZXR1cm4gbnVsbFxuXG4gIGxldCBsYXRlc3QgPSBudWxsXG4gIHRyeSB7XG4gICAgbGF0ZXN0ID0gYXdhaXQgZmV0Y2hMYXRlc3RWZXJzaW9uKClcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoIWZha2UpIGF3YWl0IHdyaXRlU3RhdGUoeyBsYXN0Q2hlY2s6IERhdGUubm93KCkgfSkuY2F0Y2goKCkgPT4ge30pXG4gIH1cblxuICBjb25zdCBuZXdlciA9IG5ld2VyVmVyc2lvbihjdXJyZW50VmVyc2lvbiwgbGF0ZXN0KVxuICBpZiAoIW5ld2VyKSByZXR1cm4gbnVsbFxuICBpZiAoIWZha2UgJiYgc3RhdGUubm90aWZpZWRWZXJzaW9uID09PSBuZXdlcikgcmV0dXJuIG51bGxcbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiBuZXdlcixcbiAgICBtYXJrTm90aWZpZWQ6ICgpID0+IChmYWtlID8gUHJvbWlzZS5yZXNvbHZlKCkgOiB3cml0ZVN0YXRlKHsgbm90aWZpZWRWZXJzaW9uOiBuZXdlciB9KS5jYXRjaCgoKSA9PiB7fSkpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Rldkluc3RhbGwoZW50cnlVcmwpIHtcbiAgcmV0dXJuICFTdHJpbmcoZW50cnlVcmwpLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5VcGRhdGUoKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGV4ZWMoJ25wbSBpbnN0YWxsIC1nIHBpY29jb2RlQGxhdGVzdCcsIHsgdGltZW91dDogMTgwMDAwIH0sIChlcnIsIHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICByZXNvbHZlKHsgb2s6ICFlcnIsIG91dHB1dDogW3N0ZG91dCwgc3RkZXJyXS5maWx0ZXIoQm9vbGVhbikuam9pbignXFxuJykudHJpbSgpLnNsaWNlKDAsIDQwMCkgfSlcbiAgICB9KVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBmdXp6eVNjb3JlKHF1ZXJ5LCBwYXRoKSB7XG4gIGNvbnN0IHEgPSBxdWVyeS50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IHMgPSBwYXRoLnRvTG93ZXJDYXNlKClcbiAgaWYgKCFxKSByZXR1cm4gMFxuICBsZXQgYmVzdCA9IC0xXG4gIGZvciAobGV0IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0pOyBzdGFydCAhPT0gLTE7IHN0YXJ0ID0gcy5pbmRleE9mKHFbMF0sIHN0YXJ0ICsgMSkpIHtcbiAgICBsZXQgc2NvcmUgPSAwXG4gICAgbGV0IHByZXYgPSAtMVxuICAgIGxldCBtYXRjaGVkID0gdHJ1ZVxuICAgIGZvciAoY29uc3QgY2ggb2YgcSkge1xuICAgICAgY29uc3QgaSA9IHMuaW5kZXhPZihjaCwgcHJldiA9PT0gLTEgPyBzdGFydCA6IHByZXYgKyAxKVxuICAgICAgaWYgKGkgPT09IC0xKSB7XG4gICAgICAgIG1hdGNoZWQgPSBmYWxzZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgaWYgKHByZXYgIT09IC0xICYmIGkgPT09IHByZXYgKyAxKSBzY29yZSArPSAzXG4gICAgICBpZiAoaSA9PT0gMCB8fCAnLy4tXycuaW5jbHVkZXMoc1tpIC0gMV0pKSBzY29yZSArPSAyXG4gICAgICBzY29yZSArPSAxXG4gICAgICBwcmV2ID0gaVxuICAgIH1cbiAgICBpZiAobWF0Y2hlZCAmJiBzY29yZSA+IGJlc3QpIGJlc3QgPSBzY29yZVxuICB9XG4gIGlmIChiZXN0IDwgMCkgcmV0dXJuIC0xXG4gIGNvbnN0IGJhc2UgPSBzLnNsaWNlKHMubGFzdEluZGV4T2YoJy8nKSArIDEpXG4gIGlmIChiYXNlLnN0YXJ0c1dpdGgocSkpIGJlc3QgKz0gOFxuICBlbHNlIGlmIChiYXNlLmluY2x1ZGVzKHEpKSBiZXN0ICs9IDVcbiAgZWxzZSBpZiAocy5pbmNsdWRlcyhxKSkgYmVzdCArPSAzXG4gIHJldHVybiBiZXN0IC0gcy5sZW5ndGggLyAxMDBcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IGJhc2VuYW1lIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNRURJQV9UWVBFUyA9IHtcbiAgcG5nOiAnaW1hZ2UvcG5nJyxcbiAganBnOiAnaW1hZ2UvanBlZycsXG4gIGpwZWc6ICdpbWFnZS9qcGVnJyxcbiAgZ2lmOiAnaW1hZ2UvZ2lmJyxcbiAgd2VicDogJ2ltYWdlL3dlYnAnLFxuICBibXA6ICdpbWFnZS9ibXAnLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVkaWFUeXBlRm9yKHBhdGgpIHtcbiAgcmV0dXJuIE1FRElBX1RZUEVTW3BhdGguc3BsaXQoJy4nKS5wb3AoKS50b0xvd2VyQ2FzZSgpXSB8fCBudWxsXG59XG5cbmZ1bmN0aW9uIHVucXVvdGUodG9rZW4pIHtcbiAgaWYgKC9eJy4qJyQvLnRlc3QodG9rZW4pIHx8IC9eXCIuKlwiJC8udGVzdCh0b2tlbikpIHJldHVybiB0b2tlbi5zbGljZSgxLCAtMSlcbiAgcmV0dXJuIHRva2VuLnJlcGxhY2UoL1xcXFwgL2csICcgJylcbn1cblxuZnVuY3Rpb24gdG9QYXRoKHRva2VuKSB7XG4gIGNvbnN0IHJhdyA9IHVucXVvdGUodG9rZW4udHJpbSgpKVxuICBpZiAocmF3LnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJhdy5zbGljZSgnZmlsZTovLycubGVuZ3RoKSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG4gIHJldHVybiByYXdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJbWFnZVBhdGhzKHRleHQsIGV4aXN0cyA9IGV4aXN0c1N5bmMpIHtcbiAgY29uc3QgdG9rZW5zID0gdGV4dC50cmltKCkubWF0Y2goLydbXiddKid8XCJbXlwiXSpcInwoPzpcXFxcIHxbXiBcXHRcXG5cXHJdKSsvZylcbiAgaWYgKCF0b2tlbnMgfHwgdG9rZW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGNvbnN0IHBhdGhzID0gW11cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBjb25zdCBwYXRoID0gdG9QYXRoKHRva2VuKVxuICAgIGlmICghcGF0aCB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpIHJldHVybiBbXVxuICAgIGlmICghbWVkaWFUeXBlRm9yKHBhdGgpIHx8ICFleGlzdHMocGF0aCkpIHJldHVybiBbXVxuICAgIHBhdGhzLnB1c2gocGF0aClcbiAgfVxuICByZXR1cm4gcGF0aHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGltYWdlTGFiZWwocGFydCkge1xuICBpZiAocGFydC5zb3VyY2U/LnBhdGgpIHJldHVybiBgW2ltYWdlOiAke2Jhc2VuYW1lKHBhcnQuc291cmNlLnBhdGgpfV1gXG4gIHJldHVybiAnW2ltYWdlXSdcbn1cblxuY29uc3QgSU1BR0VfUEFUSF9SRSA9IC8oW1wiJ10pKFxcL1teXCInXSs/XFwuKD86cG5nfGpwZT9nfGdpZnx3ZWJwfGJtcCkpXFwxfChcXC8oPzpcXFxcIHxbXiBcXHRcXG5cXHJcIiddKStcXC4oPzpwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wKSkvZ2lcblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHBhcnRzID0gW11cbiAgbGV0IGxhc3QgPSAwXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgdGV4dC5tYXRjaEFsbChJTUFHRV9QQVRIX1JFKSkge1xuICAgIGNvbnN0IHBhdGggPSBtYXRjaFsyXSB8fCBtYXRjaFszXS5yZXBsYWNlKC9cXFxcIC9nLCAnICcpXG4gICAgY29uc3QgbWVkaWFUeXBlID0gbWVkaWFUeXBlRm9yKHBhdGgpXG4gICAgaWYgKCFtZWRpYVR5cGUgfHwgIWV4aXN0cyhwYXRoKSkgY29udGludWVcbiAgICBpZiAobWF0Y2guaW5kZXggPiBsYXN0KSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0ZXh0LnNsaWNlKGxhc3QsIG1hdGNoLmluZGV4KSB9KVxuICAgIHBhcnRzLnB1c2goeyB0eXBlOiAnaW1hZ2UnLCBzb3VyY2U6IHsga2luZDogJ3BhdGgnLCBwYXRoLCBtZWRpYVR5cGUgfSB9KVxuICAgIGxhc3QgPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiBwYXJ0c1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cykge1xuICBjb25zdCBwYXJ0cyA9IFtdXG4gIGxldCBsYXN0ID0gMFxuICBjb25zdCB1c2VkID0gW11cbiAgZm9yIChjb25zdCBtYXRjaCBvZiB0ZXh0Lm1hdGNoQWxsKC9cXFtJbWFnZSAjXFxkK1xcXS9nKSkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBhdHRhY2htZW50cy5nZXQobWF0Y2hbMF0pXG4gICAgaWYgKCFhdHRhY2htZW50KSBjb250aW51ZVxuICAgIGNvbnN0IGJlZm9yZSA9IHRleHQuc2xpY2UobGFzdCwgbWF0Y2guaW5kZXgpXG4gICAgaWYgKGJlZm9yZSkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogYmVmb3JlIH0pXG4gICAgcGFydHMucHVzaCh7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgc291cmNlOiB7IGtpbmQ6ICdwYXRoJywgcGF0aDogYXR0YWNobWVudC5wYXRoLCBtZWRpYVR5cGU6IGF0dGFjaG1lbnQubWVkaWFUeXBlIH0sXG4gICAgfSlcbiAgICB1c2VkLnB1c2gobWF0Y2hbMF0pXG4gICAgbGFzdCA9IG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoXG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHsgY29udGVudDogdGV4dCwgdXNlZCB9XG4gIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKGxhc3QpXG4gIGlmICh0YWlsKSBwYXJ0cy5wdXNoKHsgdHlwZTogJ3RleHQnLCB0ZXh0OiB0YWlsIH0pXG4gIHJldHVybiB7IGNvbnRlbnQ6IHBhcnRzLCB1c2VkIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocyh0ZXh0LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQsIGV4aXN0cyA9IGV4aXN0c1N5bmMgfSkge1xuICBjb25zdCBwYXJ0cyA9IHNwbGl0VGV4dEJ5SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMpXG4gIGlmICghcGFydHMpIHJldHVybiB7IHRleHQsIGNoYW5nZWQ6IGZhbHNlIH1cbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgb3V0ICs9IHBhcnQudGV4dFxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7bmV4dElkKCl9XWBcbiAgICAgIGF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBwYXJ0LnNvdXJjZS5wYXRoLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSB9KVxuICAgICAgb3V0ICs9IHBsYWNlaG9sZGVyXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRleHQ6IG91dCwgY2hhbmdlZDogdHJ1ZSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnB1dFRleHRGcm9tQ29udGVudChjb250ZW50LCB7IGF0dGFjaG1lbnRzLCBuZXh0SWQgfSkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoY29udGVudCkpIHJldHVybiBTdHJpbmcoY29udGVudClcbiAgbGV0IG91dCA9ICcnXG4gIGZvciAoY29uc3QgcGFydCBvZiBjb250ZW50KSB7XG4gICAgaWYgKHBhcnQudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBvdXQgKz0gcGFydC50ZXh0XG4gICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdpbWFnZScgJiYgcGFydC5zb3VyY2U/LnBhdGgpIHtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHtuZXh0SWQoKX1dYFxuICAgICAgYXR0YWNobWVudHMuc2V0KHBsYWNlaG9sZGVyLCB7IHBhdGg6IHBhcnQuc291cmNlLnBhdGgsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlIH0pXG4gICAgICBvdXQgKz0gcGxhY2Vob2xkZXJcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9ICdbaW1hZ2VdJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIGF0dGFjaG1lbnRzLCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHsgY29udGVudCwgdXNlZCB9ID0gYnVpbGRVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cylcbiAgY29uc3QgcGFydHMgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpID8gY29udGVudCA6IFt7IHR5cGU6ICd0ZXh0JywgdGV4dDogY29udGVudCB9XVxuICBjb25zdCBleHBhbmRlZCA9IFtdXG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChwYXJ0LnR5cGUgIT09ICd0ZXh0Jykge1xuICAgICAgZXhwYW5kZWQucHVzaChwYXJ0KVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3Qgc3BsaXQgPSBzcGxpdFRleHRCeUltYWdlUGF0aHMocGFydC50ZXh0LCBleGlzdHMpXG4gICAgaWYgKHNwbGl0KSBleHBhbmRlZC5wdXNoKC4uLnNwbGl0KVxuICAgIGVsc2UgZXhwYW5kZWQucHVzaChwYXJ0KVxuICB9XG4gIGlmIChleHBhbmRlZC5sZW5ndGggPT09IDEgJiYgZXhwYW5kZWRbMF0udHlwZSA9PT0gJ3RleHQnKSByZXR1cm4geyBjb250ZW50OiBleHBhbmRlZFswXS50ZXh0LCB1c2VkIH1cbiAgcmV0dXJuIHsgY29udGVudDogZXhwYW5kZWQsIHVzZWQgfVxufVxuIiwgImltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cyB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMsIGFkaG9jTW9kZWwgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBkZWZhdWx0TW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4vY29yZS9tb2RlbHMuanMnXG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi9jb3JlL2NvbmZpZy5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IGNyZWF0ZVNoZWxsTWFuYWdlciB9IGZyb20gJy4vY29yZS9zaGVsbHMuanMnXG5pbXBvcnQgeyBjcmVhdGVTZXNzaW9uLCBvcGVuU2Vzc2lvbiwgbG9hZFNlc3Npb24gfSBmcm9tICcuL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IHNlc3Npb25zRGlyIH0gZnJvbSAnLi9jb3JlL3BhdGhzLmpzJ1xuaW1wb3J0IHsgbWFrZUV2ZW50IH0gZnJvbSAnLi9jb3JlL2V2ZW50cy5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlIH0gZnJvbSAnLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyByZXNvbHZlRHJlZGdlIH0gZnJvbSAnLi9jb3JlL3Rvb2xzL3dlYi5qcydcbmltcG9ydCB7IHJ1blR1cm4gfSBmcm9tICcuL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBidWlsZFN5c3RlbVByb21wdCB9IGZyb20gJy4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuL2NvcmUvbWVtb3J5LmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vdWkvZnV6enkuanMnXG5pbXBvcnQgeyBmaW5hbGl6ZVVzZXJDb250ZW50IH0gZnJvbSAnLi91aS9hdHRhY2htZW50cy5qcydcblxuZnVuY3Rpb24gcmVzb2x2ZU1vZGVsKG1vZGVscywgcHJvdmlkZXJzLCBuYW1lKSB7XG4gIGlmICghbmFtZSkgcmV0dXJuIG51bGxcbiAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBuYW1lKVxuICBpZiAoZXhhY3QpIHJldHVybiBleGFjdFxuICBpZiAobmFtZS5pbmNsdWRlcygnLycpKSByZXR1cm4gYWRob2NNb2RlbChuYW1lLCBwcm92aWRlcnMpXG4gIGNvbnN0IHNjb3JlZCA9IG1vZGVsc1xuICAgIC5maWx0ZXIoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSlcbiAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShuYW1lLCBtLm5hbWUpLCBtXSlcbiAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgIC5zb3J0KChhLCBiKSA9PiBiWzBdIC0gYVswXSlcbiAgcmV0dXJuIHNjb3JlZFswXT8uWzFdIHx8IG51bGxcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN0ZGluKCkge1xuICBpZiAocHJvY2Vzcy5zdGRpbi5pc1RUWSkgcmV0dXJuICcnXG4gIGxldCBkYXRhID0gJydcbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBwcm9jZXNzLnN0ZGluKSB7XG4gICAgZGF0YSArPSBjaHVua1xuICAgIGlmIChkYXRhLmxlbmd0aCA+IDQwMDAwMCkgYnJlYWtcbiAgfVxuICByZXR1cm4gZGF0YS5zbGljZSgwLCA0MDAwMDApXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5IZWFkbGVzcyhvcHRzKSB7XG4gIGNvbnN0IHN0YXJ0ZWRBdCA9IERhdGUubm93KClcbiAgY29uc3QgbG9nID0gb3B0cy5xdWlldCA/ICgpID0+IHt9IDogKGxpbmUpID0+IHByb2Nlc3Muc3RkZXJyLndyaXRlKGxpbmUgKyAnXFxuJylcblxuICBjb25zdCBjaGF0Z3B0ID0gYXdhaXQgb3BlbmFpQ29ubmVjdGVkKClcbiAgY29uc3QgcHJvdmlkZXJzID0gWy4uLmFwcGx5S2V5cyhkaXNjb3ZlcktleXMoKSksIC4uLihjaGF0Z3B0ID8gWydjb2RleCddIDogW10pXVxuICBpZiAocHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdwaWNvOiBubyBjcmVkZW50aWFscyBmb3VuZCAoc2V0IGEgcHJvdmlkZXIga2V5IG9yIHJ1biBwaWNvIC0tY29ubmVjdClcXG4nKVxuICAgIHJldHVybiAxXG4gIH1cbiAgY29uc3QgY2F0YWxvZ0RhdGEgPSBhd2FpdCBsb2FkQ2F0YWxvZygpXG4gIGNvbnN0IGNvZGV4Q3JlZHMgPSBjaGF0Z3B0ID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKSA6IG51bGxcbiAgY29uc3QgbW9kZWxzID0gW1xuICAgIC4uLmV4dHJhY3RNb2RlbHMoY2F0YWxvZ0RhdGEsIFsnZ29vZ2xlJywgJ2FudGhyb3BpYycsICdvcGVuYWknLCAneGFpJ10pLm1hcCgobSkgPT4gKHtcbiAgICAgIC4uLm0sXG4gICAgICBhdmFpbGFibGU6IHByb3ZpZGVycy5pbmNsdWRlcyhtLnByb3ZpZGVyKSxcbiAgICB9KSksXG4gICAgLi4uKGF3YWl0IGxvYWRDb2RleE1vZGVscyhjb2RleENyZWRzKSkubWFwKChtKSA9PiAoeyAuLi5tLCBhdmFpbGFibGU6IGNoYXRncHQgfSkpLFxuICBdXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRDb25maWcoKVxuXG4gIGNvbnN0IG1vZGVsID0gcmVzb2x2ZU1vZGVsKG1vZGVscywgcHJvdmlkZXJzLCBvcHRzLm1vZGVsKVxuICAgIHx8IChjb25maWcuZGVmYXVsdE1vZGVsICYmIG1vZGVscy5maW5kKChtKSA9PiBtLm5hbWUgPT09IGNvbmZpZy5kZWZhdWx0TW9kZWwgJiYgbS5hdmFpbGFibGUpKVxuICAgIHx8IGRlZmF1bHRNb2RlbChtb2RlbHMpXG4gIGlmICghbW9kZWwgfHwgbW9kZWwuYXZhaWxhYmxlID09PSBmYWxzZSkge1xuICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBwaWNvOiBubyB1c2FibGUgbW9kZWwke29wdHMubW9kZWwgPyBgIG1hdGNoaW5nIFwiJHtvcHRzLm1vZGVsfVwiYCA6ICcnfVxcbmApXG4gICAgcmV0dXJuIDFcbiAgfVxuICBjb25zdCBlZmZvcnQgPSBvcHRzLmVmZm9ydCA/PyAobW9kZWwuZWZmb3J0ID8gJ2F1dG8nIDogbnVsbClcblxuICBjb25zdCBib290ID0gYXdhaXQgYnVpbGRQcm9qZWN0Qm9vdChwcm9jZXNzLmN3ZCgpKVxuICBhd2FpdCBQcm9taXNlLnJhY2UoW2Jvb3QubWNwLmNvbm5lY3RBbGwoKSwgbmV3IFByb21pc2UoKHIpID0+IHNldFRpbWVvdXQociwgMTAwMDApKV0pXG4gIGNvbnN0IHNoZWxscyA9IGNyZWF0ZVNoZWxsTWFuYWdlcigpXG5cbiAgbGV0IHNlc3Npb25cbiAgbGV0IGV2ZW50cyA9IFtdXG4gIGlmIChvcHRzLnJlc3VtZSkge1xuICAgIGNvbnN0IGZpbGUgPSBvcHRzLnJlc3VtZS5pbmNsdWRlcygnLycpID8gb3B0cy5yZXN1bWUgOiBqb2luKHNlc3Npb25zRGlyKGJvb3Qucm9vdCksIGAke29wdHMucmVzdW1lfS5qc29ubGApXG4gICAgY29uc3QgbG9hZGVkID0gYXdhaXQgbG9hZFNlc3Npb24oZmlsZSlcbiAgICBzZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXI6IGxvYWRlZC5oZWFkZXIgfSlcbiAgICBldmVudHMgPSBsb2FkZWQuZXZlbnRzXG4gIH0gZWxzZSB7XG4gICAgc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2Q6IGJvb3QuY3dkLCByb290OiBib290LnJvb3QgfSlcbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3QgPSAoZXZlbnQpID0+IHtcbiAgICBldmVudHMucHVzaChldmVudClcbiAgICBzZXNzaW9uLmFwcGVuZChldmVudClcbiAgICBpZiAob3B0cy5zdHJlYW1Kc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJylcbiAgfVxuXG4gIGNvbnN0IHN0ZGluRGF0YSA9IGF3YWl0IHJlYWRTdGRpbigpXG4gIGNvbnN0IHByb21wdFRleHQgPSBzdGRpbkRhdGEgPyBgJHtvcHRzLnByb21wdH1cXG5cXG5bcGlwZWQgaW5wdXRdXFxuJHtzdGRpbkRhdGF9YCA6IG9wdHMucHJvbXB0XG4gIGNvbnN0IHsgY29udGVudCB9ID0gZmluYWxpemVVc2VyQ29udGVudChwcm9tcHRUZXh0LCBuZXcgTWFwKCkpXG4gIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlOiB7IHJvbGU6ICd1c2VyJywgY29udGVudCB9IH0pKVxuXG4gIGNvbnN0IGRlcml2ZWQgPSBkZXJpdmVTdGF0ZShldmVudHMpXG4gIGNvbnN0IGxvYWRlZEJlZm9yZSA9IG5ldyBTZXQoYm9vdC50cmFja2VyLmxvYWRlZClcbiAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgdHJhY2tlcjogYm9vdC50cmFja2VyLFxuICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgc2hlbGxzLFxuICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgZHJlZGdlOiByZXNvbHZlRHJlZGdlKGNvbmZpZyksXG4gICAgbWNwVG9vbHM6IGJvb3QubWNwLnRvb2xzKCksXG4gICAgdXNlclRvb2xzOiBbXSxcbiAgICBtYXhUb29sQ2FsbHM6IG9wdHMubWF4VG9vbENhbGxzID8/IDUwLFxuICB9KVxuXG4gIGxldCBhdXRoID0gbnVsbFxuICBpZiAobW9kZWwucHJvdmlkZXIgPT09ICdjb2RleCcpIHtcbiAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgIGlmICghYXV0aCkge1xuICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoJ3BpY286IGNvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluIChydW4gcGljbyAtLWNvbm5lY3QpXFxuJylcbiAgICAgIHJldHVybiAxXG4gICAgfVxuICB9XG5cbiAgbG9nKGBwaWNvIFx1MDBCNyAke21vZGVsLm5hbWV9JHtlZmZvcnQgPyBgIFx1MDBCNyAke2VmZm9ydH1gIDogJyd9IFx1MDBCNyBzZXNzaW9uICR7c2Vzc2lvbi5pZH1gKVxuICBsZXQgdGhvdWdodHMgPSAnJ1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5UdXJuKHtcbiAgICBoaXN0b3J5OiBkZXJpdmVkLnByb3ZpZGVySGlzdG9yeSxcbiAgICB0b29scyxcbiAgICByZWNvcmRlcixcbiAgICBtb2RlbE5hbWU6IG1vZGVsLm5hbWUsXG4gICAgZWZmb3J0LFxuICAgIGF1dGgsXG4gICAgc3lzdGVtOiBidWlsZFN5c3RlbVByb21wdCh7XG4gICAgICBjd2Q6IGJvb3QuY3dkLFxuICAgICAgY29udGV4dEZpbGVzOiBib290LnN0YXJ0dXBDb250ZXh0LmZpbGVzLFxuICAgICAgc2tpbGxzOiBib290LnNraWxscy5saXN0KCksXG4gICAgICBtZW1vcnlJbmRleFRleHQ6IG1lbW9yeUluZGV4KGF3YWl0IGJvb3QubWVtb3J5Lmxpc3QoKS5jYXRjaCgoKSA9PiBbXSksIGJvb3Qucm9vdCksXG4gICAgfSksXG4gICAgb25TdHJlYW06IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHRob3VnaHRzICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScpIHtcbiAgICAgICAgY29uc3QgZW50cnkgPSByZWNvcmRlci5lbnRyaWVzLmF0KC0xKVxuICAgICAgICBsb2coYCAgXHUyNzEzICR7ZW50cnk/Lm5hbWUgPz8gZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lfSAgJHtlbnRyeT8udGl0bGUgPz8gJyd9YClcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIGxvZyhgICBcdTI3MTcgJHtldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWV9ICAke2V2ZW50LmVycm9yLnNsaWNlKDAsIDEyMCl9YClcbiAgICB9LFxuICB9KVxuXG4gIGlmICh0aG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiB0aG91Z2h0cyB9KSlcbiAgZm9yIChjb25zdCBtZXNzYWdlIG9mIHJlc3VsdC5tZXNzYWdlcykgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2UgfSkpXG4gIGZvciAoY29uc3QgZW50cnkgb2YgcmVjb3JkZXIuZW50cmllcykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rvb2xfbWV0YScsIGVudHJ5KSlcbiAgZm9yIChjb25zdCBwYXRoIG9mIGJvb3QudHJhY2tlci5sb2FkZWQpIHtcbiAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gIH1cbiAgaWYgKHJlc3VsdC51c2FnZSkgcGVyc2lzdChtYWtlRXZlbnQoJ3VzYWdlJywgeyBtb2RlbDogbW9kZWwubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gIGlmIChyZXN1bHQuaW50ZXJydXB0ZWQpIHBlcnNpc3QobWFrZUV2ZW50KCdpbnRlcnJ1cHQnLCB7fSkpXG5cbiAgY29uc3QgcnVubmluZyA9IHNoZWxscy5ydW5uaW5nKClcbiAgaWYgKHJ1bm5pbmcgPiAwKSBsb2coYCAga2lsbGluZyAke3J1bm5pbmd9IGJhY2tncm91bmQgc2hlbGwke3J1bm5pbmcgPT09IDEgPyAnJyA6ICdzJ31gKVxuICBzaGVsbHMua2lsbEFsbCgpXG4gIGF3YWl0IGJvb3QubWNwLmNsb3NlQWxsKCkuY2F0Y2goKCkgPT4ge30pXG5cbiAgY29uc3QgdGV4dCA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoKG0pID0+IG0ucm9sZSA9PT0gJ2Fzc2lzdGFudCcgJiYgdHlwZW9mIG0uY29udGVudCA9PT0gJ3N0cmluZycgJiYgbS5jb250ZW50KS5hdCgtMSk/LmNvbnRlbnQgPz8gJydcbiAgY29uc3Qgc3VtbWFyeSA9IHtcbiAgICB0ZXh0LFxuICAgIHNlc3Npb246IHNlc3Npb24uaWQsXG4gICAgc2Vzc2lvbkZpbGU6IHNlc3Npb24uZmlsZSxcbiAgICBtb2RlbDogbW9kZWwubmFtZSxcbiAgICB1c2FnZTogcmVzdWx0LnVzYWdlLFxuICAgIGNvc3Q6IGVzdGltYXRlQ29zdChmaW5kTW9kZWwobW9kZWxzLCBtb2RlbC5uYW1lKSwgcmVzdWx0LnVzYWdlKSxcbiAgICB0b29sQ2FsbHM6IHJlY29yZGVyLmVudHJpZXMubGVuZ3RoLFxuICAgIGludGVycnVwdGVkOiByZXN1bHQuaW50ZXJydXB0ZWQsXG4gICAgZHVyYXRpb25NczogRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgfVxuXG4gIGlmIChvcHRzLmpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KHN1bW1hcnkpICsgJ1xcbicpXG4gIGVsc2UgaWYgKG9wdHMuc3RyZWFtSnNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAncmVzdWx0JywgLi4uc3VtbWFyeSwgdGV4dDogdW5kZWZpbmVkLCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxuICBlbHNlIHByb2Nlc3Muc3Rkb3V0LndyaXRlKHRleHQgKyAnXFxuJylcblxuICByZXR1cm4gcmVzdWx0LmludGVycnVwdGVkID8gMSA6IDBcbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgbW91bnQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBwYXJzZUFyZ3MsIFVTQUdFIH0gZnJvbSAnLi9jbGktYXJncy5qcydcbmltcG9ydCB7IGRpc2NvdmVyS2V5cywgYXBwbHlLZXlzLCBrZXlIaW50IH0gZnJvbSAnLi9jb3JlL2tleXMuanMnXG5pbXBvcnQgeyBkZWZhdWx0TW9kZWwgfSBmcm9tICcuL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgbG9hZENhdGFsb2csIGV4dHJhY3RNb2RlbHMgfSBmcm9tICcuL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4vY29yZS9jb2RleC1tb2RlbHMuanMnXG5pbXBvcnQgeyBvcGVuYWlDb25uZWN0ZWQsIG9wZW5haUNyZWRlbnRpYWxzIH0gZnJvbSAnLi9jb3JlL29wZW5haS1hdXRoLmpzJ1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBkZXRlY3RUZXJtaW5hbFRoZW1lIH0gZnJvbSAnLi9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzJ1xuaW1wb3J0IHsgYnVpbGRQcm9qZWN0Qm9vdCB9IGZyb20gJy4vY29yZS9ib290LmpzJ1xuaW1wb3J0IHsgcmVzb2x2ZURyZWRnZSB9IGZyb20gJy4vY29yZS90b29scy93ZWIuanMnXG5pbXBvcnQgeyBjcmVhdGVTaGVsbE1hbmFnZXIgfSBmcm9tICcuL2NvcmUvc2hlbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV2FrZXVwTWFuYWdlciB9IGZyb20gJy4vY29yZS93YWtldXBzLmpzJ1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnLi91aS9hcHAuanN4J1xuaW1wb3J0IHsgREVGQVVMVF9BQ0NFTlQsIE1VVEVELCBzZXRQYWxldHRlLCBwYWxldHRlTGlzdCB9IGZyb20gJy4vdWkvdGhlbWUuanMnXG5cbmNvbnN0IHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4uL3BhY2thZ2UuanNvbicsIGltcG9ydC5tZXRhLnVybCksICd1dGYtOCcpKVxuXG5sZXQgY2xpXG50cnkge1xuICBjbGkgPSBwYXJzZUFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxufSBjYXRjaCAoZXJyKSB7XG4gIGNvbnNvbGUuZXJyb3IoYHBpY286ICR7ZXJyLm1lc3NhZ2V9YClcbiAgY29uc29sZS5lcnJvcihVU0FHRSlcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5pZiAoY2xpLm1vZGUgPT09ICdoZWxwJykge1xuICBjb25zb2xlLmxvZyhVU0FHRSlcbiAgcHJvY2Vzcy5leGl0KDApXG59XG5pZiAoY2xpLm1vZGUgPT09ICd2ZXJzaW9uJykge1xuICBjb25zb2xlLmxvZyhwa2cudmVyc2lvbilcbiAgcHJvY2Vzcy5leGl0KDApXG59XG5pZiAoY2xpLm1vZGUgPT09ICd1cGRhdGUnKSB7XG4gIGNvbnN0IHsgaXNEZXZJbnN0YWxsLCBydW5VcGRhdGUsIGZldGNoTGF0ZXN0VmVyc2lvbiwgbmV3ZXJWZXJzaW9uIH0gPSBhd2FpdCBpbXBvcnQoJy4vY29yZS91cGRhdGUuanMnKVxuICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHtcbiAgICBjb25zb2xlLmVycm9yKCd0aGlzIHBpY28gcnVucyBmcm9tIGEgc291cmNlIGNoZWNrb3V0OyB1cGRhdGUgaXQgd2l0aCBnaXQsIG5vdCBucG0nKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gIGlmIChsYXRlc3QgJiYgIW5ld2VyVmVyc2lvbihwa2cudmVyc2lvbiwgbGF0ZXN0KSkge1xuICAgIGNvbnNvbGUubG9nKGBwaWNvIHYke3BrZy52ZXJzaW9ufSBpcyBhbHJlYWR5IHRoZSBsYXRlc3RgKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYHVwZGF0aW5nIHBpY29jb2RlICR7bGF0ZXN0ID8gYHRvIHYke2xhdGVzdH0gYCA6ICcnfXZpYSBucG0uLi5gKVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5VcGRhdGUoKVxuICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgY29uc29sZS5sb2coYHVwZGF0ZWQke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ31gKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYHVwZGF0ZSBmYWlsZWQ6XFxuJHtyZXN1bHQub3V0cHV0fWApXG4gIHByb2Nlc3MuZXhpdCgxKVxufVxuaWYgKGNsaS5tb2RlID09PSAnY29ubmVjdCcpIHtcbiAgY29uc3QgeyBjb25uZWN0T3BlbkFJIH0gPSBhd2FpdCBpbXBvcnQoJy4vY29yZS9vcGVuYWktYXV0aC5qcycpXG4gIHRyeSB7XG4gICAgY29uc29sZS5lcnJvcignb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29uc3QgeyBlbWFpbCB9ID0gYXdhaXQgY29ubmVjdE9wZW5BSSh7IG9uVXJsOiAodXJsKSA9PiBjb25zb2xlLmVycm9yKGBpZiB0aGUgYnJvd3NlciBkaWQgbm90IG9wZW4sIHZpc2l0OlxcbiR7dXJsfWApIH0pXG4gICAgY29uc29sZS5sb2coYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9YClcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihgY29ubmVjdCBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuaWYgKGNsaS5tb2RlID09PSAnaGVhZGxlc3MnKSB7XG4gIGNvbnN0IHsgcnVuSGVhZGxlc3MgfSA9IGF3YWl0IGltcG9ydCgnLi9oZWFkbGVzcy5qcycpXG4gIHByb2Nlc3MuZXhpdChhd2FpdCBydW5IZWFkbGVzcyhjbGkpKVxufVxuXG5jb25zdCBrZXlzID0gZGlzY292ZXJLZXlzKClcbmNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuY29uc3QgcHJvdmlkZXJzID0gWy4uLmFwcGx5S2V5cyhrZXlzKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG5jb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbmNvbnN0IGNvZGV4Q3JlZHMgPSBjaGF0Z3B0ID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKSA6IG51bGxcbmNvbnN0IG1vZGVscyA9IFtcbiAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAga2V5SGludDoga2V5SGludChtLnByb3ZpZGVyKSxcbiAgfSkpLFxuICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7XG4gICAgLi4ubSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uaW5wdXRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uY29udGV4dFxuICAgICAgPz8gbnVsbCxcbiAgICBhdmFpbGFibGU6IGNoYXRncHQsXG4gICAga2V5SGludDogJy9jb25uZWN0JyxcbiAgfSkpLFxuXVxuXG5pZiAocHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuICBjb25zb2xlLmVycm9yKCdwaWNvOiBubyBjcmVkZW50aWFscyBmb3VuZC4nKVxuICBjb25zb2xlLmVycm9yKCdzZXQgb25lIG9mOiBHRU1JTklfQVBJX0tFWSwgQU5USFJPUElDX0FQSV9LRVksIE9QRU5BSV9BUElfS0VZLCBYQUlfQVBJX0tFWScpXG4gIGNvbnNvbGUuZXJyb3IoJ29yIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbjogcGljbyAtLWNvbm5lY3QnKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cblxubGV0IG1jcE5vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzTm90aWZ5ID0gKCkgPT4ge31cbmxldCBzaGVsbHNFeGl0ID0gKCkgPT4ge31cbmNvbnN0IHNoZWxscyA9IGNyZWF0ZVNoZWxsTWFuYWdlcih7XG4gIG9uQ2hhbmdlOiAoKSA9PiBzaGVsbHNOb3RpZnkoKSxcbiAgb25FeGl0OiAoc2hlbGwpID0+IHNoZWxsc0V4aXQoc2hlbGwpLFxufSlcbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBzaGVsbHMua2lsbEFsbCgpKVxuXG5sZXQgd2FrZXVwc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgd2FrZXVwc0ZpcmUgPSAoKSA9PiB7fVxuY29uc3Qgd2FrZXVwcyA9IGNyZWF0ZVdha2V1cE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gd2FrZXVwc05vdGlmeSgpLFxuICBvbkZpcmU6ICh3YWtldXApID0+IHdha2V1cHNGaXJlKHdha2V1cCksXG59KVxuXG5jb25zdCBib290UHJvamVjdCA9IChjd2QpID0+IGJ1aWxkUHJvamVjdEJvb3QoY3dkLCB7IG9uTWNwQ2hhbmdlOiAoKSA9PiBtY3BOb3RpZnkoKSB9KVxuXG5jb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcbmNvbnN0IGNvbmZpZ3VyZWREZWZhdWx0ID0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsKVxuXG5jb25zdCBkZXRlY3RlZFRoZW1lID0gYXdhaXQgZGV0ZWN0VGVybWluYWxUaGVtZSgpXG5jb25zdCB0aGVtZU92ZXJyaWRlID0gcGFsZXR0ZUxpc3QoKS5zb21lKChwKSA9PiBwLmtleSA9PT0gY29uZmlnLnRoZW1lKSA/IGNvbmZpZy50aGVtZSA6IG51bGxcbnNldFBhbGV0dGUodGhlbWVPdmVycmlkZSB8fCBkZXRlY3RlZFRoZW1lKVxuY29uc3QgdGhlbWUgPSB7IGFjY2VudDogREVGQVVMVF9BQ0NFTlQsIG11dGVkOiBNVVRFRCB9XG5cbmNvbnN0IGJvb3QgPSB7XG4gIC4uLihhd2FpdCBib290UHJvamVjdChwcm9jZXNzLmN3ZCgpKSksXG4gIHRoZW1lLFxuICB2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgbW9kZWxzLFxuICBwcm92aWRlcnMsXG4gIGluaXRpYWxNb2RlbDogY29uZmlndXJlZERlZmF1bHQgfHwgZGVmYXVsdE1vZGVsKG1vZGVscyksXG4gIGRldGVjdGVkVGhlbWUsXG4gIHRoZW1lUHJlZjogdGhlbWVPdmVycmlkZSB8fCAnYXV0bycsXG4gIGRyZWRnZTogcmVzb2x2ZURyZWRnZShjb25maWcpLFxuICBpbml0aWFsRWZmb3J0OiBbJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhjb25maWcuZGVmYXVsdEVmZm9ydCkgPyBjb25maWcuZGVmYXVsdEVmZm9ydCA6IG51bGwsXG4gIGF1dG9Db21wYWN0OiBjb25maWcuYXV0b0NvbXBhY3QgIT09IGZhbHNlLFxuICBjbG91ZHM6IGNvbmZpZy5hbmltYXRpb24/LmNsb3VkcyA9PT0gdHJ1ZSxcbiAgY29tcGFjdFRvb2xIaXN0b3J5OiBjb25maWcuZGlzcGxheT8uY29tcGFjdFRvb2xIaXN0b3J5ID09PSB0cnVlLFxuICByZWZzOiB7fSxcbiAgc2hlbGxzLFxuICB3YWtldXBzLFxuICBzZXRNY3BOb3RpZnk6IChmbikgPT4geyBtY3BOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNOb3RpZnk6IChmbikgPT4geyBzaGVsbHNOb3RpZnkgPSBmbiB9LFxuICBzZXRTaGVsbHNFeGl0OiAoZm4pID0+IHsgc2hlbGxzRXhpdCA9IGZuIH0sXG4gIHNldFdha2V1cHNOb3RpZnk6IChmbikgPT4geyB3YWtldXBzTm90aWZ5ID0gZm4gfSxcbiAgc2V0V2FrZXVwc0ZpcmU6IChmbikgPT4geyB3YWtldXBzRmlyZSA9IGZuIH0sXG4gIHJlYnVpbGQ6IGJvb3RQcm9qZWN0LFxufVxuXG5jb25zdCBhcHAgPSBtb3VudCgoKSA9PiA8QXBwIGJvb3Q9e2Jvb3R9IC8+LCB7IHRpdGxlOiBgcGljbyBcdTAwQjcgJHtib290LnJvb3Quc3BsaXQoJy8nKS5wb3AoKX1gLCB0aGVtZSB9KVxuYm9vdC5zZXRUaGVtZSA9IGFwcC5zZXRUaGVtZVxuYm9vdC5tY3AuY29ubmVjdEFsbCgpXG4iLCAiZXhwb3J0IGNvbnN0IFVTQUdFID0gYHBpY28gLSBhIGNvZGluZyBhZ2VudCBpbiB5b3VyIHRlcm1pbmFsXG5cbnVzYWdlOlxuICBwaWNvICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmFjdGl2ZSBzZXNzaW9uIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeVxuICBwaWNvIC1wIFwicHJvbXB0XCIgICAgICAgICAgIGhlYWRsZXNzOiBydW4gb25lIGFnZW50aWMgdHVybiwgcHJpbnQgdGhlIGFuc3dlclxuICBjYXQgbG9nIHwgcGljbyAtcCBcIi4uLlwiICAgIHN0ZGluIGlzIGFwcGVuZGVkIHRvIHRoZSBwcm9tcHQgYXMgY29udGV4dFxuXG5oZWFkbGVzcyBmbGFnczpcbiAgLXAsIC0tcHJpbnQgPHByb21wdD4gICAgICAgdGhlIHByb21wdCB0byBydW5cbiAgLS1qc29uICAgICAgICAgICAgICAgICAgICAgcHJpbnQgYSBzaW5nbGUgSlNPTiByZXN1bHQgb2JqZWN0IHRvIHN0ZG91dFxuICAtLXN0cmVhbS1qc29uICAgICAgICAgICAgICBzdHJlYW0gc2Vzc2lvbiBldmVudHMgdG8gc3Rkb3V0IGFzIGpzb25sXG4gIC1tLCAtLW1vZGVsIDxuYW1lPiAgICAgICAgIG1vZGVsIHRvIHVzZSAoZnV6enkgbWF0Y2hlZCwgb3IgcmF3IHByb3ZpZGVyL21vZGVsKVxuICAtLWVmZm9ydCA8bGV2ZWw+ICAgICAgICAgICB0aGlua2luZyBlZmZvcnQ6IGF1dG98bG93fG1lZGl1bXxoaWdofG1heFxuICAtLXJlc3VtZSA8c2Vzc2lvbi1pZD4gICAgICBjb250aW51ZSBhbiBleGlzdGluZyBzZXNzaW9uIGZyb20gdGhpcyBwcm9qZWN0XG4gIC0tbWF4LXRvb2wtY2FsbHMgPG4+ICAgICAgIHN0b3AgdGhlIGFnZW50IGFmdGVyIG4gdG9vbCBjYWxscyAoZGVmYXVsdCA1MClcbiAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgbm8gcHJvZ3Jlc3Mgb3V0cHV0IG9uIHN0ZGVyclxuXG4gIC0tY29ubmVjdCAgICAgICAgICAgICAgICAgIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbiAoT0F1dGggaW4geW91ciBicm93c2VyKVxuICB1cGRhdGUsIC0tdXBkYXRlICAgICAgICAgICB1cGRhdGUgcGljbyB0byB0aGUgbGF0ZXN0IHJlbGVhc2UgZnJvbSBucG1cbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHBcbiAgLXYsIC0tdmVyc2lvbiAgICAgICAgICAgICAgc2hvdyB2ZXJzaW9uYFxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3YpIHtcbiAgY29uc3Qgb3B0cyA9IHsgbW9kZTogJ2ludGVyYWN0aXZlJyB9XG4gIGNvbnN0IHRha2VWYWx1ZSA9IChuYW1lLCBpKSA9PiB7XG4gICAgaWYgKGkgKyAxID49IGFyZ3YubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gcmVxdWlyZXMgYSB2YWx1ZWApXG4gICAgcmV0dXJuIGFyZ3ZbaSArIDFdXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhcmcgPSBhcmd2W2ldXG4gICAgaWYgKGFyZyA9PT0gJy1wJyB8fCBhcmcgPT09ICctLXByaW50Jykge1xuICAgICAgb3B0cy5tb2RlID0gJ2hlYWRsZXNzJ1xuICAgICAgb3B0cy5wcm9tcHQgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWpzb24nKSBvcHRzLmpzb24gPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLS1zdHJlYW0tanNvbicpIG9wdHMuc3RyZWFtSnNvbiA9IHRydWVcbiAgICBlbHNlIGlmIChhcmcgPT09ICctbScgfHwgYXJnID09PSAnLS1tb2RlbCcpIHtcbiAgICAgIG9wdHMubW9kZWwgPSB0YWtlVmFsdWUoYXJnLCBpKVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWVmZm9ydCcpIHtcbiAgICAgIGNvbnN0IGxldmVsID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGlmICghWydhdXRvJywgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhsZXZlbCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGVmZm9ydCBcIiR7bGV2ZWx9XCI6IHVzZSBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhgKVxuICAgICAgfVxuICAgICAgb3B0cy5lZmZvcnQgPSBsZXZlbFxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLXJlc3VtZScpIHtcbiAgICAgIG9wdHMucmVzdW1lID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1tYXgtdG9vbC1jYWxscycpIHtcbiAgICAgIG9wdHMubWF4VG9vbENhbGxzID0gcGFyc2VJbnQodGFrZVZhbHVlKGFyZywgaSksIDEwKVxuICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUob3B0cy5tYXhUb29sQ2FsbHMpIHx8IG9wdHMubWF4VG9vbENhbGxzIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJy0tbWF4LXRvb2wtY2FsbHMgcmVxdWlyZXMgYSBwb3NpdGl2ZSBudW1iZXInKVxuICAgICAgfVxuICAgICAgaSsrXG4gICAgfSBlbHNlIGlmIChhcmcgPT09ICctLWNvbm5lY3QnKSBvcHRzLm1vZGUgPSAnY29ubmVjdCdcbiAgICBlbHNlIGlmIChhcmcgPT09ICd1cGRhdGUnIHx8IGFyZyA9PT0gJy0tdXBkYXRlJykgb3B0cy5tb2RlID0gJ3VwZGF0ZSdcbiAgICBlbHNlIGlmIChhcmcgPT09ICctcScgfHwgYXJnID09PSAnLS1xdWlldCcpIG9wdHMucXVpZXQgPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLWgnIHx8IGFyZyA9PT0gJy0taGVscCcpIG9wdHMubW9kZSA9ICdoZWxwJ1xuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy12JyB8fCBhcmcgPT09ICctLXZlcnNpb24nKSBvcHRzLm1vZGUgPSAndmVyc2lvbidcbiAgICBlbHNlIHRocm93IG5ldyBFcnJvcihgdW5rbm93biBhcmd1bWVudCBcIiR7YXJnfVwiYClcbiAgfVxuXG4gIGlmIChvcHRzLm1vZGUgPT09ICdoZWFkbGVzcycgJiYgIW9wdHMucHJvbXB0Py50cmltKCkpIHRocm93IG5ldyBFcnJvcignLXAgcmVxdWlyZXMgYSBub24tZW1wdHkgcHJvbXB0JylcbiAgcmV0dXJuIG9wdHNcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gcGFyc2VPc2MxMShyZXNwb25zZSkge1xuICBjb25zdCBtYXRjaCA9IHJlc3BvbnNlLm1hdGNoKC9cXF0xMTtyZ2I6KFswLTlhLWZdKylcXC8oWzAtOWEtZl0rKVxcLyhbMC05YS1mXSspL2kpXG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsXG4gIGNvbnN0IGNoYW5uZWwgPSAoaGV4KSA9PiBwYXJzZUludChoZXgsIDE2KSAvICgxNiAqKiBoZXgubGVuZ3RoIC0gMSlcbiAgY29uc3QgbHVtaW5hbmNlID0gMC4yMTI2ICogY2hhbm5lbChtYXRjaFsxXSkgKyAwLjcxNTIgKiBjaGFubmVsKG1hdGNoWzJdKSArIDAuMDcyMiAqIGNoYW5uZWwobWF0Y2hbM10pXG4gIHJldHVybiBsdW1pbmFuY2UgPiAwLjUgPyAnbGlnaHQnIDogJ2RhcmsnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZUZyb21Db2xvcmZnYmcodmFsdWUpIHtcbiAgY29uc3QgdG9rZW4gPSAodmFsdWUgfHwgJycpLnNwbGl0KCc7JykuYXQoLTEpXG4gIGlmICghL15cXGQrJC8udGVzdCh0b2tlbikpIHJldHVybiBudWxsXG4gIGNvbnN0IGJnID0gTnVtYmVyKHRva2VuKVxuICByZXR1cm4gYmcgPT09IDcgfHwgYmcgPT09IDE1ID8gJ2xpZ2h0JyA6ICdkYXJrJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0VGVybWluYWxUaGVtZSh7IHRpbWVvdXRNcyA9IDE1MCB9ID0ge30pIHtcbiAgY29uc3QgZmFsbGJhY2sgPSAoKSA9PiB0aGVtZUZyb21Db2xvcmZnYmcocHJvY2Vzcy5lbnYuQ09MT1JGR0JHKSB8fCAnZGFyaydcbiAgaWYgKCFwcm9jZXNzLnN0ZGluLmlzVFRZIHx8ICFwcm9jZXNzLnN0ZG91dC5pc1RUWSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxsYmFjaygpKVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGxldCBidWZmZXIgPSAnJ1xuICAgIGxldCBzZXR0bGVkID0gZmFsc2VcbiAgICBjb25zdCB3YXNSYXcgPSBwcm9jZXNzLnN0ZGluLmlzUmF3XG5cbiAgICAvLyBuZXZlciBwYXVzZSgpIGhlcmU6IGFuIGV4cGxpY2l0IHBhdXNlIHN0aWNrcywgYW5kIHRyZW5kJ3MgbW91bnQgb25seVxuICAgIC8vIGF0dGFjaGVzIGEgZGF0YSBsaXN0ZW5lciwgd2hpY2ggd2lsbCBub3QgdW4tcGF1c2UgYW4gZXhwbGljaXRseVxuICAgIC8vIHBhdXNlZCBzdHJlYW0gLSBpbnB1dCB3b3VsZCBiZSBmcm96ZW4gZm9yIHRoZSB3aG9sZSBzZXNzaW9uXG4gICAgY29uc3QgZmluaXNoID0gKHRoZW1lKSA9PiB7XG4gICAgICBpZiAoc2V0dGxlZCkgcmV0dXJuXG4gICAgICBzZXR0bGVkID0gdHJ1ZVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgcHJvY2Vzcy5zdGRpbi5vZmYoJ2RhdGEnLCBvbkRhdGEpXG4gICAgICBwcm9jZXNzLnN0ZGluLnNldFJhd01vZGUod2FzUmF3KVxuICAgICAgcmVzb2x2ZSh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCBvbkRhdGEgPSAoY2h1bmspID0+IHtcbiAgICAgIGJ1ZmZlciArPSBjaHVuay50b1N0cmluZygnbGF0aW4xJylcbiAgICAgIGNvbnN0IHRoZW1lID0gcGFyc2VPc2MxMShidWZmZXIpXG4gICAgICBpZiAodGhlbWUpIGZpbmlzaCh0aGVtZSlcbiAgICB9XG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4gZmluaXNoKGZhbGxiYWNrKCkpLCB0aW1lb3V0TXMpXG4gICAgcHJvY2Vzcy5zdGRpbi5zZXRSYXdNb2RlKHRydWUpXG4gICAgcHJvY2Vzcy5zdGRpbi5vbignZGF0YScsIG9uRGF0YSlcbiAgICBwcm9jZXNzLnN0ZGluLnJlc3VtZSgpXG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1xceDFiXTExOz9cXHgxYlxcXFwnKVxuICB9KVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXYWtldXBNYW5hZ2VyKHsgb25GaXJlID0gKCkgPT4ge30sIG9uQ2hhbmdlID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHdha2V1cHMgPSBuZXcgTWFwKClcbiAgbGV0IG5leHRJZCA9IDFcblxuICByZXR1cm4ge1xuICAgIHNjaGVkdWxlKGRlbGF5U2Vjb25kcywgbm90ZSkge1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgubWF4KDUsIE1hdGgucm91bmQoZGVsYXlTZWNvbmRzKSlcbiAgICAgIGNvbnN0IGlkID0gU3RyaW5nKG5leHRJZCsrKVxuICAgICAgY29uc3QgYXQgPSBEYXRlLm5vdygpICsgc2Vjb25kcyAqIDEwMDBcbiAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHdha2V1cHMuZGVsZXRlKGlkKVxuICAgICAgICBvbkNoYW5nZSgpXG4gICAgICAgIG9uRmlyZSh7IGlkLCBub3RlLCBhdCB9KVxuICAgICAgfSwgc2Vjb25kcyAqIDEwMDApXG4gICAgICB3YWtldXBzLnNldChpZCwgeyBpZCwgbm90ZSwgYXQsIHRpbWVyIH0pXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZCwgYXQsIHNlY29uZHMgfVxuICAgIH0sXG4gICAgY2FuY2VsKGlkKSB7XG4gICAgICBjb25zdCB3YWtldXAgPSB3YWtldXBzLmdldChTdHJpbmcoaWQpKVxuICAgICAgaWYgKCF3YWtldXApIHRocm93IG5ldyBFcnJvcihgbm8gcGVuZGluZyB3YWtlLXVwIHdpdGggaWQgJHtpZH1gKVxuICAgICAgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuZGVsZXRlKFN0cmluZyhpZCkpXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICByZXR1cm4geyBpZDogd2FrZXVwLmlkLCBjYW5jZWxsZWQ6IHRydWUgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4ud2FrZXVwcy52YWx1ZXMoKV1cbiAgICAgICAgLm1hcCgoeyBpZCwgbm90ZSwgYXQgfSkgPT4gKHsgaWQsIG5vdGUsIGF0IH0pKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5hdCAtIGIuYXQpXG4gICAgfSxcbiAgICBwZW5kaW5nKCkge1xuICAgICAgcmV0dXJuIHdha2V1cHMuc2l6ZVxuICAgIH0sXG4gICAgY2FuY2VsQWxsKCkge1xuICAgICAgZm9yIChjb25zdCB3YWtldXAgb2Ygd2FrZXVwcy52YWx1ZXMoKSkgY2xlYXJUaW1lb3V0KHdha2V1cC50aW1lcilcbiAgICAgIHdha2V1cHMuY2xlYXIoKVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBjcmVhdGVTaWduYWwsIE1lbnUsIFByb2dyZXNzQmFyLCBTY3JvbGxCb3gsIFNoaW1tZXIsIFRleHRBcmVhLCB1c2VGb2N1cywgdXNlRm9jdXNUcmFwLCB1c2VGcmFtZVN0YXRzLCB1c2VJbnB1dCwgdXNlU2VsZWN0aW9uLCB1c2VUb2FzdCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IG1ha2VFdmVudCB9IGZyb20gJy4uL2NvcmUvZXZlbnRzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvbiwgb3BlblNlc3Npb24sIGxvYWRTZXNzaW9uLCBsaXN0U2Vzc2lvbnMsIGRlbGV0ZVNlc3Npb24sIGRlbGV0ZVByb2plY3REYXRhIH0gZnJvbSAnLi4vY29yZS9zZXNzaW9uLmpzJ1xuaW1wb3J0IHsgZGVyaXZlU3RhdGUsIHVzZXJFbnRyaWVzLCByZXdpbmRTdGF0cyB9IGZyb20gJy4uL2NvcmUvZGVyaXZlLmpzJ1xuaW1wb3J0IHsgYXBwZW5kUHJvbXB0LCBsb2FkUHJvamVjdFByb21wdHMsIGxvYWRHbG9iYWxQcm9tcHRzIH0gZnJvbSAnLi4vY29yZS9oaXN0b3J5LmpzJ1xuaW1wb3J0IHsgcnVuVHVybiwgc3VtbWFyaXplVGV4dCwgY29tcGFjdEhpc3RvcnksIGNvbXBhY3RQcm9ncmVzcyB9IGZyb20gJy4uL2NvcmUvYWdlbnQuanMnXG5pbXBvcnQgeyBjb21wYWN0aW9uUHJvbXB0LCBmb3JtYXRDb21wYWN0U3VtbWFyeSwgc3VtbWFyeVNlY3Rpb25zIH0gZnJvbSAnLi4vY29yZS9jb21wYWN0aW9uLmpzJ1xuaW1wb3J0IHsgY3JlYXRlVG9vbHNldCB9IGZyb20gJy4uL2NvcmUvdG9vbHMvaW5kZXguanMnXG5pbXBvcnQgeyBzY2FuVXNlclRvb2xzIH0gZnJvbSAnLi4vY29yZS91c2VyLXRvb2xzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4uL2NvcmUvc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi4vY29yZS9jb21tYW5kcy5qcydcbmltcG9ydCB7IHJldmVydEVkaXRzLCByZWFwcGx5RWRpdHMgfSBmcm9tICcuLi9jb3JlL3Jld2luZC5qcydcbmltcG9ydCB7IGJ1aWxkU3lzdGVtUHJvbXB0IH0gZnJvbSAnLi4vY29yZS9zeXN0ZW0tcHJvbXB0LmpzJ1xuaW1wb3J0IHsgY2hlY2tGb3JVcGRhdGUsIGZldGNoTGF0ZXN0VmVyc2lvbiwgbmV3ZXJWZXJzaW9uLCBpc0Rldkluc3RhbGwsIHJ1blVwZGF0ZSB9IGZyb20gJy4uL2NvcmUvdXBkYXRlLmpzJ1xuaW1wb3J0IHsgbWVtb3J5SW5kZXggfSBmcm9tICcuLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IHRyYW5zY3JpcHRUb01hcmtkb3duIH0gZnJvbSAnLi4vY29yZS9leHBvcnQuanMnXG5pbXBvcnQgeyBmaW5kTW9kZWwsIGVzdGltYXRlQ29zdCB9IGZyb20gJy4uL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgYWRob2NNb2RlbCB9IGZyb20gJy4uL2NvcmUvY2F0YWxvZy5qcydcbmltcG9ydCB7IHdyaXRlQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBjb25uZWN0T3BlbkFJLCBvcGVuYWlDcmVkZW50aWFscywgb3BlbmFpU3RhdHVzLCBkaXNjb25uZWN0T3BlbkFJIH0gZnJvbSAnLi4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IGxvYWRDb2RleE1vZGVscyB9IGZyb20gJy4uL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5pbXBvcnQgeyBjb21wbGV0aW9uQ29udGV4dCwgYXBwbHlDb21wbGV0aW9uIH0gZnJvbSAnLi9jb21wbGV0aW9uLmpzJ1xuaW1wb3J0IHsgZXh0cmFjdEltYWdlUGF0aHMsIG1lZGlhVHlwZUZvciwgZmluYWxpemVVc2VyQ29udGVudCwgcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzLCBpbnB1dFRleHRGcm9tQ29udGVudCB9IGZyb20gJy4vYXR0YWNobWVudHMuanMnXG5pbXBvcnQgeyBsaXN0RmlsZXMgfSBmcm9tICcuL2ZpbGVzLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0VmVyc2lvbiB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuaW1wb3J0IHsgY29tcGFjdE51bWJlciB9IGZyb20gJy4vZm9ybWF0LmpzJ1xuaW1wb3J0IHsgQW5pbWF0ZWRWYWx1ZSB9IGZyb20gJy4vYW5pbWF0ZWQtdmFsdWUuanN4J1xuaW1wb3J0IHsgTWVzc2FnZSwgdWlUaXRsZSB9IGZyb20gJy4vdHJhbnNjcmlwdC5qc3gnXG5pbXBvcnQgeyBFbXB0eVN0YXRlIH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS5qc3gnXG5pbXBvcnQgeyBIZWxwIH0gZnJvbSAnLi9oZWxwLmpzeCdcbmltcG9ydCB7IE1vZGVsUGFuZWwsIEVmZm9ydFBhbmVsLCBUaGVtZVBhbmVsLCBDb25maWdQYW5lbCwgQ29uZmlybVBhbmVsLCBIaXN0b3J5UGFuZWwsIFJld2luZFBpY2tQYW5lbCwgUmV3aW5kQWN0aW9uUGFuZWwsIFJlc3VtZVBhbmVsLCBQcm9qZWN0UGFuZWwsIE1jcFBhbmVsLCBNZW1vcnlQYW5lbCwgSW5mb0xpc3RQYW5lbCwgU2hlbGxzUGFuZWwsIFdha2V1cHNQYW5lbCwgQ29ubmVjdFBhbmVsLCB0aW1lQWdvIH0gZnJvbSAnLi9wYW5lbHMuanN4J1xuaW1wb3J0IHsgYWNjZW50LCBzZXRBY2NlbnQsIHNldFBhbGV0dGUsIHBhbGV0dGVOYW1lLCBwYWxldHRlTGlzdCwgREVGQVVMVF9BQ0NFTlQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBSRUQsIEhJR0hMSUdIVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEVGRk9SVF9MRVZFTFMgPSBbXG4gIHsga2V5OiBudWxsLCBkZXNjOiAnbGV0IHRoZSBwcm92aWRlciBkZWNpZGUgaG93IG11Y2ggdG8gdGhpbmsnIH0sXG4gIHsga2V5OiAnbG93JywgZGVzYzogJ3F1aWNrIGFuc3dlcnMsIG1pbmltYWwgdGhpbmtpbmcnIH0sXG4gIHsga2V5OiAnbWVkaXVtJywgZGVzYzogJ21vZGVyYXRlIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdoaWdoJywgZGVzYzogJ2dlbmVyb3VzIHRoaW5raW5nIGJ1ZGdldCcgfSxcbiAgeyBrZXk6ICdtYXgnLCBkZXNjOiAnbWF4aW11bSB0aGlua2luZyBidWRnZXQnIH0sXG5dXG5cbmNvbnN0IENPTU1BTkRTID0gW1xuICB7IG5hbWU6ICdtb2RlbCcsIGRlc2M6ICdTd2l0Y2ggdGhlIGFjdGl2ZSBtb2RlbCBmb3IgdGhpcyBzZXNzaW9uJyB9LFxuICB7IG5hbWU6ICdjb25uZWN0JywgZGVzYzogJ1NpZ24gaW4gd2l0aCBDaGF0R1BUIHRvIHVzZSBhIENvZGV4IHN1YnNjcmlwdGlvbicgfSxcbiAgeyBuYW1lOiAnZWZmb3J0JywgZGVzYzogJ1NldCB0aGUgdGhpbmtpbmcgZWZmb3J0IGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ3Jlc3VtZScsIGRlc2M6ICdQaWNrIHVwIGEgcHJldmlvdXMgc2Vzc2lvbiB3aGVyZSB5b3UgbGVmdCBvZmYnIH0sXG4gIHsgbmFtZTogJ25ldycsIGRlc2M6ICdTdGFydCBhIG5ldyBzZXNzaW9uIGluIHRoaXMgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnZGVsZXRlJywgZGVzYzogJ1Blcm1hbmVudGx5IGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uIGFuZCBzdGFydCBmcmVzaCcgfSxcbiAgeyBuYW1lOiAncHJvamVjdCcsIGRlc2M6ICdTd2l0Y2ggcHJvamVjdHM6IGp1bXAgdG8gYW5vdGhlciBwcm9qZWN0LCBzYW1lIGFzIGN0cmwrcCcgfSxcbiAgeyBuYW1lOiAnY3dkJywgZGVzYzogJ1Nob3cgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByb2plY3Qgcm9vdCcgfSxcbiAgeyBuYW1lOiAnc2tpbGxzJywgZGVzYzogJ0xpc3QgZXZlcnkgc2tpbGw6IGJ1aWx0aW4sIGdsb2JhbCwgYW5kIHByb2plY3QnIH0sXG4gIHsgbmFtZTogJ2NvbW1hbmRzJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAndG9vbHMnLCBkZXNjOiAnTGlzdCBidWlsdGluIGFuZCB1c2VyLWRlZmluZWQgdG9vbHM7IE1DUCB0b29scyBsaXZlIGluIC9tY3AnIH0sXG4gIHsgbmFtZTogJ3Jld2luZCcsIGRlc2M6ICdSZXN0b3JlIHRoZSBjb252ZXJzYXRpb24gdG8gYSBwcmV2aW91cyBtZXNzYWdlJyB9LFxuICB7IG5hbWU6ICdoaXN0b3J5JywgZGVzYzogJ1NlYXJjaCBwcm9tcHRzIHlvdSBwcmV2aW91c2x5IHNlbnQnIH0sXG4gIHsgbmFtZTogJ3JlbmFtZScsIGRlc2M6ICdOYW1lIHRoaXMgc2Vzc2lvbjsgb21pdCB0aGUgbmFtZSB0byByZXN0b3JlIGl0cyBhdXRvbWF0aWMgdGl0bGUnIH0sXG4gIHsgbmFtZTogJ2NvbG9yJywgZGVzYzogJ0NvbG9yIHRoaXMgc2Vzc2lvbjogL2NvbG9yIDxuYW1lIG9yICNoZXg+JyB9LFxuICB7IG5hbWU6ICd0aGVtZScsIGRlc2M6ICdQaWNrIGEgY29sb3IgdGhlbWU7IC90aGVtZSA8bmFtZT4gYXBwbGllcyBvbmUgZGlyZWN0bHknIH0sXG4gIHsgbmFtZTogJ2NvbmZpZycsIGRlc2M6ICdDb25maWd1cmUgcGljbyBkaXNwbGF5IGFuZCBiZWhhdmlvcicgfSxcbiAgeyBuYW1lOiAnbWNwJywgZGVzYzogJ01hbmFnZSBNQ1Agc2VydmVyczogYWRkLCB0b2dnbGUsIHJlY29ubmVjdCcgfSxcbiAgeyBuYW1lOiAnc2hlbGxzJywgZGVzYzogJ1ZpZXcgYW5kIG1hbmFnZSBiYWNrZ3JvdW5kIHNoZWxscycgfSxcbiAgeyBuYW1lOiAnd2FrZXVwcycsIGRlc2M6ICdWaWV3IGFuZCBjYW5jZWwgc2NoZWR1bGVkIHdha2UtdXBzJyB9LFxuICB7IG5hbWU6ICdtZW1vcnknLCBkZXNjOiAnQnJvd3NlIGFuZCBtYW5hZ2Ugc2F2ZWQgbWVtb3JpZXM6IHByb2plY3QgYW5kIGdsb2JhbCcgfSxcbiAgeyBuYW1lOiAnY29tcGFjdCcsIGRlc2M6ICdTdW1tYXJpemUgdGhlIGNvbnZlcnNhdGlvbiB0byBmcmVlIHRoZSBjb250ZXh0IHdpbmRvdycgfSxcbiAgeyBuYW1lOiAnY2xlYXInLCBkZXNjOiAnQ2xlYXIgdGhlIGNvbnZlcnNhdGlvbiBhbmQgZnJlZSB0aGUgY29udGV4dCB3aW5kb3cnIH0sXG4gIHsgbmFtZTogJ2Nvc3QnLCBkZXNjOiAnU2hvdyB0b2tlbiB1c2FnZSBhbmQgZXN0aW1hdGVkIGNvc3Qgc28gZmFyJyB9LFxuICB7IG5hbWU6ICdjb250ZXh0JywgZGVzYzogXCJTaG93IHdoYXQncyBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGFuZCBob3cgYmlnIGVhY2ggcGllY2UgaXNcIiB9LFxuICB7IG5hbWU6ICdleHBvcnQnLCBkZXNjOiAnU2F2ZSB0aGUgY3VycmVudCBjb252ZXJzYXRpb24gdG8gYSBtYXJrZG93biBmaWxlJyB9LFxuICB7IG5hbWU6ICd1cGRhdGUnLCBkZXNjOiAnVXBkYXRlIHBpY28gdG8gdGhlIGxhdGVzdCByZWxlYXNlIGZyb20gbnBtJyB9LFxuICB7IG5hbWU6ICdoZWxwJywgZGVzYzogJ0xpc3QgZXZlcnkgY29tbWFuZCBhbmQgd2hhdCBpdCBkb2VzJyB9LFxuXVxuXG5jb25zdCBTRVNTSU9OX0NPTE9SUyA9IHtcbiAgcmVkOiAnI2Y4NzE3MScsXG4gIG9yYW5nZTogJyNmYjkyM2MnLFxuICB5ZWxsb3c6ICcjZmFjYzE1JyxcbiAgZ3JlZW46ICcjNkJFNzk1JyxcbiAgdGVhbDogJyMyZGQ0YmYnLFxuICBjeWFuOiAnIzIyZDNlZScsXG4gIGJsdWU6ICcjNjBhNWZhJyxcbiAgcHVycGxlOiAnI2E3OGJmYScsXG4gIHBpbms6ICcjZjQ3MmI2JyxcbiAgZ3JheTogJyM5Y2EzYWYnLFxufVxuXG5jb25zdCBISVNUT1JZX1NDT1BFUyA9IFsnc2Vzc2lvbicsICdwcm9qZWN0JywgJ2V2ZXJ5d2hlcmUnXVxuY29uc3QgTUVNT1JZX1NDT1BFUyA9IFsnYWxsJywgJ3Byb2plY3QnLCAnZ2xvYmFsJ11cbmNvbnN0IFNIRUxMX1NUUklQX01BWCA9IDVcblxuLy8gb25seSB0aGUgbmV3ZXN0IHNsaWNlIG9mIGEgbG9uZyB0cmFuc2NyaXB0IHJlbmRlcnM7IG9sZGVyIGl0ZW1zIGxvYWQgaW5cbi8vIGJhdGNoZXMgd2hlbiB0aGUgdXNlciBzY3JvbGxzIHRvIHRoZSB0b3AuIHJlbmRlciBjb3N0IGlzIHBlci1pdGVtLCBzbyB0aGlzXG4vLyBrZWVwcyBkYXktbG9uZyBzZXNzaW9ucyBhcyBmYXN0IGFzIGZyZXNoIG9uZXNcbmNvbnN0IEhJU1RPUllfV0lORE9XID0gNTBcbmNvbnN0IFJFU1VNRV9TQ09QRVMgPSBbJ3Byb2plY3QnLCAnZXZlcnl3aGVyZSddXG5cbmZ1bmN0aW9uIGNvbXBhY3RUb29sUnVucyhpdGVtcywgYWN0aXZlID0gZmFsc2UpIHtcbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7KSB7XG4gICAgaWYgKGl0ZW1zW2ldLmtpbmQgIT09ICd0b29sJykge1xuICAgICAgcmVzdWx0LnB1c2goaXRlbXNbaSsrXSlcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGxldCBlbmQgPSBpICsgMVxuICAgIHdoaWxlIChlbmQgPCBpdGVtcy5sZW5ndGggJiYgaXRlbXNbZW5kXS5raW5kID09PSAndG9vbCcpIGVuZCsrXG4gICAgY29uc3QgcnVuID0gaXRlbXMuc2xpY2UoaSwgZW5kKVxuICAgIHJlc3VsdC5wdXNoKHJ1bi5sZW5ndGggPT09IDEgPyBydW5bMF0gOiB7IGtpbmQ6ICd0b29sLWdyb3VwJywgdG9vbHM6IHJ1biwgYWN0aXZlOiBhY3RpdmUgJiYgZW5kID09PSBpdGVtcy5sZW5ndGggfSlcbiAgICBpID0gZW5kXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZnVuY3Rpb24gQXBwKHsgYm9vdCB9KSB7XG4gIGNvbnN0IHsgY3dkLCByb290LCB2ZXJzaW9uLCBtb2RlbHMsIHNraWxscywgbWNwLCB0cmFja2VyLCBzdGFydHVwQ29udGV4dCB9ID0gYm9vdFxuXG4gIGNvbnN0IFtkZXJpdmVkLCBzZXREZXJpdmVkXSA9IGNyZWF0ZVNpZ25hbChkZXJpdmVTdGF0ZShbXSkpXG4gIGNvbnN0IFtvdmVybGF5LCBzZXRPdmVybGF5XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3N0cmVhbWluZywgc2V0U3RyZWFtaW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbdHVyblBoYXNlLCBzZXRUdXJuUGhhc2VdID0gY3JlYXRlU2lnbmFsKCdpZGxlJylcbiAgY29uc3QgW2J1c3ksIHNldEJ1c3ldID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY29tcGFjdGluZywgc2V0Q29tcGFjdGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0U3RhdHVzLCBzZXRDb21wYWN0U3RhdHVzXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc3RhcnRlZEF0LCBzZXRTdGFydGVkQXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtpbnB1dCwgc2V0SW5wdXRdID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBbbW9kZWwsIHNldE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2RlZmF1bHRNb2RlbCwgc2V0RGVmYXVsdE1vZGVsXSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxNb2RlbClcbiAgY29uc3QgW2VmZm9ydCwgc2V0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtkZWZhdWx0RWZmb3J0LCBzZXREZWZhdWx0RWZmb3J0XSA9IGNyZWF0ZVNpZ25hbChib290LmluaXRpYWxFZmZvcnQpXG4gIGNvbnN0IFtzaG93RWZmb3J0UGFuZWwsIHNldFNob3dFZmZvcnRQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93VGhlbWVQYW5lbCwgc2V0U2hvd1RoZW1lUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0NvbmZpZ1BhbmVsLCBzZXRTaG93Q29uZmlnUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0RlbGV0ZUNvbmZpcm0sIHNldFNob3dEZWxldGVDb25maXJtXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2Nsb3Vkcywgc2V0Q2xvdWRzXSA9IGNyZWF0ZVNpZ25hbChib290LmNsb3VkcylcbiAgY29uc3QgW2NvbXBhY3RUb29sSGlzdG9yeSwgc2V0Q29tcGFjdFRvb2xIaXN0b3J5XSA9IGNyZWF0ZVNpZ25hbChib290LmNvbXBhY3RUb29sSGlzdG9yeSlcbiAgY29uc3QgW3Nob3dNZW1vcnlQYW5lbCwgc2V0U2hvd01lbW9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW21lbVNjb3BlLCBzZXRNZW1TY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW21lbW9yeUxpc3QsIHNldE1lbW9yeUxpc3RdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbdGhlbWVQcmVmLCBzZXRUaGVtZVByZWZdID0gY3JlYXRlU2lnbmFsKGJvb3QudGhlbWVQcmVmIHx8ICdhdXRvJylcbiAgY29uc3QgW3F1ZXVlZCwgc2V0UXVldWVkXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3NlbnQsIHNldFNlbnRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbaGlzdElkeCwgc2V0SGlzdElkeF0gPSBjcmVhdGVTaWduYWwoLTEpXG4gIGNvbnN0IFtjbWRJbmRleCwgc2V0Q21kSW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtjbWRDeWNsZSwgc2V0Q21kQ3ljbGVdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtmaWxlSW5kZXgsIHNldEZpbGVJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2ZpbGVMaXN0LCBzZXRGaWxlTGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtmaWxlc0Rpc21pc3NlZCwgc2V0RmlsZXNEaXNtaXNzZWRdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbdmlldywgc2V0Vmlld10gPSBjcmVhdGVTaWduYWwoJ2NoYXQnKVxuICBjb25zdCBbdmVyYm9zZSwgc2V0VmVyYm9zZV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TW9kZWxQYW5lbCwgc2V0U2hvd01vZGVsUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd0hpc3RvcnlQYW5lbCwgc2V0U2hvd0hpc3RvcnlQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtoaXN0U2NvcGUsIHNldEhpc3RTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2hpc3RQcm9tcHRzLCBzZXRIaXN0UHJvbXB0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaG93UmVzdW1lUGFuZWwsIHNldFNob3dSZXN1bWVQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtyZXN1bWVTY29wZSwgc2V0UmVzdW1lU2NvcGVdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFtyZXN1bWVTZXNzaW9ucywgc2V0UmVzdW1lU2Vzc2lvbnNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbcmVzdW1lTG9hZGluZywgc2V0UmVzdW1lTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93TWNwUGFuZWwsIHNldFNob3dNY3BQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93UHJvamVjdFBhbmVsLCBzZXRTaG93UHJvamVjdFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2luZm9QYW5lbCwgc2V0SW5mb1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbc2hvd1NoZWxsc1BhbmVsLCBzZXRTaG93U2hlbGxzUGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbc2hvd1dha2V1cHNQYW5lbCwgc2V0U2hvd1dha2V1cHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93Q29ubmVjdFBhbmVsLCBzZXRTaG93Q29ubmVjdFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2F1dGhQcm92aWRlcnMsIHNldEF1dGhQcm92aWRlcnNdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2hlbGxzVmVyc2lvbiwgc2V0U2hlbGxzVmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Byb2plY3RzLCBzZXRQcm9qZWN0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtwcm9qZWN0c0xvYWRpbmcsIHNldFByb2plY3RzTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFttY3BTZXJ2ZXJzLCBzZXRNY3BTZXJ2ZXJzXSA9IGNyZWF0ZVNpZ25hbChtY3AubGlzdCgpKVxuICBjb25zdCBbY29tcGxldGluZywgc2V0Q29tcGxldGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wSW5kZXgsIHNldENvbXBJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jld2luZFN0ZXAsIHNldFJld2luZFN0ZXBdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtyZXdpbmRUYXJnZXQsIHNldFJld2luZFRhcmdldF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZm9sbG93LCBzZXRGb2xsb3ddID0gY3JlYXRlU2lnbmFsKHRydWUpXG4gIGNvbnN0IFtoaXN0V2luZG93LCBzZXRIaXN0V2luZG93XSA9IGNyZWF0ZVNpZ25hbChISVNUT1JZX1dJTkRPVylcblxuICBjb25zdCByZWZzID0gYm9vdC5yZWZzXG4gIHJlZnMuc2Vzc2lvbiA/Pz0gbnVsbFxuICByZWZzLmFsbEV2ZW50cyA/Pz0gW11cbiAgcmVmcy5wZXJzaXN0ZWQgPz89IDBcbiAgcmVmcy5hYm9ydCA9IHJlZnMuYWJvcnQgfHwgbnVsbFxuICByZWZzLnJld2luZFVuZG8gPSByZWZzLnJld2luZFVuZG8gfHwgbnVsbFxuICByZWZzLnF1aXRBdCA/Pz0gMFxuICByZWZzLmF0dGFjaG1lbnRzID8/PSBuZXcgTWFwKClcbiAgcmVmcy5pbWFnZUNvdW50ID8/PSAwXG5cbiAgYm9vdC5zZXRNY3BOb3RpZnkoKCkgPT4gc2V0TWNwU2VydmVycyhib290Lm1jcC5saXN0KCkpKVxuICBib290LnNldFNoZWxsc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc0ZpcmUoKHdha2V1cCkgPT4ge1xuICAgIGZsYXNoKGB3YWtlLXVwICR7d2FrZXVwLmlkfSBmaXJlZGApXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gc2NoZWR1bGVkIHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkLiBOb3RlIHRvIHNlbGY6ICR7d2FrZXVwLm5vdGV9YCxcbiAgICAgIHsgd2FrZTogdHJ1ZSB9LFxuICAgIClcbiAgfSlcbiAgYm9vdC5zZXRTaGVsbHNFeGl0KChzaGVsbCkgPT4ge1xuICAgIGlmIChzaGVsbC5raWxsZWRCeSA9PT0gJ21vZGVsJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAndXNlcicpIHtcbiAgICAgIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBraWxsZWRgKVxuICAgICAgbm90ZVN5c3RlbShgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSB1c2VyIG1hbnVhbGx5IGtpbGxlZCBiYWNrZ3JvdW5kIHNoZWxsICR7c2hlbGwuaWR9ICgke3NoZWxsLmRlc2NyaXB0aW9uIHx8IHNoZWxsLmNvbW1hbmR9KSBmcm9tIHRoZSBzaGVsbHMgcGFuZWwgKFNJR1RFUk0pLiBUaGlzIHdhcyBkZWxpYmVyYXRlOyBkbyBub3QgcmVzdGFydCBpdCB1bmxlc3MgYXNrZWQuYCwgeyB3YWtlOiBmYWxzZSB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZsYXNoKGBzaGVsbCAke3NoZWxsLmlkfSBleGl0ZWQgXHUwMEI3IGNvZGUgJHtzaGVsbC5leGl0Q29kZX1gKVxuICAgIGNvbnN0IHRhaWwgPSBib290LnNoZWxscy5vdXRwdXQoc2hlbGwuaWQsIHsgdGFpbDogMzAgfSkub3V0cHV0XG4gICAgY29uc3Qgc2VjcyA9IE1hdGgubWF4KDAsIE1hdGgucm91bmQoKChzaGVsbC5lbmRlZEF0IHx8IERhdGUubm93KCkpIC0gc2hlbGwuc3RhcnRlZEF0KSAvIDEwMDApKVxuICAgIGNvbnN0IHJhbiA9IHNlY3MgPCA2MCA/IGAke3NlY3N9c2AgOiBgJHtNYXRoLmZsb29yKHNlY3MgLyA2MCl9bSAke3NlY3MgJSA2MH1zYFxuICAgIG5vdGVTeXN0ZW0oXG4gICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuZGVzY3JpcHRpb24gfHwgc2hlbGwuY29tbWFuZH0pIGV4aXRlZCB3aXRoIGNvZGUgJHtzaGVsbC5leGl0Q29kZX0gYWZ0ZXIgJHtyYW59LmAgK1xuICAgICAgICAodGFpbCA/IGBcXG5SZWNlbnQgb3V0cHV0OlxcbiR7dGFpbH1gIDogJycpLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuXG4gIGZ1bmN0aW9uIG5vdGVTeXN0ZW0odGV4dCwgeyB3YWtlIH0pIHtcbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3RlcyA/Pz0gW11cbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlcy5wdXNoKHsgdGV4dCwgd2FrZSB9KVxuICAgIGZsdXNoU3lzdGVtTm90ZXMoKVxuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2hTeXN0ZW1Ob3RlcygpIHtcbiAgICBpZiAoIXJlZnMucGVuZGluZ1N5c3RlbU5vdGVzPy5sZW5ndGggfHwgYnVzeSgpIHx8IHZpZXcoKSAhPT0gJ2NoYXQnIHx8ICFyZWZzLnNlc3Npb24pIHJldHVyblxuICAgIGNvbnN0IG5vdGVzID0gcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXNcbiAgICByZWZzLnBlbmRpbmdTeXN0ZW1Ob3RlcyA9IFtdXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ3N5c3RlbV9ub3RlJywgeyB0ZXh0OiBub3Rlcy5tYXAoKG4pID0+IG4udGV4dCkuam9pbignXFxuXFxuJykgfSkpXG4gICAgcmVEZXJpdmUoKVxuICAgIGlmIChub3Rlcy5zb21lKChuKSA9PiBuLndha2UpKSBydW5BZ2VudFR1cm4oKVxuICB9XG5cbiAgY29uc3Qgc2tpbGxDb21tYW5kcyA9IHNraWxscy5saXN0KCkubWFwKChzKSA9PiAoeyBuYW1lOiBzLm5hbWUsIGRlc2M6IGBza2lsbCBcdTAwQjcgJHtzLmRlc2NyaXB0aW9uIHx8IHMuc291cmNlfWAsIHNraWxsOiB0cnVlIH0pKVxuICBjb25zdCB1c2VyQ29tbWFuZHMgPSBib290LmNvbW1hbmRzLmxpc3QoKS5tYXAoKGMpID0+ICh7IG5hbWU6IGMubmFtZSwgZGVzYzogYGNvbW1hbmQgXHUwMEI3ICR7Yy5kZXNjcmlwdGlvbiB8fCBjLnNvdXJjZX1gLCBjb21tYW5kOiB0cnVlIH0pKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgY29uc3Qgc2hhZG93ZWQgPSBbXVxuICBmb3IgKGNvbnN0IGMgb2YgWy4uLkNPTU1BTkRTLCAuLi5za2lsbENvbW1hbmRzLCAuLi51c2VyQ29tbWFuZHNdKSB7XG4gICAgaWYgKGJ5TmFtZS5oYXMoYy5uYW1lKSkgc2hhZG93ZWQucHVzaChgJHtjLnNraWxsID8gJ3NraWxsJyA6ICdjb21tYW5kJ30gXCIke2MubmFtZX1cImApXG4gICAgZWxzZSBieU5hbWUuc2V0KGMubmFtZSwgYylcbiAgfVxuICBjb25zdCBhbGxDb21tYW5kcyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG4gIGlmIChzaGFkb3dlZC5sZW5ndGggJiYgIXJlZnMud2FybmVkU2hhZG93ZWQpIHtcbiAgICByZWZzLndhcm5lZFNoYWRvd2VkID0gdHJ1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4gZmxhc2goYHNoYWRvd2VkIGJ5IGFuIGVhcmxpZXIgbmFtZSwgcmVuYW1lIHRvIHVzZTogJHtzaGFkb3dlZC5qb2luKCcsICcpfWApLCAwKVxuICB9XG5cbiAgY29uc3QgdG9hc3QgPSB1c2VUb2FzdCh7XG4gICAgZHVyYXRpb246IDM1MDAsXG4gICAgcG9zaXRpb246ICd0b3AtcmlnaHQnLFxuICAgIHJlbmRlcjogKG1lc3NhZ2UpID0+IDx0ZXh0IHN0eWxlPXt7IGJnOiBhY2NlbnQoKSwgY29sb3I6ICdibGFjaycsIGJvbGQ6IHRydWUgfX0+e2AgJHttZXNzYWdlfSBgfTwvdGV4dD4sXG4gIH0pXG5cbiAgY29uc3QgdXBkYXRlVG9hc3QgPSB1c2VUb2FzdCh7XG4gICAgZHVyYXRpb246IDgwMDAsXG4gICAgcG9zaXRpb246ICd0b3AtY2VudGVyJyxcbiAgICByZW5kZXI6IChtZXNzYWdlKSA9PiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGJnOiBhY2NlbnQoKSB9fT5cbiAgICAgICAgPFNoaW1tZXIgY29sb3I9XCJibGFja1wiIGhpZ2hsaWdodD17SElHSExJR0hUfSBkdXJhdGlvbj17MTUwMH0+e2AgJHttZXNzYWdlfSBgfTwvU2hpbW1lcj5cbiAgICAgIDwvYm94PlxuICAgICksXG4gIH0pXG5cbiAgZnVuY3Rpb24gZmxhc2gobXNnKSB7XG4gICAgdG9hc3QobXNnKVxuICB9XG5cbiAgaWYgKCFyZWZzLnVwZGF0ZUNoZWNrZWQpIHtcbiAgICByZWZzLnVwZGF0ZUNoZWNrZWQgPSB0cnVlXG4gICAgY2hlY2tGb3JVcGRhdGUodmVyc2lvbikudGhlbigoZm91bmQpID0+IHtcbiAgICAgIGlmICghZm91bmQpIHJldHVyblxuICAgICAgdXBkYXRlVG9hc3QoYHBpY28gdiR7Zm91bmQudmVyc2lvbn0gYXZhaWxhYmxlIFx1MDBCNyAvdXBkYXRlYClcbiAgICAgIGZvdW5kLm1hcmtOb3RpZmllZCgpXG4gICAgfSkuY2F0Y2goKCkgPT4ge30pXG4gIH1cblxuICBmdW5jdGlvbiBlbnN1cmVTZXNzaW9uKCkge1xuICAgIGlmICghcmVmcy5zZXNzaW9uKSByZWZzLnNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkLCByb290IH0pXG4gICAgd2hpbGUgKHJlZnMucGVyc2lzdGVkIDwgcmVmcy5hbGxFdmVudHMubGVuZ3RoKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKHJlZnMuYWxsRXZlbnRzW3JlZnMucGVyc2lzdGVkXSlcbiAgICAgIHJlZnMucGVyc2lzdGVkKytcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwZXJzaXN0KGV2ZW50KSB7XG4gICAgcmVmcy5hbGxFdmVudHMucHVzaChldmVudClcbiAgICBpZiAocmVmcy5zZXNzaW9uKSB7XG4gICAgICByZWZzLnNlc3Npb24uYXBwZW5kKGV2ZW50KVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSByZWZzLmFsbEV2ZW50cy5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZURlcml2ZSgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZVN0YXRlKHJlZnMuYWxsRXZlbnRzKVxuICAgIHNldERlcml2ZWQoc3RhdGUpXG4gICAgc2V0QWNjZW50KHN0YXRlLmNvbG9yKVxuICAgIGJvb3Quc2V0VGhlbWU/Lih7IGFjY2VudDogc3RhdGUuY29sb3IgfHwgREVGQVVMVF9BQ0NFTlQsIG11dGVkOiBNVVRFRCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2hTdHJlYW0oaXRlbXMpIHtcbiAgICBjb25zdCB0ZXh0ID0gc3RyZWFtaW5nKClcbiAgICBpZiAodGV4dCkgaXRlbXMucHVzaCh7IGtpbmQ6ICdhc3Npc3RhbnQnLCB0ZXh0IH0pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBleGVjdXRlVHVybih0ZXh0KSB7XG4gICAgY29uc3QgeyBjb250ZW50IH0gPSBmaW5hbGl6ZVVzZXJDb250ZW50KHRleHQsIHJlZnMuYXR0YWNobWVudHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ21lc3NhZ2UnLCB7IG1lc3NhZ2U6IHsgcm9sZTogJ3VzZXInLCBjb250ZW50IH0gfSkpXG4gICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgcmVEZXJpdmUoKVxuICAgIGF3YWl0IHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBwZXJmb3JtQ29tcGFjdGlvbihpbnN0cnVjdGlvbnMgPSAnJykge1xuICAgIGlmIChidXN5KCkgfHwgY29tcGFjdGluZygpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICBpZiAoc3RhdGUucHJvdmlkZXJIaXN0b3J5Lmxlbmd0aCA8IDQpIHJldHVybiBmbGFzaCgnbm90aGluZyB0byBjb21wYWN0IHlldCcpXG5cbiAgICBsZXQgYXV0aCA9IG51bGxcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIGlmICghYXV0aCkgcmV0dXJuIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyaWVzID0gdXNlckVudHJpZXMoc3RhdGUpXG4gICAgY29uc3Qga2VlcEZyb20gPSBlbnRyaWVzLmF0KC0yKT8uZXZlbnRJZCA/PyBlbnRyaWVzLmF0KC0xKT8uZXZlbnRJZFxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldENvbXBhY3RpbmcodHJ1ZSlcbiAgICBzZXRDb21wYWN0U3RhdHVzKG51bGwpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG4gICAgbGV0IHN0cmVhbWVkID0gJydcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmF3ID0gYXdhaXQgY29tcGFjdEhpc3Rvcnkoe1xuICAgICAgICBoaXN0b3J5OiBzdGF0ZS5wcm92aWRlckhpc3RvcnksXG4gICAgICAgIG1vZGVsTmFtZTogbW9kZWwoKS5uYW1lLFxuICAgICAgICBhdXRoLFxuICAgICAgICBwcm9tcHQ6IGNvbXBhY3Rpb25Qcm9tcHQoaW5zdHJ1Y3Rpb25zKSxcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25TdHJlYW06IChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChldmVudC50eXBlICE9PSAnY29udGVudCcpIHJldHVyblxuICAgICAgICAgIHN0cmVhbWVkICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgICAgICBzZXRDb21wYWN0U3RhdHVzKGNvbXBhY3RQcm9ncmVzcyhzdHJlYW1lZCkpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgY29uc3Qgc3VtbWFyeSA9IGZvcm1hdENvbXBhY3RTdW1tYXJ5KHJhdylcbiAgICAgIGlmICghc3VtbWFyeSkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBzdW1tYXJ5JylcbiAgICAgIGlmIChzdW1tYXJ5U2VjdGlvbnMoc3VtbWFyeSkgPCA1KSB0aHJvdyBuZXcgRXJyb3IoJ21hbGZvcm1lZCBzdW1tYXJ5LCBjb252ZXJzYXRpb24gbGVmdCB1bnRvdWNoZWQnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NvbXBhY3QnLCB7IHN1bW1hcnksIGtlZXBGcm9tLCBzZXNzaW9uRmlsZTogcmVmcy5zZXNzaW9uPy5maWxlIHx8IG51bGwgfSkpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBmbGFzaCgnY29tcGFjdGVkIFx1MDBCNyByZWNlbnQgbWVzc2FnZXMga2VwdCB2ZXJiYXRpbScpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoY29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkgZmxhc2goJ2NvbXBhY3Rpb24gY2FuY2VsbGVkJylcbiAgICAgIGVsc2UgZmxhc2goYGNvbXBhY3QgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEwMCl9YClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0Q29tcGFjdGluZyhmYWxzZSlcbiAgICAgIHNldENvbXBhY3RTdGF0dXMobnVsbClcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHEgPSBxdWV1ZWQoKVxuICAgIGlmIChxLmxlbmd0aCA+IDApIHtcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSBzZXRJbnB1dChxLmpvaW4oJ1xcbicpKVxuICAgICAgZWxzZSBleGVjdXRlVHVybihxLmpvaW4oJ1xcbicpKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1heWJlQXV0b0NvbXBhY3QoKSB7XG4gICAgaWYgKGJvb3QuYXV0b0NvbXBhY3QgPT09IGZhbHNlIHx8IGJ1c3koKSB8fCBjb21wYWN0aW5nKCkpIHJldHVyblxuICAgIGNvbnN0IGxpbWl0ID0gbW9kZWwoKS5jb250ZXh0XG4gICAgY29uc3QgdXNlZCA9IGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zXG4gICAgaWYgKCFsaW1pdCB8fCAhdXNlZCB8fCBkZXJpdmVkKCkubGFzdFByb21wdE1vZGVsICE9PSBtb2RlbCgpLm5hbWUpIHJldHVyblxuICAgIGNvbnN0IHJhdGlvID0gdXNlZCAvIGxpbWl0XG4gICAgaWYgKHJhdGlvID49IDAuODUpIHtcbiAgICAgIGZsYXNoKGBjb250ZXh0ICR7TWF0aC5yb3VuZChyYXRpbyAqIDEwMCl9JSBmdWxsIFx1MDBCNyBhdXRvLWNvbXBhY3RpbmdgKVxuICAgICAgcGVyZm9ybUNvbXBhY3Rpb24oKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHJ1bkFnZW50VHVybigpIHtcbiAgICBsZXQgYXV0aCA9IG51bGxcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykge1xuICAgICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICAgIGlmICghYXV0aCkge1xuICAgICAgICBmbGFzaCgnY29kZXggbW9kZWxzIG5lZWQgYSBDaGF0R1BUIHNpZ24taW46IHJ1biAvY29ubmVjdCcpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRGb2xsb3codHJ1ZSlcbiAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgIHNldEJ1c3kodHJ1ZSlcbiAgICBzZXRUdXJuUGhhc2UoJ3Jlc3BvbmRpbmcnKVxuICAgIHNldFN0YXJ0ZWRBdChEYXRlLm5vdygpKVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIHJlZnMuYWJvcnQgPSBjb250cm9sbGVyXG4gICAgY29uc3QgbG9hZGVkQmVmb3JlID0gbmV3IFNldCh0cmFja2VyLmxvYWRlZClcbiAgICBib290LnNraWxscyA9IGF3YWl0IGNyZWF0ZVNraWxsSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LnNraWxscykgPz8gYm9vdC5za2lsbHNcbiAgICBib290LmNvbW1hbmRzID0gYXdhaXQgY3JlYXRlQ29tbWFuZEluZGV4KGJvb3Qucm9vdCkuY2F0Y2goKCkgPT4gYm9vdC5jb21tYW5kcykgPz8gYm9vdC5jb21tYW5kc1xuICAgIGNvbnN0IGZyZXNoU2tpbGxzID0gYm9vdC5za2lsbHNcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGZvciAoY29uc3QgZmFpbHVyZSBvZiB1c2VyVG9vbFNjYW4uZXJyb3JzKSB7XG4gICAgICBjb25zdCBrZXkgPSBgJHtmYWlsdXJlLmZpbGV9OiR7ZmFpbHVyZS5lcnJvcn1gXG4gICAgICBpZiAoIXJlZnMud2FybmVkVG9vbHM/LmhhcyhrZXkpKSB7XG4gICAgICAgIDsocmVmcy53YXJuZWRUb29scyA/Pz0gbmV3IFNldCgpKS5hZGQoa2V5KVxuICAgICAgICBmbGFzaChgdG9vbCBza2lwcGVkOiAke2ZhaWx1cmUuZmlsZS5zcGxpdCgnLycpLnBvcCgpfSBcdTAwQjcgJHtmYWlsdXJlLmVycm9yfWApXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICAgIGN3ZCxcbiAgICAgIHRyYWNrZXIsXG4gICAgICBza2lsbHM6IGZyZXNoU2tpbGxzLFxuICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgIHdha2V1cHM6IGJvb3Qud2FrZXVwcyxcbiAgICAgIG1lbW9yeTogYm9vdC5tZW1vcnksXG4gICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgbWNwVG9vbHM6IG1jcC50b29scygpLFxuICAgICAgdXNlclRvb2xzOiB1c2VyVG9vbFNjYW4udG9vbHMsXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pXG5cbiAgICByZWZzLnR1cm5UaG91Z2h0cyA9ICcnXG4gICAgY29uc3Qgb25TdHJlYW0gPSAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndGhpbmtpbmcnKSB7XG4gICAgICAgIHJlZnMudHVyblRob3VnaHRzICs9IGV2ZW50LmNvbnRlbnRcbiAgICAgICAgc2V0VHVyblBoYXNlKCd0aGlua2luZycpXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICBzZXRUdXJuUGhhc2UoJ3Jlc3BvbmRpbmcnKVxuICAgICAgICBzZXRTdHJlYW1pbmcoKHMpID0+IChzIHx8ICcnKSArIGV2ZW50LmNvbnRlbnQpXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NhbGxzX3JlYWR5Jykge1xuICAgICAgICBzZXRUdXJuUGhhc2UoJ3Rvb2xzJylcbiAgICAgICAgc2V0T3ZlcmxheSgobykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBbLi4ub11cbiAgICAgICAgICBmbHVzaFN0cmVhbShuZXh0KVxuICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2V4ZWN1dGluZycpIHtcbiAgICAgICAgc2V0T3ZlcmxheSgobykgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHQgPSBbLi4ub11cbiAgICAgICAgICBmbHVzaFN0cmVhbShuZXh0KVxuICAgICAgICAgIGxldCBhcmdzID0ge31cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXJncyA9IEpTT04ucGFyc2UoZXZlbnQuY2FsbC5mdW5jdGlvbi5hcmd1bWVudHMpXG4gICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICAgIG5leHQucHVzaCh7XG4gICAgICAgICAgICBraW5kOiAndG9vbCcsXG4gICAgICAgICAgICBjYWxsSWQ6IGV2ZW50LmNhbGwuaWQsXG4gICAgICAgICAgICBuYW1lOiBldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWUsXG4gICAgICAgICAgICB0aXRsZTogdWlUaXRsZShldmVudC5jYWxsLmZ1bmN0aW9uLm5hbWUsIGFyZ3MpLFxuICAgICAgICAgICAgc3RhdHVzOiAncnVubmluZycsXG4gICAgICAgICAgICBzdGFydGVkQXQ6IERhdGUubm93KCksXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gbmV4dFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9jb21wbGV0ZScgfHwgZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVjb3JkZXIuZW50cmllcy5hdCgtMSlcbiAgICAgICAgc2V0T3ZlcmxheSgobykgPT5cbiAgICAgICAgICBvLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgICAgIGl0ZW0ua2luZCA9PT0gJ3Rvb2wnICYmIGl0ZW0uY2FsbElkID09PSBldmVudC5jYWxsLmlkXG4gICAgICAgICAgICAgID8geyAuLi5pdGVtLCAuLi4oZW50cnk/LmNhbGxJZCA9PT0gZXZlbnQuY2FsbC5pZCA/IGVudHJ5IDoge30pLCBraW5kOiAndG9vbCcsIHN0YXR1czogZW50cnk/LnN0YXR1cyB8fCAnZG9uZScgfVxuICAgICAgICAgICAgICA6IGl0ZW0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHRcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcnVuVHVybih7XG4gICAgICAgIGhpc3Rvcnk6IGRlcml2ZWQoKS5wcm92aWRlckhpc3RvcnksXG4gICAgICAgIHRvb2xzLFxuICAgICAgICByZWNvcmRlcixcbiAgICAgICAgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsXG4gICAgICAgIGVmZm9ydDogZWZmb3J0QXBwbGllcygpID8gZWZmb3J0KCkgPz8gJ2F1dG8nIDogbnVsbCxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgc3lzdGVtOiBidWlsZFN5c3RlbVByb21wdCh7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGNvbnRleHRGaWxlczogc3RhcnR1cENvbnRleHQuZmlsZXMsXG4gICAgICAgICAgc2tpbGxzOiBmcmVzaFNraWxscy5saXN0KCksXG4gICAgICAgICAgbWVtb3J5SW5kZXhUZXh0OiBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpLFxuICAgICAgICB9KSxcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25TdHJlYW0sXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0T3ZlcmxheShbXSlcbiAgICAgIHNldFN0cmVhbWluZyhudWxsKVxuICAgICAgc2V0VHVyblBoYXNlKCdpZGxlJylcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgICAgZmxhc2goYGVycm9yOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZWZzLnR1cm5UaG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiByZWZzLnR1cm5UaG91Z2h0cyB9KSlcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRyYWNrZXIubG9hZGVkKSB7XG4gICAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gICAgfVxuICAgIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsKCkubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICAgIHNldE92ZXJsYXkoW10pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgc2V0VHVyblBoYXNlKCdpZGxlJylcbiAgICByZURlcml2ZSgpXG4gICAgc2V0QnVzeShmYWxzZSlcbiAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgIGlmIChyZXN1bHQuc3RhbGxlZCkge1xuICAgICAgZmxhc2goJ21vZGVsIHN0YWxsZWQgXHUwMEI3IHR1cm4gaW50ZXJydXB0ZWQnKVxuICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgcHJldmlvdXMgdHVybiB3YXMgY3V0IG9mZiBhdXRvbWF0aWNhbGx5OiB0aGUgbW9kZWwgcHJvZHVjZWQgbm8gb3V0cHV0IGZvciA1IG1pbnV0ZXMgKHByb3ZpZGVyIHN0YWxsKS4gV29yayBtYXkgaGF2ZSBzdG9wcGVkIG1pZC10YXNrOyBwaWNrIHVwIHdoZXJlIGl0IGxlZnQgb2ZmLicsXG4gICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgZmxhc2goYGVycm9yOiAke3Jlc3VsdC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgICBub3RlU3lzdGVtKFxuICAgICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSBwcmV2aW91cyB0dXJuIGVuZGVkIHdpdGggYSBwcm92aWRlciBlcnJvcjogJHtyZXN1bHQuZXJyb3Iuc2xpY2UoMCwgMzAwKX0uIFdvcmsgbWF5IGhhdmUgc3RvcHBlZCBtaWQtdGFzazsgcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi5gLFxuICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2Uge1xuICAgICAgICBleGVjdXRlVHVybihxLmpvaW4oJ1xcbicpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gICAgbWF5YmVBdXRvQ29tcGFjdCgpXG4gIH1cblxuICBmdW5jdGlvbiBjb21wbGV0aW9uU291cmNlKG5hbWUpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NvbG9yJykgcmV0dXJuIE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgIGlmIChuYW1lID09PSAndGhlbWUnKSByZXR1cm4gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICBpZiAobmFtZSA9PT0gJ2VmZm9ydCcpIHJldHVybiBbJ2RlZmF1bHQnLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgaWYgKG5hbWUgPT09ICdtb2RlbCcpIHJldHVybiBtb2RlbHMuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpLm1hcCgobSkgPT4gbS5uYW1lKVxuICAgIGNvbnN0IGNtZCA9IGFsbENvbW1hbmRzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAoY21kPy5za2lsbCB8fCBjbWQ/LmNvbW1hbmQpIHJldHVybiBmaWxlTGlzdCgpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NDb21wbGV0aW9uKCkge1xuICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgc2V0Q29tcEluZGV4KDApXG4gIH1cblxuICBmdW5jdGlvbiBhY2NlcHRDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICAgIHNldElucHV0KGFwcGx5Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpKVxuICAgIGRpc21pc3NDb21wbGV0aW9uKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbmQodGV4dCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgcmVmcy5hYm9ydD8uYWJvcnQoKVxuICB9XG5cbiAgY29uc3QgZm10VG9rZW5zID0gKG4pID0+IChuID49IDEwMDAgPyBgJHsobiAvIDEwMDApLnRvRml4ZWQoMSl9a2AgOiBTdHJpbmcobikpXG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaE1lbW9yaWVzKCkge1xuICAgIHNldE1lbW9yeUxpc3QoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGZvcmdldE1lbW9yeShtKSB7XG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmZvcmdldEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZm9yZ2V0QXJtID0geyBmaWxlOiBtLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGZvcmdldCBcIiR7bS5uYW1lfVwiYClcbiAgICB9XG4gICAgcmVmcy5mb3JnZXRBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGJvb3QubWVtb3J5LmZvcmdldChtLm5hbWUpXG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgZmxhc2goYGZvcmdvdCAke20ubmFtZX0gKCR7bS5zY29wZX0pYClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBmb3JnZXQgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5Db250ZXh0UGFuZWwoKSB7XG4gICAgY29uc3QgZXN0ID0gKHRleHQpID0+IE1hdGgucm91bmQoU3RyaW5nKHRleHQpLmxlbmd0aCAvIDQpXG4gICAgY29uc3QgdG9rID0gKG4pID0+IGB+JHtmbXRUb2tlbnMobil9IHRva2BcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuXG4gICAgY29uc3QgbWVtb3J5SW5kZXhUZXh0ID0gbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KVxuICAgIGNvbnN0IHNraWxsTGlzdCA9IGJvb3Quc2tpbGxzLmxpc3QoKVxuICAgIGNvbnN0IGZpbGVzID0gc3RhcnR1cENvbnRleHQuZmlsZXNcbiAgICBjb25zdCBzeXN0ZW1GdWxsID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogZmlsZXMsIHNraWxsczogc2tpbGxMaXN0LCBtZW1vcnlJbmRleFRleHQgfSlcbiAgICBjb25zdCBzeXN0ZW1CYXNlID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogW10sIHNraWxsczogW10sIG1lbW9yeUluZGV4VGV4dDogJycgfSlcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGNvbnN0IHsgdG9vbHMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGRyZWRnZTogYm9vdC5kcmVkZ2UsXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICB9KVxuICAgIGNvbnN0IHRvb2xUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkodG9vbHMpKVxuXG4gICAgY29uc3QgaGlzdG9yeSA9IHN0YXRlLnByb3ZpZGVySGlzdG9yeVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IGhpc3RvcnlbMF0/LnJvbGUgPT09ICd1c2VyJ1xuICAgICAgJiYgc3RhdGUuaGlzdG9yeUV2ZW50SWRzWzBdID09PSBudWxsXG4gICAgICAmJiBTdHJpbmcoaGlzdG9yeVswXS5jb250ZW50KS5zdGFydHNXaXRoKCdbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbicpXG4gICAgY29uc3Qgc3VtbWFyeVRva2VucyA9IGNvbXBhY3RlZCA/IGVzdChoaXN0b3J5WzBdLmNvbnRlbnQpIDogMFxuICAgIGNvbnN0IG1lc3NhZ2VzID0gY29tcGFjdGVkID8gaGlzdG9yeS5zbGljZSgxKSA6IGhpc3RvcnlcbiAgICBjb25zdCBtZXNzYWdlVG9rZW5zID0gZXN0KEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKSlcblxuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICB7IG5hbWU6ICdzeXN0ZW0gcHJvbXB0JywgZGVzYzogJ2lkZW50aXR5LCBlbnZpcm9ubWVudCwgdG9vbCBndWlkYW5jZScsIG5vdGU6IHRvayhlc3Qoc3lzdGVtQmFzZSkpIH0sXG4gICAgICB7IG5hbWU6IGB0b29sIHNjaGVtYXMgKCR7dG9vbHMubGVuZ3RofSlgLCBkZXNjOiB0b29scy5tYXAoKHQpID0+IHQubmFtZSkuam9pbignIFx1MDBCNyAnKSwgbm90ZTogdG9rKHRvb2xUb2tlbnMpIH0sXG4gICAgXVxuICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBwcm9qZWN0IGluc3RydWN0aW9ucyAoJHtmaWxlcy5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IGZpbGVzLm1hcCgoZikgPT4gZi5wYXRoLnJlcGxhY2UoYCR7Ym9vdC5yb290fS9gLCAnJykpLmpvaW4oJywgJyksXG4gICAgICAgIG5vdGU6IHRvayhmaWxlcy5yZWR1Y2UoKHN1bSwgZikgPT4gc3VtICsgZXN0KGYuY29udGVudCksIDApKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChza2lsbExpc3QubGVuZ3RoKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiBgc2tpbGxzIGluZGV4ICgke3NraWxsTGlzdC5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IHNraWxsTGlzdC5tYXAoKHMpID0+IHMubmFtZSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGVzdChza2lsbExpc3QubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKS5qb2luKCdcXG4nKSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgICAgcm93cy5wdXNoKHsgbmFtZTogJ21lbW9yeSBpbmRleCcsIGRlc2M6ICdvbmUgbGluZSBwZXIgc2F2ZWQgbWVtb3J5Jywgbm90ZTogdG9rKGVzdChtZW1vcnlJbmRleFRleHQpKSB9KVxuICAgIH1cbiAgICBpZiAoY29tcGFjdGVkKSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnY29tcGFjdGlvbiBzdW1tYXJ5JywgZGVzYzogJ3N0YW5kcyBpbiBmb3IgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGxhc3QgY29tcGFjdCcsIG5vdGU6IHRvayhzdW1tYXJ5VG9rZW5zKSB9KVxuICAgIH1cbiAgICByb3dzLnB1c2goe1xuICAgICAgbmFtZTogYGNvbnZlcnNhdGlvbiAoJHttZXNzYWdlcy5sZW5ndGh9IG1lc3NhZ2VzKWAsXG4gICAgICBkZXNjOiBjb21wYWN0ZWQgPyAna2VwdCB2ZXJiYXRpbSBzaW5jZSB0aGUgbGFzdCBjb21wYWN0JyA6ICdldmVyeSBtZXNzYWdlIHRoaXMgc2Vzc2lvbicsXG4gICAgICBub3RlOiB0b2sobWVzc2FnZVRva2VucyksXG4gICAgfSlcblxuICAgIGlmIChzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zICYmIHN0YXRlLmxhc3RQcm9tcHRNb2RlbCA9PT0gbW9kZWwoKS5uYW1lKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiAnbGFzdCBtZWFzdXJlZCByZXF1ZXN0JyxcbiAgICAgICAgZGVzYzogJ3Byb3ZpZGVyLXJlcG9ydGVkIGlucHV0IHRva2VucywgdGhlIG51bWJlciBiZWhpbmQgY3R4ICUnLFxuICAgICAgICBub3RlOiBgJHtzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IHRva2AsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHRTZWdtZW50cyA9IFtcbiAgICAgIHsgbGFiZWw6ICdzeXN0ZW0nLCB0b2tlbnM6IGVzdChzeXN0ZW1CYXNlKSB9LFxuICAgICAgeyBsYWJlbDogJ3Rvb2xzJywgdG9rZW5zOiB0b29sVG9rZW5zIH0sXG4gICAgICB7IGxhYmVsOiAncHJvamVjdCcsIHRva2VuczogTWF0aC5tYXgoMCwgZXN0KHN5c3RlbUZ1bGwpIC0gZXN0KHN5c3RlbUJhc2UpKSB9LFxuICAgICAgLi4uKHN1bW1hcnlUb2tlbnMgPyBbeyBsYWJlbDogJ3N1bW1hcnknLCB0b2tlbnM6IHN1bW1hcnlUb2tlbnMgfV0gOiBbXSksXG4gICAgICB7IGxhYmVsOiAnY29udmVyc2F0aW9uJywgdG9rZW5zOiBtZXNzYWdlVG9rZW5zIH0sXG4gICAgXS5maWx0ZXIoKHNlZ21lbnQpID0+IHNlZ21lbnQudG9rZW5zID4gMClcbiAgICAgIC5tYXAoKHNlZ21lbnQsIGkpID0+ICh7IC4uLnNlZ21lbnQsIGNvbG9yOiBbJyM2N2I3ZmYnLCAnI2M3OTJlYScsICcjZjdjNjZhJywgJyNmNzhjNmMnLCAnIzZiZTc5NSddW2ldIH0pKVxuXG4gICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgIHRpdGxlOiBgQ29udGV4dCBcdTAwQjcgJHttb2RlbCgpLm5hbWV9YCxcbiAgICAgIHJvd3MsXG4gICAgICBvdmVydmlldzogY29udGV4dFNlZ21lbnRzLmxlbmd0aCA/IHsgc2VnbWVudHM6IGNvbnRleHRTZWdtZW50cyB9IDogbnVsbCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdGhlbWVJdGVtcyA9ICgpID0+IFtcbiAgICAuLi5wYWxldHRlTGlzdCgpLFxuICAgIHsga2V5OiAnYXV0bycsIGRlc2M6IGBmb2xsb3cgdGhlIHRlcm1pbmFsIChkZXRlY3RlZDogJHtib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnfSlgIH0sXG4gIF1cblxuICBmdW5jdGlvbiBwYWxldHRlRm9yKHByZWYpIHtcbiAgICByZXR1cm4gcHJlZiA9PT0gJ2F1dG8nID8gYm9vdC5kZXRlY3RlZFRoZW1lIHx8ICdkYXJrJyA6IHByZWZcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXZpZXdQYWxldHRlKHByZWYpIHtcbiAgICBzZXRQYWxldHRlKHBhbGV0dGVGb3IocHJlZikpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBhY2NlbnQoKSwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVRoZW1lUHJlZihwcmVmKSB7XG4gICAgc2V0VGhlbWVQcmVmKHByZWYpXG4gICAgcHJldmlld1BhbGV0dGUocHJlZilcbiAgICB3cml0ZUNvbmZpZyh7IHRoZW1lOiBwcmVmID09PSAnYXV0bycgPyB1bmRlZmluZWQgOiBwcmVmIH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIGZsYXNoKHByZWYgPT09ICdhdXRvJyA/IGB0aGVtZTogYXV0byBcdTAwQjcgZm9sbG93aW5nIHRoZSB0ZXJtaW5hbCAoJHtwYWxldHRlRm9yKCdhdXRvJyl9KWAgOiBgdGhlbWU6ICR7cHJlZn1gKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjLCBhcmdzID0gJycpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3MgIT09ICdzdHJpbmcnKSBhcmdzID0gJydcbiAgICBzZXRJbnB1dCgnJylcbiAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgIGlmIChjLm5hbWUgPT09ICdyZW5hbWUnKSB7XG4gICAgICBjb25zdCBhdXRvbWF0aWNUaXRsZSA9IHVzZXJFbnRyaWVzKGRlcml2ZWQoKSlbMF0/LnRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCd0aXRsZScsIHsgdGV4dDogYXJncyB8fCBudWxsIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBpZiAoYXJncykgZmxhc2goYHNlc3Npb24gcmVuYW1lZCB0byBcIiR7YXJnc31cImApXG4gICAgICBlbHNlIGlmIChhdXRvbWF0aWNUaXRsZSkgZmxhc2goYHNlc3Npb24gbmFtZSByZXNldCB0byBcIiR7YXV0b21hdGljVGl0bGV9XCJgKVxuICAgICAgZWxzZSBmbGFzaCgnc2Vzc2lvbiBuYW1lIHJlc2V0JylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29sb3InKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhTRVNTSU9OX0NPTE9SUylcbiAgICAgIGxldCB2YWx1ZVxuICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAodmFsdWVzLmluZGV4T2YoZGVyaXZlZCgpLmNvbG9yKSArIDEpICUgdmFsdWVzLmxlbmd0aFxuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tuZXh0XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBTRVNTSU9OX0NPTE9SU1thcmdzLnRvTG93ZXJDYXNlKCldIHx8ICgvXiNbMC05YS1mQS1GXXs2fSQvLnRlc3QoYXJncykgPyBhcmdzIDogbnVsbClcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZsYXNoKGB1c2FnZTogL2NvbG9yIHRvIGN5Y2xlLCBvciAvY29sb3IgPCR7bmFtZXMuam9pbignfCcpfXwjaGV4PmApXG4gICAgICB9XG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29sb3InLCB7IHZhbHVlIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbdmFsdWVzLmluZGV4T2YodmFsdWUpXVxuICAgICAgZmxhc2goYHNlc3Npb24gY29sb3I6ICR7bmFtZSB8fCB2YWx1ZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb25maWcnKSB7XG4gICAgICBzZXRTaG93Q29uZmlnUGFuZWwodHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAndGhlbWUnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93VGhlbWVQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgY2hvaWNlID0gYXJncy50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCB2YWxpZCA9IFsuLi5wYWxldHRlTGlzdCgpLm1hcCgocCkgPT4gcC5rZXkpLCAnYXV0byddXG4gICAgICBpZiAoIXZhbGlkLmluY2x1ZGVzKGNob2ljZSkpIHJldHVybiBmbGFzaChgdGhlbWU6ICR7cGFsZXR0ZU5hbWUoKX0gXHUwMEI3IC90aGVtZSA8JHt2YWxpZC5qb2luKCd8Jyl9PmApXG4gICAgICBhcHBseVRoZW1lUHJlZihjaG9pY2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuc2tpbGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBza2lsbHMubG9hZChjLm5hbWUpXG4gICAgICBpZiAoIWJvZHkpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgc2tpbGwgJHtjLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdza2lsbCcsIHsgbmFtZTogYy5uYW1lLCBzb3VyY2U6ICd1c2VyJyB9KSlcbiAgICAgIHNlbmQoYEZvbGxvdyB0aGVzZSBza2lsbCBpbnN0cnVjdGlvbnMgbm93LlxcblxcbiR7Ym9keX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLmNvbW1hbmQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBib290LmNvbW1hbmRzLmxvYWQoYy5uYW1lLCBhcmdzKVxuICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gZmxhc2goYGNvdWxkIG5vdCBsb2FkIGNvbW1hbmQgJHtjLm5hbWV9YClcbiAgICAgIHNlbmQodGV4dClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29ubmVjdCcpIHJldHVybiBvcGVuQ29ubmVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnbW9kZWwnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhcmdzKVxuICAgICAgY29uc3QgYWRob2MgPSAhZXhhY3QgJiYgYXJncy5pbmNsdWRlcygnLycpID8gYWRob2NNb2RlbChhcmdzLCBib290LnByb3ZpZGVycykgOiBudWxsXG4gICAgICBjb25zdCBzY29yZWQgPSBleGFjdCB8fCBhZGhvY1xuICAgICAgICA/IFtdXG4gICAgICAgIDogbW9kZWxzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShhcmdzLCBtLm5hbWUpLCBtXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICBjb25zdCBwaWNrID0gZXhhY3QgfHwgYWRob2MgfHwgc2NvcmVkWzBdPy5bMV1cbiAgICAgIGlmICghcGljaykgcmV0dXJuIGZsYXNoKGBubyBhdmFpbGFibGUgbW9kZWwgbWF0Y2hlcyBcIiR7YXJnc31cImApXG4gICAgICBpZiAocGljay5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke3BpY2sua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHtwaWNrLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IHBpY2submFtZSB9KSlcbiAgICAgIHNldE1vZGVsKHBpY2spXG4gICAgICBmbGFzaChhZGhvYyA/IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9IChub3QgaW4gY2F0YWxvZywgcHJpY2luZyB1bmtub3duKWAgOiBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2VmZm9ydCcpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSByZXR1cm4gZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dFZmZvcnRQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgbGV2ZWwgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsZXZlbCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChudWxsKVxuICAgICAgaWYgKCFFRkZPUlRfTEVWRUxTLnNvbWUoKGwpID0+IGwua2V5ID09PSBsZXZlbCkpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9lZmZvcnQgPGRlZmF1bHR8bG93fG1lZGl1bXxoaWdofG1heD4nKVxuICAgICAgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobGV2ZWwpXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHJldHVybiBmbGFzaCgndGhpcyBwaWNvIHJ1bnMgZnJvbSBhIHNvdXJjZSBjaGVja291dCBcdTAwQjcgdXBkYXRlIGl0IHdpdGggZ2l0JylcbiAgICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAobGF0ZXN0ICYmICFuZXdlclZlcnNpb24odmVyc2lvbiwgbGF0ZXN0KSkgcmV0dXJuIGZsYXNoKGBwaWNvIHYke3ZlcnNpb259IGlzIGFscmVhZHkgdGhlIGxhdGVzdGApXG4gICAgICBmbGFzaChgdXBkYXRpbmcke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ30uLi5gKVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVXBkYXRlKClcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiBmbGFzaChgdXBkYXRlZCR7bGF0ZXN0ID8gYCB0byB2JHtsYXRlc3R9YCA6ICcnfSBcdTAwQjcgcmVzdGFydCBwaWNvIHRvIHVzZSBpdGApXG4gICAgICByZXR1cm4gZmxhc2goYHVwZGF0ZSBmYWlsZWQ6ICR7cmVzdWx0Lm91dHB1dC5zbGljZSgwLCAxMDApfWApXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb250ZXh0JykgcmV0dXJuIG9wZW5Db250ZXh0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdoaXN0b3J5JykgcmV0dXJuIG9wZW5IaXN0b3J5U2VhcmNoKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdzaGVsbHMnKSByZXR1cm4gc2V0U2hvd1NoZWxsc1BhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3dha2V1cHMnKSByZXR1cm4gc2V0U2hvd1dha2V1cHNQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdtZW1vcnknKSB7XG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgcmV0dXJuIHNldFNob3dNZW1vcnlQYW5lbCh0cnVlKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncmVzdW1lJykge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncHJvamVjdCcpIHJldHVybiBvcGVuUHJvamVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnY3dkJykge1xuICAgICAgY29uc3Qgcm9vdE5vdGUgPSBib290LnJvb3QgIT09IGJvb3QuY3dkID8gYCBcdTAwQjcgcHJvamVjdCByb290ICR7c2hvcnRlblBhdGgoYm9vdC5yb290KX1gIDogJydcbiAgICAgIHJldHVybiBmbGFzaChgJHtib290LmRpc3BsYXlDd2R9JHtyb290Tm90ZX1gKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnc2tpbGxzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnU2tpbGxzJyxcbiAgICAgICAgcm93czogc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogcy5kZXNjcmlwdGlvbiwgbm90ZTogcy5zb3VyY2UgfSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbW1hbmRzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnQ29tbWFuZHMnLFxuICAgICAgICByb3dzOiBbXG4gICAgICAgICAgLi4uQ09NTUFORFMubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzYywgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5ib290LmNvbW1hbmRzLmxpc3QoKS5tYXAoKGNtZCkgPT4gKHsgbmFtZTogYC8ke2NtZC5uYW1lfWAsIGRlc2M6IGNtZC5kZXNjcmlwdGlvbiwgbm90ZTogY21kLnNvdXJjZSB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAndG9vbHMnKSB7XG4gICAgICBjb25zdCBzY2FuID0gYXdhaXQgc2NhblVzZXJUb29scyh7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgICBjb25zdCB7IHRvb2xzOiBidWlsdGlucyB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICAgIHRyYWNrZXIsXG4gICAgICAgIHNraWxscyxcbiAgICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IG1jcENvdW50ID0gbWNwLnRvb2xzKCkubGVuZ3RoXG4gICAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogYFRvb2xzJHttY3BDb3VudCA/IGAgXHUwMEI3IHBsdXMgJHttY3BDb3VudH0gTUNQIChzZWUgL21jcClgIDogJyd9YCxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLmJ1aWx0aW5zLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLnNwbGl0KCdcXG4nKVswXSwgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLnRvb2xzLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLCBub3RlOiBgJHt0LnNvdXJjZX0gXHUwMEI3ICR7dC5fZmlsZS5zcGxpdCgnLycpLnBvcCgpfWAgfSkpLFxuICAgICAgICAgIC4uLnNjYW4uZXJyb3JzLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5maWxlLnNwbGl0KCcvJykucG9wKCksIGRlc2M6IGUuZXJyb3IsIG5vdGU6ICdicm9rZW4nIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ25ldycgfHwgYy5uYW1lID09PSAnZGVsZXRlJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgaWYgKGMubmFtZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaWYgKCFyZWZzLnNlc3Npb24pIHJldHVybiBmbGFzaCgnbm8gY3VycmVudCBzZXNzaW9uIHRvIGRlbGV0ZScpXG4gICAgICAgIHNldFNob3dEZWxldGVDb25maXJtKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmVmcy5zZXNzaW9uID0gbnVsbFxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSAwXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBzZXRTZW50KFtdKVxuICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICBzZXRFZmZvcnQoZGVmYXVsdEVmZm9ydCgpKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCduZXcgc2Vzc2lvbicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jld2luZCcpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmICh1c2VyRW50cmllcyhkZXJpdmVkKCkpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIHJld2luZCB5ZXQnKVxuICAgICAgc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NsZWFyJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NsZWFyJywge30pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbnZlcnNhdGlvbiBjbGVhcmVkJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29tcGFjdCcpIHJldHVybiBwZXJmb3JtQ29tcGFjdGlvbihhcmdzKVxuICAgIGlmIChjLm5hbWUgPT09ICdjb3N0Jykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm8gdXNhZ2UgeWV0JylcbiAgICAgIGNvbnN0IGNvc3RPZiA9IChieU1vZGVsKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhieU1vZGVsKS5yZWR1Y2UoKHN1bSwgW25hbWUsIHVzYWdlXSkgPT4gc3VtICsgZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpLCB1c2FnZSksIDApXG4gICAgICBjb25zdCBzcGVudCA9IGNvc3RPZihzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBjb25zdCBhY3RpdmUgPSBjb3N0T2Yoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsKVxuICAgICAgY29uc3QgeyBwcm9tcHRUb2tlbnMsIGNvbXBsZXRpb25Ub2tlbnMgfSA9IHN0YXRlLnVzYWdlXG4gICAgICBjb25zdCBiYXNlID0gYCQke3NwZW50LnRvRml4ZWQoNCl9IHNwZW50IFx1MDBCNyAke3Byb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSBpbiBcdTAwQjcgJHtjb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGBcbiAgICAgIGZsYXNoKHNwZW50IC0gYWN0aXZlID4gMC4wMDAwNSA/IGAke2Jhc2V9IFx1MDBCNyBjdXJyZW50IGNvbnZlcnNhdGlvbiAkJHthY3RpdmUudG9GaXhlZCg0KX1gIDogYmFzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnZXhwb3J0Jykge1xuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oY3dkLCBgcGljby1leHBvcnQtJHtEYXRlLm5vdygpfS5tZGApXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdHJhbnNjcmlwdFRvTWFya2Rvd24oZGVyaXZlZCgpLnRyYW5zY3JpcHQsIHsgdGl0bGU6IGBwaWNvIHNlc3Npb24gXHUwMEI3ICR7Y3dkfWAgfSkpXG4gICAgICBmbGFzaChgZXhwb3J0ZWQgdG8gJHtmaWxlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoQXV0aFByb3ZpZGVycygpIHtcbiAgICBjb25zdCBvcGVuYWkgPSBhd2FpdCBvcGVuYWlTdGF0dXMoKS5jYXRjaCgoKSA9PiAoeyBjb25uZWN0ZWQ6IGZhbHNlLCBlbWFpbDogbnVsbCB9KSlcbiAgICBzZXRBdXRoUHJvdmlkZXJzKFtcbiAgICAgIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSSBcdTAwQjcgQ2hhdEdQVCAvIENvZGV4IHBsYW4nLCBjb25uZWN0ZWQ6IG9wZW5haS5jb25uZWN0ZWQsIGVtYWlsOiBvcGVuYWkuZW1haWwgfSxcbiAgICBdKVxuICB9XG5cbiAgZnVuY3Rpb24gb3BlbkNvbm5lY3RQYW5lbCgpIHtcbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKHRydWUpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbChmYWxzZSlcbiAgICBmbGFzaCgnb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29ubmVjdE9wZW5BSSgpXG4gICAgICAudGhlbihhc3luYyAoeyBlbWFpbCB9KSA9PiB7XG4gICAgICAgIGJvb3QucHJvdmlkZXJzID0gWy4uLm5ldyBTZXQoWy4uLmJvb3QucHJvdmlkZXJzLCAnY29kZXgnXSldXG4gICAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICBjb25zdCBjb2RleCA9IChhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogdHJ1ZSwga2V5SGludDogJy9jb25uZWN0JyB9KSlcbiAgICAgICAgYm9vdC5tb2RlbHMgPSBbLi4uYm9vdC5tb2RlbHMuZmlsdGVyKChtKSA9PiBtLnByb3ZpZGVyICE9PSAnY29kZXgnKSwgLi4uY29kZXhdXG4gICAgICAgIHJlRGVyaXZlKClcbiAgICAgICAgZmxhc2goYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9IFx1MDBCNyAke2NvZGV4Lmxlbmd0aH0gY29kZXggbW9kZWxzIHVubG9ja2VkIGluIC9tb2RlbGApXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IGZsYXNoKGBjb25uZWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMjApfWApKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRpc2Nvbm5lY3RBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBwcm92aWRlci5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLmRpc2Nvbm5lY3RBcm0gPSB7IGlkOiBwcm92aWRlci5pZCwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZGlzY29ubmVjdCAke3Byb3ZpZGVyLmxhYmVsfSAoeW91IHdpbGwgbmVlZCB0byBzaWduIGluIGFnYWluKWApXG4gICAgfVxuICAgIHJlZnMuZGlzY29ubmVjdEFybSA9IG51bGxcbiAgICBhd2FpdCBkaXNjb25uZWN0T3BlbkFJKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgYm9vdC5wcm92aWRlcnMgPSBib290LnByb3ZpZGVycy5maWx0ZXIoKHApID0+IHAgIT09ICdjb2RleCcpXG4gICAgYm9vdC5tb2RlbHMgPSBib290Lm1vZGVscy5tYXAoKG0pID0+IChtLnByb3ZpZGVyID09PSAnY29kZXgnID8geyAuLi5tLCBhdmFpbGFibGU6IGZhbHNlIH0gOiBtKSlcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICAgIGZsYXNoKCdkaXNjb25uZWN0ZWQgZnJvbSBDaGF0R1BUJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2hTZXNzaW9ucyhzY29wZUluZGV4KSB7XG4gICAgc2V0UmVzdW1lTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiBSRVNVTUVfU0NPUEVTW3Njb3BlSW5kZXhdLCByb290IH0pXG4gICAgICAudGhlbihzZXRSZXN1bWVTZXNzaW9ucylcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFJlc3VtZUxvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvcnRlblBhdGgocGF0aCkge1xuICAgIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKGhvbWUpID8gcGF0aC5yZXBsYWNlKGhvbWUsICd+JykgOiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuUHJvamVjdFBhbmVsKCkge1xuICAgIHNldFNob3dQcm9qZWN0UGFuZWwodHJ1ZSlcbiAgICBzZXRQcm9qZWN0c0xvYWRpbmcodHJ1ZSlcbiAgICBsaXN0U2Vzc2lvbnMoeyBzY29wZTogJ2V2ZXJ5d2hlcmUnLCByb290IH0pXG4gICAgICAudGhlbigobWV0YXMpID0+IHtcbiAgICAgICAgY29uc3QgYnlSb290ID0gbmV3IE1hcCgpXG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRhcykge1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gYnlSb290LmdldChtLmhlYWRlci5yb290KVxuICAgICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGJ5Um9vdC5zZXQobS5oZWFkZXIucm9vdCwge1xuICAgICAgICAgICAgICByb290OiBtLmhlYWRlci5yb290LFxuICAgICAgICAgICAgICBwYXRoOiBzaG9ydGVuUGF0aChtLmhlYWRlci5yb290KSxcbiAgICAgICAgICAgICAgbGF0ZXN0OiBtLFxuICAgICAgICAgICAgICBjb3VudDogMSxcbiAgICAgICAgICAgICAgY3VycmVudDogbS5oZWFkZXIucm9vdCA9PT0gYm9vdC5yb290LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuY291bnQrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRQcm9qZWN0cyhbLi4uYnlSb290LnZhbHVlcygpXSlcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiBzZXRQcm9qZWN0c0xvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChwKSB7XG4gICAgaWYgKHAuY3VycmVudCkgcmV0dXJuIGZsYXNoKCdjYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50IHByb2plY3QgXHUwMEI3IHN3aXRjaCBhd2F5IGZpcnN0JylcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMucHJvamVjdERlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQucm9vdCAhPT0gcC5yb290IHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IHsgcm9vdDogcC5yb290LCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkZWxldGUgXCIke3AucGF0aH1cIiBhbmQgaXRzICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ31gKVxuICAgIH1cbiAgICByZWZzLnByb2plY3REZWxldGVBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVByb2plY3REYXRhKHAucm9vdClcbiAgICAgIHNldFByb2plY3RzKChsaXN0KSA9PiBsaXN0LmZpbHRlcigoeCkgPT4geC5yb290ICE9PSBwLnJvb3QpKVxuICAgICAgZmxhc2goYGRlbGV0ZWQgJHtwLnBhdGh9IFx1MDBCNyAke3AuY291bnR9ICR7cC5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IHJlbW92ZWRgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoUHJvamVjdChtZXRhKSB7XG4gICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2aW91c01jcCA9IGJvb3QubWNwXG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgYm9vdC5yZWJ1aWxkKG1ldGEuaGVhZGVyLnJvb3QpXG4gICAgICBwcmV2aW91c01jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgcHJvY2Vzcy5jaGRpcihuZXh0LmN3ZClcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9vdCwgbmV4dClcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXHgxYl0wO3BpY28gXHUwMEI3ICR7bmV4dC5yb290LnNwbGl0KCcvJykucG9wKCl9XFx4MDdgKVxuICAgICAgbmV4dC5tY3AuY29ubmVjdEFsbCgpXG4gICAgICBzZXRNY3BTZXJ2ZXJzKG5leHQubWNwLmxpc3QoKSlcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldEZpbGVMaXN0KFtdKVxuICAgICAgYXdhaXQgcmVzdW1lU2Vzc2lvbihtZXRhKVxuICAgICAgZmxhc2goYHN3aXRjaGVkIHRvICR7bmV4dC5kaXNwbGF5Q3dkfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgc3dpdGNoIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uTWV0YShtZXRhKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHJlZnMuc2Vzc2lvbj8uaWQgPT09IG1ldGEuaGVhZGVyLmlkXG4gICAgaWYgKGN1cnJlbnQgJiYgYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbWV0YS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGVsZXRlQXJtID0geyBmaWxlOiBtZXRhLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7bWV0YS50aXRsZS5zbGljZSgwLCA1MCl9XCJgKVxuICAgIH1cbiAgICByZWZzLmRlbGV0ZUFybSA9IG51bGxcbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgaWYgKGF3YWl0IGNvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbigpKSByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdW1lU2Vzc2lvbihtZXRhKSB7XG4gICAgc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgIHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpXG4gICAgaWYgKG1ldGEuaGVhZGVyLnJvb3QgIT09IGJvb3Qucm9vdCkgcmV0dXJuIHN3aXRjaFByb2plY3QobWV0YSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBoZWFkZXIsIGV2ZW50cyB9ID0gYXdhaXQgbG9hZFNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcy5zZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlOiBtZXRhLmZpbGUsIGhlYWRlciB9KVxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbLi4uZXZlbnRzXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSBldmVudHMubGVuZ3RoXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBjYXRhbG9nTWF0Y2ggPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBkZXJpdmVkKCkubW9kZWwgJiYgbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgICAgY29uc3QgcmVzdG9yZWQgPSBkZXJpdmVkKCkubW9kZWxcbiAgICAgICAgJiYgKGNhdGFsb2dNYXRjaCB8fCBhZGhvY01vZGVsKGRlcml2ZWQoKS5tb2RlbCwgYm9vdC5wcm92aWRlcnMpKVxuICAgICAgaWYgKHJlc3RvcmVkKSB7XG4gICAgICAgIHNldE1vZGVsKHJlc3RvcmVkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICAgIGlmIChkZXJpdmVkKCkubW9kZWwpIGZsYXNoKGBtb2RlbCAke2Rlcml2ZWQoKS5tb2RlbH0gdW5hdmFpbGFibGUsIHVzaW5nICR7ZGVmYXVsdE1vZGVsKCkubmFtZX1gKVxuICAgICAgfVxuICAgICAgc2V0RWZmb3J0KGRlcml2ZWQoKS5lZmZvcnQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFZmZvcnQoKSA6IGRlcml2ZWQoKS5lZmZvcnQpXG4gICAgICBzZXRTZW50KHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubWFwKChlKSA9PiAoeyB0ZXh0OiByZWNhbGxUZXh0KGUpLCBhdDogaGVhZGVyLmNyZWF0ZWRBdCB9KSkpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgc2V0Rm9sbG93KHRydWUpXG4gICAgICBmbGFzaChgcmVzdW1lZCBcdTAwQjcgJHttZXRhLnR1cm5zfSAke21ldGEudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKG1ldGEuYXQpfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgcmVzdW1lIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvcGVuSGlzdG9yeVNlYXJjaCgpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gc2VudCgpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhzZXNzaW9uKSlcbiAgICBzZXRTaG93SGlzdG9yeVBhbmVsKHRydWUpXG4gICAgc2V0SGlzdFNjb3BlKDApXG4gIH1cblxuICBmdW5jdGlvbiBkZWR1cGVQcm9tcHRzKHBvb2wpIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpXG4gICAgY29uc3Qgb3V0ID0gW11cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIFsuLi5wb29sXS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdCkpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhlbnRyeS50ZXh0KSkgY29udGludWVcbiAgICAgIHNlZW4uYWRkKGVudHJ5LnRleHQpXG4gICAgICBvdXQucHVzaChlbnRyeSlcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoSGlzdFNjb3BlKG5leHQpIHtcbiAgICBzZXRIaXN0U2NvcGUobmV4dClcbiAgICBpZiAobmV4dCA9PT0gMCkgcmV0dXJuIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2VudCgpKSlcbiAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpXG4gICAgaWYgKG5leHQgPT09IDEpIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKFsuLi5zZW50KCksIC4uLnByb2plY3RdKSlcbiAgICBjb25zdCBnbG9iYWwgPSBhd2FpdCBsb2FkR2xvYmFsUHJvbXB0cygpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0LCAuLi5nbG9iYWxdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1SZXdpbmQob3B0KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmV3aW5kVGFyZ2V0KClcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGNvbnN0IHsgZWRpdHMgfSA9IHJld2luZFN0YXRzKHN0YXRlLCB0YXJnZXQuaW5kZXgpXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2VkaXRzLmxlbmd0aH0gJHtlZGl0cy5sZW5ndGggPT09IDEgPyAnZWRpdCcgOiAnZWRpdHMnfWBcbiAgICBsZXQgcmV2ZXJ0ZWQgPSBbXVxuICAgIGxldCBza2lwcGVkID0gW11cblxuICAgIGlmIChvcHQua2V5ID09PSAnYm90aCcgfHwgb3B0LmtleSA9PT0gJ2NvZGUnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXZlcnRFZGl0cyhlZGl0cylcbiAgICAgIHJldmVydGVkID0gcmVzdWx0LnJldmVydGVkXG4gICAgICBza2lwcGVkID0gcmVzdWx0LnNraXBwZWRcbiAgICB9XG5cbiAgICBsZXQgc3VtbWFyeVRleHQgPSBudWxsXG4gICAgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgY29uc3QgdGFpbCA9IHN0YXRlLnRyYW5zY3JpcHQuc2xpY2UodGFyZ2V0LmluZGV4KVxuICAgICAgY29uc3QgdGV4dCA9IHRhaWwuZmlsdGVyKChtKSA9PiBtLnRleHQpLm1hcCgobSkgPT4gYCR7bS5raW5kfTogJHttLnRleHR9YCkuam9pbignXFxuJylcbiAgICAgIGZsYXNoKCdzdW1tYXJpemluZy4uLicpXG4gICAgICBsZXQgYXV0aCA9IG51bGxcbiAgICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgc3VtbWFyeVRleHQgPSBhd2FpdCBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsIGF1dGggfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICBmbGFzaCgnc3VtbWFyeSBtb2RlbCBjYWxsIGZhaWxlZCBcdTAwQjcga2VwdCBhIGNydWRlIGRpZ2VzdCBvZiB0aGUgcmV3b3VuZCB0dXJucycpXG4gICAgICAgIHJldHVybiB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5zbGljZSgwLCAzKS5tYXAoKG0pID0+IG0udGV4dC5zcGxpdCgvXFxzKy8pLnNsaWNlKDAsIDYpLmpvaW4oJyAnKSkuam9pbignIFx1MDBCNyAnKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IG1ha2VFdmVudCgncmV3aW5kJywgeyB0YXJnZXQ6IHRhcmdldC5ldmVudElkLCBtb2RlOiBvcHQua2V5LCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQsIHNraXBwZWQgfSlcbiAgICBwZXJzaXN0KGV2ZW50KVxuICAgIHJlZnMucmV3aW5kVW5kbyA9IHsgcmV3aW5kSWQ6IGV2ZW50LmlkLCBlZGl0czogZWRpdHMuZmlsdGVyKChlKSA9PiByZXZlcnRlZC5pbmNsdWRlcyhlLmNhbGxJZCkpIH1cbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG9wdC5rZXkgIT09ICdjb2RlJykgc2V0SW5wdXQocmVjYWxsVGV4dCh0YXJnZXQpKVxuXG4gICAgY29uc3Qgc2tpcHBlZE5vdGUgPSBza2lwcGVkLmxlbmd0aCA/IGAgXHUwMEI3IHNraXBwZWQgJHtza2lwcGVkLmxlbmd0aH0gZHJpZnRlZGAgOiAnJ1xuICAgIGlmIChvcHQua2V5ID09PSAnY29kZScpIGZsYXNoKGByZXZlcnRlZCAke2VkaXRzTGFiZWx9LCBjb252ZXJzYXRpb24ga2VwdCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ3N1bW1hcnknKSBmbGFzaChgcmV3b3VuZCBhbmQgc3VtbWFyaXplZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ2JvdGgnKSBmbGFzaChgcmV3b3VuZCwgJHtlZGl0c0xhYmVsfSByZXZlcnRlZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBmbGFzaChgcmV3b3VuZCwgZmlsZSBjaGFuZ2VzIGtlcHQgXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBzZXRSZXdpbmRTdGVwKG51bGwpXG4gICAgc2V0UmV3aW5kVGFyZ2V0KG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1bmRvUmV3aW5kKCkge1xuICAgIGNvbnN0IHVuZG8gPSByZWZzLnJld2luZFVuZG9cbiAgICBpZiAoIXVuZG8pIHJldHVyblxuICAgIGNvbnN0IHsgc2tpcHBlZCB9ID0gYXdhaXQgcmVhcHBseUVkaXRzKHVuZG8uZWRpdHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ3Jld2luZF91bmRvJywgeyByZXdpbmRJZDogdW5kby5yZXdpbmRJZCB9KSlcbiAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgcmVEZXJpdmUoKVxuICAgIGZsYXNoKHNraXBwZWQubGVuZ3RoID8gYHJld2luZCB1bmRvbmUgXHUwMEI3ICR7c2tpcHBlZC5sZW5ndGh9IGZpbGUocykgZHJpZnRlZGAgOiAncmV3aW5kIHVuZG9uZScpXG4gIH1cblxuICBmdW5jdGlvbiByZWNhbGxUZXh0KGVudHJ5KSB7XG4gICAgcmV0dXJuIGlucHV0VGV4dEZyb21Db250ZW50KGVudHJ5LmNvbnRlbnQgPz8gZW50cnkudGV4dCwge1xuICAgICAgYXR0YWNobWVudHM6IHJlZnMuYXR0YWNobWVudHMsXG4gICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjb25maXJtRGVsZXRlQ3VycmVudFNlc3Npb24oKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHJlZnMuc2Vzc2lvblxuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNlc3Npb24uZmx1c2goKVxuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihzZXNzaW9uLmZpbGUpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSlcbiAgICAgIGZsYXNoKGBkZWxldGUgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICByZWZzLmFsbEV2ZW50cyA9IFtdXG4gICAgcmVmcy5wZXJzaXN0ZWQgPSAwXG4gICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgIHNldFF1ZXVlZChbXSlcbiAgICBzZXRTZW50KFtdKVxuICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgIHNldEVmZm9ydChkZWZhdWx0RWZmb3J0KCkpXG4gICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSlcbiAgICByZURlcml2ZSgpXG4gICAgZmxhc2goJ3Nlc3Npb24gZGVsZXRlZCcpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IGFueVBhbmVsID0gKCkgPT5cbiAgICBzaG93TW9kZWxQYW5lbCgpIHx8IHNob3dFZmZvcnRQYW5lbCgpIHx8IHNob3dUaGVtZVBhbmVsKCkgfHwgc2hvd0NvbmZpZ1BhbmVsKCkgfHwgc2hvd0RlbGV0ZUNvbmZpcm0oKSB8fCBzaG93TWVtb3J5UGFuZWwoKSB8fCBzaG93SGlzdG9yeVBhbmVsKCkgfHwgc2hvd1Jlc3VtZVBhbmVsKCkgfHwgc2hvd01jcFBhbmVsKCkgfHxcbiAgICBzaG93UHJvamVjdFBhbmVsKCkgfHwgc2hvd1NoZWxsc1BhbmVsKCkgfHwgc2hvd1dha2V1cHNQYW5lbCgpIHx8IHNob3dDb25uZWN0UGFuZWwoKSB8fFxuICAgIGluZm9QYW5lbCgpICE9PSBudWxsIHx8IHJld2luZFN0ZXAoKSAhPT0gbnVsbFxuXG4gIC8vIGV2ZXJ5IGZvY3VzLXRha2luZyBwYW5lbCBkaW1zIHRoZSBjb252ZXJzYXRpb24gYmVoaW5kIGl0OyB0aGUgdGhlbWVcbiAgLy8gcGlja2VyIGlzIHRoZSBvbmUgZXhlbXB0aW9uLCBzaW5jZSBpdHMgam9iIGlzIHByZXZpZXdpbmcgcGFsZXR0ZXMgb25cbiAgLy8gdGhlIHVuZGltbWVkIHVpXG4gIGNvbnN0IGRpbW1pbmdQYW5lbCA9ICgpID0+IGFueVBhbmVsKCkgJiYgIXNob3dUaGVtZVBhbmVsKClcblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBraWxsIFwiJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBgc2hlbGwgJHtzaGVsbC5pZH1gfVwiYClcbiAgICB9XG4gICAgcmVmcy5zaGVsbEtpbGxBcm0gPSBudWxsXG4gICAgYm9vdC5zaGVsbHMua2lsbChzaGVsbC5pZCwgJ3VzZXInKVxuICB9XG5cbiAgY29uc3QgZWZmb3J0QXBwbGllcyA9ICgpID0+ICEhbW9kZWwoKS5lZmZvcnRcblxuICBmdW5jdGlvbiBzZXRTZXNzaW9uRWZmb3J0KG5leHQsIHsgYXNEZWZhdWx0ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ2VmZm9ydCcsIHsgdG86IG5leHQgfSkpXG4gICAgc2V0RWZmb3J0KG5leHQpXG4gICAgaWYgKGFzRGVmYXVsdCkge1xuICAgICAgc2V0RGVmYXVsdEVmZm9ydChuZXh0KVxuICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0RWZmb3J0OiBuZXh0IH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIH1cbiAgICBmbGFzaChgZWZmb3J0OiAke25leHQgPz8gJ2RlZmF1bHQnfSR7YXNEZWZhdWx0ID8gJyBcdTAwQjcgc2F2ZWQgYXMgZGVmYXVsdCcgOiAnJ31gKVxuICB9XG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICdpbnB1dCcgfSlcbiAgZm0uaXRlbSgnZmVlZCcpXG4gIGZtLml0ZW0oJ2lucHV0JylcbiAgdXNlRm9jdXNUcmFwKGFueVBhbmVsKCkgfHwgdmlldygpID09PSAnaGVscCcpXG4gIHVzZVNlbGVjdGlvbih7XG4gICAgb25Db3B5OiAodGV4dCkgPT4gZmxhc2goYGNvcGllZCAke3RleHQubGVuZ3RofSAke3RleHQubGVuZ3RoID09PSAxID8gJ2NoYXJhY3RlcicgOiAnY2hhcmFjdGVycyd9YCksXG4gIH0pXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScgJiYgYnVzeSgpICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpbnRlcnJ1cHQoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdjJykge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAgICAgaWYgKG5vdyAtIHJlZnMucXVpdEF0IDwgMTUwMCkge1xuICAgICAgICBib290LnNoZWxscy5raWxsQWxsKClcbiAgICAgICAgbWNwLnRlcm1pbmF0ZUFsbCgpXG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVmcy5xdWl0QXQgPSBub3dcbiAgICAgICAgY29uc3QgcnVubmluZyA9IGJvb3Quc2hlbGxzLnJ1bm5pbmcoKVxuICAgICAgICBmbGFzaChydW5uaW5nID8gYCR7cnVubmluZ30gJHtydW5uaW5nID09PSAxID8gJ3NoZWxsJyA6ICdzaGVsbHMnfSBydW5uaW5nIFx1MDBCNyBjdHJsK2MgYWdhaW4gdG8gZXhpdCBhbmQga2lsbCAke3J1bm5pbmcgPT09IDEgPyAnaXQnIDogJ3RoZW0nfWAgOiAnY3RybCtjIGFnYWluIHRvIGV4aXQnKVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdvJykge1xuICAgICAgc2V0VmVyYm9zZSgodikgPT4gIXYpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3InICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpZiAoYnVzeSgpKSBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGVsc2UgaWYgKHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubGVuZ3RoID09PSAwKSBmbGFzaCgnbm90aGluZyB0byByZXdpbmQgeWV0JylcbiAgICAgIGVsc2Ugc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBzZXRTaG93UmVzdW1lUGFuZWwodHJ1ZSlcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd0JyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd01vZGVsUGFuZWwodHJ1ZSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIG9wZW5Qcm9qZWN0UGFuZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdiJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaWYgKCFlZmZvcnRBcHBsaWVzKCkpIGZsYXNoKGAke21vZGVsKCkubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBlZmZvcnQgY29udHJvbGApXG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbbnVsbCwgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXVxuICAgICAgICBjb25zdCBuZXh0ID0gb3JkZXJbKG9yZGVyLmluZGV4T2YoZWZmb3J0KCkgPz8gbnVsbCkgKyAxKSAlIG9yZGVyLmxlbmd0aF1cbiAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChuZXh0KVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93SGlzdG9yeVBhbmVsKCkpIHtcbiAgICAgIHN3aXRjaEhpc3RTY29wZSgoaGlzdFNjb3BlKCkgKyAxKSAlIEhJU1RPUllfU0NPUEVTLmxlbmd0aClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd01lbW9yeVBhbmVsKCkpIHtcbiAgICAgIHNldE1lbVNjb3BlKChzKSA9PiAocyArIDEpICUgTUVNT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dSZXN1bWVQYW5lbCgpKSB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJlc3VtZVNjb3BlKCkgKyAxKSAlIFJFU1VNRV9TQ09QRVMubGVuZ3RoXG4gICAgICBzZXRSZXN1bWVTY29wZShuZXh0KVxuICAgICAgcmVmcmVzaFNlc3Npb25zKG5leHQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3onICYmIHJlZnMucmV3aW5kVW5kbyAmJiAhYnVzeSgpICYmIHZpZXcoKSA9PT0gJ2NoYXQnKSB7XG4gICAgICB1bmRvUmV3aW5kKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGZtdEVsYXBzZWQgPSAocykgPT4gKHMgPCA2MCA/IGAke3N9c2AgOiBgJHtNYXRoLmZsb29yKHMgLyA2MCl9bSAke3MgJSA2MH1zYClcbiAgY29uc3QgZWxhcHNlZCA9IGZtdEVsYXBzZWQoYnVzeSgpID8gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCgpKSAvIDEwMDApKSA6IDApXG5cbiAgY29uc3Qgc2xhc2hRdWVyeSA9IGlucHV0KCkuc3RhcnRzV2l0aCgnLycpID8gaW5wdXQoKS5zbGljZSgxKSA6IG51bGxcbiAgY29uc3Qgc2hvd0NvbW1hbmRzID0gc2xhc2hRdWVyeSAhPT0gbnVsbCAmJiAhc2xhc2hRdWVyeS5pbmNsdWRlcygnICcpICYmICFhbnlQYW5lbCgpXG4gIGNvbnN0IG1hdGNoZWRDb21tYW5kcyA9ICFzaG93Q29tbWFuZHNcbiAgICA/IFtdXG4gICAgOiBjbWRDeWNsZSgpXG4gICAgICA/IGNtZEN5Y2xlKCkubWF0Y2hlc1xuICAgICAgOiBhbGxDb21tYW5kcy5maWx0ZXIoKGMpID0+IGMubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2xhc2hRdWVyeS50b0xvd2VyQ2FzZSgpKSlcblxuICBjb25zdCBhdE1hdGNoID0gaW5wdXQoKS5tYXRjaCgvKF58W1xccyhdKUAoW15cXHNAXSopJC8pXG4gIGNvbnN0IHNob3dGaWxlcyA9IGF0TWF0Y2ggIT09IG51bGwgJiYgIXNob3dDb21tYW5kcyAmJiAhZmlsZXNEaXNtaXNzZWQoKSAmJiAhYW55UGFuZWwoKVxuICBpZiAoc2hvd0ZpbGVzKSB7XG4gICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgfSlcbiAgfVxuICBjb25zdCBtYXRjaGVkRmlsZXMgPSBzaG93RmlsZXNcbiAgICA/IGZpbGVMaXN0KClcbiAgICAgICAgLm1hcCgoZikgPT4gW2Z1enp5U2NvcmUoYXRNYXRjaFsyXSwgZiksIGZdKVxuICAgICAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICAgIC5tYXAoKFssIGZdKSA9PiBmKVxuICAgIDogW11cblxuICBmdW5jdGlvbiBwaWNrRmlsZShmKSB7XG4gICAgY29uc3QgdiA9IGlucHV0KClcbiAgICBjb25zdCBhdCA9IHYubGFzdEluZGV4T2YoJ0AnKVxuICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1lZGlhVHlwZUZvcihmKVxuICAgIGNvbnN0IGZ1bGwgPSBqb2luKGJvb3QuY3dkLCBmKVxuICAgIGlmIChtZWRpYVR5cGUgJiYgZXhpc3RzU3luYyhmdWxsKSkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMkeysrcmVmcy5pbWFnZUNvdW50fV1gXG4gICAgICByZWZzLmF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBmdWxsLCBtZWRpYVR5cGUgfSlcbiAgICAgIHNldElucHV0KHYuc2xpY2UoMCwgYXQpICsgcGxhY2Vob2xkZXIgKyAnICcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElucHV0KHYuc2xpY2UoMCwgYXQgKyAxKSArIGYgKyAnICcpXG4gICAgfVxuICAgIHNldEZpbGVJbmRleCgwKVxuICB9XG5cbiAgY29uc3QgY29tcEN0eCA9IGNvbXBsZXRpbmcoKSA/IGNvbXBsZXRpb25Db250ZXh0KHsgdmFsdWU6IGlucHV0KCksIHJlc29sdmU6IGNvbXBsZXRpb25Tb3VyY2UgfSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21wbGV0aW9uID0gISFjb21wQ3R4ICYmIGNvbXBDdHgubWF0Y2hlcy5sZW5ndGggPiAwICYmICFzaG93Q29tbWFuZHMgJiYgIXNob3dGaWxlcyAmJiAhYW55UGFuZWwoKVxuXG4gIGNvbnN0IHJld2luZEVudHJpZXMgPSAoKSA9PiB1c2VyRW50cmllcyhkZXJpdmVkKCkpXG4gIGNvbnN0IHJld2luZE9wdGlvbnMgPSAoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHJld2luZFRhcmdldCgpXG4gICAgaWYgKCF0YXJnZXQpIHJldHVybiBbXVxuICAgIGNvbnN0IHsgbXNncywgZWRpdHMgfSA9IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgdGFyZ2V0LmluZGV4KVxuICAgIGNvbnN0IGUgPSBlZGl0cy5sZW5ndGhcbiAgICBjb25zdCBlZGl0c0xhYmVsID0gYCR7ZX0gJHtlID09PSAxID8gJ2VkaXQnIDogJ2VkaXRzJ31gXG4gICAgY29uc3Qgb3B0cyA9IFtdXG4gICAgaWYgKGUgPiAwKSBvcHRzLnB1c2goeyBrZXk6ICdib3RoJywgbGFiZWw6ICdyZXN0b3JlIGNvZGUgYW5kIGNvbnZlcnNhdGlvbicsIGRlc2M6IGBjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7XG4gICAgICBrZXk6ICdjaGF0JyxcbiAgICAgIGxhYmVsOiBlID4gMCA/ICdyZXN0b3JlIGNvbnZlcnNhdGlvbiBvbmx5JyA6ICdyZXN0b3JlIGNvbnZlcnNhdGlvbicsXG4gICAgICBkZXNjOiBlID4gMCA/ICdjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyBmaWxlIGNoYW5nZXMga2VwdCcgOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZHJvcHMgJHttc2dzfSBlbnRyaWVzYCxcbiAgICB9KVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnY29kZScsIGxhYmVsOiAncmVzdG9yZSBjb2RlIG9ubHknLCBkZXNjOiBgY29udmVyc2F0aW9uIGtlcHQgXHUwMEI3ICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWRgIH0pXG4gICAgb3B0cy5wdXNoKHsga2V5OiAnc3VtbWFyeScsIGxhYmVsOiAncmV3aW5kIGFuZCBrZWVwIGEgc3VtbWFyeScsIGRlc2M6ICdkcm9wcGVkIGVudHJpZXMgY29sbGFwc2UgaW50byBhIG9uZS1saW5lIG5vdGUnIH0pXG4gICAgcmV0dXJuIG9wdHNcbiAgfSkoKVxuXG4gIGNvbnN0IHsgdXNhZ2VBY3RpdmU6IHVzYWdlIH0gPSBkZXJpdmVkKClcbiAgY29uc3QgY29udGV4dFBlcmNlbnQgPSBtb2RlbCgpLmNvbnRleHQgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zID4gMCAmJiBkZXJpdmVkKCkubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWVcbiAgICA/IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgoZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgLyBtb2RlbCgpLmNvbnRleHQpICogMTAwKSlcbiAgICA6IDBcbiAgc2hlbGxzVmVyc2lvbigpXG4gIGNvbnN0IGxpdmVTaGVsbHMgPSBib290LnNoZWxscy5saXN0KCkuZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKVxuICBjb25zdCBwZW5kaW5nV2FrZXVwcyA9IGJvb3Qud2FrZXVwcy5wZW5kaW5nKClcblxuICBpZiAodmlldygpID09PSAnaGVscCcpIHtcbiAgICByZXR1cm4gPEhlbHAgY29tbWFuZHM9e0NPTU1BTkRTfSBvbkNsb3NlPXsoKSA9PiBzZXRWaWV3KCdjaGF0Jyl9IC8+XG4gIH1cblxuICBoaWdobGlnaHRWZXJzaW9uKClcblxuICBjb25zdCB0cmFuc2NyaXB0ID0gZGVyaXZlZCgpLnRyYW5zY3JpcHRcbiAgY29uc3QgaGlkZGVuQ291bnQgPSBNYXRoLm1heCgwLCB0cmFuc2NyaXB0Lmxlbmd0aCAtIGhpc3RXaW5kb3coKSlcbiAgY29uc3QgdmlzaWJsZUl0ZW1zID0gWy4uLnRyYW5zY3JpcHQuc2xpY2UoaGlkZGVuQ291bnQpLCAuLi5vdmVybGF5KCldXG4gIGNvbnN0IGl0ZW1zID0gY29tcGFjdFRvb2xIaXN0b3J5KCkgPyBjb21wYWN0VG9vbFJ1bnModmlzaWJsZUl0ZW1zLCB0dXJuUGhhc2UoKSA9PT0gJ3Rvb2xzJykgOiB2aXNpYmxlSXRlbXNcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnIH19PlxuICAgICAge3RyYW5zY3JpcHQubGVuZ3RoID09PSAwID8gKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIH19PlxuICAgICAgICAgIDxFbXB0eVN0YXRlIHZlcnNpb249e3ZlcnNpb259IGNsb3Vkcz17Y2xvdWRzKCl9IC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKSA6IDxTY3JvbGxCb3hcbiAgICAgICAgc3R5bGU9e3sgZmxleEdyb3c6IDEsIGRpbTogZGltbWluZ1BhbmVsKCkgfX1cbiAgICAgICAgZm9jdXNlZD17Zm0uaXMoJ2ZlZWQnKX1cbiAgICAgICAgc2Nyb2xsT2Zmc2V0PXtmb2xsb3coKSA/IDFlOSA6IG9mZnNldCgpfVxuICAgICAgICBvblNjcm9sbD17KG5leHQsIG1ldGEpID0+IHtcbiAgICAgICAgICBzZXRGb2xsb3coISFtZXRhPy5hdEJvdHRvbSlcbiAgICAgICAgICAvLyBiYWNrIGF0IHRoZSBib3R0b206IGxvYWRlZCBoaXN0b3J5IGlzIG9mZi1zY3JlZW4sIHNvIHJlLWhpZGluZ1xuICAgICAgICAgIC8vIGl0IGlzIGludmlzaWJsZSBhbmQgcmVzdG9yZXMgdGhlIHNtYWxsIHJlbmRlciB3aW5kb3dcbiAgICAgICAgICBpZiAobWV0YT8uYXRCb3R0b20gJiYgaGlzdFdpbmRvdygpID4gSElTVE9SWV9XSU5ET1cpIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgICAgICAgaWYgKG5leHQgPT09IDAgJiYgaGlkZGVuQ291bnQgPiAwKSB7XG4gICAgICAgICAgICAvLyBrZWVwIHRoZSB2aWV3IGFuY2hvcmVkOiBlc3RpbWF0ZSB0aGUgcm93cyB0aGUgbmV3IGJhdGNoIGFkZHNcbiAgICAgICAgICAgIC8vIGFuZCBzY3JvbGwgcGFzdCB0aGVtIHNvIHRoZSBjdXJyZW50IHRvcCBpdGVtIHN0YXlzIGluIHBsYWNlXG4gICAgICAgICAgICBjb25zdCBhZGRlZCA9IE1hdGgubWluKEhJU1RPUllfV0lORE9XLCBoaWRkZW5Db3VudClcbiAgICAgICAgICAgIGNvbnN0IGF2Z1Jvd3MgPSBNYXRoLm1heCgyLCBNYXRoLnJvdW5kKChtZXRhPy5tYXhPZmZzZXQgfHwgMCkgLyBNYXRoLm1heCgxLCBpdGVtcy5sZW5ndGgpKSlcbiAgICAgICAgICAgIHNldEhpc3RXaW5kb3coKHcpID0+IHcgKyBISVNUT1JZX1dJTkRPVylcbiAgICAgICAgICAgIHNldE9mZnNldChhZGRlZCAqIGF2Z1Jvd3MpXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgc2V0T2Zmc2V0KG5leHQpXG4gICAgICAgIH19XG4gICAgICAgIHNjcm9sbGJhclxuICAgICAgPlxuICAgICAgICB7aGlkZGVuQ291bnQgPiAwICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IHBhZGRpbmdYOiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5ULCBpdGFsaWM6IHRydWUgfX0+e2BcdTIzMDMgJHtoaWRkZW5Db3VudC50b0xvY2FsZVN0cmluZygpfSBvbGRlciAke2hpZGRlbkNvdW50ID09PSAxID8gJ21lc3NhZ2UnIDogJ21lc3NhZ2VzJ30gXHUwMEI3IHNjcm9sbCB0byB0b3AgdG8gbG9hZGB9PC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgICB7aXRlbXMubWFwKChpdGVtLCBpKSA9PiA8TWVzc2FnZSBrZXk9e2hpZGRlbkNvdW50ICsgaX0gaXRlbT17aXRlbX0gdmVyYm9zZT17dmVyYm9zZSgpfSAvPil9XG4gICAgICAgIHtzdHJlYW1pbmcoKSAhPT0gbnVsbCAmJiBzdHJlYW1pbmcoKSAhPT0gJycgJiYgKFxuICAgICAgICAgIDxNZXNzYWdlIGtleT1cInN0cmVhbWluZ1wiIGl0ZW09e3sga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IGAke3N0cmVhbWluZygpfVx1MjU4QmAgfX0gLz5cbiAgICAgICAgKX1cbiAgICAgIDwvU2Nyb2xsQm94Pn1cblxuICAgICAge3F1ZXVlZCgpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtxdWV1ZWQoKS5tYXAoKHEsIGkpID0+IChcbiAgICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnXHUyMDNBICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBNVVRFRCB9fT57cS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICB7aSA9PT0gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGRpbTogdHJ1ZSB9fT57JyAgcGVuZGluZyBcdTAwQjcgXHUyMTkxIHRvIGVkaXQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuXG4gICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSwgbWFyZ2luVG9wOiB0cmFuc2NyaXB0Lmxlbmd0aCA9PT0gMCAmJiBjbG91ZHMoKSA/IDAgOiAxLCBkaW06IGRpbW1pbmdQYW5lbCgpIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogZm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCkgPyBhY2NlbnQoKSA6IE1VVEVELCBib2xkOiB0cnVlIH19PnsnXHUyNzZGJ308L3RleHQ+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIHtkZXJpdmVkKCkudGl0bGUgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgcG9zaXRpb246ICdhYnNvbHV0ZScsIHRvcDogMCwgcmlnaHQ6IDAgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBiZzogZm0uaXMoJ2lucHV0JykgJiYgIWFueVBhbmVsKCkgPyBhY2NlbnQoKSA6IE1VVEVELCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke2Rlcml2ZWQoKS50aXRsZX0gYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIDxUZXh0QXJlYVxuICAgICAgICAgIGNvbG9yPXtGR31cbiAgICAgICAgICBsaW5lQ291bnRlclxuICAgICAgICAgIHZhbHVlPXtpbnB1dCgpfVxuICAgICAgICAgIG9uQ2hhbmdlPXsodikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udmVydGVkID0gcGxhY2Vob2xkZXJpemVJbWFnZVBhdGhzKHYsIHtcbiAgICAgICAgICAgICAgYXR0YWNobWVudHM6IHJlZnMuYXR0YWNobWVudHMsXG4gICAgICAgICAgICAgIG5leHRJZDogKCkgPT4gKytyZWZzLmltYWdlQ291bnQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0SW5wdXQoY29udmVydGVkLnRleHQpXG4gICAgICAgICAgICBzZXRDbWRJbmRleCgwKVxuICAgICAgICAgICAgc2V0Q21kQ3ljbGUobnVsbClcbiAgICAgICAgICAgIHNldEZpbGVJbmRleCgwKVxuICAgICAgICAgICAgc2V0SGlzdElkeCgtMSlcbiAgICAgICAgICAgIHNldEZpbGVzRGlzbWlzc2VkKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DYW5jZWw9eygpID0+IHtcbiAgICAgICAgICAgIGlmIChidXN5KCkpIGludGVycnVwdCgpXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0Q21kQ3ljbGUobnVsbClcbiAgICAgICAgICAgICAgc2V0Q29tcGxldGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgc2V0RmlsZXNEaXNtaXNzZWQodHJ1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uU3VibWl0PXtzZW5kfVxuICAgICAgICAgIG9uS2V5RG93bj17KGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3RhYicgJiYgIWUuY3RybCAmJiAhZS5tZXRhICYmIHNob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBwaWNrRmlsZShtYXRjaGVkRmlsZXNbTWF0aC5taW4oZmlsZUluZGV4KCksIG1hdGNoZWRGaWxlcy5sZW5ndGggLSAxKV0pXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd0YWInICYmICFlLmN0cmwgJiYgIWUubWV0YSAmJiBzaG93Q29tbWFuZHMgJiYgbWF0Y2hlZENvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgY3ljbGUgPSBjbWRDeWNsZSgpXG4gICAgICAgICAgICAgIGlmICghY3ljbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGNtZEluZGV4KCksIG1hdGNoZWRDb21tYW5kcy5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIHNldENtZEN5Y2xlKHsgbWF0Y2hlczogbWF0Y2hlZENvbW1hbmRzIH0pXG4gICAgICAgICAgICAgICAgc2V0Q21kSW5kZXgoc3RhcnQpXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoJy8nICsgbWF0Y2hlZENvbW1hbmRzW3N0YXJ0XS5uYW1lKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSAoY21kSW5kZXgoKSArIDEpICUgY3ljbGUubWF0Y2hlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICBzZXRDbWRJbmRleChuZXh0KVxuICAgICAgICAgICAgICAgIHNldElucHV0KCcvJyArIGN5Y2xlLm1hdGNoZXNbbmV4dF0ubmFtZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAncGFzdGUnICYmIGUudGV4dCkge1xuICAgICAgICAgICAgICBjb25zdCBwYXRocyA9IGV4dHJhY3RJbWFnZVBhdGhzKGUudGV4dClcbiAgICAgICAgICAgICAgaWYgKHBhdGhzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZWhvbGRlcnMgPSBwYXRocy5tYXAoKHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gYFtJbWFnZSAjJHsrK3JlZnMuaW1hZ2VDb3VudH1dYFxuICAgICAgICAgICAgICAgICAgcmVmcy5hdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aCwgbWVkaWFUeXBlOiBtZWRpYVR5cGVGb3IocGF0aCkgfSlcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgY29uc3QgYXQgPSBlLmN1cnNvciA/PyBlLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICAgICAgIHNldElucHV0KGUudmFsdWUuc2xpY2UoMCwgYXQpICsgcGxhY2Vob2xkZXJzLmpvaW4oJyAnKSArIGUudmFsdWUuc2xpY2UoYXQpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdiYWNrc3BhY2UnICYmIGUuY3Vyc29yID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGUudmFsdWUuc2xpY2UoMCwgZS5jdXJzb3IpLm1hdGNoKC9cXFtJbWFnZSAjXFxkK1xcXSQvKVxuICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICByZWZzLmF0dGFjaG1lbnRzLmRlbGV0ZShtYXRjaFswXSlcbiAgICAgICAgICAgICAgICBzZXRJbnB1dChlLnZhbHVlLnNsaWNlKDAsIGUuY3Vyc29yIC0gbWF0Y2hbMF0ubGVuZ3RoKSArIGUudmFsdWUuc2xpY2UoZS5jdXJzb3IpKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3RhYicgJiYgIWUuY3RybCAmJiAhZS5tZXRhKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN0eCA9IGNvbXBsZXRpb25Db250ZXh0KHsgdmFsdWU6IGUudmFsdWUsIHJlc29sdmU6IGNvbXBsZXRpb25Tb3VyY2UgfSlcbiAgICAgICAgICAgICAgaWYgKCFjdHgpIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICBpZiAoIWNvbXBsZXRpbmcoKSkge1xuICAgICAgICAgICAgICAgIHNldENvbXBsZXRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgICBzZXRDb21wSW5kZXgoMClcbiAgICAgICAgICAgICAgICBsaXN0RmlsZXMoY3dkKS50aGVuKChmaWxlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGZpbGVzICE9PSBmaWxlTGlzdCgpKSBzZXRGaWxlTGlzdChmaWxlcylcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN0eC5tYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhY2NlcHRDb21wbGV0aW9uKGUudmFsdWUsIGN0eCwgY3R4Lm1hdGNoZXNbTWF0aC5taW4oY29tcEluZGV4KCksIGN0eC5tYXRjaGVzLmxlbmd0aCAtIDEpXSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUuY3RybCB8fCBlLm1ldGEgfHwgc2hvd0NvbW1hbmRzIHx8IHNob3dGaWxlcykgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd1cCcgJiYgZS52YWx1ZSA9PT0gJycgJiYgcXVldWVkKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBzZXRJbnB1dChxdWV1ZWQoKS5qb2luKCdcXG4nKSlcbiAgICAgICAgICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYnJvd3NpbmcgPSBoaXN0SWR4KCkgPj0gMFxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndXAnICYmIChicm93c2luZyB8fCBlLnZhbHVlID09PSAnJykgJiYgaGlzdElkeCgpIDwgc2VudCgpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IGhpc3RJZHgoKSArIDFcbiAgICAgICAgICAgICAgc2V0SGlzdElkeChuKVxuICAgICAgICAgICAgICBzZXRJbnB1dChzZW50KClbc2VudCgpLmxlbmd0aCAtIDEgLSBuXS50ZXh0KVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnZG93bicgJiYgYnJvd3NpbmcpIHtcbiAgICAgICAgICAgICAgY29uc3QgbiA9IGhpc3RJZHgoKSAtIDFcbiAgICAgICAgICAgICAgc2V0SGlzdElkeChuKVxuICAgICAgICAgICAgICBzZXRJbnB1dChuIDwgMCA/ICcnIDogc2VudCgpW3NlbnQoKS5sZW5ndGggLSAxIC0gbl0udGV4dClcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH19XG4gICAgICAgICAgc3VibWl0T25FbnRlclxuICAgICAgICAgIGNsZWFyT25TdWJtaXRcbiAgICAgICAgICBmb2N1c2VkPXtmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKX1cbiAgICAgICAgICBtYXhIZWlnaHQ9ezh9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJBc2sgYW55dGhpbmdcIlxuICAgICAgICAgIGN1cnNvcj17eyBibGluazogdHJ1ZSwgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJyB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG5cbiAgICAgIHtzaG93Q29tbWFuZHMgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHttYXRjaGVkQ29tbWFuZHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1hdGNoaW5nIGNvbW1hbmRzPC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkQ29tbWFuZHN9XG4gICAgICAgICAgICAgIHNlbGVjdGVkPXtjbWRJbmRleCgpfVxuICAgICAgICAgICAgICBvblNlbGVjdD17c2V0Q21kSW5kZXh9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsoYykgPT4gcnVuQ29tbWFuZChjKX1cbiAgICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbW1hbmRzfVxuICAgICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgICBzY3JvbGxvZmY9ezJ9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhjLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57YC8ke2MubmFtZX1gLnBhZEVuZChtYXRjaGVkQ29tbWFuZHMucmVkdWNlKChtLCB4KSA9PiBNYXRoLm1heChtLCB4Lm5hbWUubGVuZ3RoICsgMyksIDEyKSl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/ICcjY2JkNWUxJyA6IEZBSU5UIH19PntjLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RmlsZXMgJiYgbWF0Y2hlZEZpbGVzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17bWF0Y2hlZEZpbGVzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2ZpbGVJbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEZpbGVJbmRleH1cbiAgICAgICAgICAgIG9uU3VibWl0PXtwaWNrRmlsZX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRGaWxlc0Rpc21pc3NlZCh0cnVlKX1cbiAgICAgICAgICAgIGZvY3VzZWQ9e3Nob3dGaWxlc31cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBzY3JvbGxvZmY9ezJ9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsoZiwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Zn08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93Q29tcGxldGlvbiAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtjb21wQ3R4Lm1hdGNoZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17Y29tcEluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0Q29tcEluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhjYW5kaWRhdGUpID0+IGFjY2VwdENvbXBsZXRpb24oaW5wdXQoKSwgY29tcEN0eCwgY2FuZGlkYXRlKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtkaXNtaXNzQ29tcGxldGlvbn1cbiAgICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb21wbGV0aW9ufVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhjYW5kaWRhdGUsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHX1NPRlQgfX0+e2NhbmRpZGF0ZX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TW9kZWxQYW5lbCgpICYmIChcbiAgICAgICAgPE1vZGVsUGFuZWxcbiAgICAgICAgICBtb2RlbHM9e21vZGVsc31cbiAgICAgICAgICBjdXJyZW50PXttb2RlbCgpLm5hbWV9XG4gICAgICAgICAgZGVmYXVsdE5hbWU9e2RlZmF1bHRNb2RlbCgpLm5hbWV9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01vZGVsUGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhtKSA9PiB7XG4gICAgICAgICAgICBpZiAobS5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke20ua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHttLm5hbWV9YClcbiAgICAgICAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IG0ubmFtZSB9KSlcbiAgICAgICAgICAgIHNldE1vZGVsKG0pXG4gICAgICAgICAgICBzZXRTaG93TW9kZWxQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIGZsYXNoKGBtb2RlbCBzZXQgdG8gJHttLm5hbWV9YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUGlja0RlZmF1bHQ9eyhtKSA9PiB7XG4gICAgICAgICAgICBpZiAobS5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke20ua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHttLm5hbWV9YClcbiAgICAgICAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IG0ubmFtZSB9KSlcbiAgICAgICAgICAgIHNldE1vZGVsKG0pXG4gICAgICAgICAgICBzZXREZWZhdWx0TW9kZWwobSlcbiAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgZGVmYXVsdE1vZGVsOiBtLm5hbWUgfSkuY2F0Y2goKCkgPT4ge30pXG4gICAgICAgICAgICBzZXRTaG93TW9kZWxQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIGZsYXNoKGBtb2RlbCBzZXQgdG8gJHttLm5hbWV9IFx1MDBCNyBzYXZlZCBhcyBkZWZhdWx0YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RWZmb3J0UGFuZWwoKSAmJiAoXG4gICAgICAgIDxFZmZvcnRQYW5lbFxuICAgICAgICAgIGxldmVscz17RUZGT1JUX0xFVkVMU31cbiAgICAgICAgICBjdXJyZW50PXtlZmZvcnQoKSA/PyBudWxsfVxuICAgICAgICAgIGRlZmF1bHRMZXZlbD17ZGVmYXVsdEVmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0VmZm9ydFBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsobCkgPT4ge1xuICAgICAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChsLmtleSlcbiAgICAgICAgICAgIHNldFNob3dFZmZvcnRQYW5lbChmYWxzZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUGlja0RlZmF1bHQ9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5LCB7IGFzRGVmYXVsdDogdHJ1ZSB9KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93VGhlbWVQYW5lbCgpICYmIChcbiAgICAgICAgPFRoZW1lUGFuZWxcbiAgICAgICAgICB0aGVtZXM9e3RoZW1lSXRlbXMoKX1cbiAgICAgICAgICBwcmVmPXt0aGVtZVByZWYoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93VGhlbWVQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHQpID0+IHtcbiAgICAgICAgICAgIHNldFNob3dUaGVtZVBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgYXBwbHlUaGVtZVByZWYodC5rZXkpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvblByZXZpZXc9eyh0KSA9PiBwcmV2aWV3UGFsZXR0ZSh0LmtleSl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBwcmV2aWV3UGFsZXR0ZSh0aGVtZVByZWYoKSlcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb25maWdQYW5lbCgpICYmIChcbiAgICAgICAgPENvbmZpZ1BhbmVsXG4gICAgICAgICAgdmFsdWVzPXt7IGNsb3VkczogY2xvdWRzKCksIGNvbXBhY3RUb29sczogY29tcGFjdFRvb2xIaXN0b3J5KCkgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93Q29uZmlnUGFuZWwoKX1cbiAgICAgICAgICBvbkNoYW5nZT17KG5hbWUsIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2Nsb3VkcycpIHtcbiAgICAgICAgICAgICAgc2V0Q2xvdWRzKHZhbHVlKVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGFuaW1hdGlvbjogeyBjbG91ZHM6IHZhbHVlIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldENvbXBhY3RUb29sSGlzdG9yeSh2YWx1ZSlcbiAgICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkaXNwbGF5OiB7IGNvbXBhY3RUb29sSGlzdG9yeTogdmFsdWUgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0NvbmZpZ1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93RGVsZXRlQ29uZmlybSgpICYmIChcbiAgICAgICAgPENvbmZpcm1QYW5lbFxuICAgICAgICAgIHRpdGxlPVwiRGVsZXRlIGN1cnJlbnQgc2Vzc2lvbj9cIlxuICAgICAgICAgIG1lc3NhZ2U9XCJUaGUgY3VycmVudCBjb252ZXJzYXRpb24gYW5kIGl0cyBwZXJzaXN0ZWQgaGlzdG9yeSB3aWxsIGJlIHBlcm1hbmVudGx5IGRlbGV0ZWQuXCJcbiAgICAgICAgICBjb25maXJtTGFiZWw9XCJEZWxldGVcIlxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dEZWxldGVDb25maXJtKCl9XG4gICAgICAgICAgb25Db25maXJtPXtjb25maXJtRGVsZXRlQ3VycmVudFNlc3Npb259XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dIaXN0b3J5UGFuZWwoKSAmJiAoXG4gICAgICAgIDxIaXN0b3J5UGFuZWxcbiAgICAgICAgICBwcm9tcHRzPXtoaXN0UHJvbXB0cygpfVxuICAgICAgICAgIHNjb3Blcz17SElTVE9SWV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17aGlzdFNjb3BlKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0hpc3RvcnlQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHRleHQpID0+IHsgc2V0SW5wdXQodGV4dCk7IHNldFNob3dIaXN0b3J5UGFuZWwoZmFsc2UpIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Jlc3VtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8UmVzdW1lUGFuZWxcbiAgICAgICAgICBzZXNzaW9ucz17cmVzdW1lU2Vzc2lvbnMoKX1cbiAgICAgICAgICBzY29wZXM9e1JFU1VNRV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17cmVzdW1lU2NvcGUoKX1cbiAgICAgICAgICBsb2FkaW5nPXtyZXN1bWVMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Jlc3VtZVBhbmVsKCl9XG4gICAgICAgICAgY3VycmVudElkPXtyZWZzLnNlc3Npb24/LmlkfVxuICAgICAgICAgIG9uUGljaz17KG1ldGEpID0+IHtcbiAgICAgICAgICAgIGlmIChtZXRhLmhlYWRlci5pZCA9PT0gcmVmcy5zZXNzaW9uPy5pZCkgcmV0dXJuIGZsYXNoKCdhbHJlYWR5IGluIHRoaXMgc2Vzc2lvbicpXG4gICAgICAgICAgICByZXN1bWVTZXNzaW9uKG1ldGEpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkRlbGV0ZT17ZGVsZXRlU2Vzc2lvbk1ldGF9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWVtb3J5UGFuZWwoKSAmJiAoXG4gICAgICAgIDxNZW1vcnlQYW5lbFxuICAgICAgICAgIG1lbW9yaWVzPXttZW1vcnlMaXN0KCkuZmlsdGVyKChtKSA9PiBNRU1PUllfU0NPUEVTW21lbVNjb3BlKCldID09PSAnYWxsJyB8fCBtLnNjb3BlID09PSBNRU1PUllfU0NPUEVTW21lbVNjb3BlKCldKX1cbiAgICAgICAgICBzY29wZXM9e01FTU9SWV9TQ09QRVN9XG4gICAgICAgICAgc2NvcGVJbmRleD17bWVtU2NvcGUoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWVtb3J5UGFuZWwoKX1cbiAgICAgICAgICBvbkZvcmdldD17Zm9yZ2V0TWVtb3J5fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dNZW1vcnlQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7aW5mb1BhbmVsKCkgJiYgKFxuICAgICAgICA8SW5mb0xpc3RQYW5lbFxuICAgICAgICAgIHRpdGxlPXtpbmZvUGFuZWwoKS50aXRsZX1cbiAgICAgICAgICByb3dzPXtpbmZvUGFuZWwoKS5yb3dzfVxuICAgICAgICAgIG92ZXJ2aWV3PXtpbmZvUGFuZWwoKS5vdmVydmlld31cbiAgICAgICAgICBmb2N1c2VkPXtpbmZvUGFuZWwoKSAhPT0gbnVsbH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRJbmZvUGFuZWwobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd1Byb2plY3RQYW5lbCgpICYmIChcbiAgICAgICAgPFByb2plY3RQYW5lbFxuICAgICAgICAgIHByb2plY3RzPXtwcm9qZWN0cygpfVxuICAgICAgICAgIGxvYWRpbmc9e3Byb2plY3RzTG9hZGluZygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dQcm9qZWN0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhwKSA9PiByZXN1bWVTZXNzaW9uKHAubGF0ZXN0KX1cbiAgICAgICAgICBvbkRlbGV0ZT17ZGVsZXRlUHJvamVjdH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UHJvamVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93U2hlbGxzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxTaGVsbHNQYW5lbFxuICAgICAgICAgIHZlcnNpb249e3NoZWxsc1ZlcnNpb24oKX1cbiAgICAgICAgICBzaGVsbHM9e2Jvb3Quc2hlbGxzLmxpc3QoKX1cbiAgICAgICAgICByZWFkT3V0cHV0PXsoaWQpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHJldHVybiBib290LnNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogMjAwMCB9KVxuICAgICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93U2hlbGxzUGFuZWwoKX1cbiAgICAgICAgICBvbktpbGw9e2tpbGxTaGVsbH1cbiAgICAgICAgICBvbkRpc21pc3M9eyhzKSA9PiBib290LnNoZWxscy5kaXNtaXNzKHMuaWQpfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dTaGVsbHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0Nvbm5lY3RQYW5lbCgpICYmIChcbiAgICAgICAgPENvbm5lY3RQYW5lbFxuICAgICAgICAgIHByb3ZpZGVycz17YXV0aFByb3ZpZGVycygpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25uZWN0UGFuZWwoKX1cbiAgICAgICAgICBvbkNvbm5lY3Q9e2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkRpc2Nvbm5lY3Q9e2Rpc2Nvbm5lY3RQcm92aWRlcn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29ubmVjdFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93V2FrZXVwc1BhbmVsKCkgJiYgKFxuICAgICAgICA8V2FrZXVwc1BhbmVsXG4gICAgICAgICAgd2FrZXVwcz17KHNoZWxsc1ZlcnNpb24oKSwgYm9vdC53YWtldXBzLmxpc3QoKSl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1dha2V1cHNQYW5lbCgpfVxuICAgICAgICAgIG9uQ2FuY2VsPXsodykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXJtZWQgPSByZWZzLndha2V1cENhbmNlbEFybVxuICAgICAgICAgICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5pZCAhPT0gdy5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICAgICAgICAgIHJlZnMud2FrZXVwQ2FuY2VsQXJtID0geyBpZDogdy5pZCwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgICAgICAgICByZXR1cm4gZmxhc2goYGFnYWluIHRvIGNhbmNlbCB3YWtlLXVwICR7dy5pZH0gKCR7dy5ub3RlLnNwbGl0KCdcXG4nKVswXS5zbGljZSgwLCA0MCl9KWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZzLndha2V1cENhbmNlbEFybSA9IG51bGxcbiAgICAgICAgICAgIGJvb3Qud2FrZXVwcy5jYW5jZWwody5pZClcbiAgICAgICAgICAgIGZsYXNoKGBjYW5jZWxsZWQgd2FrZS11cCAke3cuaWR9YClcbiAgICAgICAgICAgIG5vdGVTeXN0ZW0oXG4gICAgICAgICAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgY2FuY2VsbGVkIHNjaGVkdWxlZCB3YWtlLXVwICR7dy5pZH0gKG5vdGUgd2FzOiAke3cubm90ZS5yZXBsYWNlKC9cXG4vZywgJyAnKX0pLiBUaGlzIHdhcyBkZWxpYmVyYXRlOyBkbyBub3QgcmVzY2hlZHVsZSBpdCB1bmxlc3MgYXNrZWQuYCxcbiAgICAgICAgICAgICAgeyB3YWtlOiBmYWxzZSB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1dha2V1cHNQYW5lbChmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd01jcFBhbmVsKCkgJiYgKFxuICAgICAgICA8TWNwUGFuZWxcbiAgICAgICAgICBzZXJ2ZXJzPXttY3BTZXJ2ZXJzKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd01jcFBhbmVsKCl9XG4gICAgICAgICAgb25Ub2dnbGU9eyhuYW1lKSA9PiBtY3AudG9nZ2xlKG5hbWUpfVxuICAgICAgICAgIG9uUmVjb25uZWN0PXsobmFtZSkgPT4gbWNwLnJlY29ubmVjdChuYW1lKX1cbiAgICAgICAgICBvblJlbW92ZT17KG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFybWVkID0gcmVmcy5tY3BSZW1vdmVBcm1cbiAgICAgICAgICAgIGlmICghYXJtZWQgfHwgYXJtZWQubmFtZSAhPT0gbmFtZSB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICAgICAgICAgIHJlZnMubWNwUmVtb3ZlQXJtID0geyBuYW1lLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICAgICAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIHJlbW92ZSBcIiR7bmFtZX1cIiBhbmQgaXRzIGNvbmZpZ2ApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWZzLm1jcFJlbW92ZUFybSA9IG51bGxcbiAgICAgICAgICAgIG1jcC5yZW1vdmUobmFtZSlcbiAgICAgICAgICAgIGZsYXNoKGByZW1vdmVkIG1jcCBzZXJ2ZXIgJHtuYW1lfWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkFkZD17KG5hbWUsIGNvbW1hbmQsIHNjb3BlKSA9PiB7XG4gICAgICAgICAgICBtY3AuYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlKVxuICAgICAgICAgICAgZmxhc2goYGFkZGVkICR7bmFtZX0gKCR7c2NvcGV9KWApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkVkaXQ9eyhuYW1lLCBjb21tYW5kKSA9PiB7XG4gICAgICAgICAgICBtY3AudXBkYXRlKG5hbWUsIGNvbW1hbmQpXG4gICAgICAgICAgICBmbGFzaChgdXBkYXRlZCAke25hbWV9YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSW52YWxpZD17Zmxhc2h9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01jcFBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtyZXdpbmRTdGVwKCkgPT09ICdwaWNrJyAmJiAoXG4gICAgICAgIDxSZXdpbmRQaWNrUGFuZWxcbiAgICAgICAgICBlbnRyaWVzPXtbLi4ucmV3aW5kRW50cmllcygpXS5yZXZlcnNlKCl9XG4gICAgICAgICAgc3RhdHM9eyhpbmRleCkgPT4gcmV3aW5kU3RhdHMoZGVyaXZlZCgpLCBpbmRleCl9XG4gICAgICAgICAgZm9jdXNlZD17cmV3aW5kU3RlcCgpID09PSAncGljayd9XG4gICAgICAgICAgb25QaWNrPXsoZW50cnkpID0+IHsgc2V0UmV3aW5kVGFyZ2V0KGVudHJ5KTsgc2V0UmV3aW5kU3RlcCgnYWN0aW9uJykgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRSZXdpbmRTdGVwKG51bGwpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Jld2luZFN0ZXAoKSA9PT0gJ2FjdGlvbicgJiYgcmV3aW5kVGFyZ2V0KCkgJiYgKFxuICAgICAgICA8UmV3aW5kQWN0aW9uUGFuZWxcbiAgICAgICAgICB0YXJnZXQ9e3Jld2luZFRhcmdldCgpfVxuICAgICAgICAgIG9wdGlvbnM9e3Jld2luZE9wdGlvbnN9XG4gICAgICAgICAgZm9jdXNlZD17cmV3aW5kU3RlcCgpID09PSAnYWN0aW9uJ31cbiAgICAgICAgICBvblN1Ym1pdD17cGVyZm9ybVJld2luZH1cbiAgICAgICAgICBvbkJhY2s9eygpID0+IHNldFJld2luZFN0ZXAoJ3BpY2snKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtsaXZlU2hlbGxzLmxlbmd0aCA+IDAgJiYgIXNob3dTaGVsbHNQYW5lbCgpICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICB7bGl2ZVNoZWxscy5zbGljZSgwLCBTSEVMTF9TVFJJUF9NQVgpLm1hcCgocykgPT4gKFxuICAgICAgICAgICAgPGJveCBrZXk9e3MuaWR9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+eydcdTI2OTkgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7cy5pZH0gXHUwMEI3IGB9PC90ZXh0PlxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19PntzLmRlc2NyaXB0aW9uIHx8IHMuY29tbWFuZC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AgICR7RGF0ZS5ub3coKSAtIHMuc3RhcnRlZEF0IDwgNjAwMDAgPyAnPDFtJyA6IHRpbWVBZ28ocy5zdGFydGVkQXQpLnJlcGxhY2UoJyBhZ28nLCAnJyl9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PlxuICAgICAgICAgICAgICB7YCAgJHtsaXZlU2hlbGxzLmxlbmd0aCA+IFNIRUxMX1NUUklQX01BWCA/IGArJHtsaXZlU2hlbGxzLmxlbmd0aCAtIFNIRUxMX1NUUklQX01BWH0gbW9yZSBcdTAwQjcgYCA6ICcnfS9zaGVsbHNgfVxuICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIHBhZGRpbmdYOiAyLCBnYXA6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge2J1c3koKVxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPFNoaW1tZXIgY29sb3I9e2FjY2VudCgpfSBoaWdobGlnaHQ9e0hJR0hMSUdIVH0gZHVyYXRpb249ezE1MDB9IHJldmVyc2U+XG4gICAgICAgICAgICAgICAge2NvbXBhY3RpbmcoKVxuICAgICAgICAgICAgICAgICAgPyBjb21wYWN0U3RhdHVzKCk/LnBoYXNlID09PSAnd3JpdGluZycgPyBgQ29tcGFjdGluZyBcdTAwQjcgd3JpdGluZyAke2NvbXBhY3RTdGF0dXMoKS5zZWN0aW9ufS84YCA6ICdDb21wYWN0aW5nIFx1MDBCNyBhbmFseXppbmcnXG4gICAgICAgICAgICAgICAgICA6IHR1cm5QaGFzZSgpID09PSAndGhpbmtpbmcnID8gJ1RoaW5raW5nJyA6ICdSZXNwb25kaW5nJ31cbiAgICAgICAgICAgICAgPC9TaGltbWVyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgKCR7ZWxhcHNlZH0ke2NvbXBhY3RTdGF0dXMoKSA/IGAgXHUwMEI3IFx1MjE5MyAke2ZtdFRva2VucyhNYXRoLnJvdW5kKGNvbXBhY3RTdGF0dXMoKS5jaGFycyAvIDQpKX0gdG9rZW5zYCA6ICcnfSkgXHUwMEI3IGVzYyB0byBpbnRlcnJ1cHRgfTwvdGV4dD5cbiAgICAgICAgICAgICAge2NvbXBhY3RTdGF0dXMoKT8ucGhhc2UgPT09ICd3cml0aW5nJyAmJiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWFyZ2luTGVmdDogMSwgd2lkdGg6IDE2IH19PlxuICAgICAgICAgICAgICAgICAgPFByb2dyZXNzQmFyIHZhcmlhbnQ9XCJ0aGluXCIgdmFsdWU9e2NvbXBhY3RTdGF0dXMoKS5zZWN0aW9uIC8gOH0gd2lkdGg9ezE2fSBwZXJjZW50YWdlPXtmYWxzZX0gY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKVxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Ym9vdC5kaXNwbGF5Q3dkfTwvdGV4dD59XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAge3Byb2Nlc3MuZW52LlBJQ09fUEVSRiAmJiAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXRzID0gdXNlRnJhbWVTdGF0cygpXG4gICAgICAgICAgcmV0dXJuIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMSAkeyhzdGF0cy5yZW5kZXJNcyA/PyAwKS50b0ZpeGVkKDEpfW1zIFx1MDBCNyAke3N0YXRzLmZwc31mcHMgXHUwMEI3ICR7ZGVyaXZlZCgpLnRyYW5zY3JpcHQubGVuZ3RofSBpdGVtc2B9PC90ZXh0PlxuICAgICAgICB9KSgpfVxuICAgICAgICB7cGVuZGluZ1dha2V1cHMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MjNGMCAke3BlbmRpbmdXYWtldXBzfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnttb2RlbCgpLm5hbWV9PC90ZXh0PlxuICAgICAgICB7ZWZmb3J0QXBwbGllcygpICYmIGVmZm9ydCgpICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YFx1MDBCNyAke2VmZm9ydCgpfWB9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Plx1MjE5MTwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17dXNhZ2UucHJvbXB0VG9rZW5zfSBjb2xvcj17TVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17Y29tcGFjdE51bWJlcn0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+IGluPC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Plx1MjE5MzwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17dXNhZ2UuY29tcGxldGlvblRva2Vuc30gY29sb3I9e01VVEVEfSBoaWdobGlnaHQ9e2FjY2VudCgpfSBmb3JtYXQ9e2NvbXBhY3ROdW1iZXJ9IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PiBvdXQ8L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dXNhZ2UudGhvdWdodFRva2VucyA+IDAgJiYgPEFuaW1hdGVkVmFsdWUgdmFsdWU9e3VzYWdlLnRob3VnaHRUb2tlbnN9IGNvbG9yPXtNVVRFRH0gaGlnaGxpZ2h0PXthY2NlbnQoKX0gZm9ybWF0PXsobikgPT4gYFx1MjcyNiAke01hdGgucm91bmQobikudG9Mb2NhbGVTdHJpbmcoKX0gdGhpbmtgfSAvPn1cbiAgICAgICAge2NvbnRleHRQZXJjZW50ID4gMCAmJiA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17Y29udGV4dFBlcmNlbnR9IGNvbG9yPXtjb250ZXh0UGVyY2VudCA+PSA4MCA/IFJFRCA6IE1VVEVEfSBoaWdobGlnaHQ9e2FjY2VudCgpfSBmb3JtYXQ9eyhuKSA9PiBgY3R4ICR7TWF0aC5yb3VuZChuKX0lYH0gLz59XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciwgcHJvamVjdEhpc3RvcnlGaWxlLCBlbnN1cmVEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5jb25zdCBNQVhfUFJPTVBUU19QRVJfU0NPUEUgPSAxMDAwXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBlbmRQcm9tcHQocm9vdCwgdGV4dCkge1xuICBlbnN1cmVEaXIocHJvamVjdERpcihyb290KSlcbiAgYXdhaXQgYXBwZW5kRmlsZShwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCksIEpTT04uc3RyaW5naWZ5KHsgdGV4dCwgYXQ6IERhdGUubm93KCkgfSkgKyAnXFxuJylcbn1cblxuZnVuY3Rpb24gcGFyc2VQcm9tcHRMaW5lcyh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0XG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBsaW5lLnRyaW0oKSA/IEpTT04ucGFyc2UobGluZSkgOiBudWxsXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFByb21wdHMoZmlsZSwgc2NvcGUpIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBlbnRyaWVzID0gcGFyc2VQcm9tcHRMaW5lcyhhd2FpdCByZWFkRmlsZShmaWxlLCAndXRmLTgnKSlcbiAgICByZXR1cm4gZW50cmllc1xuICAgICAgLmZpbHRlcigoZSkgPT4gdHlwZW9mIGUudGV4dCA9PT0gJ3N0cmluZycgJiYgZS50ZXh0LnRyaW0oKSlcbiAgICAgIC5zbGljZSgtTUFYX1BST01QVFNfUEVSX1NDT1BFKVxuICAgICAgLm1hcCgoZSkgPT4gKHsgdGV4dDogZS50ZXh0LCBhdDogZS5hdCB8fCAwLCBzY29wZSB9KSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRQcm9qZWN0UHJvbXB0cyhyb290KSB7XG4gIHJldHVybiByZWFkUHJvbXB0cyhwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCksICdwcm9qZWN0Jylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRHbG9iYWxQcm9tcHRzKCkge1xuICBjb25zdCBwcm9qZWN0c0RpciA9IGpvaW4ocGljb0hvbWUoKSwgJ3Byb2plY3RzJylcbiAgbGV0IHByb2plY3RzID0gW11cbiAgdHJ5IHtcbiAgICBwcm9qZWN0cyA9IGF3YWl0IHJlYWRkaXIocHJvamVjdHNEaXIpXG4gIH0gY2F0Y2gge31cbiAgY29uc3QgbmVzdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJvamVjdHMubWFwKChwKSA9PiByZWFkUHJvbXB0cyhqb2luKHByb2plY3RzRGlyLCBwLCAnaGlzdG9yeS5qc29ubCcpLCAnZXZlcnl3aGVyZScpKSxcbiAgKVxuICByZXR1cm4gbmVzdGVkLmZsYXQoKS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdCkuc2xpY2UoMCwgTUFYX1BST01QVFNfUEVSX1NDT1BFKVxufVxuIiwgImltcG9ydCB7IHJlYWRkaXIsIHN0YXQgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCdcbmltcG9ydCB7IHBpY29Ib21lIH0gZnJvbSAnLi9wYXRocy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbFRvb2xzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAndG9vbHMnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdFRvb2xzRGlyKHJvb3QpIHtcbiAgcmV0dXJuIGpvaW4ocm9vdCwgJy5waWNvJywgJ3Rvb2xzJylcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGUodG9vbCwgZmlsZSkge1xuICBpZiAoIXRvb2wgfHwgdHlwZW9mIHRvb2wgIT09ICdvYmplY3QnKSB0aHJvdyBuZXcgRXJyb3IoJ2RlZmF1bHQgZXhwb3J0IGlzIG5vdCBhIHRvb2wgb2JqZWN0JylcbiAgaWYgKHR5cGVvZiB0b29sLm5hbWUgIT09ICdzdHJpbmcnIHx8ICF0b29sLm5hbWUpIHRocm93IG5ldyBFcnJvcigndG9vbC5uYW1lIG11c3QgYmUgYSBzdHJpbmcnKVxuICBpZiAodHlwZW9mIHRvb2wuZGVzY3JpcHRpb24gIT09ICdzdHJpbmcnKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZGVzY3JpcHRpb24gbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5leGVjdXRlICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wuZXhlY3V0ZSBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICBpZiAoIXRvb2wuc2NoZW1hIHx8IHR5cGVvZiB0b29sLnNjaGVtYSAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcigndG9vbC5zY2hlbWEgbXVzdCBiZSBhbiBvYmplY3QnKVxuICByZXR1cm4geyAuLi50b29sLCBfZmlsZTogZmlsZSB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRUb29sKGZpbGUsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBtdGltZU1zIH0gPSBhd2FpdCBzdGF0KGZpbGUpXG4gIGNvbnN0IG1vZHVsZSA9IGF3YWl0IGltcG9ydChgJHtwYXRoVG9GaWxlVVJMKGZpbGUpLmhyZWZ9P3Y9JHttdGltZU1zfWApXG4gIGNvbnN0IGV4cG9ydGVkID0gbW9kdWxlLmRlZmF1bHRcbiAgY29uc3QgdG9vbCA9IHR5cGVvZiBleHBvcnRlZCA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IGV4cG9ydGVkKGNvbnRleHQpIDogZXhwb3J0ZWRcbiAgcmV0dXJuIHZhbGlkYXRlKHRvb2wsIGZpbGUpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBjb250ZXh0LCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4geyB0b29sczogW10sIGVycm9yczogW10gfVxuICB9XG4gIGNvbnN0IHRvb2xzID0gW11cbiAgY29uc3QgZXJyb3JzID0gW11cbiAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgaWYgKCFuYW1lLmVuZHNXaXRoKCcuanMnKSAmJiAhbmFtZS5lbmRzV2l0aCgnLm1qcycpKSBjb250aW51ZVxuICAgIGNvbnN0IGZpbGUgPSBqb2luKGRpciwgbmFtZSlcbiAgICB0cnkge1xuICAgICAgdG9vbHMucHVzaCh7IC4uLihhd2FpdCBsb2FkVG9vbChmaWxlLCBjb250ZXh0KSksIHNvdXJjZSB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyb3JzLnB1c2goeyBmaWxlLCBlcnJvcjogU3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMjAwKSB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyB0b29scywgZXJyb3JzIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3QgfSkge1xuICBjb25zdCBjb250ZXh0ID0geyBjd2QsIHJvb3QgfVxuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbFRvb2xzRGlyKCksIGNvbnRleHQsICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0VG9vbHNEaXIocm9vdCksIGNvbnRleHQsICdwcm9qZWN0JylcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgdG9vbCBvZiBbLi4uZ2xvYmFsLnRvb2xzLCAuLi5wcm9qZWN0LnRvb2xzXSkgYnlOYW1lLnNldCh0b29sLm5hbWUsIHRvb2wpXG4gIHJldHVybiB7IHRvb2xzOiBbLi4uYnlOYW1lLnZhbHVlcygpXSwgZXJyb3JzOiBbLi4uZ2xvYmFsLmVycm9ycywgLi4ucHJvamVjdC5lcnJvcnNdIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcblxuYXN5bmMgZnVuY3Rpb24gcmVhZEN1cnJlbnQocGF0aCkge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCByZWFkRmlsZShwYXRoLCAndXRmLTgnKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXZlcnRFZGl0cyhlZGl0cykge1xuICBjb25zdCByZXZlcnRlZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgWy4uLmVkaXRzXS5yZXZlcnNlKCkpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGFmdGVyKSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUocGF0aCwgYmVmb3JlLCAndXRmLTgnKVxuICAgICAgcmV2ZXJ0ZWQucHVzaChlZGl0LmNhbGxJZClcbiAgICB9IGVsc2Uge1xuICAgICAgc2tpcHBlZC5wdXNoKHsgcGF0aCwgY2FsbElkOiBlZGl0LmNhbGxJZCwgcmVhc29uOiAnZmlsZSBjaGFuZ2VkIHNpbmNlIGVkaXQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJldmVydGVkLCBza2lwcGVkIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYXBwbHlFZGl0cyhlZGl0cykge1xuICBjb25zdCByZWFwcGxpZWQgPSBbXVxuICBjb25zdCBza2lwcGVkID0gW11cbiAgZm9yIChjb25zdCBlZGl0IG9mIGVkaXRzKSB7XG4gICAgY29uc3QgeyBwYXRoLCBiZWZvcmUsIGFmdGVyIH0gPSBlZGl0LnJldmVydFxuICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCByZWFkQ3VycmVudChwYXRoKVxuICAgIGlmIChjdXJyZW50ID09PSBiZWZvcmUpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBhZnRlciwgJ3V0Zi04JylcbiAgICAgIHJlYXBwbGllZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgcmV2ZXJ0JyB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4geyByZWFwcGxpZWQsIHNraXBwZWQgfVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiB0cmFuc2NyaXB0VG9NYXJrZG93bih0cmFuc2NyaXB0LCB7IHRpdGxlID0gJ3BpY28gc2Vzc2lvbicgfSA9IHt9KSB7XG4gIGNvbnN0IHBhcnRzID0gW2AjICR7dGl0bGV9YCwgJyddXG4gIGZvciAoY29uc3QgaXRlbSBvZiB0cmFuc2NyaXB0KSB7XG4gICAgaWYgKGl0ZW0ua2luZCA9PT0gJ3VzZXInKSB7XG4gICAgICBwYXJ0cy5wdXNoKCcjIyBZb3UnLCAnJywgaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgIHBhcnRzLnB1c2goaXRlbS5pbnRlcnJ1cHRlZCA/IGAke2l0ZW0udGV4dH1cXG5cXG4qKGludGVycnVwdGVkKSpgIDogaXRlbS50ZXh0LCAnJylcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgICBjb25zdCBsYWJlbCA9IGl0ZW0uZGlmZiA/IGAgKCske2l0ZW0uZGlmZi5hZGRpdGlvbnN9IC0ke2l0ZW0uZGlmZi5kZWxldGlvbnN9KWAgOiAnJ1xuICAgICAgcGFydHMucHVzaChgPiAke2l0ZW0uc3RhdHVzID09PSAncmV2ZXJ0ZWQnID8gJ1x1MjFBOScgOiAnXHUyNzEzJ30gXFxgJHtpdGVtLm5hbWV9XFxgICR7aXRlbS50aXRsZX0ke2xhYmVsfWAsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnc3VtbWFyeScpIHtcbiAgICAgIHBhcnRzLnB1c2goYD4gc3VtbWFyeTogJHtpdGVtLnRleHR9YCwgJycpXG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZSwgcmVzb2x2ZSB9KSB7XG4gIGlmICh2YWx1ZS5pbmNsdWRlcygnXFxuJykpIHJldHVybiBudWxsXG4gIGNvbnN0IG0gPSB2YWx1ZS5tYXRjaCgvXlxcLyhcXFMrKSAoLiopJC8pXG4gIGlmICghbSkgcmV0dXJuIG51bGxcbiAgY29uc3Qgc291cmNlID0gcmVzb2x2ZShtWzFdLnRvTG93ZXJDYXNlKCkpXG4gIGlmICghc291cmNlIHx8IHNvdXJjZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsXG4gIGNvbnN0IHRva2VucyA9IG1bMl0uc3BsaXQoJyAnKVxuICBjb25zdCBwYXJ0aWFsID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXVxuICBjb25zdCBtYXRjaGVzID0gc291cmNlXG4gICAgLm1hcCgocykgPT4gW2Z1enp5U2NvcmUocGFydGlhbCwgcyksIHNdKVxuICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgLnNvcnQoKGEsIGIpID0+IGJbMF0gLSBhWzBdKVxuICAgIC5tYXAoKFssIHNdKSA9PiBzKVxuICByZXR1cm4geyBwYXJ0aWFsLCBtYXRjaGVzLCBzdGFydDogdmFsdWUubGVuZ3RoIC0gcGFydGlhbC5sZW5ndGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgY3R4LnN0YXJ0KSArIGNhbmRpZGF0ZSArICcgJ1xufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX0ZJTEVTID0gNTAwMFxuY29uc3QgVFRMID0gNTAwMFxuXG5sZXQgY2FjaGVkID0geyBhdDogMCwgY3dkOiBudWxsLCBmaWxlczogW10gfVxuXG5mdW5jdGlvbiByaXBncmVwRmlsZXMoY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgJyEqKi8uZ2l0LyoqJywgJy0tc29ydHI9bW9kaWZpZWQnXVxuICAgIGV4ZWNGaWxlKCdyZycsIGFyZ3MsIHsgY3dkLCBtYXhCdWZmZXI6IDUwICogMTAyNCAqIDEwMjQgfSwgKGVyciwgc3Rkb3V0KSA9PiB7XG4gICAgICByZXNvbHZlKGVyciAmJiAhc3Rkb3V0ID8gbnVsbCA6IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsaXN0RmlsZXMoY3dkKSB7XG4gIGlmIChjYWNoZWQuY3dkID09PSBjd2QgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIGNhY2hlZC5maWxlc1xuICBsZXQgZmlsZXMgPSBhd2FpdCByaXBncmVwRmlsZXMoY3dkKVxuICBpZiAoIWZpbGVzKSB7XG4gICAgZmlsZXMgPSBhd2FpdCBmZygnKiovKicsIHtcbiAgICAgIGN3ZCxcbiAgICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICAgIGRvdDogdHJ1ZSxcbiAgICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovLmdpdC8qKiddLFxuICAgIH0pLmNhdGNoKCgpID0+IFtdKVxuICB9XG4gIGNhY2hlZCA9IHsgYXQ6IERhdGUubm93KCksIGN3ZCwgZmlsZXM6IGZpbGVzLnNsaWNlKDAsIE1BWF9GSUxFUykgfVxuICByZXR1cm4gY2FjaGVkLmZpbGVzXG59XG4iLCAiaW1wb3J0IHsgY29kZVRvQU5TSSB9IGZyb20gJ0BzaGlraWpzL2NsaSdcbmltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IHNoaWtpVGhlbWUgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBMQU5HUyA9IHtcbiAganM6ICdqcycsIG1qczogJ2pzJywgY2pzOiAnanMnLCBqc3g6ICdqc3gnLCB0czogJ3RzJywgdHN4OiAndHN4JyxcbiAganNvbjogJ2pzb24nLCBqc29ubDogJ2pzb24nLCBtZDogJ21kJywgcHk6ICdweXRob24nLCByYjogJ3J1YnknLCBnbzogJ2dvJyxcbiAgcnM6ICdydXN0JywgYzogJ2MnLCBoOiAnYycsIGNwcDogJ2NwcCcsIGphdmE6ICdqYXZhJywgY3NzOiAnY3NzJyxcbiAgaHRtbDogJ2h0bWwnLCB2dWU6ICd2dWUnLCBzaDogJ2Jhc2gnLCBiYXNoOiAnYmFzaCcsIHpzaDogJ2Jhc2gnLFxuICB5bWw6ICd5YW1sJywgeWFtbDogJ3lhbWwnLCB0b21sOiAndG9tbCcsIHNxbDogJ3NxbCcsIHN2ZWx0ZTogJ3N2ZWx0ZScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYW5nRm9yUGF0aChwYXRoKSB7XG4gIGNvbnN0IGV4dCA9IFN0cmluZyhwYXRoKS5zcGxpdCgnLicpLnBvcCgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIExBTkdTW2V4dF0gfHwgJ3R4dCdcbn1cblxuY29uc3QgY2FjaGUgPSBuZXcgTWFwKClcbmNvbnN0IHBlbmRpbmcgPSBuZXcgU2V0KClcbmNvbnN0IGZhaWxlZCA9IG5ldyBTZXQoKVxuY29uc3QgW3ZlcnNpb24sIHNldFZlcnNpb25dID0gY3JlYXRlU2lnbmFsKDApXG5cbmV4cG9ydCBjb25zdCBoaWdobGlnaHRWZXJzaW9uID0gdmVyc2lvblxuXG5leHBvcnQgZnVuY3Rpb24gaGlnaGxpZ2h0KGNvZGUsIGxhbmcpIHtcbiAgY29uc3Qgc2FmZUxhbmcgPSBsYW5nICYmICFmYWlsZWQuaGFzKGxhbmcpID8gbGFuZyA6ICd0eHQnXG4gIGNvbnN0IHRoZW1lID0gc2hpa2lUaGVtZSgpXG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IGAke3RoZW1lfVxcbiR7c2FmZUxhbmd9XFxuJHtsaW5lfWBcbiAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkgcmV0dXJuIGNhY2hlLmdldChrZXkpXG4gICAgICB3YXJtKGxpbmUsIHNhZmVMYW5nLCB0aGVtZSwga2V5KVxuICAgICAgcmV0dXJuIGxpbmVcbiAgICB9KVxuICAgIC5qb2luKCdcXG4nKVxufVxuXG5mdW5jdGlvbiB3YXJtKGxpbmUsIGxhbmcsIHRoZW1lLCBrZXkpIHtcbiAgaWYgKHBlbmRpbmcuaGFzKGtleSkpIHJldHVyblxuICBwZW5kaW5nLmFkZChrZXkpXG4gIGNvZGVUb0FOU0kobGluZSwgbGFuZywgdGhlbWUpXG4gICAgLnRoZW4oKGFuc2kpID0+IGNhY2hlLnNldChrZXksIGFuc2kucmVwbGFjZSgvXFxuJC8sICcnKSkpXG4gICAgLmNhdGNoKCgpID0+IHtcbiAgICAgIGZhaWxlZC5hZGQobGFuZylcbiAgICAgIGNhY2hlLnNldChrZXksIGxpbmUpXG4gICAgfSlcbiAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICBwZW5kaW5nLmRlbGV0ZShrZXkpXG4gICAgICBzZXRWZXJzaW9uKCh2KSA9PiB2ICsgMSlcbiAgICB9KVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcblxuY29uc3QgUEFMRVRURVMgPSB7XG4gIGRhcms6IHtcbiAgICBkZXNjOiAnbGlnaHQgdGV4dCBmb3IgZGFyayB0ZXJtaW5hbHMnLFxuICAgIGFjY2VudDogJyMyMmQzZWUnLFxuICAgIGZnOiAnI2U1ZTdlYicsXG4gICAgZmdTb2Z0OiAnIzljYTNhZicsXG4gICAgbXV0ZWQ6ICcjNmI3MjgwJyxcbiAgICBmYWludDogJyM0YjU1NjMnLFxuICAgIHBhbmVsQmc6ICcjMWUxZTIyJyxcbiAgICBzZWxlY3RCZzogJyMzNzQxNTEnLFxuICAgIHJlZDogJyNmODcxNzEnLFxuICAgIGhpZ2hsaWdodDogJyNmZmZmZmYnLFxuICAgIHNoaWtpOiAnbm9yZCcsXG4gIH0sXG4gIGxpZ2h0OiB7XG4gICAgZGVzYzogJ2RhcmsgdGV4dCBmb3IgbGlnaHQgdGVybWluYWxzJyxcbiAgICBhY2NlbnQ6ICcjMGY5ZDYzJyxcbiAgICBmZzogJyMxZjI0MzAnLFxuICAgIGZnU29mdDogJyM0YjU1NjMnLFxuICAgIG11dGVkOiAnIzZiNzI4MCcsXG4gICAgZmFpbnQ6ICcjYTNhOGIzJyxcbiAgICBwYW5lbEJnOiAnI2U5ZTllZScsXG4gICAgc2VsZWN0Qmc6ICcjZDRkNGRjJyxcbiAgICByZWQ6ICcjZGMyNjI2JyxcbiAgICBoaWdobGlnaHQ6ICcjMTExODI3JyxcbiAgICBzaGlraTogJ2dpdGh1Yi1saWdodCcsXG4gIH0sXG4gIG5vcmQ6IHtcbiAgICBkZXNjOiAnYXJjdGljIGJsdWVzIG9uIHBvbGFyIG5pZ2h0JyxcbiAgICBhY2NlbnQ6ICcjODhjMGQwJyxcbiAgICBmZzogJyNkOGRlZTknLFxuICAgIGZnU29mdDogJyNhYWIyYzQnLFxuICAgIG11dGVkOiAnIzdiODhhMScsXG4gICAgZmFpbnQ6ICcjNjE2ZTg4JyxcbiAgICBwYW5lbEJnOiAnIzNiNDI1MicsXG4gICAgc2VsZWN0Qmc6ICcjNDM0YzVlJyxcbiAgICByZWQ6ICcjYmY2MTZhJyxcbiAgICBoaWdobGlnaHQ6ICcjZWNlZmY0JyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxufVxuXG5leHBvcnQgbGV0IERFRkFVTFRfQUNDRU5UID0gUEFMRVRURVMuZGFyay5hY2NlbnRcbmV4cG9ydCBsZXQgRkcgPSBQQUxFVFRFUy5kYXJrLmZnXG5leHBvcnQgbGV0IEZHX1NPRlQgPSBQQUxFVFRFUy5kYXJrLmZnU29mdFxuZXhwb3J0IGxldCBNVVRFRCA9IFBBTEVUVEVTLmRhcmsubXV0ZWRcbmV4cG9ydCBsZXQgRkFJTlQgPSBQQUxFVFRFUy5kYXJrLmZhaW50XG5leHBvcnQgbGV0IFBBTkVMX0JHID0gUEFMRVRURVMuZGFyay5wYW5lbEJnXG5leHBvcnQgbGV0IFNFTEVDVF9CRyA9IFBBTEVUVEVTLmRhcmsuc2VsZWN0QmdcbmV4cG9ydCBsZXQgUkVEID0gUEFMRVRURVMuZGFyay5yZWRcbmV4cG9ydCBsZXQgSElHSExJR0hUID0gUEFMRVRURVMuZGFyay5oaWdobGlnaHRcblxubGV0IGN1cnJlbnRQYWxldHRlID0gJ2RhcmsnXG5sZXQgZXhwbGljaXRBY2NlbnQgPSBudWxsXG5cbmNvbnN0IFthY2NlbnRWYWx1ZSwgc2V0QWNjZW50VmFsdWVdID0gY3JlYXRlU2lnbmFsKERFRkFVTFRfQUNDRU5UKVxuXG5leHBvcnQgY29uc3QgYWNjZW50ID0gYWNjZW50VmFsdWVcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFjY2VudChjb2xvcikge1xuICBleHBsaWNpdEFjY2VudCA9IGNvbG9yIHx8IG51bGxcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgREVGQVVMVF9BQ0NFTlQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWxldHRlKG5hbWUpIHtcbiAgY3VycmVudFBhbGV0dGUgPSBQQUxFVFRFU1tuYW1lXSA/IG5hbWUgOiAnZGFyaydcbiAgY29uc3QgcCA9IFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXVxuICBERUZBVUxUX0FDQ0VOVCA9IHAuYWNjZW50XG4gIEZHID0gcC5mZ1xuICBGR19TT0ZUID0gcC5mZ1NvZnRcbiAgTVVURUQgPSBwLm11dGVkXG4gIEZBSU5UID0gcC5mYWludFxuICBQQU5FTF9CRyA9IHAucGFuZWxCZ1xuICBTRUxFQ1RfQkcgPSBwLnNlbGVjdEJnXG4gIFJFRCA9IHAucmVkXG4gIEhJR0hMSUdIVCA9IHAuaGlnaGxpZ2h0XG4gIHNldEFjY2VudFZhbHVlKGV4cGxpY2l0QWNjZW50IHx8IHAuYWNjZW50KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZU5hbWUoKSB7XG4gIHJldHVybiBjdXJyZW50UGFsZXR0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZUxpc3QoKSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhQQUxFVFRFUykubWFwKChba2V5LCBwXSkgPT4gKHsga2V5LCBkZXNjOiBwLmRlc2MgfSkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGlraVRoZW1lKCkge1xuICByZXR1cm4gUEFMRVRURVNbY3VycmVudFBhbGV0dGVdLnNoaWtpXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3ROdW1iZXIodmFsdWUpIHtcbiAgY29uc3QgbiA9IE1hdGgucm91bmQodmFsdWUpXG4gIGlmIChNYXRoLmFicyhuKSA+PSAxXzAwMF8wMDApIHJldHVybiBgJHsobiAvIDFfMDAwXzAwMCkudG9GaXhlZCgxKX1tYFxuICBpZiAoTWF0aC5hYnMobikgPj0gMV8wMDApIHJldHVybiBgJHsobiAvIDFfMDAwKS50b0ZpeGVkKDEpfWtgXG4gIHJldHVybiBTdHJpbmcobilcbn1cbiIsICJpbXBvcnQgeyBlYXNlLCBsaW5lYXIsIHVzZUFuaW1hdGVkIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5mdW5jdGlvbiB0b1JnYihjb2xvcikge1xuICBpZiAoY29sb3I/LnN0YXJ0c1dpdGgoJyMnKSAmJiBjb2xvci5sZW5ndGggPT09IDcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSwgMyksIDE2KSxcbiAgICAgIHBhcnNlSW50KGNvbG9yLnNsaWNlKDMsIDUpLCAxNiksXG4gICAgICBwYXJzZUludChjb2xvci5zbGljZSg1LCA3KSwgMTYpLFxuICAgIF1cbiAgfVxuICByZXR1cm4gWzEyNywgMTI3LCAxMjddXG59XG5cbmZ1bmN0aW9uIG1peENvbG9yKGZyb20sIHRvLCBhbW91bnQpIHtcbiAgY29uc3QgYSA9IHRvUmdiKGZyb20pXG4gIGNvbnN0IGIgPSB0b1JnYih0bylcbiAgY29uc3QgY2hhbm5lbHMgPSBhLm1hcCgodmFsdWUsIGkpID0+IE1hdGgucm91bmQodmFsdWUgKyAoYltpXSAtIHZhbHVlKSAqIGFtb3VudCkpXG4gIHJldHVybiBgIyR7Y2hhbm5lbHMubWFwKCh2YWx1ZSkgPT4gdmFsdWUudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFuaW1hdGVkVmFsdWUoeyB2YWx1ZSwgaW5pdGlhbCA9IHZhbHVlLCBkdXJhdGlvbiA9IDEwMDAsIGNvbG9yLCBoaWdobGlnaHQsIGZvcm1hdCA9IFN0cmluZyB9KSB7XG4gIGNvbnN0IGRpc3BsYXllZCA9IHVzZUFuaW1hdGVkKGluaXRpYWwsIGVhc2UoZHVyYXRpb24pKVxuICBjb25zdCBnbG93ID0gdXNlQW5pbWF0ZWQoMCwgZWFzZShkdXJhdGlvbiwgbGluZWFyKSlcblxuICBpZiAodmFsdWUgIT09IGRpc3BsYXllZC5fYW5pbS50YXJnZXQpIHtcbiAgICBkaXNwbGF5ZWQuc2V0KHZhbHVlKVxuICAgIGdsb3cuc25hcCgxKVxuICAgIGdsb3cuc2V0KDApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBtaXhDb2xvcihjb2xvciwgaGlnaGxpZ2h0LCBnbG93KCkpIH19PlxuICAgICAge2Zvcm1hdChkaXNwbGF5ZWQoKSl9XG4gICAgPC90ZXh0PlxuICApXG59XG4iLCAiaW1wb3J0IHsgRGlmZiwgZWFzZSwgSG9yaXpvbnRhbFNjcm9sbEJveCwgbGluZWFyLCBNYXJrZG93biwgU3Bpbm5lciwgdXNlQW5pbWF0ZWQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBSRUQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuaW1wb3J0IHsgaGlnaGxpZ2h0LCBsYW5nRm9yUGF0aCB9IGZyb20gJy4vaGlnaGxpZ2h0LmpzJ1xuXG5leHBvcnQgeyBkZWZhdWx0VGl0bGUgYXMgdWlUaXRsZSB9IGZyb20gJy4uL2NvcmUvdG9vbHMvcmVjb3JkZXIuanMnXG5cbmZ1bmN0aW9uIE1hcmtkb3duU25pcHBldCh7IHZhbHVlLCBsYW5ndWFnZSwgaGlnaGxpZ2h0OiBoaWdobGlnaHRDb2RlLCBjb2RlQmcgfSkge1xuICBjb25zdCBzaG93biA9IGhpZ2hsaWdodENvZGUgPyBoaWdobGlnaHRDb2RlKHZhbHVlLCBsYW5ndWFnZSkgOiB2YWx1ZVxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgYmc6IGNvZGVCZywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICA8dGV4dD57c2hvd259PC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIENvZGVTbmlwcGV0KHsgdmFsdWUsIGxhbmd1YWdlLCBoaWdobGlnaHQ6IGhpZ2hsaWdodENvZGUsIGNvZGVCZyB9KSB7XG4gIGNvbnN0IHNob3duID0gaGlnaGxpZ2h0Q29kZSA/IGhpZ2hsaWdodENvZGUodmFsdWUsIGxhbmd1YWdlKSA6IHZhbHVlXG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IE1hdGgubWF4KDAsIC4uLnZhbHVlLnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IFsuLi5saW5lXS5sZW5ndGgpKSArIDJcbiAgcmV0dXJuIChcbiAgICA8SG9yaXpvbnRhbFNjcm9sbEJveCBjb250ZW50V2lkdGg9e2NvbnRlbnRXaWR0aH0gc3R5bGU9e3sgYmc6IGNvZGVCZywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICB7c2hvd24uc3BsaXQoJ1xcbicpLm1hcCgobGluZSwga2V5KSA9PiAoXG4gICAgICAgICAgPHRleHQga2V5PXtrZXl9IHN0eWxlPXt7IG92ZXJmbG93OiAnbm93cmFwJyB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICApKX1cbiAgICAgIDwvYm94PlxuICAgIDwvSG9yaXpvbnRhbFNjcm9sbEJveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBUcmFuc2NyaXB0Q29kZUJsb2NrKHByb3BzKSB7XG4gIGNvbnN0IGxhbmd1YWdlID0gcHJvcHMubGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKClcbiAgY29uc3QgQ29tcG9uZW50ID0gbGFuZ3VhZ2UgPT09ICdtZCcgfHwgbGFuZ3VhZ2UgPT09ICdtYXJrZG93bicgPyBNYXJrZG93blNuaXBwZXQgOiBDb2RlU25pcHBldFxuICByZXR1cm4gPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+XG59XG5cbmZ1bmN0aW9uIGRpZmZQcmV2aWV3TGluZXMoZGlmZiwgcmV2ZXJ0KSB7XG4gIGlmIChkaWZmPy5odW5rcz8ubGVuZ3RoKSByZXR1cm4gZGlmZi5odW5rcy5yZWR1Y2UoKHN1bSwgaCkgPT4gc3VtICsgaC5saW5lcy5sZW5ndGgsIDApXG4gIC8vIGV2ZW50cyByZWNvcmRlZCBiZWZvcmUgY3JlYXRlZC1maWxlIHdyaXRlcyBjYXJyaWVkIGh1bmtzOiBzaXplIGZyb20gdGhlIGNvbnRlbnQgaXRzZWxmXG4gIHJldHVybiBNYXRoLm1heChTdHJpbmcocmV2ZXJ0Py5hZnRlciB8fCAnJykuc3BsaXQoJ1xcbicpLmxlbmd0aCwgU3RyaW5nKHJldmVydD8uYmVmb3JlIHx8ICcnKS5zcGxpdCgnXFxuJykubGVuZ3RoLCAyKVxufVxuXG5mdW5jdGlvbiBmbXREdXJhdGlvbihtcykge1xuICBpZiAobXMgPCA2MDAwMCkgcmV0dXJuIGAkeyhtcyAvIDEwMDApLnRvRml4ZWQoMil9c2BcbiAgY29uc3Qgc2VjcyA9IE1hdGgucm91bmQobXMgLyAxMDAwKVxuICByZXR1cm4gYCR7TWF0aC5mbG9vcihzZWNzIC8gNjApfW0gJHtzZWNzICUgNjB9c2Bcbn1cblxuZnVuY3Rpb24gZm10UnVubmluZyhtcykge1xuICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihtcyAvIDEwMDApXG4gIHJldHVybiBzZWNzIDwgNjAgPyBgJHtzZWNzfXNgIDogYCR7TWF0aC5mbG9vcihzZWNzIC8gNjApfW0gJHtzZWNzICUgNjB9c2Bcbn1cblxuZnVuY3Rpb24gbWl4Q29sb3IoZnJvbSwgdG8sIGFtb3VudCkge1xuICBjb25zdCByZ2IgPSAoY29sb3IpID0+IGNvbG9yPy5zdGFydHNXaXRoKCcjJykgJiYgY29sb3IubGVuZ3RoID09PSA3XG4gICAgPyBbMSwgMywgNV0ubWFwKChpKSA9PiBwYXJzZUludChjb2xvci5zbGljZShpLCBpICsgMiksIDE2KSlcbiAgICA6IFsxMjcsIDEyNywgMTI3XVxuICBjb25zdCBhID0gcmdiKGZyb20pXG4gIGNvbnN0IGIgPSByZ2IodG8pXG4gIHJldHVybiBgIyR7YS5tYXAoKHZhbHVlLCBpKSA9PiBNYXRoLnJvdW5kKHZhbHVlICsgKGJbaV0gLSB2YWx1ZSkgKiBhbW91bnQpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKX1gXG59XG5cbmZ1bmN0aW9uIFRvb2xHcm91cCh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBjb25zdCBsYXRlc3RDYWxsSWQgPSBpdGVtLnRvb2xzLmF0KC0xKT8uY2FsbElkXG4gIGNvbnN0IGdsb3cgPSB1c2VBbmltYXRlZCgwLCBlYXNlKDUwMCwgbGluZWFyKSlcbiAgaWYgKGxhdGVzdENhbGxJZCAhPT0gZ2xvdy5fY2FsbElkKSB7XG4gICAgZ2xvdy5fY2FsbElkID0gbGF0ZXN0Q2FsbElkXG4gICAgaWYgKGl0ZW0uYWN0aXZlKSB7XG4gICAgICBnbG93LnNuYXAoMSlcbiAgICAgIGdsb3cuc2V0KDApXG4gICAgfVxuICB9XG5cbiAgaWYgKHZlcmJvc2UpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAge2l0ZW0udG9vbHMubWFwKCh0b29sLCBpKSA9PiA8VG9vbENhcmQga2V5PXtpfSB7Li4udG9vbH0gdmVyYm9zZSBzaG93RXhwYW5kSGludD17ZmFsc2V9IC8+KX1cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGNvdW50cyA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgaXRlbS50b29scykgY291bnRzLnNldCh0b29sLm5hbWUsIChjb3VudHMuZ2V0KHRvb2wubmFtZSkgfHwgMCkgKyAxKVxuICBjb25zdCBlbnRyaWVzID0gWy4uLmNvdW50c11cbiAgY29uc3QgdG90YWxNcyA9IGl0ZW0udG9vbHMucmVkdWNlKChzdW0sIHRvb2wpID0+IHN1bSArICh0b29sLmR1cmF0aW9uTXMgfHwgMCksIDApXG4gIGNvbnN0IGxhdGVzdE5hbWUgPSBpdGVtLnRvb2xzLmF0KC0xKT8ubmFtZVxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGFsaWduSXRlbXM6ICdmbGV4LXN0YXJ0JyB9fT5cbiAgICAgICAge2l0ZW0uYWN0aXZlID8gPFNwaW5uZXIgY29sb3I9e2FjY2VudCgpfSAvPiA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5cdTI3MTM8L3RleHQ+fVxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBmbGV4V3JhcDogJ3dyYXAnLCBmbGV4R3JvdzogMSwgbWFyZ2luUmlnaHQ6IDIgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGl0ZW0uYWN0aXZlID8gRkcgOiBNVVRFRCB9fT4gQ2FsbGVkIDwvdGV4dD5cbiAgICAgICAgICB7ZW50cmllcy5tYXAoKFtuYW1lLCBjb3VudF0sIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17bmFtZX0gc3R5bGU9e3sgY29sb3I6IGl0ZW0uYWN0aXZlICYmIG5hbWUgPT09IGxhdGVzdE5hbWUgPyBtaXhDb2xvcihGRywgYWNjZW50KCksIGdsb3coKSkgOiBpdGVtLmFjdGl2ZSA/IEZHIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgIHtgJHtpID8gJywgJyA6ICcnfSR7bmFtZX0ke2NvdW50ID09PSAxID8gJycgOiBgICR7Y291bnR9IHRpbWVzYH1gfVxuICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2JveD5cbiAgICAgICAge3RvdGFsTXMgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgZmxleFNocmluazogMCB9fT57Zm10RHVyYXRpb24odG90YWxNcyl9PC90ZXh0Pn1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmZ1bmN0aW9uIFRvb2xDYXJkKHsgbmFtZSwgdGl0bGUsIHN0YXR1cywgZGlmZiwgcmV2ZXJ0LCBmdWxsT3V0cHV0LCBlcnJvciwgYmFja2dyb3VuZCwgdmVyYm9zZSwgc2hvd0V4cGFuZEhpbnQgPSB0cnVlLCBzdGFydGVkQXQsIGR1cmF0aW9uTXMgfSkge1xuICBjb25zdCBydW5uaW5nID0gc3RhdHVzID09PSAncnVubmluZydcbiAgY29uc3QgaW50ZXJydXB0ZWQgPSBzdGF0dXMgPT09ICdpbnRlcnJ1cHRlZCdcbiAgY29uc3QgcmV2ZXJ0ZWQgPSBzdGF0dXMgPT09ICdyZXZlcnRlZCdcbiAgY29uc3QgZmFpbGVkID0gc3RhdHVzID09PSAnZXJyb3InXG4gIGNvbnN0IG91dExpbmVzID0gZnVsbE91dHB1dCA/IGZ1bGxPdXRwdXQuc3BsaXQoJ1xcbicpIDogbnVsbFxuXG4gIGNvbnN0IGVsYXBzZWQgPSBydW5uaW5nICYmIHN0YXJ0ZWRBdCA/IERhdGUubm93KCkgLSBzdGFydGVkQXQgOiAwXG4gIGNvbnN0IHRvb2sgPSAhcnVubmluZyAmJiAhYmFja2dyb3VuZCAmJiBkdXJhdGlvbk1zICE9IG51bGwgPyBmbXREdXJhdGlvbihkdXJhdGlvbk1zKSA6IG51bGxcblxuICBjb25zdCBpbmZvID0gcnVubmluZyA/IChlbGFwc2VkID49IDUwMDAgPyBgcnVubmluZyAoJHtmbXRSdW5uaW5nKGVsYXBzZWQpfSlgIDogJ3J1bm5pbmcnKVxuICAgIDogaW50ZXJydXB0ZWQgPyAnaW50ZXJydXB0ZWQnXG4gICAgOiByZXZlcnRlZCA/ICdyZXZlcnRlZCdcbiAgICA6IGZhaWxlZCA/IGBmYWlsZWQke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfWBcbiAgICA6IGJhY2tncm91bmQgPyAnYmFja2dyb3VuZCBcdTAwQjcgL3NoZWxscydcbiAgICA6IGRpZmYgPyBgKyR7ZGlmZi5hZGRpdGlvbnN9IC0ke2RpZmYuZGVsZXRpb25zfSR7dG9vayA/IGAgXHUwMEI3ICR7dG9va31gIDogJyd9YFxuICAgIDogb3V0TGluZXMgPyBgJHtvdXRMaW5lcy5sZW5ndGh9ICR7b3V0TGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30ke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfSR7c2hvd0V4cGFuZEhpbnQgPyAnIFx1MDBCNyBjdHJsK28nIDogJyd9YFxuICAgIDogYGRvbmUke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfWBcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgIHtydW5uaW5nXG4gICAgICAgICAgPyA8U3Bpbm5lciBjb2xvcj17YWNjZW50KCl9IC8+XG4gICAgICAgICAgOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogaW50ZXJydXB0ZWQgfHwgZmFpbGVkID8gUkVEIDogcmV2ZXJ0ZWQgPyBNVVRFRCA6IGFjY2VudCgpIH19PntpbnRlcnJ1cHRlZCA/ICdcdTI3MTcnIDogZmFpbGVkID8gJ1x1MjcxNycgOiByZXZlcnRlZCA/ICdcdTIxQTknIDogJ1x1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHtuYW1lLnBhZEVuZCg1KX0gYH08L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHIH19Pnt0aXRsZSB8fCBuYW1lfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtpbmZvfWB9PC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICB7ZmFpbGVkICYmIGVycm9yICYmIChcbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YCAgJHtlcnJvcn1gfTwvdGV4dD5cbiAgICAgICl9XG4gICAgICB7cmV2ZXJ0ICYmICFydW5uaW5nICYmICFyZXZlcnRlZCAmJiAhKGRpZmYgJiYgZGlmZi5hZGRpdGlvbnMgPT09IDAgJiYgZGlmZi5kZWxldGlvbnMgPT09IDApICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiBNYXRoLm1pbihkaWZmUHJldmlld0xpbmVzKGRpZmYsIHJldmVydCkgKyAxLCAxMiksIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8RGlmZlxuICAgICAgICAgICAgYmVmb3JlPXtyZXZlcnQuYmVmb3JlfVxuICAgICAgICAgICAgYWZ0ZXI9e3JldmVydC5hZnRlcn1cbiAgICAgICAgICAgIGxhbmd1YWdlPXtsYW5nRm9yUGF0aChyZXZlcnQucGF0aCl9XG4gICAgICAgICAgICBoaWdobGlnaHQ9e2hpZ2hsaWdodH1cbiAgICAgICAgICAgIGNvbnRleHQ9ezN9XG4gICAgICAgICAgICBmb2xkcz17ZmFsc2V9XG4gICAgICAgICAgICBmb2N1c2VkPXtmYWxzZX1cbiAgICAgICAgICAgIHNjcm9sbGJhcj17ZmFsc2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuICAgICAge291dExpbmVzICYmIHZlcmJvc2UgJiYgIXJ1bm5pbmcgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJCAke3RpdGxlfWB9PC90ZXh0PlxuICAgICAgICAgIHtvdXRMaW5lcy5zbGljZSgwLCAyMDApLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICApKX1cbiAgICAgICAgICB7b3V0TGluZXMubGVuZ3RoID4gMjAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjAyNiAke291dExpbmVzLmxlbmd0aCAtIDIwMH0gbW9yZSBsaW5lc2B9PC90ZXh0Pn1cbiAgICAgICAgPC9ib3g+XG4gICAgICApfVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZXNzYWdlKHsgaXRlbSwgdmVyYm9zZSB9KSB7XG4gIGlmIChpdGVtLmtpbmQgPT09ICd0b29sLWdyb3VwJykgcmV0dXJuIDxUb29sR3JvdXAgaXRlbT17aXRlbX0gdmVyYm9zZT17dmVyYm9zZX0gLz5cblxuICBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICByZXR1cm4gPFRvb2xDYXJkIHsuLi5pdGVtfSB2ZXJib3NlPXt2ZXJib3NlfSAvPlxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3N1bW1hcnknKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntpdGVtLnNvdXJjZSA9PT0gJ2NvbXBhY3QnID8gJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyBjb252ZXJzYXRpb24gY29tcGFjdGVkIGFib3ZlIHRoaXMgcG9pbnQnIDogJ1x1MjcyNiBzdW1tYXJ5IFx1MDBCNyByZXdvdW5kIGNvbnZlcnNhdGlvbid9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDUwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA+IDUwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtsaW5lcy5sZW5ndGggLSA1MDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndGhvdWdodHMnKSB7XG4gICAgY29uc3QgbGluZXMgPSBpdGVtLnRleHQuc3BsaXQoJ1xcbicpXG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PnsnXHUyNzI2IHRob3VnaHRzJ308L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7bGluZXMubGVuZ3RofSAke2xpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9IFx1MDBCNyBjdHJsK29gfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt2ZXJib3NlICYmIChcbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgICB7bGluZXMuc2xpY2UoMCwgMzAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgaXRhbGljOiB0cnVlIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiAzMDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gMzAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ25vdGljZScpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNjk5ICR7aXRlbS50ZXh0LnJlcGxhY2UoL15cXFtzeXN0ZW0gbm90aWZpY2F0aW9uXFxdXFxzKi8sICcnKX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdza2lsbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgaXRhbGljOiB0cnVlIH19PntgXHUyNzI2IHNraWxsOiAke2l0ZW0ubmFtZX1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICd1c2VyJykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nWTogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e2l0ZW0udGV4dH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgdGV4dCA9IGl0ZW0uaW50ZXJydXB0ZWQgPyBgJHtpdGVtLnRleHR9ICooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHRcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8TWFya2Rvd24gdGV4dD17dGV4dH0gaGlnaGxpZ2h0PXtoaWdobGlnaHR9IGNvZGVCZz17bnVsbH0gY29kZUJsb2NrPXtUcmFuc2NyaXB0Q29kZUJsb2NrfSAvPlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCB1c2VJbnRlcnZhbCwgdXNlTW91c2UsIHVzZVJlc2l6ZSB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5mdW5jdGlvbiBFbXB0eUNsb3VkKHsgd2lkdGgsIGhlaWdodCwgdmVyc2lvbiB9KSB7XG4gIGNvbnN0IFtwaGFzZSwgc2V0UGhhc2VdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt3YWtlLCBzZXRXYWtlXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgbGV0IHByZXZpb3VzID0gbnVsbFxuXG4gIHVzZU1vdXNlKChldmVudCkgPT4ge1xuICAgIGlmIChldmVudC5hY3Rpb24gIT09ICdtb3ZlJyAmJiBldmVudC5hY3Rpb24gIT09ICdkcmFnJykgcmV0dXJuXG4gICAgY29uc3QgeCA9IGV2ZW50LnhcbiAgICBjb25zdCB5ID0gZXZlbnQueVxuICAgIGlmICh4IDwgMCB8fCB4ID49IHdpZHRoIHx8IHkgPCAwIHx8IHkgPj0gaGVpZ2h0KSByZXR1cm5cbiAgICBjb25zdCBkeCA9IHByZXZpb3VzID8geCAtIHByZXZpb3VzLnggOiAwXG4gICAgY29uc3QgZHkgPSBwcmV2aW91cyA/IHkgLSBwcmV2aW91cy55IDogMFxuICAgIHByZXZpb3VzID0geyB4LCB5IH1cbiAgICBjb25zdCBzcGVlZCA9IE1hdGguaHlwb3QoZHggKiAwLjUsIGR5KVxuICAgIGlmIChzcGVlZCA9PT0gMCkgcmV0dXJuXG4gICAgc2V0V2FrZShwb2ludHMgPT4gWy4uLnBvaW50cy5zbGljZSgtMjApLCB7IHgsIHksIGR4LCBkeSwgc3BlZWQ6IE1hdGgubWluKDQsIHNwZWVkKSwgYWdlOiAwIH1dKVxuICB9KVxuXG4gIHVzZUludGVydmFsKCgpID0+IHtcbiAgICBzZXRQaGFzZSh2YWx1ZSA9PiB2YWx1ZSArIDAuMTYpXG4gICAgc2V0V2FrZShwb2ludHMgPT4gcG9pbnRzLm1hcChwb2ludCA9PiAoeyAuLi5wb2ludCwgYWdlOiBwb2ludC5hZ2UgKyAxIH0pKS5maWx0ZXIocG9pbnQgPT4gcG9pbnQuYWdlIDwgMTgpKVxuICB9LCA5MClcblxuICBjb25zdCBnbHlwaHMgPSAnICBcdTAwQjdcdTAwQjc6OisrKipcdTI1OTFcdTI1OTInXG4gIGNvbnN0IHJvd3MgPSBbXVxuICBjb25zdCBiYXNlID0gYWNjZW50KClcbiAgY29uc3QgcmdiID0gL14jKFswLTlhLWZdezZ9KSQvaS5leGVjKGJhc2UpXG4gIGNvbnN0IG5laWdoYm9yaW5nID0gcmdiXG4gICAgPyBgIyR7W1xuICAgICAgTWF0aC5tYXgoMCwgcGFyc2VJbnQocmdiWzFdLnNsaWNlKDAsIDIpLCAxNikgLSAxOCksXG4gICAgICBNYXRoLm1pbigyNTUsIHBhcnNlSW50KHJnYlsxXS5zbGljZSgyLCA0KSwgMTYpICsgOCksXG4gICAgICBNYXRoLm1pbigyNTUsIHBhcnNlSW50KHJnYlsxXS5zbGljZSg0LCA2KSwgMTYpICsgMjQpLFxuICAgIF0ubWFwKHZhbHVlID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKX1gXG4gICAgOiBiYXNlXG5cbiAgZm9yIChsZXQgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgIGNvbnN0IHJvdyA9IFtdXG4gICAgZm9yIChsZXQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICBjb25zdCBwID0gcGhhc2UoKVxuICAgICAgY29uc3QgYnJvYWQgPSBNYXRoLnNpbih4ICogMC4wOCArIHApICsgTWF0aC5zaW4oeSAqIDAuMjkgLSBwICogMC43KSArIE1hdGguc2luKCh4ICsgeSkgKiAwLjA1ICsgcCAqIDAuMzUpXG4gICAgICBjb25zdCB3aXNwcyA9IE1hdGguc2luKHggKiAwLjE5IC0geSAqIDAuMTEgLSBwICogMC41NSkgKyBNYXRoLnNpbih4ICogMC4wMyArIHkgKiAwLjQzICsgcCAqIDAuNClcbiAgICAgIGNvbnN0IHBvY2tldHMgPSBNYXRoLnNpbih4ICogMC4zMSArIHAgKiAwLjgpICogTWF0aC5zaW4oeSAqIDAuNDcgLSBwICogMC4zKVxuICAgICAgbGV0IGJyb2FkRGlzcGxhY2VtZW50ID0gMFxuICAgICAgbGV0IHdpc3BEaXNwbGFjZW1lbnQgPSAwXG4gICAgICBsZXQgaW50ZXJhY3Rpb24gPSAwXG4gICAgICBmb3IgKGNvbnN0IHBvaW50IG9mIHdha2UoKSkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBNYXRoLmh5cG90KHBvaW50LmR4ICogMC41LCBwb2ludC5keSkgfHwgMVxuICAgICAgICBjb25zdCB1eCA9IHBvaW50LmR4ICogMC41IC8gbGVuZ3RoXG4gICAgICAgIGNvbnN0IHV5ID0gcG9pbnQuZHkgLyBsZW5ndGhcbiAgICAgICAgY29uc3QgcnggPSAoeCAtIHBvaW50LngpICogMC41XG4gICAgICAgIGNvbnN0IHJ5ID0geSAtIHBvaW50LnlcbiAgICAgICAgY29uc3QgYWxvbmcgPSByeCAqIHV4ICsgcnkgKiB1eVxuICAgICAgICBjb25zdCBhY3Jvc3MgPSAtcnggKiB1eSArIHJ5ICogdXhcbiAgICAgICAgY29uc3QgdHJhaWxpbmcgPSBhbG9uZyA8PSAyICYmIGFsb25nID49IC0xOCAtIHBvaW50LnNwZWVkICogM1xuICAgICAgICBpZiAoIXRyYWlsaW5nKSBjb250aW51ZVxuICAgICAgICBjb25zdCBhZ2UgPSAxIC0gcG9pbnQuYWdlIC8gMThcbiAgICAgICAgY29uc3QgdHJhaWwgPSBNYXRoLmV4cCgtTWF0aC5wb3coKGFsb25nICsgNCArIHBvaW50LmFnZSAqIDAuMzUpIC8gKDcgKyBwb2ludC5zcGVlZCAqIDIpLCAyKSlcbiAgICAgICAgY29uc3QgY2VudGVyID0gTWF0aC5leHAoLShhY3Jvc3MgKiBhY3Jvc3MpIC8gNSlcbiAgICAgICAgY29uc3QgZWRnZXMgPSBNYXRoLmV4cCgtTWF0aC5wb3coTWF0aC5hYnMoYWNyb3NzKSAtIDMuMiwgMikgLyAzKVxuICAgICAgICBjb25zdCBmb3JjZSA9IGFnZSAqIHRyYWlsICogKDAuNSArIHBvaW50LnNwZWVkICogMC40NSlcbiAgICAgICAgY29uc3QgcmFkaWFsRGlzdGFuY2UgPSBNYXRoLnNxcnQocnggKiByeCArIHJ5ICogcnkpXG4gICAgICAgIGNvbnN0IHJpcHBsZUVudmVsb3BlID0gTWF0aC5leHAoLShyYWRpYWxEaXN0YW5jZSAqIHJhZGlhbERpc3RhbmNlKSAvICgzNSArIHBvaW50LnNwZWVkICogMTIpKVxuICAgICAgICBjb25zdCByaXBwbGUgPSBNYXRoLnNpbihyYWRpYWxEaXN0YW5jZSAqIDEuMzUgLSBwb2ludC5hZ2UgKiAwLjc1KSAqIHJpcHBsZUVudmVsb3BlICogYWdlXG4gICAgICAgIHdpc3BEaXNwbGFjZW1lbnQgKz0gKGVkZ2VzICogMC45IC0gY2VudGVyKSAqIGZvcmNlICogMS41ICsgcmlwcGxlICogKDEuMiArIHBvaW50LnNwZWVkICogMC4yNSlcbiAgICAgICAgYnJvYWREaXNwbGFjZW1lbnQgKz0gKGVkZ2VzICogMC40NSAtIGNlbnRlciAqIDAuMzUpICogZm9yY2UgKiAwLjU1ICsgcmlwcGxlICogMC4yNVxuICAgICAgICBpbnRlcmFjdGlvbiA9IE1hdGgubWF4KGludGVyYWN0aW9uLCBNYXRoLmFicyhyaXBwbGUpICogKDAuNSArIHBvaW50LnNwZWVkICogMC4xNSkpXG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIChcbiAgICAgICAgYnJvYWQgKyBicm9hZERpc3BsYWNlbWVudCArICh3aXNwcyArIHdpc3BEaXNwbGFjZW1lbnQpICogMC42NSArIHBvY2tldHMgKiAwLjggKyAzLjJcbiAgICAgICkgLyA3LjQpKVxuICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1pbihnbHlwaHMubGVuZ3RoIC0gMSwgTWF0aC5mbG9vcih2YWx1ZSAqIGdseXBocy5sZW5ndGgpKVxuICAgICAgcm93LnB1c2goeyBnbHlwaDogZ2x5cGhzW2luZGV4XSwgY29sb3I6IGludGVyYWN0aW9uID4gMC4xNiA/IG5laWdoYm9yaW5nIDogYmFzZSwgZGltOiBpbmRleCA8IDggfSlcbiAgICB9XG4gICAgcm93cy5wdXNoKHJvdylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEgfX0+XG4gICAgICB7cm93cy5tYXAoKHJvdywgaSkgPT4ge1xuICAgICAgICBjb25zdCBsYWJlbCA9IGkgPT09IDEgPyAncGljbycgOiBpID09PSAyID8gYHYke3ZlcnNpb259YCA6ICcnXG4gICAgICAgIGNvbnN0IGluQnJhbmRCb3ggPSBpID49IDEgJiYgaSA8PSAyXG4gICAgICAgIGNvbnN0IGJveFN0YXJ0ID0gMVxuICAgICAgICBjb25zdCBib3hXaWR0aCA9IGB2JHt2ZXJzaW9ufWAubGVuZ3RoICsgMlxuICAgICAgICBjb25zdCBjbG91ZCA9IChjZWxscykgPT4gY2VsbHMubWFwKChjZWxsLCB4KSA9PiAoXG4gICAgICAgICAgPHRleHQga2V5PXt4fSBzdHlsZT17eyBjb2xvcjogY2VsbC5jb2xvciwgZGltOiBjZWxsLmRpbSB9fT57Y2VsbC5nbHlwaH08L3RleHQ+XG4gICAgICAgICkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEsIG92ZXJmbG93OiAnY2xpcCcgfX0+XG4gICAgICAgICAgICB7aW5CcmFuZEJveCAmJiBjbG91ZChyb3cuc2xpY2UoMCwgYm94U3RhcnQpKX1cbiAgICAgICAgICAgIHtpbkJyYW5kQm94ICYmIChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyB3aWR0aDogYm94V2lkdGgsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIHtsYWJlbCAmJiA8dGV4dCBzdHlsZT17eyBib2xkOiBpID09PSAxLCBjb2xvcjogaSA9PT0gMSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD59XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtjbG91ZChyb3cuc2xpY2UoaW5CcmFuZEJveCA/IGJveFN0YXJ0ICsgYm94V2lkdGggOiAwKSl9XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIClcbiAgICAgIH0pfVxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFbXB0eVN0YXRlKHsgdmVyc2lvbiwgY2xvdWRzID0gZmFsc2UgfSkge1xuICBjb25zdCBbc2l6ZSwgc2V0U2l6ZV0gPSBjcmVhdGVTaWduYWwoeyB3aWR0aDogcHJvY2Vzcy5zdGRvdXQuY29sdW1ucyB8fCA4MCwgaGVpZ2h0OiBwcm9jZXNzLnN0ZG91dC5yb3dzIHx8IDI0IH0pXG4gIHVzZVJlc2l6ZShzZXRTaXplKVxuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDEsIHNpemUoKS53aWR0aClcbiAgY29uc3QgaGVpZ2h0ID0gTWF0aC5tYXgoMSwgc2l6ZSgpLmhlaWdodCAtIDQpXG4gIGlmICghY2xvdWRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgYm9sZDogdHJ1ZSwgY29sb3I6IGFjY2VudCgpIH19PnsnICBwaWNvJ308L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgdiR7dmVyc2lvbn1gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGgsIGhlaWdodCB9fT5cbiAgICAgIDxFbXB0eUNsb3VkIHdpZHRoPXt3aWR0aH0gaGVpZ2h0PXtoZWlnaHR9IHZlcnNpb249e3ZlcnNpb259IC8+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuIiwgImltcG9ydCB7IE1hcmtkb3duLCBTY3JvbGxCb3gsIHVzZUlucHV0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGQUlOVCB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IEhFTFBfVEVYVCA9IChjb21tYW5kcykgPT4gYHBpY28gaXMgYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbC4gSXQgcmVhZHMsIGVkaXRzLCBhbmQgc2VhcmNoZXMgZmlsZXMsIHJ1bnMgY29tbWFuZHMsIGFuZCBzdHJlYW1zIGl0cyB3b3JrIGludG8gdGhpcyB0cmFuc2NyaXB0LlxuXG4jIyBDb21tYW5kc1xuXG5UeXBlIFxcYC9cXGAgaW4gdGhlIGNvbXBvc2VyIHRvIGZpbHRlciB0aGVzZSBhcyB5b3UgdHlwZS5cblxuJHtjb21tYW5kcy5tYXAoKGMpID0+IGAtIFxcYC8ke2MubmFtZX1cXGAgLSAke2MuZGVzY31gKS5qb2luKCdcXG4nKX1cblxuVHdvIGtpbmRzIG9mIHVzZXItZGVmaW5lZCBlbnRyaWVzIGpvaW4gdGhpcyBtZW51OlxuXG4tICoqY29tbWFuZHMqKiAoXFxgfi8ucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgb3IgXFxgLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgKTogcHJvbXB0IHRlbXBsYXRlcyB5b3UgaW52b2tlIGFzIFxcYC88bmFtZT4gW2FyZ3NdXFxgLiBcXGAkQVJHVU1FTlRTXFxgIGluIHRoZSBib2R5IGlzIHJlcGxhY2VkIHdpdGggd2hhdGV2ZXIgZm9sbG93cyB0aGUgY29tbWFuZDsgd2l0aG91dCBhIHBsYWNlaG9sZGVyLCBhcmdzIGFyZSBhcHBlbmRlZC4gVGhlIG1vZGVsIG5ldmVyIHNlZXMgdGhlc2UgdW50aWwgeW91IHJ1biBvbmUuXG4tICoqc2tpbGxzKiogKFxcYH4vLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCBvciBcXGAucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgKTogY2FwYWJpbGl0aWVzIHdpdGggYSBuYW1lIGFuZCBkZXNjcmlwdGlvbi4gWW91IGNhbiBpbnZva2UgdGhlbSBsaWtlIGNvbW1hbmRzLCBhbmQgdGhlIGFnZW50IGNhbiBhbHNvIGRpc2NvdmVyIGFuZCBsb2FkIHRoZW0gaXRzZWxmIHZpYSB0aGUgc2tpbGwgdG9vbC5cbi0gKip0b29scyoqIChcXGB+Ly5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBvciBcXGAucGljby90b29scy88bmFtZT4uanNcXGApOiBFUyBtb2R1bGVzIGRlZmF1bHQtZXhwb3J0aW5nIFxcYHsgbmFtZSwgZGVzY3JpcHRpb24sIHNjaGVtYSwgZXhlY3V0ZSB9XFxgIChvciBhIGZhY3RvcnkgcmVjZWl2aW5nIFxcYHsgY3dkLCByb290IH1cXGApLiBUaGV5IGpvaW4gdGhlIGFnZW50J3MgdG9vbHNldCBhbmQgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBlZGl0cyBhcHBseSBvbiB0aGUgbmV4dCBtZXNzYWdlLiBBc2sgdGhlIGFnZW50IHRvIGJ1aWxkIG9uZSBmb3IgeW91OiB0aGUgYnVpbHQtaW4gXFxgL25ldy10b29sXFxgIHNraWxsIHRlYWNoZXMgaXQgdGhlIGZvcm1hdC5cblxuSW4gdGhlIE1DUCBwYW5lbDogZW50ZXIgZW5hYmxlcy9kaXNhYmxlcyBhIHNlcnZlciAoZGlzYWJsZWQgaXMgc3RpY2t5IGFjcm9zcyByZXN0YXJ0cyAtIGNvbmZpZyBrZXB0LCBubyBjb25uZWN0aW9uLCBubyB0b29scyBvZmZlcmVkIHRvIHRoZSBtb2RlbCwgcGVyIHByb2plY3QpLCBcXGB0XFxgIGxpc3RzIGl0cyB0b29scywgXFxgclxcYCByZWNvbm5lY3RzLCBcXGBhXFxgIGFkZHMsIFxcYGN0cmwreFxcYCByZW1vdmVzIChwcmVzcyB0d2ljZSkuIFVuZmlsdGVyZWQgbGlzdHMgKGVmZm9ydCwgcmV3aW5kIG9wdGlvbnMsIE1DUCkgYWxzbyBtb3ZlIHdpdGggXFxgalxcYC9cXGBrXFxgIGFuZCBqdW1wIHdpdGggXFxgZ1xcYC9cXGBHXFxgLlxuXG4jIyBDb21wb3NlclxuXG4tIFxcYGVudGVyXFxgIHNlbmRzLCBcXGBzaGlmdCtlbnRlclxcYCBpbnNlcnRzIGEgbmV3bGluZVxuLSBcXGBAXFxgIG9wZW5zIGEgZnV6enkgZmlsZSBwaWNrZXI7IGVudGVyIGluc2VydHMgdGhlIHNlbGVjdGVkIHBhdGhcbi0gZHJhZyBhbiBpbWFnZSBmaWxlIGludG8gdGhlIHRlcm1pbmFsIHRvIGF0dGFjaCBpdDogaXQgYXBwZWFycyBpbmxpbmUgYXMgXFxgW0ltYWdlICNOXVxcYCwgZXhhY3RseSB3aGVyZSB5b3VyIGN1cnNvciBpcywgc28gaW1hZ2VzIGNhbiBzaXQgYmV0d2VlbiBzZW50ZW5jZXM7IGJhY2tzcGFjZSBhZnRlciBvbmUgcmVtb3ZlcyB0aGUgd2hvbGUgYXR0YWNobWVudFxuLSBcXGB0YWJcXGAgY29tcGxldGVzOiBcXGAvc3VtbTx0YWI+XFxgIGZpbmlzaGVzIHRoZSBjb21tYW5kIG5hbWUgYW5kIGN5Y2xlcyB0aHJvdWdoIG1hdGNoZXMgb24gcmVwZWF0OyBhZnRlciBhbiBhcmd1bWVudCBzcGFjZSBpdCBjb21wbGV0ZXMgdmFsdWVzIChcXGAvbW9kZWwgZmxhPHRhYj5cXGAsIFxcYC9jb2xvciA8dGFiPlxcYCwgXFxgL2VmZm9ydCA8dGFiPlxcYCkgYW5kIGZpbGUgcGF0aHMgZm9yIHNraWxscyBhbmQgY29tbWFuZHMuIEtlZXAgdHlwaW5nIHRvIG5hcnJvdywgdGFiIG9yIGVudGVyIGluc2VydHNcbi0gXFxgdXBcXGAgYW5kIFxcYGRvd25cXGAgb24gYW4gZW1wdHkgY29tcG9zZXIgcmVjYWxsIG1lc3NhZ2VzIHlvdSBhbHJlYWR5IHNlbnRcbi0gXFxgY3RybCtyXFxgIG9wZW5zIHJld2luZCAoc2FtZSBhcyBcXGAvcmV3aW5kXFxgKTsgXFxgL2hpc3RvcnlcXGAgZnV6enktc2VhcmNoZXMgeW91ciBvbGQgcHJvbXB0cyBhbmQgcHV0cyB0aGUgc2VsZWN0ZWQgb25lIGJhY2sgaW4gdGhlIGNvbXBvc2VyXG4tIFxcYGN0cmwrc1xcYCBvcGVucyB0aGUgc2Vzc2lvbiBwaWNrZXIgKHNhbWUgYXMgXFxgL3Jlc3VtZVxcYCk7IFxcYGN0cmwrdFxcYCBvcGVucyB0aGUgbW9kZWwgcGlja2VyXG4tIFxcYGN0cmwrcFxcYCBzd2l0Y2hlcyBwcm9qZWN0czogcGljayBvbmUgYW5kIHBpY28ganVtcHMgdG8gaXRzIG1vc3QgcmVjZW50IHNlc3Npb24sIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgdG9vbHMsIGNvbnRleHQsIGFuZCBNQ1Agc2VydmVycyB0byBtYXRjaDsgXFxgY3RybCt4XFxgIHR3aWNlIGRlbGV0ZXMgYSBwcm9qZWN0J3MgcGljbyBoaXN0b3J5IChhbGwgaXRzIHNlc3Npb25zIGFuZCBtZW1vcmllcyk7IFxcYC9uZXdcXGAgc3RhcnRzIGEgZnJlc2ggc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBwcm9qZWN0XG4tIFxcYGN0cmwrYlxcYCBjeWNsZXMgdGhpbmtpbmcgZWZmb3J0IChkZWZhdWx0LCBsb3csIG1lZGl1bSwgaGlnaCwgbWF4KSBvbiBtb2RlbHMgdGhhdCBzdXBwb3J0IGl0OyBcXGAvZWZmb3J0XFxgIG9wZW5zIHRoZSBmdWxsIHBpY2tlclxuLSBpbnNpZGUgYSBzZWFyY2ggcGFuZWwsIFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGluc3RlYWQ6IHRoaXMgc2Vzc2lvbiwgdGhpcyBwcm9qZWN0LCBvciBldmVyeXdoZXJlXG4tIFxcYC9yZXdpbmRcXGAgcmVzdG9yZXMgdGhlIGNvbnZlcnNhdGlvbiB0byBhbiBlYXJsaWVyIG1lc3NhZ2U7IGEgcmV3aW5kIGNhbiBiZSB1bmRvbmUgd2l0aCBcXGBjdHJsK3pcXGBcbi0gbWVzc2FnZXMgc2VudCB3aGlsZSB0aGUgYWdlbnQgaXMgcmVzcG9uZGluZyBxdWV1ZSB1cCBhYm92ZSB0aGUgY29tcG9zZXIgYW5kIGFyZSBkZWxpdmVyZWQgYXMgb25lIG1lc3NhZ2Ugd2hlbiB0aGUgdHVybiBmaW5pc2hlczsgXFxgdXBcXGAgcHVsbHMgdGhlbSBiYWNrIGZvciBlZGl0aW5nXG4tIFxcYGVzY1xcYCBpbnRlcnJ1cHRzIGEgc3RyZWFtaW5nIHJlc3BvbnNlLCBvciBjbGVhcnMgdGhlIGNvbXBvc2VyIHdoZW4gaWRsZVxuXG4jIyBNb3ZpbmcgYXJvdW5kXG5cbi0gXFxgdGFiXFxgIHN3aXRjaGVzIGZvY3VzIGJldHdlZW4gdGhlIHRyYW5zY3JpcHQgYW5kIHRoZSBjb21wb3NlclxuLSB3aXRoIHRoZSB0cmFuc2NyaXB0IGZvY3VzZWQsIFxcYHVwXFxgL1xcYGRvd25cXGAvXFxgalxcYC9cXGBrXFxgIHNjcm9sbCBhbmQgXFxgZ1xcYC9cXGBHXFxgIGp1bXAgdG8gdGhlIGVuZHNcbi0gbG9uZyBzZXNzaW9ucyByZW5kZXIgb25seSB0aGUgbmV3ZXN0IDUwIG1lc3NhZ2VzOyBzY3JvbGxpbmcgdG8gdGhlIHZlcnkgdG9wIGxvYWRzIG9sZGVyIG9uZXMgaW4gYmF0Y2hlcyAodGhlIHRvcCBsaW5lIHNob3dzIGhvdyBtYW55IGFyZSBoaWRkZW4pXG4tIFxcYGN0cmwrb1xcYCBleHBhbmRzIGFuZCBjb2xsYXBzZXMgdG9vbCBvdXRwdXQgaW4gdGhlIHRyYW5zY3JpcHRcbi0gdGhlIG1vdXNlIHdoZWVsIHNjcm9sbHM7IGNsaWNrLWRyYWcgc2VsZWN0cyB0ZXh0IGFuZCBjb3BpZXMgaXQgb24gcmVsZWFzZVxuLSBcXGBjdHJsK2NcXGAgdHdpY2UgZXhpdHNcblxuIyMgU2hlbGxzXG5cblRoZSBhZ2VudCBjYW4gcnVuIGxvbmctbGl2ZWQgcHJvY2Vzc2VzIChkZXYgc2VydmVycywgd2F0Y2hlcnMpIHdpdGggXFxgYmFzaCBiYWNrZ3JvdW5kOiB0cnVlXFxgLCB0aGVuIHJlYWQgdGhlaXIgb3V0cHV0IGFuZCBzdG9wIHRoZW0gaXRzZWxmLiBcXGAvc2hlbGxzXFxgIGxpc3RzIHRoZW06IGVudGVyIG9wZW5zIGEgbGl2ZSBvdXRwdXQgdmlldywgYW5kIFxcYGN0cmwreFxcYCByZW1vdmVzIHRoZSBzZWxlY3RlZCByb3cgLSBraWxsaW5nIGEgcnVubmluZyBzaGVsbCAocHJlc3MgdHdpY2UpIG9yIGRpc21pc3NpbmcgYSBkZWFkIG9uZSAoc2luZ2xlIHByZXNzKS4gQSBcXGBcdTI2OTkgTlxcYCBpbiB0aGUgZm9vdGVyIHNob3dzIGhvdyBtYW55IGFyZSBydW5uaW5nLiBXaGVuIGEgc2hlbGwgZXhpdHMgb24gaXRzIG93biwgdGhlIGFnZW50IGlzIG5vdGlmaWVkIGFuZCByZXNwb25kczsgc2hlbGxzIGRpZSB3aXRoIHBpY28sIGFuZCBxdWl0dGluZyB3YXJucyB5b3UgaWYgYW55IGFyZSBzdGlsbCB1cC5cblxuIyMgU3Vic2NyaXB0aW9uc1xuXG5cXGAvY29ubmVjdFxcYCBsaXN0cyBzdWJzY3JpcHRpb24gcHJvdmlkZXJzIHlvdSBjYW4gc2lnbiBpbiB3aXRoIGluc3RlYWQgb2YgQVBJIGtleXMuIE9wZW5BSSAoQ2hhdEdQVCAvIENvZGV4IHBsYW4pIHNpZ25zIGluIHRocm91Z2ggeW91ciBicm93c2VyIHZpYSBPQXV0aDsgdG9rZW5zIGFyZSBzdG9yZWQgaW4gXFxgfi8ucGljby9hdXRoLmpzb25cXGAgYW5kIHJlZnJlc2hlZCBhdXRvbWF0aWNhbGx5LCBzbyB5b3Ugc2lnbiBpbiBvbmNlLiBPbmNlIGNvbm5lY3RlZCwgY29kZXggbW9kZWxzIGFwcGVhciBpbiBcXGAvbW9kZWxcXGAsIGJpbGxlZCB0byB5b3VyIHBsYW4uIFxcYGRcXGAgaW4gdGhlIHBhbmVsIGRpc2Nvbm5lY3RzLlxuXG4jIyBXZWIgc2VhcmNoXG5cbldpdGggYSBbZHJlZGdlXShodHRwczovL2dpdGh1Yi5jb20vam9uYXRoYW5weWVycy9kcmVkZ2UpIGVuZHBvaW50IGNvbmZpZ3VyZWQsIHRoZSBhZ2VudCBnZXRzIHR3byBleHRyYSB0b29sczogXFxgd2ViX3NlYXJjaFxcYCAocmFua2VkIHJlc3VsdHMsIEdvb2dsZS1zdHlsZSBvcGVyYXRvcnMpIGFuZCBcXGB3ZWJfZmV0Y2hcXGAgKGFueSB1cmwgYXMgY2xlYW4gcGFnaW5hdGVkIG1hcmtkb3duLCBpbmNsdWRpbmcgcGRmIGFuZCBkb2N4KS4gQ29uZmlndXJlIGl0IGFzIFxcYFwiZHJlZGdlXCI6IHsgXCJ1cmxcIjogXCIuLi5cIiwgXCJhcGlLZXlcIjogXCIuLi5cIiB9XFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAsIG9yIHdpdGggXFxgRFJFREdFX1VSTFxcYCBhbmQgXFxgRFJFREdFX0FQSV9LRVlcXGAuIFdpdGhvdXQgYSBjb25maWd1cmVkIGVuZHBvaW50IHRoZSB0b29scyBhcmUgbm90IG9mZmVyZWQgdG8gdGhlIG1vZGVsIGF0IGFsbC5cblxuIyMgTWVtb3J5XG5cblRoZSBhZ2VudCBzYXZlcyBkdXJhYmxlIGZhY3RzIHdpdGggdGhlIHJlbWVtYmVyIHRvb2w6IG9uZSBmaWxlIHBlciBtZW1vcnkgdW5kZXIgXFxgfi8ucGljby9tZW1vcnlcXGAgKGdsb2JhbCkgb3IgdGhlIHByb2plY3QncyBkaXJlY3RvcnkgaW4gXFxgfi8ucGljby9wcm9qZWN0c1xcYC4gT25seSBhIG9uZS1saW5lIGluZGV4IGlzIGluIGl0cyBjb250ZXh0OyBpdCBsb2FkcyBhIHNwZWNpZmljIG1lbW9yeSB3aXRoIHRoZSByZWNhbGwgdG9vbCB3aGVuIHJlbGV2YW50LiBcXGAvbWVtb3J5XFxgIGxpc3RzIGV2ZXJ5dGhpbmcgaXQga25vd3Mgd2l0aCBhIGNvbnRlbnQgcHJldmlldzogXFxgY3RybCtzXFxgIGN5Y2xlcyB0aGUgc2NvcGUgZmlsdGVyIChhbGwsIHByb2plY3QsIGdsb2JhbCkgYW5kIFxcYGN0cmwreFxcYCB0d2ljZSBmb3JnZXRzIHRoZSBzZWxlY3RlZCBtZW1vcnkuIFlvdSBjYW4gYWxzbyBhc2sgdGhlIGFnZW50IHRvIHJlbWVtYmVyLCBmb3JnZXQsIG9yIGNsZWFuIHVwIGl0cyBtZW1vcmllcyBpbiBwbGFpbiBsYW5ndWFnZS5cblxuIyMgV2FrZS11cHNcblxuVGhlIGFnZW50IGNhbiBzY2hlZHVsZSBvbmUtdGltZSB3YWtlLXVwcyBmb3IgaXRzZWxmIHdpdGggdGhlIHNjaGVkdWxlX3dha2V1cCB0b29sOiBhZnRlciB0aGUgZGVsYXkgaXQgcmVjZWl2ZXMgaXRzIG93biBub3RlIGFzIGEgc3lzdGVtIG5vdGlmaWNhdGlvbiBhbmQgYWN0cyBvbiBpdC4gUmVjdXJyaW5nIGxvb3BzIGFyZSBqdXN0IHRoZSBhZ2VudCByZXNjaGVkdWxpbmcgYXQgdGhlIGVuZCBvZiBlYWNoIHdha2UtdXAuIFxcYC93YWtldXBzXFxgIGxpc3RzIHBlbmRpbmcgb25lcyB3aXRoIGxpdmUgY291bnRkb3duczsgZW50ZXIgb3IgXFxgY3RybCt4XFxgIGNhbmNlbHMgKHByZXNzIHR3aWNlKS4gQSBcXGBcdTIzRjAgTlxcYCBpbiB0aGUgZm9vdGVyIHNob3dzIGhvdyBtYW55IGFyZSBwZW5kaW5nLiBXYWtlLXVwcyBsaXZlIGluIG1lbW9yeSBhbmQgYXJlIGxvc3Qgd2hlbiBwaWNvIGV4aXRzLlxuXG4jIyBBcHBlYXJhbmNlXG5cbnBpY28gcGlja3MgYSBsaWdodCBvciBkYXJrIHBhbGV0dGUgYXQgc3RhcnR1cCBieSBhc2tpbmcgdGhlIHRlcm1pbmFsIGZvciBpdHMgYmFja2dyb3VuZCBjb2xvciAoT1NDIDExKSwgc28gaXQgbWF0Y2hlcyB3aGF0ZXZlciB0aGVtZSB5b3VyIHRlcm1pbmFsIHVzZXMuIFxcYC90aGVtZVxcYCBvcGVucyBhIHBpY2tlciB0aGF0IHByZXZpZXdzIGVhY2ggdGhlbWUgYXMgeW91IG1vdmUgYW5kIHBlcnNpc3RzIHlvdXIgY2hvaWNlIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGA7IFxcYC90aGVtZSBsaWdodFxcYCwgXFxgL3RoZW1lIGRhcmtcXGAsIG9yIFxcYC90aGVtZSBhdXRvXFxgIGFwcGxpZXMgb25lIGRpcmVjdGx5LiBcXGAvY29sb3JcXGAgdGludHMgYSBzaW5nbGUgc2Vzc2lvbidzIGFjY2VudCBhbmQgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHBhbGV0dGUuXG5cbiMjIENvbnRleHRcblxucGljbyByZWFkcyBBR0VOVFMubWQgZmlsZXMgYXV0b21hdGljYWxseTogYSBnbG9iYWwgb25lIGZyb20gfi8ucGljbywgdGhlbiBldmVyeSBhbmNlc3RvciBvZiB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IHVwIHRvIHRoZSBnaXQgcm9vdC4gRGVlcGVyIGZpbGVzIHdpbi4gQUdFTlRTLm1kIGZpbGVzIGluIHN1YmRpcmVjdG9yaWVzIGxvYWQgbGF6aWx5IHRoZSBmaXJzdCB0aW1lIGEgdG9vbCB0b3VjaGVzIHRoYXQgc3VidHJlZS4gSW4gYW55IHByb2plY3QgZGlyZWN0b3J5IHdpdGhvdXQgYW4gQUdFTlRTLm1kLCBhIENMQVVERS5tZCBpcyBob25vcmVkIGFzIGEgZmFsbGJhY2sgc28gZXhpc3RpbmcgcmVwb3Mgd29yayB1bmNoYW5nZWQ7IEFHRU5UUy5tZCBhbHdheXMgd2lucyB3aGVuIGJvdGggZXhpc3QsIGFuZCB0aGUgZmFsbGJhY2sgbmV2ZXIgYXBwbGllcyB0byB0aGUgZ2xvYmFsIGZpbGUuXG5cblNlc3Npb25zIGFyZSBzdG9yZWQgdW5kZXIgfi8ucGljbyBhcyBqc29ubCBldmVudCBsb2dzOyBcXGAvcmVzdW1lXFxgIGZvbGRzIG9uZSBiYWNrIGludG8gZXhhY3RseSB0aGlzIHZpZXcuXG5cblxcYC9jb250ZXh0XFxgIGJyZWFrcyBkb3duIHdoYXQgdGhlIG5leHQgcmVxdWVzdCB3aWxsIGNvbnRhaW4gLSBzeXN0ZW0gcHJvbXB0LCB0b29sIHNjaGVtYXMsIHByb2plY3QgaW5zdHJ1Y3Rpb25zLCBtZW1vcnkgaW5kZXgsIGNvbXBhY3Rpb24gc3VtbWFyeSwgYW5kIGNvbnZlcnNhdGlvbiAtIHdpdGggYW4gZXN0aW1hdGVkIHNpemUgZm9yIGVhY2ggcGllY2UgbmV4dCB0byB0aGUgcHJvdmlkZXItbWVhc3VyZWQgdG90YWwuXG5cblRoZSBmb290ZXIncyBcXGBjdHggJVxcYCBzaG93cyBob3cgZnVsbCB0aGUgbW9kZWwncyBjb250ZXh0IGlzLiBBdCA4NSUgcGljbyBhdXRvLWNvbXBhY3RzOiB0aGUgb2xkZXIgY29udmVyc2F0aW9uIGlzIHN1bW1hcml6ZWQgaW4gYSBzdHJ1Y3R1cmVkIGZvcm0sIHRoZSBtb3N0IHJlY2VudCB0dXJucyBhcmUga2VwdCB2ZXJiYXRpbSwgYW5kIHRoZSBtb2RlbCBpcyB0b2xkIHdoZXJlIHRoZSBmdWxsIHNlc3Npb24gZmlsZSBsaXZlcyBzbyBpdCBjYW4gcmVhZCBleGFjdCBkZXRhaWxzIGJhY2sgb24gZGVtYW5kLiBOb3RoaW5nIHZpc2libGUgY2hhbmdlcyBpbiB0aGUgdHJhbnNjcmlwdCwgYW5kIHJld2luZCBzdGlsbCB3b3JrcyBhY3Jvc3MgaXQuIFxcYC9jb21wYWN0XFxgIHJ1bnMgaXQgbWFudWFsbHkgYW5kIHRha2VzIG9wdGlvbmFsIGZvY3VzIGluc3RydWN0aW9ucyAoXFxgL2NvbXBhY3QgZm9jdXMgb24gdGhlIEFQSSBjaGFuZ2VzXFxgKS4gU2V0IFxcYFwiYXV0b0NvbXBhY3RcIjogZmFsc2VcXGAgaW4gXFxgfi8ucGljby9jb25maWcuanNvblxcYCB0byBkaXNhYmxlIHRoZSBhdXRvbWF0aWMgdHJpZ2dlci5cblxuLS0tXG5cbiplc2MgdGFrZXMgeW91IGJhY2sgdG8gdGhlIGNvbnZlcnNhdGlvbipgXG5cbmV4cG9ydCBmdW5jdGlvbiBIZWxwKHsgY29tbWFuZHMsIG9uQ2xvc2UgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogJzEwMCUnLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+cGljbyBcdTAwQjcgaGVscDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+XHUyMTkxXHUyMTkzIHNjcm9sbCBcdTAwQjcgZXNjIGJhY2s8L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQgc2Nyb2xsYmFyPlxuICAgICAgICA8TWFya2Rvd24gdGV4dD17SEVMUF9URVhUKGNvbW1hbmRzKX0gY29kZUJnPXtudWxsfSAvPlxuICAgICAgPC9TY3JvbGxCb3g+XG4gICAgPC9ib3g+XG4gIClcbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTaWduYWwsIEJ1dHRvbiwgQ2hlY2tib3gsIGVhc2UsIE1lbnUsIFBpY2tMaXN0LCBSYWRpbywgU2Nyb2xsQm94LCBUZXh0SW5wdXQsIHVzZUFuaW1hdGVkLCB1c2VGb2N1cywgdXNlSW5wdXQsIHVzZUludGVydmFsLCB1c2VMYXlvdXQgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZHLCBGR19TT0ZULCBNVVRFRCwgRkFJTlQsIFBBTkVMX0JHLCBTRUxFQ1RfQkcsIFJFRCB9IGZyb20gJy4vdGhlbWUuanMnXG5pbXBvcnQgeyBBbmltYXRlZFZhbHVlIH0gZnJvbSAnLi9hbmltYXRlZC12YWx1ZS5qc3gnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuaW1wb3J0IHsgZm9ybWF0SHR0cFNlcnZlclNwZWMsIHBhcnNlU2VydmVyU3BlYywgcmVkYWN0U2VydmVyU3BlYywgUkVEQUNURURfSEVBREVSIH0gZnJvbSAnLi4vY29yZS9tY3AuanMnXG5cbmZ1bmN0aW9uIHNob3J0ZW5Ib21lKHBhdGgpIHtcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICByZXR1cm4gU3RyaW5nKHBhdGgpLnN0YXJ0c1dpdGgoaG9tZSkgPyBTdHJpbmcocGF0aCkucmVwbGFjZShob21lLCAnficpIDogU3RyaW5nKHBhdGgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aW1lQWdvKGF0KSB7XG4gIGNvbnN0IHMgPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gYXQpIC8gMTAwMCkpXG4gIGlmIChzIDwgNjApIHJldHVybiBgJHtzfXMgYWdvYFxuICBjb25zdCBtID0gTWF0aC5mbG9vcihzIC8gNjApXG4gIGlmIChtIDwgNjApIHJldHVybiBgJHttfW0gYWdvYFxuICBjb25zdCBoID0gTWF0aC5mbG9vcihtIC8gNjApXG4gIGlmIChoIDwgMjQpIHJldHVybiBgJHtofWggYWdvYFxuICByZXR1cm4gYCR7TWF0aC5mbG9vcihoIC8gMjQpfWQgYWdvYFxufVxuXG5mdW5jdGlvbiBQYW5lbEZyYW1lKHsgdGl0bGUsIGhpbnQsIHJpZ2h0LCBjaGlsZHJlbiB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxLCBiZzogUEFORUxfQkcgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ1RvcDogMSB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+e3RpdGxlfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAge3JpZ2h0fVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntoaW50fTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IFNFTEVDVF9CRywgb3ZlcmZsb3c6ICdjbGlwJyB9fT57J1x1MjUwMCcucmVwZWF0KHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgfHwgODApfTwvdGV4dD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBwYWRkaW5nQm90dG9tOiAxIH19PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29uZmlybVBhbmVsKHsgdGl0bGUsIG1lc3NhZ2UsIGNvbmZpcm1MYWJlbCA9ICdDb25maXJtJywgZm9jdXNlZCwgb25Db25maXJtLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAncmV0dXJuJykge1xuICAgICAgb25Db25maXJtKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PXtgZW50ZXI6ICR7Y29uZmlybUxhYmVsLnRvTG93ZXJDYXNlKCl9IFx1MDBCNyBlc2M6IGNhbmNlbGB9PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e21lc3NhZ2V9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogUkVELCBib2xkOiB0cnVlIH19PlRoaXMgY2Fubm90IGJlIHVuZG9uZS48L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZnVuY3Rpb24gQ29uZmlnRmllbGQoeyBmaWVsZCwgdmFsdWUsIGZvY3VzZWQsIGZtLCBvbkNoYW5nZSB9KSB7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dCgpXG4gIGZtLml0ZW0oZmllbGQubmFtZSwgbGF5b3V0KVxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpbkJvdHRvbTogMSB9fT5cbiAgICAgIDxDaGVja2JveCBjaGVja2VkPXt2YWx1ZX0gbGFiZWw9e2ZpZWxkLmxhYmVsfSBmb2N1c2VkPXtmb2N1c2VkfSBvbkNoYW5nZT17b25DaGFuZ2V9IC8+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICAgJHtmaWVsZC5kZXNjfWB9PC90ZXh0PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maWdQYW5lbCh7IHZhbHVlcywgZm9jdXNlZCwgb25DaGFuZ2UsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBmbSA9IHVzZUZvY3VzKHsgaW5pdGlhbDogJ2Nsb3VkcycgfSlcbiAgY29uc3QgZmllbGRzID0gW1xuICAgIHsgbmFtZTogJ2Nsb3VkcycsIGxhYmVsOiAnQ2xvdWQgYW5pbWF0aW9uJywgZGVzYzogJ1Nob3cgYW5pbWF0ZWQgY2xvdWRzIG9uIHRoZSBlbXB0eSBzY3JlZW4nIH0sXG4gICAgeyBuYW1lOiAnY29tcGFjdFRvb2xzJywgbGFiZWw6ICdDb21wYWN0IHRvb2wgaGlzdG9yeScsIGRlc2M6ICdTdW1tYXJpemUgY29uc2VjdXRpdmUgdG9vbCBjYWxscyBpbiBvbmUgcm93JyB9LFxuICBdXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DbG9zZSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiQ29uZmlndXJhdGlvblwiIGhpbnQ9XCJ0YWI6IG5leHQgc2V0dGluZyBcdTAwQjcgc3BhY2U6IHRvZ2dsZSBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBoZWlnaHQ6IDEwLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxTY3JvbGxCb3ggZm9jdXNlZD17ZmFsc2V9IHNjcm9sbGJhciBmb2xsb3dGb2N1cz17Zm19IGZvY3VzUGFkZGluZz17MX0+XG4gICAgICAgICAge2ZpZWxkcy5tYXAoKGZpZWxkKSA9PiAoXG4gICAgICAgICAgICA8Q29uZmlnRmllbGRcbiAgICAgICAgICAgICAga2V5PXtmaWVsZC5uYW1lfVxuICAgICAgICAgICAgICBmaWVsZD17ZmllbGR9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbZmllbGQubmFtZV19XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoZmllbGQubmFtZSl9XG4gICAgICAgICAgICAgIGZtPXtmbX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gb25DaGFuZ2UoZmllbGQubmFtZSwgdmFsdWUpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjb3BlVGFicyh7IHNjb3BlcywgYWN0aXZlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAge3Njb3Blcy5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgPHRleHQga2V5PXtzfSBzdHlsZT17eyBjb2xvcjogaSA9PT0gYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCwgYm9sZDogaSA9PT0gYWN0aXZlIH19PntgJHtpID4gMCA/ICcgICcgOiAnJ30ke3N9YH08L3RleHQ+XG4gICAgICApKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTW9kZWxQYW5lbCh7IG1vZGVscywgY3VycmVudCwgZGVmYXVsdE5hbWUsIGZvY3VzZWQsIG9uUGljaywgb25QaWNrRGVmYXVsdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwobW9kZWxzWzBdIHx8IG51bGwpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBjdXJzb3IoKSkge1xuICAgICAgb25QaWNrRGVmYXVsdChjdXJzb3IoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTZWxlY3QgbW9kZWxcIiBoaW50PVwiZW50ZXI6IHRoaXMgc2Vzc2lvbiBcdTAwQjcgY3RybCtzOiBzZXQgYXMgZGVmYXVsdCBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e21vZGVsc31cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIG1vZGVscy4uLlwiXG4gICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLm5hbWUpID49IDB9XG4gICAgICAgICAgb25DdXJzb3JDaGFuZ2U9e3NldEN1cnNvcn1cbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIHNjcm9sbG9mZj17MX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsobSwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvZmYgPSBtLmF2YWlsYWJsZSA9PT0gZmFsc2VcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6ICFvZmYsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBvZmYgPyBNVVRFRCA6IEZHIH19PnttLm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAge20ubmFtZSA9PT0gY3VycmVudCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogYWNjZW50KCkgfX0+eycgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAge20ubmFtZSA9PT0gZGVmYXVsdE5hbWUgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnsnIFx1MDBCNyBkZWZhdWx0J308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICB7b2ZmID8gYG5lZWRzICR7bS5rZXlIaW50fWAgOiBtLnByaWNlID8gYCQke20ucHJpY2UuaW59IGluIFx1MDBCNyAkJHttLnByaWNlLm91dH0gb3V0YCA6IG0ucHJvdmlkZXIgPT09ICdjb2RleCcgPyAnc3Vic2NyaXB0aW9uJyA6ICdwcmljZSB1bmtub3duJ31cbiAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogTVVURUQgfX0+e20uZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhpc3RvcnlQYW5lbCh7IHByb21wdHMsIHNjb3Blcywgc2NvcGVJbmRleCwgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKHByb21wdHNbMF0gfHwgbnVsbClcbiAgY29uc3QgW3F1ZXJ5LCBzZXRRdWVyeV0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IGFueU1hdGNoID0gcHJvbXB0cy5zb21lKChwKSA9PiBmdXp6eVNjb3JlKHF1ZXJ5KCksIHAudGV4dCkgPj0gMClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIlNlYXJjaCBwcm9tcHRzXCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBlbnRlciB0byBlZGl0IFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtwcm9tcHRzfVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHByb21wdHMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgcCkgPT4gZnV6enlTY29yZShxLCBwLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0UXVlcnl9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uUGljayhwLnRleHQpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7dGltZUFnbyhwLmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7YW55TWF0Y2ggJiYgcHJldmlldygpID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntwcmV2aWV3KCkudGV4dC5zbGljZSgwLCAyMDAwKX08L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBwcm9tcHRzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXdpbmRQaWNrUGFuZWwoeyBlbnRyaWVzLCBzdGF0cywgZm9jdXNlZCwgb25QaWNrLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW3ByZXZpZXcsIHNldFByZXZpZXddID0gY3JlYXRlU2lnbmFsKGVudHJpZXNbMF0gfHwgbnVsbClcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiUmV3aW5kIHRvIGEgbWVzc2FnZVwiIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdG8gY2hvb3NlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17ZW50cmllc31cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtZXNzYWdlcy4uLlwiXG4gICAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIG0udGV4dCkgPj0gMH1cbiAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsobSkgPT4gc2V0UHJldmlldyhtKX1cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkcgfX0+e20udGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtzdGF0cyhtLmluZGV4KS5tc2dzfSBhZnRlcmB9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2ByZXdpbmRpbmcgaGVyZSBkcm9wcyAke3N0YXRzKHByZXZpZXcoKS5pbmRleCkubXNnc30gZW50cmllc2B9PC90ZXh0PlxuICAgICAgICAgICAgICB7c3RhdHMocHJldmlldygpLmluZGV4KS5lZGl0cy5tYXAoKG0sIGkpID0+IChcbiAgICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgXHUyMUE5ICR7bS50aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRleHQuc2xpY2UoMCwgMjAwMCl9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtYXRjaGluZyBtZXNzYWdlczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmV3aW5kQWN0aW9uUGFuZWwoeyB0YXJnZXQsIG9wdGlvbnMsIGZvY3VzZWQsIG9uU3VibWl0LCBvbkJhY2sgfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCksIGJvbGQ6IHRydWUgfX0+UmV3aW5kIG9wdGlvbnM8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+eyd0bzogJ308L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3RhcmdldC50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e29wdGlvbnN9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs0fVxuICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25TdWJtaXR9XG4gICAgICAgICAgb25DYW5jZWw9e29uQmFja31cbiAgICAgICAgICByZW5kZXJJdGVtPXsobywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntvLmxhYmVsfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtvLmRlc2N9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+ZW50ZXIgdG8gY29uZmlybSBcdTAwQjcgZXNjIHRvIHBpY2sgYSBkaWZmZXJlbnQgbWVzc2FnZTwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiB1c2VFc2NhcGUoZm9jdXNlZCwgb25DbG9zZSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQoKSkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXN1bWVQYW5lbCh7IHNlc3Npb25zLCBzY29wZXMsIHNjb3BlSW5kZXgsIGxvYWRpbmcsIGZvY3VzZWQsIGN1cnJlbnRJZCwgb25QaWNrLCBvbkRlbGV0ZSwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChzZXNzaW9uc1swXSB8fCBudWxsKVxuICBjb25zdCBzZWxlY3RlZFNlc3Npb24gPSAoKSA9PiB7XG4gICAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBwcmV2aWV3KClcbiAgICByZXR1cm4gc2Vzc2lvbnMuaW5jbHVkZXMoc2VsZWN0ZWQpID8gc2VsZWN0ZWQgOiBudWxsXG4gIH1cbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBzZWxlY3RlZFNlc3Npb24oKVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHNlbGVjdGVkKSB7XG4gICAgICBvbkRlbGV0ZShzZWxlY3RlZClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiUmVzdW1lIGEgc2Vzc2lvblwiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gcmVzdW1lIFx1MDBCNyBjdHJsK3ggZGVsZXRlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIlxuICAgICAgcmlnaHQ9ezxTY29wZVRhYnMgc2NvcGVzPXtzY29wZXN9IGFjdGl2ZT17c2NvcGVJbmRleH0gLz59XG4gICAgPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxMiwgbWFyZ2luVG9wOiAxLCBnYXA6IDIgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoOiAnNTAlJyB9fT5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT5sb2FkaW5nIHNlc3Npb25zLi4uPC90ZXh0PlxuICAgICAgICAgICkgOiBzZXNzaW9ucy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gc2Vzc2lvbnMgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtzZXNzaW9uc31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgc2Vzc2lvbnMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBzKSA9PiBmdXp6eVNjb3JlKHEsIHMudGl0bGUpID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXsocykgPT4gc2V0UHJldmlldyhzKX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhzLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAge3MuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHMuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntzLnRpdGxlLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAge3MuaGVhZGVyLmlkID09PSBjdXJyZW50SWQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IGFjY2VudCgpLCBkaW06ICFzZWxlY3RlZCB9fT4gY3VycmVudDwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3RpbWVBZ28ocy5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7c2VsZWN0ZWRTZXNzaW9uKCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3NlbGVjdGVkU2Vzc2lvbigpLnR1cm5zfSAke3NlbGVjdGVkU2Vzc2lvbigpLnR1cm5zID09PSAxID8gJ3R1cm4nIDogJ3R1cm5zJ30gXHUwMEI3ICR7dGltZUFnbyhzZWxlY3RlZFNlc3Npb24oKS5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e3NlbGVjdGVkU2Vzc2lvbigpLmhlYWRlci5yb290fTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntzZWxlY3RlZFNlc3Npb24oKS50aXRsZS5zbGljZSgwLCA1MDApfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gc2Vzc2lvbnM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1lbW9yeVBhbmVsKHsgbWVtb3JpZXMsIHNjb3Blcywgc2NvcGVJbmRleCwgZm9jdXNlZCwgb25Gb3JnZXQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29ySXRlbSwgc2V0Q3Vyc29ySXRlbV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW3BhbmUsIHNldFBhbmVdID0gY3JlYXRlU2lnbmFsKCdsaXN0JylcbiAgY29uc3QgcHJldmlldyA9IG1lbW9yaWVzLmluY2x1ZGVzKGN1cnNvckl0ZW0oKSkgPyBjdXJzb3JJdGVtKCkgOiBtZW1vcmllc1swXSB8fCBudWxsXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICd0YWInICYmICFldmVudC5jdHJsICYmICFldmVudC5tZXRhKSB7XG4gICAgICBzZXRQYW5lKChwKSA9PiAocCA9PT0gJ2xpc3QnID8gJ3ByZXZpZXcnIDogJ2xpc3QnKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldykge1xuICAgICAgb25Gb3JnZXQocHJldmlldylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTWVtb3J5XCJcbiAgICAgIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgdGFiOiBmb2N1cyBwcmV2aWV3IFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGN0cmwreCBmb3JnZXQgKHR3aWNlKSBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge21lbW9yaWVzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtZW1vcmllcyBoZXJlIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21lbW9yaWVzfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIHBhbmUoKSA9PT0gJ2xpc3QnfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtZW1vcmllcy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgYCR7bS5uYW1lfSAke20uZGVzY3JpcHRpb259YCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9e3NldEN1cnNvckl0ZW19XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsoKSA9PiB7fX1cbiAgICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIHNjcm9sbGJhclxuICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke20uc2NvcGV9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldyA/IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZCAmJiBwYW5lKCkgPT09ICdwcmV2aWV3J30gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57cHJldmlldy5kZXNjcmlwdGlvbiB8fCAnbm8gZGVzY3JpcHRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e3ByZXZpZXcuYm9keX08L3RleHQ+XG4gICAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG1lbW9yaWVzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFZmZvcnRQYW5lbCh7IGxldmVscywgY3VycmVudCwgZGVmYXVsdExldmVsLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IGl0ZW1zID0gbGV2ZWxzXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJykge1xuICAgICAgb25QaWNrRGVmYXVsdChpdGVtc1tjdXJzb3IoKV0pXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBsYWJlbCA9IChsKSA9PiAobC5rZXkgPT09IG51bGwgPyAnZGVmYXVsdCcgOiBsLmtleSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhpbmtpbmcgZWZmb3J0XCIgaGludD1cImovayB0byBtb3ZlIFx1MDBCNyBlbnRlcjogdGhpcyBzZXNzaW9uIFx1MDBCNyBjdHJsK3M6IHNldCBhcyBkZWZhdWx0IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9e3NldEN1cnNvcn1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KGwsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntsYWJlbChsKS5wYWRFbmQoTWF0aC5tYXgoMTAsIGxhYmVsKGwpLmxlbmd0aCArIDEpKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57bC5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAge2wua2V5ID09PSBjdXJyZW50ICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PnsnICBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICAgIHtsLmtleSA9PT0gZGVmYXVsdExldmVsICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57JyAgXHUwMEI3IGRlZmF1bHQnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUaGVtZVBhbmVsKHsgdGhlbWVzLCBwcmVmLCBmb2N1c2VkLCBvblBpY2ssIG9uUHJldmlldywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSBjcmVhdGVTaWduYWwoTWF0aC5tYXgoMCwgdGhlbWVzLmZpbmRJbmRleCgodCkgPT4gdC5rZXkgPT09IHByZWYpKSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiVGhlbWVcIiBoaW50PVwiai9rIHRvIG1vdmUgYW5kIHByZXZpZXcgXHUwMEI3IGVudGVyIHRvIGFwcGx5IFx1MDBCNyBlc2M6IGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgaXRlbXM9e3RoZW1lc31cbiAgICAgICAgICBzZWxlY3RlZD17Y3Vyc29yKCl9XG4gICAgICAgICAgb25TZWxlY3Q9eyhpKSA9PiB7XG4gICAgICAgICAgICBzZXRDdXJzb3IoaSlcbiAgICAgICAgICAgIG9uUHJldmlldyh0aGVtZXNbaV0pXG4gICAgICAgICAgfX1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgcmVuZGVySXRlbT17KHQsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19Pnt0LmtleS5wYWRFbmQoTWF0aC5tYXgoMTAsIHQua2V5Lmxlbmd0aCArIDEpKX08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57dC5kZXNjfTwvdGV4dD5cbiAgICAgICAgICAgICAge3Qua2V5ID09PSBwcmVmICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PnsnICBcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIENvbnRleHRPdmVydmlldyh7IG92ZXJ2aWV3IH0pIHtcbiAgY29uc3QgcmV2ZWFsID0gdXNlQW5pbWF0ZWQoMCwgZWFzZSg3MDApKVxuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXQoKVxuICByZXZlYWwuc2V0KDEpXG4gIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoMSwgbGF5b3V0LndpZHRoIHx8IDEpXG4gIGNvbnN0IHZpc2libGUgPSBNYXRoLnJvdW5kKHdpZHRoICogcmV2ZWFsKCkpXG4gIGNvbnN0IHRvdGFsID0gb3ZlcnZpZXcuc2VnbWVudHMucmVkdWNlKChzdW0sIHNlZ21lbnQpID0+IHN1bSArIHNlZ21lbnQudG9rZW5zLCAwKVxuICBsZXQgYm91bmRhcnkgPSAwXG4gIGNvbnN0IGNlbGxzID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHdpZHRoOyBpKyspIHtcbiAgICBjb25zdCBzZWdtZW50ID0gb3ZlcnZpZXcuc2VnbWVudHMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgYm91bmRhcnkgKz0gaXRlbS50b2tlbnMgLyB0b3RhbCAqIHdpZHRoXG4gICAgICByZXR1cm4gaSA8IGJvdW5kYXJ5XG4gICAgfSlcbiAgICBib3VuZGFyeSA9IDBcbiAgICBjZWxscy5wdXNoKFxuICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogaSA+PSB2aXNpYmxlID8gUEFORUxfQkcgOiBzZWdtZW50Py5jb2xvciB8fCBGQUlOVCB9fT5cbiAgICAgICAge2kgPj0gdmlzaWJsZSA/ICcgJyA6IHNlZ21lbnQgPyAnXHUyNTg4JyA6ICdcdTI1OTEnfVxuICAgICAgPC90ZXh0PixcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+e2NlbGxzfTwvYm94PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgZmxleFdyYXA6ICd3cmFwJyB9fT5cbiAgICAgICAge292ZXJ2aWV3LnNlZ21lbnRzLm1hcCgoc2VnbWVudCkgPT4gKFxuICAgICAgICAgIDxib3gga2V5PXtzZWdtZW50LmxhYmVsfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgbWFyZ2luUmlnaHQ6IDIgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VnbWVudC5jb2xvciB9fT5cdTI1QTA8L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2AgJHtzZWdtZW50LmxhYmVsfSBgfTwvdGV4dD5cbiAgICAgICAgICAgIDxBbmltYXRlZFZhbHVlXG4gICAgICAgICAgICAgIHZhbHVlPXtzZWdtZW50LnRva2Vuc31cbiAgICAgICAgICAgICAgaW5pdGlhbD17MH1cbiAgICAgICAgICAgICAgZHVyYXRpb249ezIwMDB9XG4gICAgICAgICAgICAgIGNvbG9yPXtGQUlOVH1cbiAgICAgICAgICAgICAgaGlnaGxpZ2h0PXthY2NlbnQoKX1cbiAgICAgICAgICAgICAgZm9ybWF0PXsodG9rZW5zKSA9PiB0b2tlbnMgPCAxMDAwID8gYCR7TWF0aC5yb3VuZCh0b2tlbnMpfSB0b2tgIDogYCR7KHRva2VucyAvIDEwMDApLnRvRml4ZWQoMSl9a2B9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApKX1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBJbmZvTGlzdFBhbmVsKHsgdGl0bGUsIHJvd3MsIG92ZXJ2aWV3LCBmb2N1c2VkLCBvbkNsb3NlIH0pIHtcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT17dGl0bGV9IGhpbnQ9XCJqL2sgb3IgXHUyMTkxXHUyMTkzIHRvIHNjcm9sbCBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICB7b3ZlcnZpZXcgJiYgPENvbnRleHRPdmVydmlldyBvdmVydmlldz17b3ZlcnZpZXd9IC8+fVxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7cm93cy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vdGhpbmcgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICB7cm93cy5tYXAoKHJvdywgaSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IGtleT17YCR7cm93Lm5hbWV9LSR7aX1gfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiBpID09PSAwID8gMCA6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57cm93Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAge3Jvdy5ub3RlICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57cm93Lm5vdGV9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e3Jvdy5kZXNjIHx8ICdubyBkZXNjcmlwdGlvbid9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBQcm9qZWN0UGFuZWwoeyBwcm9qZWN0cywgbG9hZGluZywgZm9jdXNlZCwgb25QaWNrLCBvbkRlbGV0ZSwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChwcm9qZWN0c1swXSB8fCBudWxsKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBwcmV2aWV3KCkpIHtcbiAgICAgIG9uRGVsZXRlKHByZXZpZXcoKSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTd2l0Y2ggcHJvamVjdFwiIGhpbnQ9XCJcdTIxOTFcdTIxOTMgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdG8ganVtcCB0byBpdHMgbGFzdCBzZXNzaW9uIFx1MDBCNyBjdHJsK3ggZGVsZXRlIFx1MDBCNyBlc2MgdG8gY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBwcm9qZWN0cy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogcHJvamVjdHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIGtub3duIHByb2plY3RzIHlldDwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e3Byb2plY3RzfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmICFsb2FkaW5nfVxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9qZWN0cy4uLlwiXG4gICAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC5wYXRoKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHApID0+IHNldFByZXZpZXcocCl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtwLmxhdGVzdC5jb2xvciAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogcC5sYXRlc3QuY29sb3IgfX0+eydcdTI1QUEgJ308L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PntwLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3AuY3VycmVudCA/ICdjdXJyZW50IFx1MDBCNyAnIDogJyd9JHt0aW1lQWdvKHAubGF0ZXN0LmF0KX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIHtwcmV2aWV3KCkgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntwcmV2aWV3KCkucGF0aH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCR7cHJldmlldygpLmNvdW50fSAke3ByZXZpZXcoKS5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IFx1MDBCNyAke3RpbWVBZ28ocHJldmlldygpLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZULCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57YGxhc3Q6ICR7cHJldmlldygpLmxhdGVzdC50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX1gfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcHJvamVjdHM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNoZWxsc1BhbmVsKHsgdmVyc2lvbiwgc2hlbGxzLCByZWFkT3V0cHV0LCBmb2N1c2VkLCBvbktpbGwsIG9uRGlzbWlzcywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFt2aWV3aW5nLCBzZXRWaWV3aW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZm9sbG93LCBzZXRGb2xsb3ddID0gY3JlYXRlU2lnbmFsKHRydWUpXG4gIGNvbnN0IFtvZmZzZXQsIHNldE9mZnNldF0gPSBjcmVhdGVTaWduYWwoMClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcbiAgdm9pZCB2ZXJzaW9uXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzaGVsbHNbTWF0aC5taW4oaW5kZXgoKSwgc2hlbGxzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkIHx8IHZpZXdpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgcyA9IHNlbGVjdGVkKClcbiAgICBpZiAocyAmJiBldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnKSB7XG4gICAgICBpZiAocy5zdGF0dXMgPT09ICdydW5uaW5nJykgb25LaWxsKHMpXG4gICAgICBlbHNlIG9uRGlzbWlzcyhzKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgdXB0aW1lID0gKHMpID0+IHtcbiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcigoKHMuZW5kZWRBdCB8fCBEYXRlLm5vdygpKSAtIHMuc3RhcnRlZEF0KSAvIDEwMDApXG4gICAgcmV0dXJuIHNlY3MgPCA2MCA/IGAke3NlY3N9c2AgOiBgJHtNYXRoLmZsb29yKHNlY3MgLyA2MCl9bSR7c2VjcyAlIDYwfXNgXG4gIH1cblxuICBpZiAodmlld2luZygpKSB7XG4gICAgY29uc3Qgb3V0ID0gcmVhZE91dHB1dCh2aWV3aW5nKCkpXG4gICAgaWYgKCFvdXQpIHtcbiAgICAgIHNldFZpZXdpbmcobnVsbClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGluZXMgPSBvdXQub3V0cHV0ID8gb3V0Lm91dHB1dC5zcGxpdCgnXFxuJykgOiBbXVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFBhbmVsRnJhbWVcbiAgICAgICAgICB0aXRsZT17YHNoZWxsICR7b3V0LmlkfSBcdTAwQjcgJHtvdXQuY29tbWFuZC5zbGljZSgwLCA2MCl9YH1cbiAgICAgICAgICBoaW50PXtgJHtvdXQuc3RhdHVzID09PSAncnVubmluZycgPyAncnVubmluZycgOiBgZXhpdGVkIFx1MDBCNyBjb2RlICR7b3V0LmV4aXRDb2RlfWB9IFx1MDBCNyAke291dC50b3RhbExpbmVzfSBsaW5lcyBcdTAwQjcgai9rIHNjcm9sbCBcdTAwQjcgZXNjIGJhY2tgfVxuICAgICAgICA+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNiwgbWFyZ2luVG9wOiAxLCBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIG91dHB1dCB5ZXQ8L3RleHQ+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8U2Nyb2xsQm94XG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgZmxleEdyb3c6IDEgfX1cbiAgICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgICAgIHNjcm9sbE9mZnNldD17Zm9sbG93KCkgPyAxZTkgOiBvZmZzZXQoKX1cbiAgICAgICAgICAgICAgICBvblNjcm9sbD17KG5leHQsIG1ldGEpID0+IHtcbiAgICAgICAgICAgICAgICAgIHNldEZvbGxvdyghIW1ldGE/LmF0Qm90dG9tKVxuICAgICAgICAgICAgICAgICAgc2V0T2Zmc2V0KG5leHQpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtsaW5lcy5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L1BhbmVsRnJhbWU+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNoZWxsc1wiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXIgdmlldyBvdXRwdXQgXHUwMEI3IGN0cmwreCBraWxsIG9yIGRpc21pc3MgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7c2hlbGxzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gYmFja2dyb3VuZCBzaGVsbHMgXHUwMEI3IHRoZSBhZ2VudCBzdGFydHMgdGhlbSB3aXRoIGJhc2ggYmFja2dyb3VuZDogdHJ1ZTwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3NoZWxsc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHMpID0+IHtcbiAgICAgICAgICAgICAgc2V0Rm9sbG93KHRydWUpXG4gICAgICAgICAgICAgIHNldE9mZnNldCgwKVxuICAgICAgICAgICAgICBzZXRWaWV3aW5nKHMuaWQpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHMuc3RhdHVzID09PSAncnVubmluZycgPyBhY2NlbnQoKSA6IHMuZXhpdENvZGUgPT09IDAgPyBNVVRFRCA6IFJFRCB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gJ1x1MjY5OScgOiBzLmV4aXRDb2RlID09PSAwID8gJ1x1MjcxMycgOiAnXHUyNzE3J31cbiAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLmlkLnBhZEVuZChNYXRoLm1heCgzLCBzLmlkLmxlbmd0aCArIDEpKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEsIGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAge3MuZGVzY3JpcHRpb24gJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IEZHIDogRkdfU09GVCB9fT57YCR7cy5kZXNjcmlwdGlvbn0gIGB9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogcy5kZXNjcmlwdGlvbiA/IEZBSU5UIDogYWN0aXZlID8gRkcgOiBGR19TT0ZUIH19PntzLmNvbW1hbmR9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gYHVwICR7dXB0aW1lKHMpfWAgOiBgZXhpdCAke3MuZXhpdENvZGV9IFx1MDBCNyAke3VwdGltZShzKX1gfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gQ29ubmVjdFBhbmVsKHsgcHJvdmlkZXJzLCBmb2N1c2VkLCBvbkNvbm5lY3QsIG9uRGlzY29ubmVjdCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gcHJvdmlkZXJzW01hdGgubWluKGluZGV4KCksIHByb3ZpZGVycy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgY29uc3QgcCA9IHNlbGVjdGVkKClcbiAgICBpZiAocCAmJiBldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHAuY29ubmVjdGVkKSB7XG4gICAgICBvbkRpc2Nvbm5lY3QocClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJDb25uZWN0IGEgc3Vic2NyaXB0aW9uXCIgaGludD1cImVudGVyIHNpZ24gaW4gXHUwMEI3IGN0cmwreCBkaXNjb25uZWN0ICh0d2ljZSkgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17cHJvdmlkZXJzfVxuICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgIG9uU2VsZWN0PXtzZXRJbmRleH1cbiAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgdmltS2V5c1xuICAgICAgICAgIG9uU3VibWl0PXsocCkgPT4gb25Db25uZWN0KHApfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhwLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogcC5jb25uZWN0ZWQgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntwLmNvbm5lY3RlZCA/ICdcdTI1QUEnIDogJ1x1MjVBQid9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3AubGFiZWx9ICBgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5jb25uZWN0ZWQgPyBgY29ubmVjdGVkJHtwLmVtYWlsID8gYCBhcyAke3AuZW1haWx9YCA6ICcnfWAgOiAnbm90IGNvbm5lY3RlZCd9XG4gICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICl9XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFdha2V1cHNQYW5lbCh7IHdha2V1cHMsIGZvY3VzZWQsIG9uQ2FuY2VsLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3RpY2ssIHNldFRpY2tdID0gY3JlYXRlU2lnbmFsKDApXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnRlcnZhbCgoKSA9PiBzZXRUaWNrKCh0KSA9PiB0ICsgMSksIDEwMDApXG4gIHZvaWQgdGljaygpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiB3YWtldXBzW01hdGgubWluKGluZGV4KCksIHdha2V1cHMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHcgPSBzZWxlY3RlZCgpXG4gICAgaWYgKHcgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgb25DYW5jZWwodylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGNvdW50ZG93biA9IChhdCkgPT4ge1xuICAgIGNvbnN0IHNlY3MgPSBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpXG4gICAgaWYgKHNlY3MgPCA2MCkgcmV0dXJuIGBpbiAke3NlY3N9c2BcbiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNzIC8gNjApXG4gICAgaWYgKG1pbnMgPCA2MCkgcmV0dXJuIGBpbiAke21pbnN9bSAke3NlY3MgJSA2MH1zYFxuICAgIHJldHVybiBgaW4gJHtNYXRoLmZsb29yKG1pbnMgLyA2MCl9aCAke21pbnMgJSA2MH1tYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlNjaGVkdWxlZCB3YWtlLXVwc1wiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXIgb3IgY3RybCt4IGNhbmNlbCAodHdpY2UpIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3dha2V1cHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBwZW5kaW5nIHdha2UtdXBzIFx1MDBCNyB0aGUgYWdlbnQgc2NoZWR1bGVzIHRoZW0gd2l0aCBzY2hlZHVsZV93YWtldXA8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXt3YWtldXBzfVxuICAgICAgICAgICAgc2VsZWN0ZWQ9e2luZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIGl0ZW1IZWlnaHQ9ezJ9XG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBvblN1Ym1pdD17KHcpID0+IG9uQ2FuY2VsKHcpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsodywgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2BcdTIzRjAgJHt3LmlkfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntjb3VudGRvd24ody5hdCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke25ldyBEYXRlKHcuYXQpLnRvTG9jYWxlVGltZVN0cmluZygpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSwgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eycgICAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3cubm90ZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmNvbnN0IE1DUF9TVEFUVVMgPSB7XG4gIGNvbm5lY3RlZDogeyBpY29uOiAnXHUyNUFBJywgY29sb3I6IGFjY2VudCgpIH0sXG4gIGNvbm5lY3Rpbmc6IHsgaWNvbjogJ1x1MjVDQycsIGNvbG9yOiAnI2ZiYmYyNCcgfSxcbiAgZXJyb3I6IHsgaWNvbjogJ1x1MjcxNycsIGNvbG9yOiBSRUQgfSxcbiAgZGlzYWJsZWQ6IHsgaWNvbjogJ1x1MjVBQicsIGNvbG9yOiBGQUlOVCB9LFxuICBpZGxlOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogTVVURUQgfSxcbn1cblxuZnVuY3Rpb24gRm9ybUZpZWxkKHsgbGFiZWwsIGFjdGl2ZSwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGQUlOVCB9fT57bGFiZWx9PC90ZXh0PlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBNY3BTZXJ2ZXJGb3JtKHsgZm9jdXNlZCwgc2VydmVyLCBvblNhdmUsIG9uSW52YWxpZCwgb25DYW5jZWwgfSkge1xuICBjb25zdCBpbml0aWFsID0gc2VydmVyID8gcGFyc2VTZXJ2ZXJTcGVjKHNlcnZlci5jb21tYW5kKSA6IG51bGxcbiAgY29uc3QgZWRpdGluZyA9ICEhc2VydmVyXG4gIGNvbnN0IFtuYW1lLCBzZXROYW1lXSA9IGNyZWF0ZVNpZ25hbChzZXJ2ZXI/Lm5hbWUgfHwgJycpXG4gIGNvbnN0IFtzY29wZSwgc2V0U2NvcGVdID0gY3JlYXRlU2lnbmFsKHNlcnZlcj8uc2NvcGUgfHwgJ2dsb2JhbCcpXG4gIGNvbnN0IFt0cmFuc3BvcnQsIHNldFRyYW5zcG9ydF0gPSBjcmVhdGVTaWduYWwoaW5pdGlhbD8udHlwZSB8fCAnc3RkaW8nKVxuICBjb25zdCBbdGFyZ2V0LCBzZXRUYXJnZXRdID0gY3JlYXRlU2lnbmFsKGluaXRpYWw/LnR5cGUgPT09ICdodHRwJyA/IGluaXRpYWwudXJsIDogc2VydmVyPy5jb21tYW5kIHx8ICcnKVxuICBjb25zdCBpbml0aWFsSGVhZGVycyA9IGluaXRpYWw/LnR5cGUgPT09ICdodHRwJ1xuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5rZXlzKGluaXRpYWwuaGVhZGVycykubWFwKChuYW1lKSA9PiBbbmFtZSwgUkVEQUNURURfSEVBREVSXSkpXG4gICAgOiB7fVxuICBjb25zdCBbaGVhZGVycywgc2V0SGVhZGVyc10gPSBjcmVhdGVTaWduYWwoZm9ybWF0SHR0cFNlcnZlclNwZWMoJycsIGluaXRpYWxIZWFkZXJzKS50cmltKCkpXG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6IGVkaXRpbmcgPyAndHJhbnNwb3J0JyA6ICduYW1lJyB9KVxuICBpZiAoIWVkaXRpbmcpIHtcbiAgICBmbS5pdGVtKCduYW1lJylcbiAgICBmbS5pdGVtKCdzY29wZScpXG4gIH1cbiAgZm0uaXRlbSgndHJhbnNwb3J0JylcbiAgZm0uaXRlbSgndGFyZ2V0JylcbiAgaWYgKHRyYW5zcG9ydCgpID09PSAnaHR0cCcpIGZtLml0ZW0oJ2hlYWRlcnMnKVxuICBmbS5pdGVtKCdzYXZlJylcbiAgZm0uaXRlbSgnY2FuY2VsJylcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNhbmNlbCgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBodHRwID0gdHJhbnNwb3J0KCkgPT09ICdodHRwJ1xuXG4gIGNvbnN0IHN1Ym1pdCA9ICgpID0+IHtcbiAgICBjb25zdCBzZXJ2ZXJOYW1lID0gbmFtZSgpLnRyaW0oKVxuICAgIGNvbnN0IHZhbHVlID0gdGFyZ2V0KCkudHJpbSgpXG4gICAgaWYgKCFzZXJ2ZXJOYW1lIHx8IC9cXHMvLnRlc3Qoc2VydmVyTmFtZSkpIHJldHVybiBvbkludmFsaWQoJ25hbWUgaXMgcmVxdWlyZWQgYW5kIGNhbm5vdCBjb250YWluIHNwYWNlcycpXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG9uSW52YWxpZChodHRwID8gJ3VybCBpcyByZXF1aXJlZCcgOiAnY29tbWFuZCBpcyByZXF1aXJlZCcpXG4gICAgaWYgKGh0dHAgJiYgIS9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ3VybCBtdXN0IHN0YXJ0IHdpdGggaHR0cDovLyBvciBodHRwczovLycpXG4gICAgaWYgKCFodHRwICYmIC9eaHR0cHM/OlxcL1xcLy8udGVzdCh2YWx1ZSkpIHJldHVybiBvbkludmFsaWQoJ2Egc3RkaW8gY29tbWFuZCBjYW5ub3Qgc3RhcnQgd2l0aCBhIHVybDsgcGljayB0aGUgaHR0cCB0cmFuc3BvcnQnKVxuICAgIGNvbnN0IGV4dHJhID0gaGVhZGVycygpLnRyaW0oKVxuICAgIGxldCBzcGVjID0gaHR0cCAmJiBleHRyYSA/IGAke3ZhbHVlfSAke2V4dHJhfWAgOiB2YWx1ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVNlcnZlclNwZWMoc3BlYylcbiAgICAgIGlmIChwYXJzZWQudHlwZSA9PT0gJ2h0dHAnICYmIGluaXRpYWw/LnR5cGUgPT09ICdodHRwJykge1xuICAgICAgICBmb3IgKGNvbnN0IFtoZWFkZXIsIGhlYWRlclZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWQuaGVhZGVycykpIHtcbiAgICAgICAgICBpZiAoaGVhZGVyVmFsdWUgPT09IFJFREFDVEVEX0hFQURFUiAmJiBpbml0aWFsLmhlYWRlcnNbaGVhZGVyXSAhPT0gdW5kZWZpbmVkKSBwYXJzZWQuaGVhZGVyc1toZWFkZXJdID0gaW5pdGlhbC5oZWFkZXJzW2hlYWRlcl1cbiAgICAgICAgfVxuICAgICAgICBzcGVjID0gZm9ybWF0SHR0cFNlcnZlclNwZWMocGFyc2VkLnVybCwgcGFyc2VkLmhlYWRlcnMpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gb25JbnZhbGlkKGVyci5tZXNzYWdlKVxuICAgIH1cbiAgICBvblNhdmUoc2VydmVyTmFtZSwgc3BlYywgc2NvcGUoKSlcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgeyFlZGl0aW5nICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cIm5hbWVcIiBhY3RpdmU9e2ZtLmlzKCduYW1lJyl9PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIDxUZXh0SW5wdXQgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnbmFtZScpfSBwbGFjZWhvbGRlcj1cImxpbmVhclwiIG9uQ2hhbmdlPXtzZXROYW1lfSAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICB7IWVkaXRpbmcgJiYgKFxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwic2NvcGVcIiBhY3RpdmU9e2ZtLmlzKCdzY29wZScpfT5cbiAgICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydnbG9iYWwnLCAncHJvamVjdCddfSBzZWxlY3RlZD17c2NvcGUoKX0gb25DaGFuZ2U9e3NldFNjb3BlfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdzY29wZScpfSAvPlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwidHJhbnNwb3J0XCIgYWN0aXZlPXtmbS5pcygndHJhbnNwb3J0Jyl9PlxuICAgICAgICA8UmFkaW8gb3B0aW9ucz17WydzdGRpbycsICdodHRwJ119IHNlbGVjdGVkPXt0cmFuc3BvcnQoKX0gb25DaGFuZ2U9e3NldFRyYW5zcG9ydH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndHJhbnNwb3J0Jyl9IC8+XG4gICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDxGb3JtRmllbGQgbGFiZWw9e2h0dHAgPyAndXJsJyA6ICdjb21tYW5kJ30gYWN0aXZlPXtmbS5pcygndGFyZ2V0Jyl9PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgPFRleHRJbnB1dFxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygndGFyZ2V0Jyl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17aHR0cCA/ICdodHRwczovL21jcC5saW5lYXIuYXBwL21jcCcgOiAnbnB4IC15IEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZXJ2ZXItZmlsZXN5c3RlbSAvdG1wJ31cbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZT17dGFyZ2V0KCl9XG4gICAgICAgICAgICBvbkNoYW5nZT17c2V0VGFyZ2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICB7aHR0cCAmJiAoXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJoZWFkZXJzIFx1MDBCNyBvcHRpb25hbFwiIGFjdGl2ZT17Zm0uaXMoJ2hlYWRlcnMnKX0+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgPFRleHRJbnB1dCBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdoZWFkZXJzJyl9IHBsYWNlaG9sZGVyPSdBdXRob3JpemF0aW9uPVwiQmVhcmVyIC4uLlwiIFgtVGVhbT1cImNvcmVcIicgaW5pdGlhbFZhbHVlPXtoZWFkZXJzKCl9IG9uQ2hhbmdlPXtzZXRIZWFkZXJzfSAvPlxuICAgICAgICAgIDwvYm94PlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICl9XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8QnV0dG9uIGxhYmVsPXtlZGl0aW5nID8gJ3NhdmUnIDogJ2FkZCd9IG9uUHJlc3M9e3N1Ym1pdH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnc2F2ZScpfSAvPlxuICAgICAgICA8dGV4dD4gIDwvdGV4dD5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD1cImNhbmNlbFwiIG9uUHJlc3M9e29uQ2FuY2VsfSBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKCdjYW5jZWwnKX0gdmFyaWFudD1cImRpbVwiIC8+XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWNwUGFuZWwoeyBzZXJ2ZXJzLCBmb2N1c2VkLCBvblRvZ2dsZSwgb25SZWNvbm5lY3QsIG9uUmVtb3ZlLCBvbkFkZCwgb25FZGl0LCBvbkludmFsaWQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbZm9ybSwgc2V0Rm9ybV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3ZpZXdpbmcsIHNldFZpZXdpbmddID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkICYmICFmb3JtKCksICgpID0+ICh2aWV3aW5nKCkgPyBzZXRWaWV3aW5nKG51bGwpIDogb25DbG9zZSgpKSlcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHNlcnZlcnNbTWF0aC5taW4oaW5kZXgoKSwgc2VydmVycy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuICBjb25zdCB2aWV3ZWQgPSAoKSA9PiBzZXJ2ZXJzLmZpbmQoKHMpID0+IHMubmFtZSA9PT0gdmlld2luZygpKSB8fCBudWxsXG5cbiAgaWYgKHZpZXdpbmcoKSAmJiB2aWV3ZWQoKSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHZpZXdlZCgpXG4gICAgY29uc3QgZGVzY3JpYmUgPSAodCkgPT4gdC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9eXFxbW15cXF1dKlxcXVxccyovLCAnJykudHJpbSgpIHx8ICdubyBkZXNjcmlwdGlvbidcbiAgICByZXR1cm4gKFxuICAgICAgPFBhbmVsRnJhbWVcbiAgICAgICAgdGl0bGU9e2BNQ1Agc2VydmVycyBcdTAwQjcgJHtzZXJ2ZXIubmFtZX0gXHUwMEI3ICR7c2VydmVyLnRvb2xzLmxlbmd0aH0gJHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAxID8gJ3Rvb2wnIDogJ3Rvb2xzJ31gfVxuICAgICAgICBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrIHRvIHNlcnZlcnNcIlxuICAgICAgPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6IDE0LCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3NlcnZlci50b29scy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gdG9vbHMgcmVwb3J0ZWQgXHUwMEI3IGlzIHRoZSBzZXJ2ZXIgY29ubmVjdGVkPzwvdGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkPXtmb2N1c2VkfSBzY3JvbGxiYXI+XG4gICAgICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubWFwKCh0LCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBrZXk9e3QubmFtZX0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19Pnt0Lm5hbWV9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntkZXNjcmliZSh0KX08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L1BhbmVsRnJhbWU+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJNQ1Agc2VydmVyc1wiXG4gICAgICBoaW50PXtmb3JtKClcbiAgICAgICAgPyAndGFiIG1vdmVzIGJldHdlZW4gZmllbGRzIFx1MDBCNyBqL2sgKyBzcGFjZSBwaWNrcyBhIHJhZGlvIG9wdGlvbiBcdTAwQjcgZXNjIGNhbmNlbHMnXG4gICAgICAgIDogJ2VudGVyIGVuYWJsZS9kaXNhYmxlIFx1MDBCNyB0IHRvb2xzIFx1MDBCNyBlIGVkaXQgXHUwMEI3IHIgcmVjb25uZWN0IFx1MDBCNyBhIGFkZCBcdTAwQjcgY3RybCt4IHJlbW92ZSAodHdpY2UpIFx1MDBCNyBlc2MgY2xvc2UnfVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge2Zvcm0oKSA/IChcbiAgICAgICAgICA8TWNwU2VydmVyRm9ybVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIHNlcnZlcj17Zm9ybSgpID09PSAnYWRkJyA/IG51bGwgOiBmb3JtKCl9XG4gICAgICAgICAgICBvblNhdmU9eyhuYW1lLCBzcGVjLCBzY29wZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZm9ybSgpID09PSAnYWRkJykgb25BZGQobmFtZSwgc3BlYywgc2NvcGUpXG4gICAgICAgICAgICAgIGVsc2Ugb25FZGl0KG5hbWUsIHNwZWMpXG4gICAgICAgICAgICAgIHNldEZvcm0obnVsbClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbkludmFsaWQ9e29uSW52YWxpZH1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXsoKSA9PiBzZXRGb3JtKG51bGwpfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiBzZXJ2ZXJzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gTUNQIHNlcnZlcnMgY29uZmlndXJlZCBcdTAwQjcgcHJlc3MgYSB0byBhZGQgb25lPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17c2VydmVyc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezZ9XG4gICAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhzKSA9PiBvblRvZ2dsZShzLm5hbWUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBhY3RpdmUgfSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzdCA9IE1DUF9TVEFUVVNbcy5zdGF0dXNdIHx8IE1DUF9TVEFUVVMuaWRsZVxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc3QuY29sb3IgfX0+e3N0Lmljb259PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57YCAke3MubmFtZS5wYWRFbmQoTWF0aC5tYXgoMTQsIHMubmFtZS5sZW5ndGggKyAxKSl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHMuc3RhdHVzID09PSAnZXJyb3InID8gUkVEIDogTVVURUQgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdlcnJvcicgPyBzLmVycm9yIDogcy5zdGF0dXMgPT09ICdjb25uZWN0ZWQnID8gYCR7cy50b29sQ291bnR9IHRvb2xzYCA6IHMuc3RhdHVzfVxuICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQ+eycgICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGQUlOVCB9fT57c2hvcnRlbkhvbWUocmVkYWN0U2VydmVyU3BlYyhzLmNvbW1hbmQpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7cy5zY29wZSA9PT0gJ3Byb2plY3QnID8gJ3Byb2plY3QnIDogJ2dsb2JhbCd9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgICB7IWZvcm0oKSAmJiAoXG4gICAgICAgIDxNY3BLZXlzXG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBvbktleT17KGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcyA9IHNlbGVjdGVkKClcbiAgICAgICAgICAgIGlmIChrZXkgPT09ICdhJykgc2V0Rm9ybSgnYWRkJylcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAnZScpIHNldEZvcm0ocylcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAncicpIG9uUmVjb25uZWN0KHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAncmVtb3ZlJykgb25SZW1vdmUocy5uYW1lKVxuICAgICAgICAgICAgZWxzZSBpZiAocyAmJiBrZXkgPT09ICd0Jykgc2V0Vmlld2luZyhzLm5hbWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIE1jcEtleXMoeyBmb2N1c2VkLCBvbktleSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIG9uS2V5KCdyZW1vdmUnKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoIWV2ZW50LmN0cmwgJiYgWydhJywgJ2UnLCAncicsICd0J10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgb25LZXkoZXZlbnQua2V5KVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG4gIHJldHVybiBudWxsXG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7OztBQUFBLFNBQVMsZUFBZTtBQVNqQixTQUFTLGFBQWEsTUFBTSxRQUFRLEtBQUs7QUFDOUMsUUFBTUEsUUFBTyxDQUFDO0FBQ2QsYUFBVyxLQUFLLFdBQVc7QUFDekIsVUFBTSxPQUFPLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyQyxRQUFJLEtBQU0sQ0FBQUEsTUFBSyxFQUFFLEVBQUUsSUFBSSxJQUFJLElBQUk7QUFBQSxFQUNqQztBQUNBLFNBQU9BO0FBQ1Q7QUFFTyxTQUFTLFVBQVVBLE9BQU07QUFDOUIsVUFB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Y0FBYSxZQUFhLEVBQUMsT0FBUSxDQUFDLFFBQU8sT0FBTyxHQUFFLFFBQVMsQ0FBQyxNQUFNLEVBQUMsR0FBRSxjQUFlLE9BQU0sT0FBUSxFQUFDLFNBQVUsS0FBTyxPQUFRLE9BQU8sUUFBUyxNQUFNLEdBQUUsTUFBTyxFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsRUFBQyxHQUFFLFdBQVUsRUFBQyxJQUFLLFdBQVUsTUFBTyxXQUFVLGFBQWMsdUZBQXNGLFFBQVMsV0FBVSxZQUFhLE1BQUssV0FBWSxNQUFLLG1CQUFvQixDQUFDLEVBQUMsTUFBTyxVQUFTLFFBQVMsQ0FBQyxRQUFPLE9BQU0sVUFBUyxRQUFPLFNBQVEsS0FBSyxFQUFDLENBQUMsR0FBRSxXQUFZLE1BQUssbUJBQW9CLE1BQUssYUFBYyxPQUFNLFdBQVksY0FBYSxjQUFlLGNBQWEsY0FBZSxjQUFhLFlBQWEsRUFBQyxPQUFRLENBQUMsUUFBTyxTQUFRLEtBQUssR0FBRSxRQUFTLENBQUMsTUFBTSxFQUFDLEdBQUUsY0FBZSxPQUFNLE9BQVEsRUFBQyxTQUFVLE9BQVEsT0FBUSxPQUFPLFFBQVMsTUFBTSxHQUFFLGNBQWUsRUFBQyxPQUFRLEVBQUMsTUFBTyxFQUFDLE1BQU8sRUFBQyxPQUFRLElBQUcsUUFBUyxJQUFHLFlBQWEsR0FBRSxhQUFjLEtBQUksR0FBRSxVQUFXLEVBQUMsTUFBTyxFQUFDLGNBQWUsV0FBVSxFQUFDLEVBQUMsR0FBRSxLQUFNLEVBQUMsVUFBVyxFQUFDLE1BQU8sRUFBQyxXQUFZLEVBQUMsTUFBTyxNQUFLLEVBQUMsRUFBQyxFQUFDLEVBQUMsRUFBQyxHQUFFLE1BQU8sRUFBQyxPQUFRLEdBQUUsUUFBUyxJQUFHLFlBQWEsS0FBSSxhQUFjLE1BQUssT0FBUSxDQUFDLEVBQUMsT0FBUSxJQUFHLFFBQVMsSUFBRyxZQUFhLEdBQUUsYUFBYyxNQUFLLE1BQU8sRUFBQyxNQUFPLFdBQVUsTUFBTyxNQUFNLEVBQUMsQ0FBQyxHQUFFLG1CQUFvQixFQUFDLE9BQVEsSUFBRyxRQUFTLElBQUcsWUFBYSxHQUFFLGFB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QUEsRUFDdkMsaUJBQWlCLENBQUMsT0FBTztBQUFFLG1CQUFlO0FBQUEsRUFBRztBQUFBLEVBQzdDLGVBQWUsQ0FBQyxPQUFPO0FBQUUsaUJBQWE7QUFBQSxFQUFHO0FBQUEsRUFDekMsa0JBQWtCLENBQUMsT0FBTztBQUFFLG9CQUFnQjtBQUFBLEVBQUc7QUFBQSxFQUMvQyxnQkFBZ0IsQ0FBQyxPQUFPO0FBQUUsa0JBQWM7QUFBQSxFQUFHO0FBQUEsRUFDM0MsU0FBUztBQUNYO0FBRUEsSUFBTSxNQUFNLE1BQU0sTUFBTSxnQkFBQVAsS0FBQyxPQUFJLE1BQVksR0FBSSxFQUFFLE9BQU8sYUFBVSxLQUFLLEtBQUssTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDO0FBQ3JHLEtBQUssV0FBVyxJQUFJO0FBQ3BCLEtBQUssSUFBSSxXQUFXOyIsCiAgIm5hbWVzIjogWyJrZXlzIiwgIm1vZGVscyIsICJtb2RlbCIsICJqb2luIiwgInByb3ZpZGVycyIsICJjYWNoZWQiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNhY2hlRmlsZSIsICJjYWNoZWQiLCAiVFRMIiwgIm1vZGVscyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgImNvbmZpZyIsICJleGlzdHNTeW5jIiwgImhvbWVkaXIiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAiam9pbiIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgImpvaW4iLCAic2NhbkRpciIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiY29uZmlnIiwgInNjb3BlIiwgInBlbmRpbmciLCAicmVnaXN0cnkiLCAicmVhZEZpbGUiLCAicmVhZGRpciIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJzY2FuRGlyIiwgInNjb3BlIiwgImhvbWVkaXIiLCAiY29uZmlnIiwgInNoZWxscyIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgInVubGluayIsICJqb2luIiwgInNjb3BlIiwgInBhcnNlQXJncyIsICJjYWxsIiwgInJlYWRGaWxlIiwgInJlYWRGaWxlIiwgInJlc29sdmUiLCAiTUFYX0xJTkVTIiwgIm1rZGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJkaXJuYW1lIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgInJlc29sdmUiLCAic2hlbGxzIiwgInJlc29sdmUiLCAiZXhlY0ZpbGUiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgIk1BWF9SRVNVTFRTIiwgInNoZWxscyIsICJ3YWtldXBzIiwgInNjb3BlIiwgImV4ZWMiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAicmVzb2x2ZSIsICJleGlzdHNTeW5jIiwgImpvaW4iLCAibW9kZWxzIiwgInByb3ZpZGVycyIsICJjaGF0Z3B0IiwgImNhdGFsb2dEYXRhIiwgImNvZGV4Q3JlZHMiLCAiY29uZmlnIiwgIm1vZGVsIiwgImJvb3QiLCAic2hlbGxzIiwgInJlYWRGaWxlU3luYyIsICJyZXNvbHZlIiwgInRoZW1lIiwgIndha2V1cHMiLCAiZXhpc3RzU3luYyIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJqb2luIiwgImNyZWF0ZVNpZ25hbCIsICJNZW51IiwgIlNjcm9sbEJveCIsICJ1c2VGb2N1cyIsICJ1c2VJbnB1dCIsICJhcHBlbmRGaWxlIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJyZWFkZGlyIiwgInN0YXQiLCAiam9pbiIsICJzY2FuRGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgImZnIiwgIlRUTCIsICJyZXNvbHZlIiwgImNyZWF0ZVNpZ25hbCIsICJjcmVhdGVTaWduYWwiLCAidGhlbWUiLCAiaGlnaGxpZ2h0IiwgImVhc2UiLCAibGluZWFyIiwgInVzZUFuaW1hdGVkIiwgImpzeCIsICJtaXhDb2xvciIsICJ1c2VBbmltYXRlZCIsICJlYXNlIiwgImxpbmVhciIsICJmYWlsZWQiLCAiY3JlYXRlU2lnbmFsIiwgImpzeCIsICJqc3hzIiwgInZlcnNpb24iLCAiY3JlYXRlU2lnbmFsIiwgIk1hcmtkb3duIiwgImpzeCIsICJqc3hzIiwgIk1hcmtkb3duIiwgImNyZWF0ZVNpZ25hbCIsICJlYXNlIiwgIlNjcm9sbEJveCIsICJ1c2VBbmltYXRlZCIsICJ1c2VJbnB1dCIsICJ1c2VJbnRlcnZhbCIsICJob21lZGlyIiwgImpzeCIsICJqc3hzIiwgInVzZUlucHV0IiwgIlNjcm9sbEJveCIsICJtb2RlbHMiLCAiY3JlYXRlU2lnbmFsIiwgInVzZUFuaW1hdGVkIiwgImVhc2UiLCAidmVyc2lvbiIsICJzaGVsbHMiLCAicHJvdmlkZXJzIiwgIndha2V1cHMiLCAidXNlSW50ZXJ2YWwiLCAic2NvcGUiLCAibmFtZSIsICJqc3giLCAianN4cyIsICJib290IiwgInZlcnNpb24iLCAibW9kZWxzIiwgImNyZWF0ZVNpZ25hbCIsICJtb2RlbCIsICJkZWZhdWx0TW9kZWwiLCAiaXRlbXMiLCAidXNhZ2UiLCAiam9pbiIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJ1c2VGb2N1cyIsICJ1c2VJbnB1dCIsICJleGlzdHNTeW5jIiwgIlNjcm9sbEJveCIsICJNZW51IiwgInNjb3BlIiwgImpzeCIsICJyZWFkRmlsZVN5bmMiLCAiaXNEZXZJbnN0YWxsIiwgInJ1blVwZGF0ZSIsICJmZXRjaExhdGVzdFZlcnNpb24iLCAibmV3ZXJWZXJzaW9uIiwgImNvbm5lY3RPcGVuQUkiLCAicnVuSGVhZGxlc3MiXQp9Cg==
|
|
6884
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NvcmUva2V5cy5qcyIsICIuLi9zcmMvY29yZS9tb2RlbHMuanMiLCAiLi4vc3JjL2NvcmUvcGF0aHMuanMiLCAiLi4vc3JjL2NvcmUvY2F0YWxvZy1zbmFwc2hvdC5qc29uIiwgIi4uL3NyYy9jb3JlL2NhdGFsb2cuanMiLCAiLi4vc3JjL2NvcmUvY29kZXgtbW9kZWxzLmpzIiwgIi4uL3NyYy9jb3JlL29wZW5haS1hdXRoLmpzIiwgIi4uL3NyYy9jb3JlL2NvbmZpZy5qcyIsICIuLi9zcmMvY29yZS9jb250ZXh0LmpzIiwgIi4uL3NyYy9jb3JlL3NraWxscy5qcyIsICIuLi9zcmMvY29yZS9jb21tYW5kcy5qcyIsICIuLi9zcmMvY29yZS9tY3AuanMiLCAiLi4vc3JjL2NvcmUvbWVtb3J5LmpzIiwgIi4uL3NyYy9jb3JlL2Jvb3QuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd2ViLmpzIiwgIi4uL3NyYy9jb3JlL3NoZWxscy5qcyIsICIuLi9zcmMvY29yZS9ldmVudHMuanMiLCAiLi4vc3JjL2NvcmUvc2Vzc2lvbi5qcyIsICIuLi9zcmMvY29yZS9jb21wYWN0aW9uLmpzIiwgIi4uL3NyYy9jb3JlL2Rlcml2ZS5qcyIsICIuLi9zcmMvY29yZS9hZ2VudC5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWNvcmRlci5qcyIsICIuLi9zcmMvY29yZS90b29scy9yZWFkLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2RpZmYuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvd3JpdGUuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZWRpdC5qcyIsICIuLi9zcmMvY29yZS90b29scy9iYXNoLmpzIiwgIi4uL3NyYy9jb3JlL3Rvb2xzL2dsb2IuanMiLCAiLi4vc3JjL2NvcmUvdG9vbHMvZ3JlcC5qcyIsICIuLi9zcmMvY29yZS90b29scy9pbmRleC5qcyIsICIuLi9zcmMvY29yZS9zeXN0ZW0tcHJvbXB0LmpzIiwgIi4uL3NyYy9jb3JlL3VwZGF0ZS5qcyIsICIuLi9zcmMvdWkvZnV6enkuanMiLCAiLi4vc3JjL3VpL2F0dGFjaG1lbnRzLmpzIiwgIi4uL3NyYy9oZWFkbGVzcy5qcyIsICIuLi9zcmMvbWFpbi5qc3giLCAiLi4vc3JjL2NsaS1hcmdzLmpzIiwgIi4uL3NyYy9jb3JlL3Rlcm1pbmFsLXRoZW1lLmpzIiwgIi4uL3NyYy9jb3JlL3dha2V1cHMuanMiLCAiLi4vc3JjL2NvcmUvZ2l0LmpzIiwgIi4uL3NyYy91aS9hcHAuanN4IiwgIi4uL3NyYy9jb3JlL2hpc3RvcnkuanMiLCAiLi4vc3JjL2NvcmUvdXNlci10b29scy5qcyIsICIuLi9zcmMvY29yZS9yZXdpbmQuanMiLCAiLi4vc3JjL2NvcmUvZXhwb3J0LmpzIiwgIi4uL3NyYy91aS9jb21wbGV0aW9uLmpzIiwgIi4uL3NyYy91aS9maWxlcy5qcyIsICIuLi9zcmMvdWkvaGlnaGxpZ2h0LmpzIiwgIi4uL3NyYy91aS90aGVtZS5qcyIsICIuLi9zcmMvdWkvZm9ybWF0LmpzIiwgIi4uL3NyYy91aS9hbmltYXRlZC12YWx1ZS5qc3giLCAiLi4vc3JjL3VpL3RyYW5zY3JpcHQuanN4IiwgIi4uL3NyYy91aS9lbXB0eS1zdGF0ZS5qc3giLCAiLi4vc3JjL3VpL2hlbHAuanN4IiwgIi4uL3NyYy91aS9wYW5lbHMuanN4Il0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgeyBzZXRLZXlzIH0gZnJvbSAnQHByc20vYWknXG5cbmNvbnN0IFBST1ZJREVSUyA9IFtcbiAgeyBpZDogJ2dvb2dsZScsIGxhYmVsOiAnR2VtaW5pJywgZW52OiBbJ0dFTUlOSV9BUElfS0VZJywgJ0dPT0dMRV9BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ2FudGhyb3BpYycsIGxhYmVsOiAnQ2xhdWRlJywgZW52OiBbJ0FOVEhST1BJQ19BUElfS0VZJ10gfSxcbiAgeyBpZDogJ29wZW5haScsIGxhYmVsOiAnT3BlbkFJJywgZW52OiBbJ09QRU5BSV9BUElfS0VZJ10gfSxcbiAgeyBpZDogJ3hhaScsIGxhYmVsOiAnR3JvaycsIGVudjogWydYQUlfQVBJX0tFWSddIH0sXG5dXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNjb3ZlcktleXMoZW52ID0gcHJvY2Vzcy5lbnYpIHtcbiAgY29uc3Qga2V5cyA9IHt9XG4gIGZvciAoY29uc3QgcCBvZiBQUk9WSURFUlMpIHtcbiAgICBjb25zdCBuYW1lID0gcC5lbnYuZmluZCgobikgPT4gZW52W25dKVxuICAgIGlmIChuYW1lKSBrZXlzW3AuaWRdID0gZW52W25hbWVdXG4gIH1cbiAgcmV0dXJuIGtleXNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5S2V5cyhrZXlzKSB7XG4gIHNldEtleXMoa2V5cylcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGtleXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrZXlIaW50KHByb3ZpZGVySWQpIHtcbiAgcmV0dXJuIFBST1ZJREVSUy5maW5kKChwKSA9PiBwLmlkID09PSBwcm92aWRlcklkKT8uZW52WzBdIHx8IGAke3Byb3ZpZGVySWQudG9VcHBlckNhc2UoKX1fQVBJX0tFWWBcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZmluZE1vZGVsKG1vZGVscywgbmFtZSkge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmYXVsdE1vZGVsKG1vZGVscykge1xuICByZXR1cm4gbW9kZWxzLmZpbmQoKG0pID0+IG0uYXZhaWxhYmxlICE9PSBmYWxzZSkgfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXN0aW1hdGVDb3N0KG1vZGVsLCB1c2FnZSkge1xuICBpZiAoIW1vZGVsPy5wcmljZSB8fCAhdXNhZ2UpIHJldHVybiAwXG4gIGNvbnN0IGluQ29zdCA9ICh1c2FnZS5wcm9tcHRUb2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5pblxuICBjb25zdCBvdXRDb3N0ID0gKHVzYWdlLmNvbXBsZXRpb25Ub2tlbnMgfHwgMCkgKiBtb2RlbC5wcmljZS5vdXRcbiAgcmV0dXJuIChpbkNvc3QgKyBvdXRDb3N0KSAvIDFlNlxufVxuIiwgImltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnXG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNvSG9tZSgpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LlBJQ09fSE9NRSB8fCBqb2luKGhvbWVkaXIoKSwgJy5waWNvJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RLZXkocm9vdCkge1xuICByZXR1cm4gcmVzb2x2ZShyb290KS5yZXBsYWNlKC9bL1xcXFw6XS9nLCAnLScpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kUHJvamVjdFJvb3QoY3dkKSB7XG4gIGxldCBkaXIgPSByZXNvbHZlKGN3ZClcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAnLmdpdCcpKSkgcmV0dXJuIGRpclxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpciB8fCBkaXIgPT09IGhvbWUpIHJldHVybiByZXNvbHZlKGN3ZClcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdERpcihyb290KSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdwcm9qZWN0cycsIHByb2plY3RLZXkocm9vdCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXNzaW9uc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdzZXNzaW9ucycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0SGlzdG9yeUZpbGUocm9vdCkge1xuICByZXR1cm4gam9pbihwcm9qZWN0RGlyKHJvb3QpLCAnaGlzdG9yeS5qc29ubCcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0TWNwRmlsZShyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtY3AuanNvbicpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNY3BGaWxlKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnbWNwLmpzb24nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsU2tpbGxzRGlyKCkge1xuICByZXR1cm4gam9pbihwaWNvSG9tZSgpLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RTa2lsbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAnc2tpbGxzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdsb2JhbEFnZW50c0ZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdBR0VOVFMubWQnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRGlyKGRpcikge1xuICBta2RpclN5bmMoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICByZXR1cm4gZGlyXG59XG4iLCAie1wiZ29vZ2xlXCI6e1wibW9kZWxzXCI6e1wiZ2VtaW5pLTMuMS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBGbGFzaCBMaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNS0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA1LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MC4wMjUsXCJpbnB1dF9hdWRpb1wiOjAuNX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1wcmV2aWV3LXR0c1wiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoLXByZXZpZXctdHRzXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjEwfX0sXCJnZW1pbmktMi41LXByb1wiOntcImlkXCI6XCJnZW1pbmktMi41LXByb1wiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJHb29nbGUncyBwcm92ZW4gcmVhc29uaW5nIG1vZGVsIGZvciBjb2RpbmcsIG1hdGgsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEyOCxcIm1heFwiOjMyNzY4fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDYtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNi0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1fX19LFwiZ2VtaW5pLTIuNS1mbGFzaFwiOntcImlkXCI6XCJnZW1pbmktMi41LWZsYXNoXCIsXCJuYW1lXCI6XCJHZW1pbmkgMi41IEZsYXNoXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgd29ya2hvcnNlIGZvciBtdWx0aW1vZGFsIGFwcHMgd2hlcmUgbGF0ZW5jeSBhbmQgcHJpY2UgbWF0dGVyXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwidG9nZ2xlXCJ9LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjAsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4zLFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMDMsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjUtZmxhc2hcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuNS1mbGFzaFwiLFwibmFtZVwiOlwiR2VtaW5pIDMuNSBGbGFzaFwiLFwiZGVzY3JpcHRpb25cIjpcIkZhc3QgR2VtaW5pIG1vZGVsIGJhbGFuY2luZyBtdWx0aW1vZGFsIHJlYXNvbmluZywgdG9vbCB1c2UsIGFuZCBjb3N0XCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MS41LFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjE1LFwiaW5wdXRfYXVkaW9cIjoxLjV9fSxcImdlbW1hLTQtMzFiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMzFiLWl0XCIsXCJuYW1lXCI6XCJHZW1tYSA0IDMxQiBJVFwiLFwiZGVzY3JpcHRpb25cIjpcIkxhcmdlc3QgR2VtbWEgNCBpbnN0cnVjdGlvbiBtb2RlbCBmb3Igb3Blbiwgc2VsZi1ob3N0ZWQgY2hhdCBhbmQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMi4wLWZsYXNoXCI6e1wiaWRcIjpcImdlbWluaS0yLjAtZmxhc2hcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2hcIixcImRlc2NyaXB0aW9uXCI6XCJFYXJsaWVyIEdlbWluaSBGbGFzaCB3b3JraG9yc2UgZm9yIHJlc3BvbnNpdmUgbXVsdGltb2RhbCBhcHBzIGFuZCB0b29sIHVzZVwiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA2XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo4MTkyfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiOntcImlkXCI6XCJnZW1pbmktZW1iZWRkaW5nLTAwMVwiLFwibmFtZVwiOlwiR2VtaW5pIEVtYmVkZGluZyAwMDFcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA1LTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDUtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjA0OCxcIm91dHB1dFwiOjF9LFwiY29zdFwiOntcImlucHV0XCI6MC4xNSxcIm91dHB1dFwiOjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXctY3VzdG9tdG9vbHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlldy1jdXN0b210b29sc1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlldyBDdXN0b20gVG9vbHNcIixcImRlc2NyaXB0aW9uXCI6XCJBZHZhbmNlZCBHZW1pbmkgbW9kZWwgZm9yIGNvbXBsZXggcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBtdWx0aW1vZGFsIGFuYWx5c2lzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLWZsYXNoLWxpdGUtbGF0ZXN0XCI6e1wiaWRcIjpcImdlbWluaS1mbGFzaC1saXRlLWxhdGVzdFwiLFwibmFtZVwiOlwiR2VtaW5pIEZsYXNoLUxpdGUgTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiTG93LWxhdGVuY3kgR2VtaW5pIG1vZGVsIGZvciBoaWdoLXZvbHVtZSBtdWx0aW1vZGFsIGFuZCBhZ2VudCB3b3JrbG9hZHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoLWxpdGVcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcInRvZ2dsZVwifSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjo1MTIsXCJtYXhcIjoyNDU3Nn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJhdWRpb1wiLFwidmlkZW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC4xLFwib3V0cHV0XCI6MC40LFwiY2FjaGVfcmVhZFwiOjAuMDI1fX0sXCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8taW1hZ2UtcHJldmlld1wiLFwibmFtZVwiOlwiTmFubyBCYW5hbmEgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgUHJvIGZvciBoaWdoZXItZmlkZWxpdHkgaW1hZ2UgZ2VuZXJhdGlvbiBhbmQgZGVzaWduLWhlYXZ5IGVkaXRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W10sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTIwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6MTIwfX0sXCJnZW1pbmktMi41LWZsYXNoLWltYWdlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtaW1hZ2VcIixcIm5hbWVcIjpcIk5hbm8gQmFuYW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiTmFubyBCYW5hbmEgaW1hZ2UgbW9kZWwgZm9yIGZhc3QgZ2VuZXJhdGlvbiwgZWRpdHMsIGFuZCBjaGFyYWN0ZXItY29uc2lzdGVudCBhc3NldHNcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MzI3NjgsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjA3NX19LFwiZ2VtaW5pLTIuNS1mbGFzaC1saXRlXCI6e1wiaWRcIjpcImdlbWluaS0yLjUtZmxhc2gtbGl0ZVwiLFwibmFtZVwiOlwiR2VtaW5pIDIuNSBGbGFzaC1MaXRlXCIsXCJkZXNjcmlwdGlvblwiOlwiTGVhbiBHZW1pbmkgMi41IGxhbmUgZm9yIGNoZWFwIG11bHRpbW9kYWwgdHJhZmZpYyBhbmQgcXVpY2sgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaC1saXRlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6NTEyLFwibWF4XCI6MjQ1NzZ9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA2LTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAxLFwiaW5wdXRfYXVkaW9cIjowLjN9fSxcImdlbWluaS1vbW5pLWZsYXNoLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLW9tbmktZmxhc2gtcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIE9tbmkgRmxhc2ggUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlZpZGVvIGdlbmVyYXRpb24gYW5kIGVkaXRpbmcgbW9kZWwgZm9yIGZhc3QsIGNvbnZlcnNhdGlvbmFsIHRleHQtIGFuZCBpbWFnZS10by12aWRlbyB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ2VtaW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDYtMzBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNi0zMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCJdLFwib3V0cHV0XCI6W1widmlkZW9cIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMzEwNzIsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjUsXCJvdXRwdXRcIjoxNy41fX0sXCJnZW1pbmktMy4xLWZsYXNoLWltYWdlLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1mbGFzaC1pbWFnZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJOYW5vIEJhbmFuYSAyXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1mbGFzaFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTI2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMjZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjY1NTM2LFwib3V0cHV0XCI6NjU1MzZ9LFwiY29zdFwiOntcImlucHV0XCI6MC41LFwib3V0cHV0XCI6NjB9fSxcImdlbWluaS0zLjEtcHJvLXByZXZpZXdcIjp7XCJpZFwiOlwiZ2VtaW5pLTMuMS1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMuMSBQcm8gUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIlJlYXNvbmluZy1maXJzdCBHZW1pbmkgcHJldmlldyBmb3IgYWdlbnRpYyBjb2RpbmcgYW5kIGNvbXBsZXggcHJvYmxlbSBzb2x2aW5nXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAyLTE5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtbWEtNC0yNmItYTRiLWl0XCI6e1wiaWRcIjpcImdlbW1hLTQtMjZiLWE0Yi1pdFwiLFwibmFtZVwiOlwiR2VtbWEgNCAyNkIgQTRCIElUXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbiBHZW1tYSBpbnN0cnVjdGlvbiBtb2RlbCBmb3IgZWZmaWNpZW50IGNoYXQgYW5kIHNlbGYtaG9zdGVkIGRlcGxveW1lbnRzXCIsXCJmYW1pbHlcIjpcImdlbW1hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0wMlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTAyXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6dHJ1ZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjI2MjE0NCxcIm91dHB1dFwiOjMyNzY4fX0sXCJnZW1pbmktMy1wcm8tcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1wcm8tcHJldmlld1wiLFwibmFtZVwiOlwiR2VtaW5pIDMgUHJvIFByZXZpZXdcIixcImRlc2NyaXB0aW9uXCI6XCJQcmV2aWV3IEdlbWluaSBmbGFnc2hpcCBmb3IgY29tcGxleCByZWFzb25pbmcsIGNvZGluZywgYW5kIHJpY2ggbXVsdGltb2RhbCBwcm9tcHRzXCIsXCJmYW1pbHlcIjpcImdlbWluaS1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJhdWRpb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJzdGF0dXNcIjpcImRlcHJlY2F0ZWRcIixcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxOCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTgsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ2VtaW5pLTMtZmxhc2gtcHJldmlld1wiOntcImlkXCI6XCJnZW1pbmktMy1mbGFzaC1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMyBGbGFzaCBQcmV2aWV3XCIsXCJkZXNjcmlwdGlvblwiOlwiTmV3IEdlbWluaSBmbGFzaCBsYW5lIGJyaW5naW5nIGZyb250aWVyLXN0eWxlIG11bHRpbW9kYWwgcmVhc29uaW5nIHRvIGNoZWFwZXIgcnVuc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2hcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEyLTE3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwidmlkZW9cIixcImF1ZGlvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjY1NTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNSxcIm91dHB1dFwiOjMsXCJjYWNoZV9yZWFkXCI6MC4wNSxcImlucHV0X2F1ZGlvXCI6MX19LFwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIjp7XCJpZFwiOlwiZ2VtaW5pLTIuNS1wcm8tcHJldmlldy10dHNcIixcIm5hbWVcIjpcIkdlbWluaSAyLjUgUHJvIFByZXZpZXcgVFRTXCIsXCJkZXNjcmlwdGlvblwiOlwiU3BlZWNoIGdlbmVyYXRpb24gbW9kZWwgZm9yIGNvbnRyb2xsYWJsZSB2b2ljZSwgbmFycmF0aW9uLCBhbmQgYXVkaW8gZGVsaXZlcnlcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDUtMDFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjoyMH19LFwiZ2VtaW5pLWZsYXNoLWxhdGVzdFwiOntcImlkXCI6XCJnZW1pbmktZmxhc2gtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHZW1pbmkgRmxhc2ggTGF0ZXN0XCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBHZW1pbmkgbW9kZWwgYmFsYW5jaW5nIG11bHRpbW9kYWwgcmVhc29uaW5nLCB0b29sIHVzZSwgYW5kIGNvc3RcIixcImZhbWlseVwiOlwiZ2VtaW5pLWZsYXNoXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MCxcIm1heFwiOjI0NTc2fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcImF1ZGlvXCIsXCJ2aWRlb1wiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDg1NzYsXCJvdXRwdXRcIjo2NTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjMsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4wNzUsXCJpbnB1dF9hdWRpb1wiOjF9fSxcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCI6e1wiaWRcIjpcImdlbWluaS0zLjEtZmxhc2gtbGl0ZS1wcmV2aWV3XCIsXCJuYW1lXCI6XCJHZW1pbmkgMy4xIEZsYXNoIExpdGUgUHJldmlld1wiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTAzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJ2aWRlb1wiLFwiYXVkaW9cIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ4NTc2LFwib3V0cHV0XCI6NjU1MzZ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MS41LFwiY2FjaGVfcmVhZFwiOjAuMDI1LFwiaW5wdXRfYXVkaW9cIjowLjV9fSxcImdlbWluaS0yLjAtZmxhc2gtbGl0ZVwiOntcImlkXCI6XCJnZW1pbmktMi4wLWZsYXNoLWxpdGVcIixcIm5hbWVcIjpcIkdlbWluaSAyLjAgRmxhc2gtTGl0ZVwiLFwiZGVzY3JpcHRpb25cIjpcIkxlZ2FjeSBtb2RlbCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGludGVncmF0aW9uc1wiLFwiZmFtaWx5XCI6XCJnZW1pbmktZmxhc2gtbGl0ZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDZcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0xMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTEyLTExXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwiYXVkaW9cIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0ODU3NixcIm91dHB1dFwiOjgxOTJ9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjowLjA3NSxcIm91dHB1dFwiOjAuM319fX0sXCJhbnRocm9waWNcIjp7XCJtb2RlbHNcIjp7XCJjbGF1ZGUtb3B1cy00LTVcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0yNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtaGFpa3UtNC01LTIwMjUxMDAxXCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTUtMjAyNTEwMDFcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBtb2RlbCBmb3IgcmVzcG9uc2l2ZSBhc3Npc3RhbmNlLCBjbGFzc2lmaWNhdGlvbiwgYW5kIGxpZ2h0d2VpZ2h0IGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC0xLTIwMjUwODA1XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtMS0yMDI1MDgwNVwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC4xXCIsXCJkZXNjcmlwdGlvblwiOlwiRmxhZ3NoaXAgQ2xhdWRlIG1vZGVsIGZvciBkZWVwIHJlYXNvbmluZywgY29kaW5nLCBhbmQgbG9uZy1ob3Jpem9uIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wMy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA4LTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDgtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MzIwMDB9LFwic3RhdHVzXCI6XCJkZXByZWNhdGVkXCIsXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuNSxcImNhY2hlX3dyaXRlXCI6MTguNzV9fSxcImNsYXVkZS1zb25uZXQtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC01XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIENsYXVkZSBtb2RlbCBmb3IgY29kaW5nLCBhbmFseXNpcywgYWdlbnQgd29ya2Zsb3dzLCBhbmQgY29zdCBjb250cm9sXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1zb25uZXRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDctMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozLFwib3V0cHV0XCI6MTUsXCJjYWNoZV9yZWFkXCI6MC4zLFwiY2FjaGVfd3JpdGVcIjozLjc1fX0sXCJjbGF1ZGUtb3B1cy00LTdcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC03XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjdcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmdlciBPcHVzIHRpZXIgZm9yIGFkdmFuY2VkIHNvZnR3YXJlIHdvcmsgYW5kIGhpZ2gtc3Rha2VzIHJlYXNvbmluZ1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtb3B1c1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNC0xNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC01XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIFNvbm5ldCA1XCIsXCJkZXNjcmlwdGlvblwiOlwiRXZlcnlkYXkgQ2xhdWRlIGFnZW50IG1vZGVsIGZvciBjb2RpbmcsIHBsYW5uaW5nLCBicm93c2luZywgYW5kIGdlbmVyYWwgd29ya1wiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJ0b2dnbGVcIn0se1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIixcIm1heFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjYtMDEtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0yOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTMwXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMixcImNhY2hlX3dyaXRlXCI6Mi41fX0sXCJjbGF1ZGUtb3B1cy00LTUtMjAyNTExMDFcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC01LTIwMjUxMTAxXCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJGbGFnc2hpcCBDbGF1ZGUgbW9kZWwgZm9yIGRlZXAgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfSx7XCJ0eXBlXCI6XCJidWRnZXRfdG9rZW5zXCIsXCJtaW5cIjoxMDI0fV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTEtMjRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMS0wMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjo2NDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX0sXCJjbGF1ZGUtb3B1cy00LThcIjp7XCJpZFwiOlwiY2xhdWRlLW9wdXMtNC04XCIsXCJuYW1lXCI6XCJDbGF1ZGUgT3B1cyA0LjhcIixcImRlc2NyaXB0aW9uXCI6XCJUb3AgQ2xhdWRlIE9wdXMgdGllciBmb3IgdGhlIGhhcmRlc3QgcmVhc29uaW5nLCBjb2RpbmcsIGFuZCBsb25nLWhvcml6b24gYWdlbnRzXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA1LTI4XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDUtMjhcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJleHBlcmltZW50YWxcIjp7XCJtb2Rlc1wiOntcImZhc3RcIjp7XCJjb3N0XCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjUwLFwiY2FjaGVfcmVhZFwiOjEsXCJjYWNoZV93cml0ZVwiOjEyLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic3BlZWRcIjpcImZhc3RcIn0sXCJoZWFkZXJzXCI6e1wiYW50aHJvcGljLWJldGFcIjpcImZhc3QtbW9kZS0yMDI2LTAyLTAxXCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoyNSxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9fSxcImNsYXVkZS1vcHVzLTQtMVwiOntcImlkXCI6XCJjbGF1ZGUtb3B1cy00LTFcIixcIm5hbWVcIjpcIkNsYXVkZSBPcHVzIDQuMSAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkZsYWdzaGlwIENsYXVkZSBtb2RlbCBmb3IgZGVlcCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxvbmctaG9yaXpvbiBhZ2VudHNcIixcImZhbWlseVwiOlwiY2xhdWRlLW9wdXNcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDMtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcInN0YXR1c1wiOlwiZGVwcmVjYXRlZFwiLFwiY29zdFwiOntcImlucHV0XCI6MTUsXCJvdXRwdXRcIjo3NSxcImNhY2hlX3JlYWRcIjoxLjUsXCJjYWNoZV93cml0ZVwiOjE4Ljc1fX0sXCJjbGF1ZGUtZmFibGUtNVwiOntcImlkXCI6XCJjbGF1ZGUtZmFibGUtNVwiLFwibmFtZVwiOlwiQ2xhdWRlIEZhYmxlIDVcIixcImRlc2NyaXB0aW9uXCI6XCJDbGF1ZGUgbW9kZWwgZm9yIGNyZWF0aXZlIHdyaXRpbmcsIGFuYWx5c2lzLCBhbmQgY29udHJvbGxlZCBhZ2VudCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiY2xhdWRlLWZhYmxlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wNi0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTA2LTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjo1MCxcImNhY2hlX3JlYWRcIjoxLFwiY2FjaGVfd3JpdGVcIjoxMi41fX0sXCJjbGF1ZGUtaGFpa3UtNC01XCI6e1wiaWRcIjpcImNsYXVkZS1oYWlrdS00LTVcIixcIm5hbWVcIjpcIkNsYXVkZSBIYWlrdSA0LjUgKGxhdGVzdClcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IENsYXVkZSBsYW5lIGZvciBsaWdodHdlaWdodCBhZ2VudHMsIG9mZmljZSB0YXNrcywgYW5kIHJlc3BvbnNpdmUgY2hhdFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtaGFpa3VcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDItMjhcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNX19LFwiY2xhdWRlLW9wdXMtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1vcHVzLTQtNlwiLFwibmFtZVwiOlwiQ2xhdWRlIE9wdXMgNC42XCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaC1lbmQgQ2xhdWRlIGZvciBkaWZmaWN1bHQgY29kaW5nLCBwbGFubmluZywgYW5kIHNsb3dlciBleHBlcnQgcmVhc29uaW5nXCIsXCJmYW1pbHlcIjpcImNsYXVkZS1vcHVzXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDUtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0wNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxNTAsXCJjYWNoZV9yZWFkXCI6MyxcImNhY2hlX3dyaXRlXCI6MzcuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzcGVlZFwiOlwiZmFzdFwifSxcImhlYWRlcnNcIjp7XCJhbnRocm9waWMtYmV0YVwiOlwiZmFzdC1tb2RlLTIwMjYtMDItMDFcIn19fX19LFwiY29zdFwiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjI1LFwiY2FjaGVfcmVhZFwiOjAuNSxcImNhY2hlX3dyaXRlXCI6Ni4yNX19LFwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIjp7XCJpZFwiOlwiY2xhdWRlLXNvbm5ldC00LTUtMjAyNTA5MjlcIixcIm5hbWVcIjpcIkNsYXVkZSBTb25uZXQgNC41XCIsXCJkZXNjcmlwdGlvblwiOlwiQmFsYW5jZWQgQ2xhdWRlIG1vZGVsIGZvciBjb2RpbmcsIGFuYWx5c2lzLCBhZ2VudCB3b3JrZmxvd3MsIGFuZCBjb3N0IGNvbnRyb2xcIixcImZhbWlseVwiOlwiY2xhdWRlLXNvbm5ldFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiYnVkZ2V0X3Rva2Vuc1wiLFwibWluXCI6MTAyNH1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wNy0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA5LTI5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDktMjlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjY0MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjMsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjMsXCJjYWNoZV93cml0ZVwiOjMuNzV9fSxcImNsYXVkZS1zb25uZXQtNC02XCI6e1wiaWRcIjpcImNsYXVkZS1zb25uZXQtNC02XCIsXCJuYW1lXCI6XCJDbGF1ZGUgU29ubmV0IDQuNlwiLFwiZGVzY3JpcHRpb25cIjpcIkNsYXVkZSB3b3JraG9yc2UgZm9yIGNvZGluZyBhZ2VudHMsIGNhcmVmdWwgYW5hbHlzaXMsIGFuZCBwcm9kdWN0aW9uIGNvc3QgY29udHJvbFwiLFwiZmFtaWx5XCI6XCJjbGF1ZGUtc29ubmV0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJtYXhcIl19LHtcInR5cGVcIjpcImJ1ZGdldF90b2tlbnNcIixcIm1pblwiOjEwMjR9XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjUtMDgtMzFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMi0xN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MyxcIm91dHB1dFwiOjE1LFwiY2FjaGVfcmVhZFwiOjAuMyxcImNhY2hlX3dyaXRlXCI6My43NX19fX0sXCJvcGVuYWlcIjp7XCJtb2RlbHNcIjp7XCJvM1wiOntcImlkXCI6XCJvM1wiLFwibmFtZVwiOlwibzNcIixcImRlc2NyaXB0aW9uXCI6XCJEZWxpYmVyYXRlIG8tc2VyaWVzIHJlYXNvbmVyIGZvciBoYXJkIG1hdGgsIGNvZGluZywgYW5kIG11bHRpLXN0ZXAgYW5hbHlzaXNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OCxcImNhY2hlX3JlYWRcIjowLjV9fSxcInRleHQtZW1iZWRkaW5nLTMtbGFyZ2VcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctMy1sYXJnZVwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wMS0yNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTAxLTI1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTEsXCJvdXRwdXRcIjozMDcyfSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMTMsXCJvdXRwdXRcIjowfX0sXCJncHQtNS4yLXByb1wiOntcImlkXCI6XCJncHQtNS4yLXByb1wiLFwibmFtZVwiOlwiR1BULTUuMiBQcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoZXItYWNjdXJhY3kgR1BULTUuMiB2YXJpYW50IGZvciB0b3VnaGVyIHJlYXNvbmluZyBhbmQgcmV2aWV3IHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjIxLFwib3V0cHV0XCI6MTY4fX0sXCJncHQtNS42XCI6e1wiaWRcIjpcImdwdC01LjZcIixcIm5hbWVcIjpcIkdQVC01LjZcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcImdwdC01XCI6e1wiaWRcIjpcImdwdC01XCIsXCJuYW1lXCI6XCJHUFQtNVwiLFwiZGVzY3JpcHRpb25cIjpcIk9yaWdpbmFsIEdQVC01IHdvcmtob3JzZSBmb3IgcmVhc29uaW5nLCBjb2RpbmcsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtMy41LXR1cmJvXCI6e1wiaWRcIjpcImdwdC0zLjUtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC0zLjUtdHVyYm9cIixcImRlc2NyaXB0aW9uXCI6XCJDb21wYWN0IEdQVCBtb2RlbCBmb3IgbG93LWxhdGVuY3kgYXNzaXN0YW5jZSBhbmQgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjEtMDktMDFcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMy0wMy0wMVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIzLTExLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjE2Mzg1LFwib3V0cHV0XCI6NDA5Nn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjUsXCJvdXRwdXRcIjoxLjUsXCJjYWNoZV9yZWFkXCI6MH19LFwiZ3B0LTUtcHJvXCI6e1wiaWRcIjpcImdwdC01LXByb1wiLFwibmFtZVwiOlwiR1BULTUgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiSGlnaGVyLWFjY3VyYWN5IEdQVC01IHRpZXIgZm9yIHRvdWdoIGFuYWx5c2lzLCBjb2RpbmcgcmV2aWV3cywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcImdwdC1wcm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMC0wNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTEwLTA2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjI3MjAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNSxcIm91dHB1dFwiOjEyMH19LFwiZ3B0LTRvXCI6e1wiaWRcIjpcImdwdC00b1wiLFwibmFtZVwiOlwiR1BULTRvXCIsXCJkZXNjcmlwdGlvblwiOlwiT21uaS1lcmEgR1BUIGZvciBtdWx0aW1vZGFsIGNoYXQsIHByYWN0aWNhbCBjb2RpbmcsIGFuZCBnZW5lcmFsIGFzc2lzdGFudHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA1LTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwiZ3B0LTRcIjp7XCJpZFwiOlwiZ3B0LTRcIixcIm5hbWVcIjpcIkdQVC00XCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6ODE5MixcIm91dHB1dFwiOjgxOTJ9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjo2MH19LFwibzQtbWluaVwiOntcImlkXCI6XCJvNC1taW5pXCIsXCJuYW1lXCI6XCJvNC1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiRmFzdCBvLXNlcmllcyBtb2RlbCBmb3IgY29tcGFjdCByZWFzb25pbmcsIGNvZGluZywgYW5kIHRvb2wgdXNlXCIsXCJmYW1pbHlcIjpcIm8tbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0xNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTE2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4xLFwib3V0cHV0XCI6NC40LFwiY2FjaGVfcmVhZFwiOjAuMjc1fX0sXCJvMy1wcm9cIjp7XCJpZFwiOlwibzMtcHJvXCIsXCJuYW1lXCI6XCJvMy1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJIaWdoLWVmZm9ydCBvMyB0aWVyIGZvciBkaWZmaWN1bHQgdGVjaG5pY2FsIHJlYXNvbmluZyBhbmQgY2FyZWZ1bCBhbnN3ZXJzXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA2LTEwXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDYtMTBcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyMCxcIm91dHB1dFwiOjgwfX0sXCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiOntcImlkXCI6XCJjaGF0Z3B0LWltYWdlLWxhdGVzdFwiLFwibmFtZVwiOlwiY2hhdGdwdC1pbWFnZS1sYXRlc3RcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTE2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTRvLTIwMjQtMDUtMTNcIjp7XCJpZFwiOlwiZ3B0LTRvLTIwMjQtMDUtMTNcIixcIm5hbWVcIjpcIkdQVC00byAoMjAyNC0wNS0xMylcIixcImRlc2NyaXB0aW9uXCI6XCJHUFQgbW9kZWwgZm9yIGdlbmVyYWwgcmVhc29uaW5nLCB3cml0aW5nLCBjb2RpbmcsIGFuZCB0b29sLWFzc2lzdGVkIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjMtMDlcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA1LTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjo0MDk2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjoxNX19LFwiZ3B0LTUuNC1uYW5vXCI6e1wiaWRcIjpcImdwdC01LjQtbmFub1wiLFwibmFtZVwiOlwiR1BULTUuNCBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hlYXBlc3QgR1BULTUuNCBsYW5lIGZvciBzaW1wbGUgcm91dGluZywgZXh0cmFjdGlvbiwgYW5kIGJ1bGsgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbmFub1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMTdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0xN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4yLFwib3V0cHV0XCI6MS4yNSxcImNhY2hlX3JlYWRcIjowLjAyfX0sXCJncHQtNS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUgQ2hhdCAobGF0ZXN0KVwiLFwiZGVzY3JpcHRpb25cIjpcIkNoYXQtdHVuZWQgR1BUIG1vZGVsIGZvciBjb252ZXJzYXRpb25hbCBhc3Npc3RhbmNlLCB3cml0aW5nLCBhbmQgdG9vbCB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOltdLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjEtY29kZXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleFwiLFwibmFtZVwiOlwiR1BULTUuMSBDb2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGV4IEdQVCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgY29kZSByZXZpZXcsIGFuZCBwcmFjdGljYWwgc29mdHdhcmUgYWdlbnRzXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY29kZXgtc3BhcmtcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jb2RleC1zcGFya1wiLFwibmFtZVwiOlwiR1BULTUuMyBDb2RleCBTcGFya1wiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleC1zcGFya1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDItMDVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMi0wNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJpbnB1dFwiOjEwMDAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwiZ3B0LTUuMS1jb2RleC1tYXhcIjp7XCJpZFwiOlwiZ3B0LTUuMS1jb2RleC1tYXhcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggTWF4XCIsXCJkZXNjcmlwdGlvblwiOlwiQ29kaW5nLW9wdGltaXplZCBHUFQgbW9kZWwgZm9yIHJlcG9zaXRvcnkgZWRpdHMsIHJldmlld3MsIGFuZCBhZ2VudGljIHNvZnR3YXJlIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjMtY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMy1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMyBDaGF0IChsYXRlc3QpXCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNG8tMjAyNC0wOC0wNlwiOntcImlkXCI6XCJncHQtNG8tMjAyNC0wOC0wNlwiLFwibmFtZVwiOlwiR1BULTRvICgyMDI0LTA4LTA2KVwiLFwiZGVzY3JpcHRpb25cIjpcIkdQVCBtb2RlbCBmb3IgZ2VuZXJhbCByZWFzb25pbmcsIHdyaXRpbmcsIGNvZGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTA4LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDgtMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjEuMjV9fSxcInRleHQtZW1iZWRkaW5nLWFkYS0wMDJcIjp7XCJpZFwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwibmFtZVwiOlwidGV4dC1lbWJlZGRpbmctYWRhLTAwMlwiLFwiZGVzY3JpcHRpb25cIjpcIkVtYmVkZGluZyBtb2RlbCBmb3Igc2VtYW50aWMgc2VhcmNoLCByZXRyaWV2YWwsIGNsdXN0ZXJpbmcsIGFuZCByYW5raW5nIHBpcGVsaW5lc1wiLFwiZmFtaWx5XCI6XCJ0ZXh0LWVtYmVkZGluZ1wiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjItMTJcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyMi0xMi0xNVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDIyLTEyLTE1XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgxOTIsXCJvdXRwdXRcIjoxNTM2fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuMSxcIm91dHB1dFwiOjB9fSxcIm8zLW1pbmlcIjp7XCJpZFwiOlwibzMtbWluaVwiLFwibmFtZVwiOlwibzMtbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIlNtYWxsZXIgby1zZXJpZXMgcmVhc29uZXIgZm9yIGVjb25vbWljYWwgY29kaW5nLCBtYXRoLCBhbmQgcGxhbm5pbmcgdGFza3NcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6ZmFsc2UsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0xMi0yMFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTAxLTI5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjEsXCJvdXRwdXRcIjo0LjQsXCJjYWNoZV9yZWFkXCI6MC41NX19LFwiZ3B0LTUuMlwiOntcImlkXCI6XCJncHQtNS4yXCIsXCJuYW1lXCI6XCJHUFQtNS4yXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVsaWFibGUgR1BUIGdlbmVyYXRpb24gZm9yIGJyb2FkIGNvZGluZywgd3JpdGluZywgYW5kIHRvb2wtYXNzaXN0ZWQgcHJvZHVjdCB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTA4LTMxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMTItMTFcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0xMi0xMVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtNS4zLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjMtY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjMgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2Rpbmctb3B0aW1pemVkIEdQVCBtb2RlbCBmb3IgcmVwb3NpdG9yeSBlZGl0cywgcmV2aWV3cywgYW5kIGFnZW50aWMgc29mdHdhcmUgd29ya1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJ0ZXh0LWVtYmVkZGluZy0zLXNtYWxsXCI6e1wiaWRcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcIm5hbWVcIjpcInRleHQtZW1iZWRkaW5nLTMtc21hbGxcIixcImRlc2NyaXB0aW9uXCI6XCJFbWJlZGRpbmcgbW9kZWwgZm9yIHNlbWFudGljIHNlYXJjaCwgcmV0cmlldmFsLCBjbHVzdGVyaW5nLCBhbmQgcmFua2luZyBwaXBlbGluZXNcIixcImZhbWlseVwiOlwidGV4dC1lbWJlZGRpbmdcIixcImF0dGFjaG1lbnRcIjpmYWxzZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDEtMjVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wMS0yNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MTkxLFwib3V0cHV0XCI6MTUzNn0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjAyLFwib3V0cHV0XCI6MH19LFwiZ3B0LTUuNi1sdW5hXCI6e1wiaWRcIjpcImdwdC01LjYtbHVuYVwiLFwibmFtZVwiOlwiR1BULTUuNiBMdW5hXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29zdC1lZmZpY2llbnQgR1BULTUuNiBtb2RlbCBmb3IgZmFzdCwgaGlnaC12b2x1bWUgd29ya2xvYWRzXCIsXCJmYW1pbHlcIjpcImdwdC1sdW5hXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEsXCJvdXRwdXRcIjo2LFwiY2FjaGVfcmVhZFwiOjAuMSxcImNhY2hlX3dyaXRlXCI6MS4yNSxcInRpZXJzXCI6W3tcImlucHV0XCI6MixcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4yLFwiY2FjaGVfd3JpdGVcIjoyLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6OSxcImNhY2hlX3JlYWRcIjowLjIsXCJjYWNoZV93cml0ZVwiOjIuNX19fSxcImdwdC01LjEtY29kZXgtbWluaVwiOntcImlkXCI6XCJncHQtNS4xLWNvZGV4LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01LjEgQ29kZXggbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LXJlYWx0aW1lLTIuMVwiOntcImlkXCI6XCJncHQtcmVhbHRpbWUtMi4xXCIsXCJuYW1lXCI6XCJHUFQtUmVhbHRpbWUtMi4xXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhbHRpbWUgc3BlZWNoLXRvLXNwZWVjaCBtb2RlbCB3aXRoIGNvbmZpZ3VyYWJsZSByZWFzb25pbmcsIHRvb2wgdXNlLCBhbmQgcm9idXN0IHZvaWNlLWFnZW50IGJlaGF2aW9yXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDZcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImF1ZGlvXCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImF1ZGlvXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwiaW5wdXRcIjo5NjAwMCxcIm91dHB1dFwiOjMyMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoyNCxcImNhY2hlX3JlYWRcIjowLjQsXCJpbnB1dF9hdWRpb1wiOjMyLFwib3V0cHV0X2F1ZGlvXCI6NjR9fSxcImdwdC01LjYtdGVycmFcIjp7XCJpZFwiOlwiZ3B0LTUuNi10ZXJyYVwiLFwibmFtZVwiOlwiR1BULTUuNiBUZXJyYVwiLFwiZGVzY3JpcHRpb25cIjpcIkJhbGFuY2VkIEdQVC01LjYgbW9kZWwgZm9yIGNhcGFibGUsIGNvc3QtZWZmaWNpZW50IGV2ZXJ5ZGF5IHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LXRlcnJhXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19LFwicHJvXCI6e1wicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wicmVhc29uaW5nXCI6e1wibW9kZVwiOlwicHJvXCJ9fX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwiY2FjaGVfd3JpdGVcIjozLjEyNSxcInRpZXJzXCI6W3tcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NSxcIm91dHB1dFwiOjIyLjUsXCJjYWNoZV9yZWFkXCI6MC41LFwiY2FjaGVfd3JpdGVcIjo2LjI1fX19LFwiZ3B0LTUuMS1jaGF0LWxhdGVzdFwiOntcImlkXCI6XCJncHQtNS4xLWNoYXQtbGF0ZXN0XCIsXCJuYW1lXCI6XCJHUFQtNS4xIENoYXRcIixcImRlc2NyaXB0aW9uXCI6XCJDaGF0LXR1bmVkIEdQVC01LjEgZm9yIHBvbGlzaGVkIGFzc2lzdGFudHMsIHdyaXRpbmcsIGFuZCBwcm9kdWN0IGNvbnZlcnNhdGlvbnNcIixcImZhbWlseVwiOlwiZ3B0LWNvZGV4XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDktMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0xMS0xM1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTExLTEzXCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MC4xMjV9fSxcImdwdC01LjItY2hhdC1sYXRlc3RcIjp7XCJpZFwiOlwiZ3B0LTUuMi1jaGF0LWxhdGVzdFwiLFwibmFtZVwiOlwiR1BULTUuMiBDaGF0XCIsXCJkZXNjcmlwdGlvblwiOlwiQ2hhdC10dW5lZCBHUFQgbW9kZWwgZm9yIGNvbnZlcnNhdGlvbmFsIGFzc2lzdGFuY2UsIHdyaXRpbmcsIGFuZCB0b29sIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWVkaXVtXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjE2Mzg0fSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuNzUsXCJvdXRwdXRcIjoxNCxcImNhY2hlX3JlYWRcIjowLjE3NX19LFwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCI6e1wiaWRcIjpcIm80LW1pbmktZGVlcC1yZXNlYXJjaFwiLFwibmFtZVwiOlwibzQtbWluaS1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwiby1taW5pXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDVcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNC0wNi0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI0LTA2LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyMDAwMDAsXCJvdXRwdXRcIjoxMDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjgsXCJjYWNoZV9yZWFkXCI6MC41fX0sXCJncHQtaW1hZ2UtMS41XCI6e1wiaWRcIjpcImdwdC1pbWFnZS0xLjVcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xLjVcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTI1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMjVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH19LFwiZ3B0LTQuMS1uYW5vXCI6e1wiaWRcIjpcImdwdC00LjEtbmFub1wiLFwibmFtZVwiOlwiR1BULTQuMSBuYW5vXCIsXCJkZXNjcmlwdGlvblwiOlwiVGlueSBHUFQtNC4xIG9wdGlvbiBmb3IgY2xhc3NpZmljYXRpb24sIHJvdXRpbmcsIGFuZCB2ZXJ5IGhpZ2gtdm9sdW1lIHRhc2tzXCIsXCJmYW1pbHlcIjpcImdwdC1uYW5vXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNDc1NzYsXCJvdXRwdXRcIjozMjc2OH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjEsXCJvdXRwdXRcIjowLjQsXCJjYWNoZV9yZWFkXCI6MC4wMjV9fSxcImdwdC00by0yMDI0LTExLTIwXCI6e1wiaWRcIjpcImdwdC00by0yMDI0LTExLTIwXCIsXCJuYW1lXCI6XCJHUFQtNG8gKDIwMjQtMTEtMjApXCIsXCJkZXNjcmlwdGlvblwiOlwiR1BUIG1vZGVsIGZvciBnZW5lcmFsIHJlYXNvbmluZywgd3JpdGluZywgY29kaW5nLCBhbmQgdG9vbC1hc3Npc3RlZCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMTEtMjBcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0xMS0yMFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTI4MDAwLFwib3V0cHV0XCI6MTYzODR9LFwiY29zdFwiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6MTAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwibzFcIjp7XCJpZFwiOlwibzFcIixcIm5hbWVcIjpcIm8xXCIsXCJkZXNjcmlwdGlvblwiOlwiTy1zZXJpZXMgcmVhc29uaW5nIG1vZGVsIGZvciBoYXJkIGFuYWx5c2lzLCBtYXRoLCBjb2RpbmcsIGFuZCBwbGFubmluZ1wiLFwiZmFtaWx5XCI6XCJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI0LTEyLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMTItMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjE1LFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6Ny41fX0sXCJvMS1wcm9cIjp7XCJpZFwiOlwibzEtcHJvXCIsXCJuYW1lXCI6XCJvMS1wcm9cIixcImRlc2NyaXB0aW9uXCI6XCJPLXNlcmllcyByZWFzb25pbmcgbW9kZWwgZm9yIGhhcmQgYW5hbHlzaXMsIG1hdGgsIGNvZGluZywgYW5kIHBsYW5uaW5nXCIsXCJmYW1pbHlcIjpcIm8tcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyMy0wOVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTAzLTE5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDMtMTlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjIwMDAwMCxcIm91dHB1dFwiOjEwMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxNTAsXCJvdXRwdXRcIjo2MDB9fSxcImdwdC01LjRcIjp7XCJpZFwiOlwiZ3B0LTUuNFwiLFwibmFtZVwiOlwiR1BULTUuNFwiLFwiZGVzY3JpcHRpb25cIjpcIkFnZW50LXJlYWR5IEdQVCBmb3IgY29kaW5nIGFuZCBjb21wdXRlci11c2Ugd29ya2Zsb3dzIGF0IGEgbG93ZXIgY29zdFwiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjoxNSxcImNhY2hlX3JlYWRcIjowLjI1LFwidGllcnNcIjpbe1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjUsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MjIuNSxcImNhY2hlX3JlYWRcIjowLjV9fX0sXCJncHQtNS40LW1pbmlcIjp7XCJpZFwiOlwiZ3B0LTUuNC1taW5pXCIsXCJuYW1lXCI6XCJHUFQtNS40IG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTdHJvbmcgc21hbGwgR1BUIGZvciBjb2Rpbmcgc3ViYWdlbnRzLCBxdWljayB0b29sIHVzZSwgYW5kIGhpZ2gtdm9sdW1lIHdvcmtcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibm9uZVwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEuNSxcIm91dHB1dFwiOjksXCJjYWNoZV9yZWFkXCI6MC4xNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjAuNzUsXCJvdXRwdXRcIjo0LjUsXCJjYWNoZV9yZWFkXCI6MC4wNzV9fSxcImdwdC00LjFcIjp7XCJpZFwiOlwiZ3B0LTQuMVwiLFwibmFtZVwiOlwiR1BULTQuMVwiLFwiZGVzY3JpcHRpb25cIjpcIkxvbmctbGl2ZWQgR1BUIHdvcmtob3JzZSBmb3IgY29kaW5nLCBpbnN0cnVjdGlvbiBmb2xsb3dpbmcsIGFuZCBwcm9kdWN0aW9uIGFwcHNcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wNFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTA0LTE0XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMDQtMTRcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA0NzU3NixcIm91dHB1dFwiOjMyNzY4fSxcImNvc3RcIjp7XCJpbnB1dFwiOjIsXCJvdXRwdXRcIjo4LFwiY2FjaGVfcmVhZFwiOjAuNX19LFwibzMtZGVlcC1yZXNlYXJjaFwiOntcImlkXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJuYW1lXCI6XCJvMy1kZWVwLXJlc2VhcmNoXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVzZWFyY2ggbW9kZWwgZm9yIGxvbmctaG9yaXpvbiBpbnZlc3RpZ2F0aW9uLCBzeW50aGVzaXMsIGFuZCBhbmFseXRpY2FsIHJlcG9ydHNcIixcImZhbWlseVwiOlwib1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtZWRpdW1cIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDYtMjZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNi0yNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MjAwMDAwLFwib3V0cHV0XCI6MTAwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDAsXCJjYWNoZV9yZWFkXCI6Mi41fX0sXCJncHQtNS1taW5pXCI6e1wiaWRcIjpcImdwdC01LW1pbmlcIixcIm5hbWVcIjpcIkdQVC01IE1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBHUFQtNSBmb3IgcmVzcG9uc2l2ZSBhZ2VudHMsIGNvZGluZyBoZWxwLCBhbmQgZXZlcnlkYXkgYXV0b21hdGlvblwiLFwiZmFtaWx5XCI6XCJncHQtbWluaVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJtaW5pbWFsXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJrbm93bGVkZ2VcIjpcIjIwMjQtMDUtMzBcIixcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOC0wN1wiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA4LTA3XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo0MDAwMDAsXCJpbnB1dFwiOjI3MjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjI1LFwib3V0cHV0XCI6MixcImNhY2hlX3JlYWRcIjowLjAyNX19LFwiZ3B0LWltYWdlLTFcIjp7XCJpZFwiOlwiZ3B0LWltYWdlLTFcIixcIm5hbWVcIjpcImdwdC1pbWFnZS0xXCIsXCJkZXNjcmlwdGlvblwiOlwiT3BlbkFJIGltYWdlIG1vZGVsIGZvciBwcm9kdWN0aW9uIGdlbmVyYXRpb24sIGVkaXRzLCBhbmQgYnJhbmQtc2FmZSB2aXN1YWwgd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wNC0yNFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA0LTI0XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC00LjEtbWluaVwiOntcImlkXCI6XCJncHQtNC4xLW1pbmlcIixcIm5hbWVcIjpcIkdQVC00LjEgbWluaVwiLFwiZGVzY3JpcHRpb25cIjpcIkFmZm9yZGFibGUgR1BULTQuMSBsYW5lIGZvciBmYXN0IGNvZGluZyBoZWxwIGFuZCBzdHJ1Y3R1cmVkIGV4dHJhY3Rpb25cIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA0XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDQtMTRcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wNC0xNFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDQ3NTc2LFwib3V0cHV0XCI6MzI3Njh9LFwiY29zdFwiOntcImlucHV0XCI6MC40LFwib3V0cHV0XCI6MS42LFwiY2FjaGVfcmVhZFwiOjAuMX19LFwiZ3B0LTQtdHVyYm9cIjp7XCJpZFwiOlwiZ3B0LTQtdHVyYm9cIixcIm5hbWVcIjpcIkdQVC00IFR1cmJvXCIsXCJkZXNjcmlwdGlvblwiOlwiQ29tcGFjdCBHUFQgbW9kZWwgZm9yIGxvdy1sYXRlbmN5IGFzc2lzdGFuY2UgYW5kIGhpZ2gtdm9sdW1lIHdvcmtsb2Fkc1wiLFwiZmFtaWx5XCI6XCJncHRcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcImtub3dsZWRnZVwiOlwiMjAyMy0xMlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDIzLTExLTA2XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjQtMDQtMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEyODAwMCxcIm91dHB1dFwiOjQwOTZ9LFwiY29zdFwiOntcImlucHV0XCI6MTAsXCJvdXRwdXRcIjozMH19LFwiZ3B0LWltYWdlLTEtbWluaVwiOntcImlkXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJuYW1lXCI6XCJncHQtaW1hZ2UtMS1taW5pXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdwdC1pbWFnZVwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNS0wOS0yNlwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI1LTA5LTI2XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiXSxcIm91dHB1dFwiOltcInRleHRcIixcImltYWdlXCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MCxcImlucHV0XCI6MCxcIm91dHB1dFwiOjB9fSxcImdwdC01LW5hbm9cIjp7XCJpZFwiOlwiZ3B0LTUtbmFub1wiLFwibmFtZVwiOlwiR1BULTUgTmFub1wiLFwiZGVzY3JpcHRpb25cIjpcIlRpbnkgR1BULTUgbGFuZSBmb3Igcm91dGluZywgZXh0cmFjdGlvbiwgY2xhc3NpZmljYXRpb24sIGFuZCBidWxrIGpvYnNcIixcImZhbWlseVwiOlwiZ3B0LW5hbm9cIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibWluaW1hbFwiLFwibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA1LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDgtMDdcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOC0wN1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MC4wNSxcIm91dHB1dFwiOjAuNCxcImNhY2hlX3JlYWRcIjowLjAwNX19LFwiZ3B0LTUuNC1wcm9cIjp7XCJpZFwiOlwiZ3B0LTUuNC1wcm9cIixcIm5hbWVcIjpcIkdQVC01LjQgUHJvXCIsXCJkZXNjcmlwdGlvblwiOlwiTW9yZSBleGFjdCBHUFQtNS40IHRpZXIgZm9yIGRlbWFuZGluZyBwcm9mZXNzaW9uYWwgcmVhc29uaW5nIGFuZCBhZ2VudCB0YXNrc1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTAzLTA1XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDMtMDVcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwNTAwMDAsXCJpbnB1dFwiOjkyMjAwMCxcIm91dHB1dFwiOjEyODAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjozMCxcIm91dHB1dFwiOjE4MCxcInRpZXJzXCI6W3tcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzAsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjo2MCxcIm91dHB1dFwiOjI3MH19fSxcImdwdC01LjUtcHJvXCI6e1wiaWRcIjpcImdwdC01LjUtcHJvXCIsXCJuYW1lXCI6XCJHUFQtNS41IFByb1wiLFwiZGVzY3JpcHRpb25cIjpcIkhpZ2hlc3QtYWNjdXJhY3kgR1BULTUuNSB0aWVyIGZvciBzbG93ZXIsIHByZWNpc2lvbi1oZWF2eSByZWFzb25pbmcgYW5kIGNvZGluZ1wiLFwiZmFtaWx5XCI6XCJncHQtcHJvXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTEyLTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MzAsXCJvdXRwdXRcIjoxODAsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjYwLFwib3V0cHV0XCI6MjcwLFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyNzIwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6NjAsXCJvdXRwdXRcIjoyNzB9fX0sXCJncHQtNG8tbWluaVwiOntcImlkXCI6XCJncHQtNG8tbWluaVwiLFwibmFtZVwiOlwiR1BULTRvIG1pbmlcIixcImRlc2NyaXB0aW9uXCI6XCJTbWFsbCBvbW5pIEdQVCBmb3IgY2hlYXAgbXVsdGltb2RhbCBhc3Npc3RhbmNlIGFuZCBwcm9kdWN0aW9uLXNjYWxlIHRyYWZmaWNcIixcImZhbWlseVwiOlwiZ3B0LW1pbmlcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwia25vd2xlZGdlXCI6XCIyMDIzLTA5XCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjQtMDctMThcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNC0wNy0xOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMjgwMDAsXCJvdXRwdXRcIjoxNjM4NH0sXCJjb3N0XCI6e1wiaW5wdXRcIjowLjE1LFwib3V0cHV0XCI6MC42LFwiY2FjaGVfcmVhZFwiOjAuMDc1fX0sXCJncHQtNS42LXNvbFwiOntcImlkXCI6XCJncHQtNS42LXNvbFwiLFwibmFtZVwiOlwiR1BULTUuNiBTb2xcIixcImRlc2NyaXB0aW9uXCI6XCJGcm9udGllciBHUFQtNS42IG1vZGVsIGZvciBjb21wbGV4IHByb2Zlc3Npb25hbCB3b3JrLCBjb2RpbmcsIGFuZCBhZ2VudGljIHdvcmtmbG93c1wiLFwiZmFtaWx5XCI6XCJncHQtc29sXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiLFwibWF4XCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNi0wMi0xNlwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA3LTA5XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDctMDlcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTA1MDAwMCxcImlucHV0XCI6OTIyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImV4cGVyaW1lbnRhbFwiOntcIm1vZGVzXCI6e1wiZmFzdFwiOntcImNvc3RcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NjAsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX0sXCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJzZXJ2aWNlX3RpZXJcIjpcInByaW9yaXR5XCJ9fX0sXCJwcm9cIjp7XCJwcm92aWRlclwiOntcImJvZHlcIjp7XCJyZWFzb25pbmdcIjp7XCJtb2RlXCI6XCJwcm9cIn19fX19fSxcImNvc3RcIjp7XCJpbnB1dFwiOjUsXCJvdXRwdXRcIjozMCxcImNhY2hlX3JlYWRcIjowLjUsXCJjYWNoZV93cml0ZVwiOjYuMjUsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjcyMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjEwLFwib3V0cHV0XCI6NDUsXCJjYWNoZV9yZWFkXCI6MSxcImNhY2hlX3dyaXRlXCI6MTIuNX19fSxcImdwdC01LWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LWNvZGV4XCIsXCJuYW1lXCI6XCJHUFQtNS1Db2RleFwiLFwiZGVzY3JpcHRpb25cIjpcIkNvZGluZy1vcHRpbWl6ZWQgR1BUIG1vZGVsIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgYWdlbnRpYyBzb2Z0d2FyZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdC1jb2RleFwiLFwiYXR0YWNobWVudFwiOmZhbHNlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI0LTA5LTMwXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjUtMDktMTVcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNS0wOS0xNVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjEwLFwiY2FjaGVfcmVhZFwiOjAuMTI1fX0sXCJncHQtNS4yLWNvZGV4XCI6e1wiaWRcIjpcImdwdC01LjItY29kZXhcIixcIm5hbWVcIjpcIkdQVC01LjIgQ29kZXhcIixcImRlc2NyaXB0aW9uXCI6XCJDb2RlLXNwZWNpYWxpc3QgR1BUIGZvciByZXBvc2l0b3J5IGVkaXRzLCByZXZpZXdzLCBhbmQgbG9uZy1ydW5uaW5nIHNvZnR3YXJlIGFnZW50c1wiLFwiZmFtaWx5XCI6XCJncHQtY29kZXhcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIixcInhoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNS0wOC0zMVwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTEyLTExXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTItMTFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6NDAwMDAwLFwiaW5wdXRcIjoyNzIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS43NSxcIm91dHB1dFwiOjE0LFwiY2FjaGVfcmVhZFwiOjAuMTc1fX0sXCJncHQtaW1hZ2UtMlwiOntcImlkXCI6XCJncHQtaW1hZ2UtMlwiLFwibmFtZVwiOlwiZ3B0LWltYWdlLTJcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3B0LWltYWdlXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTIxXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMjFcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjowLFwiaW5wdXRcIjowLFwib3V0cHV0XCI6MH0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MS4yNX19LFwiZ3B0LTUuMVwiOntcImlkXCI6XCJncHQtNS4xXCIsXCJuYW1lXCI6XCJHUFQtNS4xXCIsXCJkZXNjcmlwdGlvblwiOlwiU2hhcnBlciBHUFQtNSBnZW5lcmF0aW9uIGZvciBjb2RpbmcsIHByb2R1Y3Qgd29yaywgYW5kIHRvb2wtYXNzaXN0ZWQgdGFza3NcIixcImZhbWlseVwiOlwiZ3B0XCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcImtub3dsZWRnZVwiOlwiMjAyNC0wOS0zMFwiLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI1LTExLTEzXCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjUtMTEtMTNcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjQwMDAwMCxcImlucHV0XCI6MjcyMDAwLFwib3V0cHV0XCI6MTI4MDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoxMCxcImNhY2hlX3JlYWRcIjowLjEyNX19LFwiZ3B0LTUuNVwiOntcImlkXCI6XCJncHQtNS41XCIsXCJuYW1lXCI6XCJHUFQtNS41XCIsXCJkZXNjcmlwdGlvblwiOlwiRGVmYXVsdCBmcm9udGllciBHUFQgZm9yIGNvZGluZywgY29tcHV0ZXIgdXNlLCByZXNlYXJjaCwgYW5kIGtub3dsZWRnZSB3b3JrXCIsXCJmYW1pbHlcIjpcImdwdFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbe1widHlwZVwiOlwiZWZmb3J0XCIsXCJ2YWx1ZXNcIjpbXCJub25lXCIsXCJsb3dcIixcIm1lZGl1bVwiLFwiaGlnaFwiLFwieGhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOmZhbHNlLFwia25vd2xlZGdlXCI6XCIyMDI1LTEyLTAxXCIsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMjNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0yM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDUwMDAwLFwiaW5wdXRcIjo5MjIwMDAsXCJvdXRwdXRcIjoxMjgwMDB9LFwiZXhwZXJpbWVudGFsXCI6e1wibW9kZXNcIjp7XCJmYXN0XCI6e1wiY29zdFwiOntcImlucHV0XCI6MTIuNSxcIm91dHB1dFwiOjc1LFwiY2FjaGVfcmVhZFwiOjEuMjV9LFwicHJvdmlkZXJcIjp7XCJib2R5XCI6e1wic2VydmljZV90aWVyXCI6XCJwcmlvcml0eVwifX19fX0sXCJjb3N0XCI6e1wiaW5wdXRcIjo1LFwib3V0cHV0XCI6MzAsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllcnNcIjpbe1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjEsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjI3MjAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoxMCxcIm91dHB1dFwiOjQ1LFwiY2FjaGVfcmVhZFwiOjF9fX19fSxcInhhaVwiOntcIm1vZGVsc1wiOntcImdyb2stNC4yMC1tdWx0aS1hZ2VudC0wMzA5XCI6e1wiaWRcIjpcImdyb2stNC4yMC1tdWx0aS1hZ2VudC0wMzA5XCIsXCJuYW1lXCI6XCJHcm9rIDQuMjAgTXVsdGktQWdlbnRcIixcImRlc2NyaXB0aW9uXCI6XCJHcm9rIG1vZGVsIGZvciBhZ2VudGljIHRvb2wgdXNlLCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxpdmUgYXNzaXN0YW5jZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCIsXCJ4aGlnaFwiXX1dLFwidG9vbF9jYWxsXCI6ZmFsc2UsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLTQuMjAtMDMwOS1ub24tcmVhc29uaW5nXCI6e1wiaWRcIjpcImdyb2stNC4yMC0wMzA5LW5vbi1yZWFzb25pbmdcIixcIm5hbWVcIjpcIkdyb2sgNC4yMCAoTm9uLVJlYXNvbmluZylcIixcImRlc2NyaXB0aW9uXCI6XCJHcm9rIG1vZGVsIGZvciBhZ2VudGljIHRvb2wgdXNlLCByZWFzb25pbmcsIGNvZGluZywgYW5kIGxpdmUgYXNzaXN0YW5jZVwiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOmZhbHNlLFwidG9vbF9jYWxsXCI6dHJ1ZSxcInN0cnVjdHVyZWRfb3V0cHV0XCI6dHJ1ZSxcInRlbXBlcmF0dXJlXCI6dHJ1ZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMy0wOVwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAzLTA5XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1widGV4dFwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMDAwMDAsXCJvdXRwdXRcIjozMDAwMH0sXCJjb3N0XCI6e1wiaW5wdXRcIjoxLjI1LFwib3V0cHV0XCI6Mi41LFwiY2FjaGVfcmVhZFwiOjAuMixcInRpZXJzXCI6W3tcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNH19fSxcImdyb2stNC4zXCI6e1wiaWRcIjpcImdyb2stNC4zXCIsXCJuYW1lXCI6XCJHcm9rIDQuM1wiLFwiZGVzY3JpcHRpb25cIjpcInhBSSdzIEdyb2sgZm9yIGNoYXQsIGNvZGluZywgYWdlbnRpYyB0b29scywgYW5kIGxvd2VyIGhhbGx1Y2luYXRpb24gcmlza1wiLFwiZmFtaWx5XCI6XCJncm9rXCIsXCJhdHRhY2htZW50XCI6dHJ1ZSxcInJlYXNvbmluZ1wiOnRydWUsXCJyZWFzb25pbmdfb3B0aW9uc1wiOlt7XCJ0eXBlXCI6XCJlZmZvcnRcIixcInZhbHVlc1wiOltcIm5vbmVcIixcImxvd1wiLFwibWVkaXVtXCIsXCJoaWdoXCJdfV0sXCJ0b29sX2NhbGxcIjp0cnVlLFwic3RydWN0dXJlZF9vdXRwdXRcIjp0cnVlLFwidGVtcGVyYXR1cmVcIjp0cnVlLFwicmVsZWFzZV9kYXRlXCI6XCIyMDI2LTA0LTE3XCIsXCJsYXN0X3VwZGF0ZWRcIjpcIjIwMjYtMDQtMTdcIixcIm1vZGFsaXRpZXNcIjp7XCJpbnB1dFwiOltcInRleHRcIixcImltYWdlXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ0ZXh0XCJdfSxcIm9wZW5fd2VpZ2h0c1wiOmZhbHNlLFwibGltaXRcIjp7XCJjb250ZXh0XCI6MTAwMDAwMCxcIm91dHB1dFwiOjMwMDAwfSxcImNvc3RcIjp7XCJpbnB1dFwiOjEuMjUsXCJvdXRwdXRcIjoyLjUsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLjUsXCJvdXRwdXRcIjo1LFwiY2FjaGVfcmVhZFwiOjAuNCxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40fX19LFwiZ3Jvay1pbWFnaW5lLWltYWdlLXF1YWxpdHlcIjp7XCJpZFwiOlwiZ3Jvay1pbWFnaW5lLWltYWdlLXF1YWxpdHlcIixcIm5hbWVcIjpcIkdyb2sgSW1hZ2luZSBJbWFnZSBRdWFsaXR5XCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMDNcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0wM1wiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcImltYWdlXCIsXCJwZGZcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo4MDAwLFwib3V0cHV0XCI6MH19LFwiZ3Jvay1pbWFnaW5lLXZpZGVvXCI6e1wiaWRcIjpcImdyb2staW1hZ2luZS12aWRlb1wiLFwibmFtZVwiOlwiR3JvayBJbWFnaW5lIFZpZGVvXCIsXCJkZXNjcmlwdGlvblwiOlwiSW1hZ2UgbW9kZWwgZm9yIHByb21wdC1kcml2ZW4gZ2VuZXJhdGlvbiwgZWRpdGluZywgYW5kIHZpc3VhbCBkZXNpZ24gd29ya2Zsb3dzXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6ZmFsc2UsXCJ0b29sX2NhbGxcIjpmYWxzZSxcInRlbXBlcmF0dXJlXCI6ZmFsc2UsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDEtMjhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMS0yOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInZpZGVvXCIsXCJwZGZcIl0sXCJvdXRwdXRcIjpbXCJ2aWRlb1wiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjEwMjQsXCJvdXRwdXRcIjowfX0sXCJncm9rLTQuNVwiOntcImlkXCI6XCJncm9rLTQuNVwiLFwibmFtZVwiOlwiR3JvayA0LjVcIixcImRlc2NyaXB0aW9uXCI6XCJ4QUkncyBsYXRlc3QgR3JvayBmb3IgY2hhdCwgY29kaW5nLCBhZ2VudGljIHRvb2xzLCBhbmQgbG93ZXIgaGFsbHVjaW5hdGlvbiByaXNrXCIsXCJmYW1pbHlcIjpcImdyb2tcIixcImF0dGFjaG1lbnRcIjp0cnVlLFwicmVhc29uaW5nXCI6dHJ1ZSxcInJlYXNvbmluZ19vcHRpb25zXCI6W3tcInR5cGVcIjpcImVmZm9ydFwiLFwidmFsdWVzXCI6W1wibG93XCIsXCJtZWRpdW1cIixcImhpZ2hcIl19XSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDctMDhcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNy0wOFwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjo1MDAwMDAsXCJvdXRwdXRcIjo1MDAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MixcIm91dHB1dFwiOjYsXCJjYWNoZV9yZWFkXCI6MC41LFwidGllcnNcIjpbe1wiaW5wdXRcIjo0LFwib3V0cHV0XCI6MTIsXCJjYWNoZV9yZWFkXCI6MSxcInRpZXJcIjp7XCJ0eXBlXCI6XCJjb250ZXh0XCIsXCJzaXplXCI6MjAwMDAwfX1dLFwiY29udGV4dF9vdmVyXzIwMGtcIjp7XCJpbnB1dFwiOjQsXCJvdXRwdXRcIjoxMixcImNhY2hlX3JlYWRcIjoxfX19LFwiZ3Jvay00LjIwLTAzMDktcmVhc29uaW5nXCI6e1wiaWRcIjpcImdyb2stNC4yMC0wMzA5LXJlYXNvbmluZ1wiLFwibmFtZVwiOlwiR3JvayA0LjIwIChSZWFzb25pbmcpXCIsXCJkZXNjcmlwdGlvblwiOlwiUmVhc29uaW5nIEdyb2sgZm9yIGRvY3VtZW50LWhlYXZ5IGFuYWx5c2lzIGFuZCBsb25nLWhvcml6b24gdG9vbCB1c2VcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDMtMDlcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wMy0wOVwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoxMDAwMDAwLFwib3V0cHV0XCI6MzAwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MS4yNSxcIm91dHB1dFwiOjIuNSxcImNhY2hlX3JlYWRcIjowLjIsXCJ0aWVyc1wiOlt7XCJpbnB1dFwiOjIuNSxcIm91dHB1dFwiOjUsXCJjYWNoZV9yZWFkXCI6MC40LFwidGllclwiOntcInR5cGVcIjpcImNvbnRleHRcIixcInNpemVcIjoyMDAwMDB9fV0sXCJjb250ZXh0X292ZXJfMjAwa1wiOntcImlucHV0XCI6Mi41LFwib3V0cHV0XCI6NSxcImNhY2hlX3JlYWRcIjowLjR9fX0sXCJncm9rLWltYWdpbmUtaW1hZ2VcIjp7XCJpZFwiOlwiZ3Jvay1pbWFnaW5lLWltYWdlXCIsXCJuYW1lXCI6XCJHcm9rIEltYWdpbmUgSW1hZ2VcIixcImRlc2NyaXB0aW9uXCI6XCJJbWFnZSBtb2RlbCBmb3IgcHJvbXB0LWRyaXZlbiBnZW5lcmF0aW9uLCBlZGl0aW5nLCBhbmQgdmlzdWFsIGRlc2lnbiB3b3JrZmxvd3NcIixcImZhbWlseVwiOlwiZ3Jva1wiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjpmYWxzZSxcInRvb2xfY2FsbFwiOmZhbHNlLFwidGVtcGVyYXR1cmVcIjpmYWxzZSxcInJlbGVhc2VfZGF0ZVwiOlwiMjAyNi0wMS0yOFwiLFwibGFzdF91cGRhdGVkXCI6XCIyMDI2LTAxLTI4XCIsXCJtb2RhbGl0aWVzXCI6e1wiaW5wdXRcIjpbXCJ0ZXh0XCIsXCJpbWFnZVwiLFwicGRmXCJdLFwib3V0cHV0XCI6W1wiaW1hZ2VcIixcInBkZlwiXX0sXCJvcGVuX3dlaWdodHNcIjpmYWxzZSxcImxpbWl0XCI6e1wiY29udGV4dFwiOjgwMDAsXCJvdXRwdXRcIjowfX0sXCJncm9rLWJ1aWxkLTAuMVwiOntcImlkXCI6XCJncm9rLWJ1aWxkLTAuMVwiLFwibmFtZVwiOlwiR3JvayBCdWlsZCAwLjFcIixcImRlc2NyaXB0aW9uXCI6XCJGYXN0IEdyb2sgY29kaW5nIG1vZGVsIHR1bmVkIGZvciBhZ2VudGljIGVuZ2luZWVyaW5nIGFuZCBpdGVyYXRpdmUgZWRpdHNcIixcImZhbWlseVwiOlwiZ3Jvay1idWlsZFwiLFwiYXR0YWNobWVudFwiOnRydWUsXCJyZWFzb25pbmdcIjp0cnVlLFwicmVhc29uaW5nX29wdGlvbnNcIjpbXSxcInRvb2xfY2FsbFwiOnRydWUsXCJzdHJ1Y3R1cmVkX291dHB1dFwiOnRydWUsXCJ0ZW1wZXJhdHVyZVwiOnRydWUsXCJyZWxlYXNlX2RhdGVcIjpcIjIwMjYtMDQtMTZcIixcImxhc3RfdXBkYXRlZFwiOlwiMjAyNi0wNC0xNlwiLFwibW9kYWxpdGllc1wiOntcImlucHV0XCI6W1widGV4dFwiLFwiaW1hZ2VcIixcInBkZlwiXSxcIm91dHB1dFwiOltcInRleHRcIl19LFwib3Blbl93ZWlnaHRzXCI6ZmFsc2UsXCJsaW1pdFwiOntcImNvbnRleHRcIjoyNTYwMDAsXCJvdXRwdXRcIjoyNTYwMDB9LFwiY29zdFwiOntcImlucHV0XCI6MSxcIm91dHB1dFwiOjIsXCJjYWNoZV9yZWFkXCI6MC4yLFwidGllcnNcIjpbe1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6NCxcImNhY2hlX3JlYWRcIjowLjQsXCJ0aWVyXCI6e1widHlwZVwiOlwiY29udGV4dFwiLFwic2l6ZVwiOjIwMDAwMH19XSxcImNvbnRleHRfb3Zlcl8yMDBrXCI6e1wiaW5wdXRcIjoyLFwib3V0cHV0XCI6NCxcImNhY2hlX3JlYWRcIjowLjR9fX19fX0iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgc25hcHNob3QgZnJvbSAnLi9jYXRhbG9nLXNuYXBzaG90Lmpzb24nIHdpdGggeyB0eXBlOiAnanNvbicgfVxuXG5jb25zdCBDQVRBTE9HX1VSTCA9ICdodHRwczovL21vZGVscy5kZXYvYXBpLmpzb24nXG5jb25zdCBTVVBQT1JURUQgPSBbJ2dvb2dsZScsICdhbnRocm9waWMnLCAnb3BlbmFpJywgJ3hhaSddXG5jb25zdCBUVEwgPSAyNCAqIDYwICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGNhY2hlRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ21vZGVscy1jYWNoZS5qc29uJylcbn1cblxuZnVuY3Rpb24gc3Vic2V0KGRhdGEpIHtcbiAgY29uc3Qgb3V0ID0ge31cbiAgZm9yIChjb25zdCBwcm92aWRlciBvZiBTVVBQT1JURUQpIHtcbiAgICBpZiAoZGF0YVtwcm92aWRlcl0/Lm1vZGVscykgb3V0W3Byb3ZpZGVyXSA9IHsgbW9kZWxzOiBkYXRhW3Byb3ZpZGVyXS5tb2RlbHMgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENhY2hlKCkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGNhY2hlRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaENhdGFsb2coeyBmZXRjaGVyID0gZmV0Y2ggfSA9IHt9KSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hlcihDQVRBTE9HX1VSTClcbiAgaWYgKCFyZXNwb25zZS5vaykgdGhyb3cgbmV3IEVycm9yKGBjYXRhbG9nIGZldGNoIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgY29uc3QgcHJvdmlkZXJzID0gc3Vic2V0KGF3YWl0IHJlc3BvbnNlLmpzb24oKSlcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShjYWNoZUZpbGUoKSwgSlNPTi5zdHJpbmdpZnkoeyBhdDogRGF0ZS5ub3coKSwgcHJvdmlkZXJzIH0pKVxuICByZXR1cm4gcHJvdmlkZXJzXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ2F0YWxvZyh7IGZldGNoZXIgPSBmZXRjaCB9ID0ge30pIHtcbiAgY29uc3QgY2FjaGVkID0gYXdhaXQgcmVhZENhY2hlKClcbiAgaWYgKGNhY2hlZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gY2FjaGVkLnByb3ZpZGVyc1xuICByZWZyZXNoQ2F0YWxvZyh7IGZldGNoZXIgfSkuY2F0Y2goKCkgPT4ge30pXG4gIHJldHVybiBjYWNoZWQ/LnByb3ZpZGVycyB8fCBzbmFwc2hvdFxufVxuXG5jb25zdCB0ZXh0TW9kZWwgPSAobSkgPT5cbiAgbS50b29sX2NhbGwgPT09IHRydWUgJiZcbiAgKCFtLm1vZGFsaXRpZXMgfHwgKG0ubW9kYWxpdGllcy5pbnB1dD8uaW5jbHVkZXMoJ3RleHQnKSAmJiBtLm1vZGFsaXRpZXMub3V0cHV0Py5pbmNsdWRlcygndGV4dCcpKSlcblxuY29uc3QgZGF0ZWREdXBsaWNhdGUgPSAoaWQpID0+IC8tXFxkezh9JC8udGVzdChpZClcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RNb2RlbHMocHJvdmlkZXJzLCBwcm92aWRlcklkcykge1xuICBjb25zdCBvcmRlciA9IFNVUFBPUlRFRC5maWx0ZXIoKHApID0+IHByb3ZpZGVySWRzLmluY2x1ZGVzKHApKVxuICBjb25zdCBtb2RlbHMgPSBbXVxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIG9yZGVyKSB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHByb3ZpZGVyc1twcm92aWRlcl0/Lm1vZGVscyB8fCB7fSlcbiAgICAgIC5maWx0ZXIoKFtpZCwgbV0pID0+IHRleHRNb2RlbChtKSAmJiAhZGF0ZWREdXBsaWNhdGUoaWQpKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IFN0cmluZyhiWzFdLnJlbGVhc2VfZGF0ZSB8fCAnJykubG9jYWxlQ29tcGFyZShTdHJpbmcoYVsxXS5yZWxlYXNlX2RhdGUgfHwgJycpKSlcbiAgICBmb3IgKGNvbnN0IFtpZCwgbV0gb2YgZW50cmllcykge1xuICAgICAgbW9kZWxzLnB1c2goe1xuICAgICAgICBuYW1lOiBgJHtwcm92aWRlcn0vJHtpZH1gLFxuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgZGVzYzogbS5kZXNjcmlwdGlvbiB8fCBtLm5hbWUgfHwgaWQsXG4gICAgICAgIHByaWNlOiBtLmNvc3QgJiYgbS5jb3N0LmlucHV0ICE9IG51bGwgPyB7IGluOiBtLmNvc3QuaW5wdXQsIG91dDogbS5jb3N0Lm91dHB1dCB9IDogbnVsbCxcbiAgICAgICAgZWZmb3J0OiAhIW0ucmVhc29uaW5nLFxuICAgICAgICAvLyB0aGUgbWVhc3VyZWQgZmlsbCBudW1iZXIgaXMgaW5wdXQgdG9rZW5zLCBzbyBwcmVmZXIgdGhlIGlucHV0IGxpbWl0XG4gICAgICAgIC8vIGFzIHRoZSBkZW5vbWluYXRvciB3aGVyZSB0aGUgcHJvdmlkZXIgZGlzdGluZ3Vpc2hlcyBpdFxuICAgICAgICBjb250ZXh0OiBtLmxpbWl0Py5pbnB1dCB8fCBtLmxpbWl0Py5jb250ZXh0IHx8IG51bGwsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kZWxzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGhvY01vZGVsKG5hbWUsIHByb3ZpZGVySWRzKSB7XG4gIGNvbnN0IG1hdGNoID0gbmFtZS5tYXRjaCgvXihbYS16MC05LV0rKVxcLyguKykkLylcbiAgaWYgKCFtYXRjaCB8fCAhcHJvdmlkZXJJZHMuaW5jbHVkZXMobWF0Y2hbMV0pKSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIG5hbWUsXG4gICAgcHJvdmlkZXI6IG1hdGNoWzFdLFxuICAgIGRlc2M6ICdub3QgaW4gY2F0YWxvZycsXG4gICAgcHJpY2U6IG51bGwsXG4gICAgZWZmb3J0OiBmYWxzZSxcbiAgICBjb250ZXh0OiBudWxsLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbi8vIHRoZSBiYWNrZW5kIGhpZGVzIG1vZGVscyBmcm9tIGNsaWVudHMgYmVsb3cgYSB2ZXJzaW9uIGZsb29yLCBzbyBzZW5kIGFcbi8vIHZlcnNpb24gY29tZm9ydGFibHkgYWJvdmUgaXRcbmNvbnN0IE1PREVMU19VUkwgPSAnaHR0cHM6Ly9jaGF0Z3B0LmNvbS9iYWNrZW5kLWFwaS9jb2RleC9tb2RlbHM/Y2xpZW50X3ZlcnNpb249Mi4wLjAnXG5jb25zdCBUVEwgPSAyNCAqIDYwICogNjAgKiAxMDAwXG5cbmZ1bmN0aW9uIGNhY2hlRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvZGV4LW1vZGVscy1jYWNoZS5qc29uJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcENvZGV4TW9kZWxzKGVudHJpZXMpIHtcbiAgcmV0dXJuIGVudHJpZXMubWFwKChtKSA9PiAoe1xuICAgIG5hbWU6IGBjb2RleC8ke20uc2x1Z31gLFxuICAgIHByb3ZpZGVyOiAnY29kZXgnLFxuICAgIGRlc2M6IGAke20uZGVzY3JpcHRpb24gfHwgbS5sYWJlbCB8fCBtLnNsdWd9IFx1MDBCNyB2aWEgQ2hhdEdQVCBwbGFuYCxcbiAgICBwcmljZTogbnVsbCxcbiAgICBlZmZvcnQ6IHRydWUsXG4gICAgY29udGV4dDogbS5jb250ZXh0X3dpbmRvdyB8fCBudWxsLFxuICB9KSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRDb2RleE1vZGVscyhjcmVkZW50aWFscykge1xuICBsZXQgY2FjaGVkID0gbnVsbFxuICB0cnkge1xuICAgIGNhY2hlZCA9IEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoY2FjaGVGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHt9XG4gIGlmIChjYWNoZWQgJiYgRGF0ZS5ub3coKSAtIGNhY2hlZC5hdCA8IFRUTCkgcmV0dXJuIG1hcENvZGV4TW9kZWxzKGNhY2hlZC5tb2RlbHMpXG4gIGlmICghY3JlZGVudGlhbHMpIHJldHVybiBtYXBDb2RleE1vZGVscyhjYWNoZWQ/Lm1vZGVscyB8fCBbXSlcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goTU9ERUxTX1VSTCwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7Y3JlZGVudGlhbHMuYXBpS2V5fWAsXG4gICAgICAgIC4uLmNyZWRlbnRpYWxzLmhlYWRlcnMsXG4gICAgICAgIG9yaWdpbmF0b3I6ICdjb2RleF9jbGlfcnMnLFxuICAgICAgfSxcbiAgICB9KVxuICAgIGlmICghcmVzcG9uc2Uub2spIHRocm93IG5ldyBFcnJvcihTdHJpbmcocmVzcG9uc2Uuc3RhdHVzKSlcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgY29uc3QgbW9kZWxzID0gKGRhdGEubW9kZWxzIHx8IFtdKS5tYXAoKG0pID0+ICh7XG4gICAgICBzbHVnOiBtLnNsdWcsXG4gICAgICBkZXNjcmlwdGlvbjogbS5kZXNjcmlwdGlvbixcbiAgICAgIGxhYmVsOiBtLmxhYmVsIHx8IG0uZGlzcGxheV9uYW1lLFxuICAgICAgY29udGV4dF93aW5kb3c6IG0uY29udGV4dF93aW5kb3cgfHwgbS5tYXhfY29udGV4dF93aW5kb3cgfHwgbnVsbCxcbiAgICB9KSlcbiAgICBpZiAobW9kZWxzLmxlbmd0aCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdlbXB0eSBtb2RlbCBsaXN0JylcbiAgICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgICBhd2FpdCB3cml0ZUZpbGUoY2FjaGVGaWxlKCksIEpTT04uc3RyaW5naWZ5KHsgYXQ6IERhdGUubm93KCksIG1vZGVscyB9KSlcbiAgICByZXR1cm4gbWFwQ29kZXhNb2RlbHMobW9kZWxzKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbWFwQ29kZXhNb2RlbHMoY2FjaGVkPy5tb2RlbHMgfHwgW10pXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBjcmVhdGVTZXJ2ZXIgfSBmcm9tICdub2RlOmh0dHAnXG5pbXBvcnQgeyByYW5kb21CeXRlcywgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlLCBjaG1vZCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IENMSUVOVF9JRCA9ICdhcHBfRU1vYW1FRVo3M2YwQ2tYYVhwN2hyYW5uJ1xuY29uc3QgQVVUSF9VUkwgPSAnaHR0cHM6Ly9hdXRoLm9wZW5haS5jb20vb2F1dGgvYXV0aG9yaXplJ1xuY29uc3QgVE9LRU5fVVJMID0gJ2h0dHBzOi8vYXV0aC5vcGVuYWkuY29tL29hdXRoL3Rva2VuJ1xuY29uc3QgUkVESVJFQ1RfUE9SVCA9IDE0NTVcbmNvbnN0IFJFRElSRUNUX1VSSSA9IGBodHRwOi8vbG9jYWxob3N0OiR7UkVESVJFQ1RfUE9SVH0vYXV0aC9jYWxsYmFja2BcbmNvbnN0IFNDT1BFID0gJ29wZW5pZCBwcm9maWxlIGVtYWlsIG9mZmxpbmVfYWNjZXNzJ1xuY29uc3QgUkVGUkVTSF9TS0VXX01TID0gNSAqIDYwICogMTAwMFxuXG5mdW5jdGlvbiBhdXRoRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2F1dGguanNvbicpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NHVybChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvXFwrL2csICctJykucmVwbGFjZSgvXFwvL2csICdfJykucmVwbGFjZSgvPSskLywgJycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVKd3RDbGFpbXModG9rZW4pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXlsb2FkID0gdG9rZW4uc3BsaXQoJy4nKVsxXVxuICAgIHJldHVybiBKU09OLnBhcnNlKEJ1ZmZlci5mcm9tKHBheWxvYWQsICdiYXNlNjR1cmwnKS50b1N0cmluZygndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFjY291bnRJZEZyb21DbGFpbXMoY2xhaW1zKSB7XG4gIHJldHVybiBjbGFpbXNbJ2h0dHBzOi8vYXBpLm9wZW5haS5jb20vYXV0aCddPy5jaGF0Z3B0X2FjY291bnRfaWQgfHwgY2xhaW1zLmNoYXRncHRfYWNjb3VudF9pZCB8fCBudWxsXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRBdXRoKCkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGF1dGhGaWxlKCksICd1dGYtOCcpKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge31cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUF1dGgoYXV0aCkge1xuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKGF1dGhGaWxlKCksIEpTT04uc3RyaW5naWZ5KGF1dGgsIG51bGwsIDIpICsgJ1xcbicpXG4gIGF3YWl0IGNobW9kKGF1dGhGaWxlKCksIDBvNjAwKVxufVxuXG5hc3luYyBmdW5jdGlvbiB0b2tlblJlcXVlc3QocGFyYW1zKSB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goVE9LRU5fVVJMLCB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgfSxcbiAgICBib2R5OiBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykudG9TdHJpbmcoKSxcbiAgfSlcbiAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgIHRocm93IG5ldyBFcnJvcihgdG9rZW4gcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfSAke2F3YWl0IHJlc3BvbnNlLnRleHQoKX1gKVxuICB9XG4gIHJldHVybiByZXNwb25zZS5qc29uKClcbn1cblxuZnVuY3Rpb24gc3RvcmVUb2tlbnMoYXV0aCwgdG9rZW5zKSB7XG4gIGNvbnN0IGNsYWltcyA9IHRva2Vucy5pZF90b2tlbiA/IGRlY29kZUp3dENsYWltcyh0b2tlbnMuaWRfdG9rZW4pIDoge31cbiAgYXV0aC5vcGVuYWkgPSB7XG4gICAgYWNjZXNzX3Rva2VuOiB0b2tlbnMuYWNjZXNzX3Rva2VuLFxuICAgIHJlZnJlc2hfdG9rZW46IHRva2Vucy5yZWZyZXNoX3Rva2VuIHx8IGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuLFxuICAgIGlkX3Rva2VuOiB0b2tlbnMuaWRfdG9rZW4gfHwgYXV0aC5vcGVuYWk/LmlkX3Rva2VuLFxuICAgIGFjY291bnRfaWQ6IGFjY291bnRJZEZyb21DbGFpbXMoY2xhaW1zKSB8fCBhdXRoLm9wZW5haT8uYWNjb3VudF9pZCB8fCBudWxsLFxuICAgIGVtYWlsOiBjbGFpbXMuZW1haWwgfHwgYXV0aC5vcGVuYWk/LmVtYWlsIHx8IG51bGwsXG4gICAgZXhwaXJlc19hdDogRGF0ZS5ub3coKSArICh0b2tlbnMuZXhwaXJlc19pbiB8fCAzNjAwKSAqIDEwMDAsXG4gIH1cbiAgcmV0dXJuIGF1dGhcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3RPcGVuQUkoeyBvcGVuQnJvd3NlciA9IHRydWUsIHRpbWVvdXRNcyA9IDUgKiA2MCAqIDEwMDAsIG9uVXJsID0gKCkgPT4ge30gfSA9IHt9KSB7XG4gIGNvbnN0IHZlcmlmaWVyID0gYmFzZTY0dXJsKHJhbmRvbUJ5dGVzKDY0KSlcbiAgY29uc3QgY2hhbGxlbmdlID0gYmFzZTY0dXJsKGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZSh2ZXJpZmllcikuZGlnZXN0KCkpXG4gIGNvbnN0IHN0YXRlID0gYmFzZTY0dXJsKHJhbmRvbUJ5dGVzKDI0KSlcblxuICBjb25zdCB1cmwgPSBgJHtBVVRIX1VSTH0/JHtuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICByZXNwb25zZV90eXBlOiAnY29kZScsXG4gICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgc2NvcGU6IFNDT1BFLFxuICAgIGNvZGVfY2hhbGxlbmdlOiBjaGFsbGVuZ2UsXG4gICAgY29kZV9jaGFsbGVuZ2VfbWV0aG9kOiAnUzI1NicsXG4gICAgc3RhdGUsXG4gICAgcHJvbXB0OiAnbG9naW4nLFxuICAgIGlkX3Rva2VuX2FkZF9vcmdhbml6YXRpb25zOiAndHJ1ZScsXG4gICAgY29kZXhfY2xpX3NpbXBsaWZpZWRfZmxvdzogJ3RydWUnLFxuICAgIG9yaWdpbmF0b3I6ICdjb2RleF9jbGlfcnMnLFxuICB9KS50b1N0cmluZygpfWBcblxuICBjb25zdCBjb2RlID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNlcnZlciA9IGNyZWF0ZVNlcnZlcigocmVxLCByZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlcXVlc3RVcmwgPSBuZXcgVVJMKHJlcS51cmwsIGBodHRwOi8vbG9jYWxob3N0OiR7UkVESVJFQ1RfUE9SVH1gKVxuICAgICAgaWYgKHJlcXVlc3RVcmwucGF0aG5hbWUgIT09ICcvYXV0aC9jYWxsYmFjaycpIHtcbiAgICAgICAgcmVzLndyaXRlSGVhZCg0MDQpLmVuZCgpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgZ290U3RhdGUgPSByZXF1ZXN0VXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3N0YXRlJylcbiAgICAgIGNvbnN0IGdvdENvZGUgPSByZXF1ZXN0VXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2NvZGUnKVxuICAgICAgY29uc3QgZ290RXJyb3IgPSByZXF1ZXN0VXJsLnNlYXJjaFBhcmFtcy5nZXQoJ2Vycm9yJylcbiAgICAgIHJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9odG1sJyB9KVxuICAgICAgcmVzLmVuZChcbiAgICAgICAgZ290Q29kZSAmJiBnb3RTdGF0ZSA9PT0gc3RhdGVcbiAgICAgICAgICA/ICc8aHRtbD48Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyBwYWRkaW5nOiAycmVtXCI+c2lnbmVkIGluIC0geW91IGNhbiByZXR1cm4gdG8gcGljbzwvYm9keT48L2h0bWw+J1xuICAgICAgICAgIDogJzxodG1sPjxib2R5IHN0eWxlPVwiZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IHBhZGRpbmc6IDJyZW1cIj5zaWduLWluIGZhaWxlZCAtIHJldHVybiB0byBwaWNvIGFuZCB0cnkgYWdhaW48L2JvZHk+PC9odG1sPicsXG4gICAgICApXG4gICAgICBjbGVhbnVwKClcbiAgICAgIGlmIChnb3RFcnJvcikgcmVqZWN0KG5ldyBFcnJvcihgYXV0aG9yaXphdGlvbiBmYWlsZWQ6ICR7Z290RXJyb3J9YCkpXG4gICAgICBlbHNlIGlmICghZ290Q29kZSB8fCBnb3RTdGF0ZSAhPT0gc3RhdGUpIHJlamVjdChuZXcgRXJyb3IoJ2F1dGhvcml6YXRpb24gZmFpbGVkOiBtaXNzaW5nIGNvZGUgb3Igc3RhdGUgbWlzbWF0Y2gnKSlcbiAgICAgIGVsc2UgcmVzb2x2ZShnb3RDb2RlKVxuICAgIH0pXG5cbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY2xlYW51cCgpXG4gICAgICByZWplY3QobmV3IEVycm9yKCdzaWduLWluIHRpbWVkIG91dCcpKVxuICAgIH0sIHRpbWVvdXRNcylcblxuICAgIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpXG4gICAgICBzZXJ2ZXIuY2xvc2UoKVxuICAgIH1cblxuICAgIHNlcnZlci5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBjbGVhbnVwKClcbiAgICAgIHJlamVjdChlcnIuY29kZSA9PT0gJ0VBRERSSU5VU0UnID8gbmV3IEVycm9yKGBwb3J0ICR7UkVESVJFQ1RfUE9SVH0gaXMgaW4gdXNlIChpcyBhbm90aGVyIHNpZ24taW4gb3IgY29kZXggcnVubmluZz8pYCkgOiBlcnIpXG4gICAgfSlcbiAgICBzZXJ2ZXIubGlzdGVuKFJFRElSRUNUX1BPUlQsICcxMjcuMC4wLjEnLCAoKSA9PiB7XG4gICAgICBvblVybCh1cmwpXG4gICAgICBpZiAob3BlbkJyb3dzZXIpIGV4ZWNGaWxlKCdvcGVuJywgW3VybF0sICgpID0+IHt9KVxuICAgIH0pXG4gIH0pXG5cbiAgY29uc3QgdG9rZW5zID0gYXdhaXQgdG9rZW5SZXF1ZXN0KHtcbiAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICBjb2RlLFxuICAgIHJlZGlyZWN0X3VyaTogUkVESVJFQ1RfVVJJLFxuICAgIGNsaWVudF9pZDogQ0xJRU5UX0lELFxuICAgIGNvZGVfdmVyaWZpZXI6IHZlcmlmaWVyLFxuICB9KVxuXG4gIGNvbnN0IGF1dGggPSBzdG9yZVRva2Vucyhhd2FpdCByZWFkQXV0aCgpLCB0b2tlbnMpXG4gIGF3YWl0IHdyaXRlQXV0aChhdXRoKVxuICByZXR1cm4geyBlbWFpbDogYXV0aC5vcGVuYWkuZW1haWwsIGFjY291bnRJZDogYXV0aC5vcGVuYWkuYWNjb3VudF9pZCB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlDcmVkZW50aWFscygpIHtcbiAgY29uc3QgYXV0aCA9IGF3YWl0IHJlYWRBdXRoKClcbiAgY29uc3Qgc3RvcmVkID0gYXV0aC5vcGVuYWlcbiAgaWYgKCFzdG9yZWQ/LmFjY2Vzc190b2tlbikgcmV0dXJuIG51bGxcblxuICBpZiAoRGF0ZS5ub3coKSA+IChzdG9yZWQuZXhwaXJlc19hdCB8fCAwKSAtIFJFRlJFU0hfU0tFV19NUykge1xuICAgIGlmICghc3RvcmVkLnJlZnJlc2hfdG9rZW4pIHJldHVybiBudWxsXG4gICAgY29uc3QgdG9rZW5zID0gYXdhaXQgdG9rZW5SZXF1ZXN0KHtcbiAgICAgIGdyYW50X3R5cGU6ICdyZWZyZXNoX3Rva2VuJyxcbiAgICAgIHJlZnJlc2hfdG9rZW46IHN0b3JlZC5yZWZyZXNoX3Rva2VuLFxuICAgICAgY2xpZW50X2lkOiBDTElFTlRfSUQsXG4gICAgICBzY29wZTogJ29wZW5pZCBwcm9maWxlIGVtYWlsJyxcbiAgICB9KVxuICAgIGNvbnN0IHJlZnJlc2hlZCA9IHN0b3JlVG9rZW5zKGF1dGgsIHRva2VucylcbiAgICBhd2FpdCB3cml0ZUF1dGgocmVmcmVzaGVkKVxuICAgIHJldHVybiBjcmVkZW50aWFsc0Zyb20ocmVmcmVzaGVkLm9wZW5haSlcbiAgfVxuICByZXR1cm4gY3JlZGVudGlhbHNGcm9tKHN0b3JlZClcbn1cblxuZnVuY3Rpb24gY3JlZGVudGlhbHNGcm9tKHN0b3JlZCkge1xuICByZXR1cm4ge1xuICAgIGFwaUtleTogc3RvcmVkLmFjY2Vzc190b2tlbixcbiAgICBoZWFkZXJzOiBzdG9yZWQuYWNjb3VudF9pZCA/IHsgJ2NoYXRncHQtYWNjb3VudC1pZCc6IHN0b3JlZC5hY2NvdW50X2lkIH0gOiB7fSxcbiAgICBlbWFpbDogc3RvcmVkLmVtYWlsLFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuYWlDb25uZWN0ZWQoKSB7XG4gIGNvbnN0IGF1dGggPSBhd2FpdCByZWFkQXV0aCgpXG4gIHJldHVybiAhIShhdXRoLm9wZW5haT8uYWNjZXNzX3Rva2VuICYmIGF1dGgub3BlbmFpPy5yZWZyZXNoX3Rva2VuKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3BlbmFpU3RhdHVzKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICByZXR1cm4ge1xuICAgIGNvbm5lY3RlZDogISEoYXV0aC5vcGVuYWk/LmFjY2Vzc190b2tlbiAmJiBhdXRoLm9wZW5haT8ucmVmcmVzaF90b2tlbiksXG4gICAgZW1haWw6IGF1dGgub3BlbmFpPy5lbWFpbCB8fCBudWxsLFxuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBkaXNjb25uZWN0T3BlbkFJKCkge1xuICBjb25zdCBhdXRoID0gYXdhaXQgcmVhZEF1dGgoKVxuICBkZWxldGUgYXV0aC5vcGVuYWlcbiAgYXdhaXQgd3JpdGVBdXRoKGF1dGgpXG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGljb0hvbWUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmZ1bmN0aW9uIGNvbmZpZ0ZpbGUoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdjb25maWcuanNvbicpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ29uZmlnKCkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKGNvbmZpZ0ZpbGUoKSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7fVxuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnKGJhc2UsIHBhdGNoKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHsgLi4uYmFzZSB9XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBhdGNoKSkge1xuICAgIHJlc3VsdFtrZXldID0gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gbWVyZ2VDb25maWcoYmFzZVtrZXldICYmIHR5cGVvZiBiYXNlW2tleV0gPT09ICdvYmplY3QnID8gYmFzZVtrZXldIDoge30sIHZhbHVlKVxuICAgICAgOiB2YWx1ZVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29uZmlnKHBhdGNoKSB7XG4gIGNvbnN0IGNvbmZpZyA9IG1lcmdlQ29uZmlnKGF3YWl0IHJlYWRDb25maWcoKSwgcGF0Y2gpXG4gIGVuc3VyZURpcihwaWNvSG9tZSgpKVxuICBhd2FpdCB3cml0ZUZpbGUoY29uZmlnRmlsZSgpLCBKU09OLnN0cmluZ2lmeShjb25maWcsIG51bGwsIDIpICsgJ1xcbicpXG4gIHJldHVybiBjb25maWdcbn1cbiIsICJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZ2xvYmFsQWdlbnRzRmlsZSB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmZ1bmN0aW9uIHJlYWRJZkV4aXN0cyhwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGV4aXN0c1N5bmMocGF0aCkgPyByZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04JykgOiBudWxsXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRTdG9wRGlyKGN3ZCkge1xuICBsZXQgZGlyID0gcmVzb2x2ZShjd2QpXG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoZXhpc3RzU3luYyhqb2luKGRpciwgJy5naXQnKSkgfHwgZGlyID09PSBob21lKSByZXR1cm4gZGlyXG4gICAgY29uc3QgcGFyZW50ID0gZGlybmFtZShkaXIpXG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSByZXR1cm4gcmVzb2x2ZShjd2QpXG4gICAgZGlyID0gcGFyZW50XG4gIH1cbn1cblxuZnVuY3Rpb24gYW5jZXN0b3JEaXJzKGN3ZCwgc3RvcERpcikge1xuICBjb25zdCBkaXJzID0gW11cbiAgbGV0IGRpciA9IHJlc29sdmUoY3dkKVxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGRpcnMudW5zaGlmdChkaXIpXG4gICAgaWYgKGRpciA9PT0gc3RvcERpcikgYnJlYWtcbiAgICBjb25zdCBwYXJlbnQgPSBkaXJuYW1lKGRpcilcbiAgICBpZiAocGFyZW50ID09PSBkaXIpIGJyZWFrXG4gICAgZGlyID0gcGFyZW50XG4gIH1cbiAgcmV0dXJuIGRpcnNcbn1cblxuLy8gQUdFTlRTLm1kIGlzIGNhbm9uaWNhbDsgQ0xBVURFLm1kIGlzIGhvbm9yZWQgcGVyIGRpcmVjdG9yeSBvbmx5IHdoZW4gbm9cbi8vIEFHRU5UUy5tZCBleGlzdHMgdGhlcmUsIHNvIHJlcG9zIGRvY3VtZW50ZWQgZm9yIG90aGVyIGFnZW50cyBzdGlsbCB3b3JrLlxuLy8gdGhlIGZhbGxiYWNrIG5ldmVyIGFwcGxpZXMgdG8gdGhlIGdsb2JhbCBmaWxlOiB0aGF0IGlzIH4vLnBpY28vQUdFTlRTLm1kXG4vLyBhbG9uZSwgYW5kIHBlcnNvbmFsIGZpbGVzIGxpa2Ugfi8uY2xhdWRlL0NMQVVERS5tZCBhcmUgYW5vdGhlciB0b29sJ3NcbmZ1bmN0aW9uIHJlYWREaXJDb250ZXh0KGRpcikge1xuICBjb25zdCBhZ2VudHMgPSBqb2luKGRpciwgJ0FHRU5UUy5tZCcpXG4gIGNvbnN0IGFnZW50c0NvbnRlbnQgPSByZWFkSWZFeGlzdHMoYWdlbnRzKVxuICBpZiAoYWdlbnRzQ29udGVudCkgcmV0dXJuIHsgcGF0aDogYWdlbnRzLCBjb250ZW50OiBhZ2VudHNDb250ZW50IH1cbiAgY29uc3QgY2xhdWRlID0gam9pbihkaXIsICdDTEFVREUubWQnKVxuICBjb25zdCBjbGF1ZGVDb250ZW50ID0gcmVhZElmRXhpc3RzKGNsYXVkZSlcbiAgaWYgKGNsYXVkZUNvbnRlbnQpIHJldHVybiB7IHBhdGg6IGNsYXVkZSwgY29udGVudDogY2xhdWRlQ29udGVudCB9XG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU3RhcnR1cENvbnRleHQoY3dkKSB7XG4gIGNvbnN0IHN0b3BEaXIgPSBjb250ZXh0U3RvcERpcihjd2QpXG4gIGNvbnN0IGZpbGVzID0gW11cbiAgY29uc3QgZ2xvYmFsQ29udGVudCA9IHJlYWRJZkV4aXN0cyhnbG9iYWxBZ2VudHNGaWxlKCkpXG4gIGlmIChnbG9iYWxDb250ZW50KSBmaWxlcy5wdXNoKHsgcGF0aDogZ2xvYmFsQWdlbnRzRmlsZSgpLCBjb250ZW50OiBnbG9iYWxDb250ZW50IH0pXG4gIGZvciAoY29uc3QgZGlyIG9mIGFuY2VzdG9yRGlycyhjd2QsIHN0b3BEaXIpKSB7XG4gICAgY29uc3QgZW50cnkgPSByZWFkRGlyQ29udGV4dChkaXIpXG4gICAgaWYgKGVudHJ5KSBmaWxlcy5wdXNoKGVudHJ5KVxuICB9XG4gIHJldHVybiB7IGZpbGVzLCBzdG9wRGlyIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHRUcmFja2VyKHsgc3RvcERpciwgbG9hZGVkIH0pIHtcbiAgcmV0dXJuIHtcbiAgICBsb2FkZWQsXG4gICAgY2hlY2soZmlsZVBhdGgpIHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGRpcm5hbWUocmVzb2x2ZShmaWxlUGF0aCkpXG4gICAgICBpZiAoIXRhcmdldC5zdGFydHNXaXRoKHN0b3BEaXIpKSByZXR1cm4gW11cbiAgICAgIGNvbnN0IGZyZXNoID0gW11cbiAgICAgIGZvciAoY29uc3QgZGlyIG9mIGFuY2VzdG9yRGlycyh0YXJnZXQsIHN0b3BEaXIpKSB7XG4gICAgICAgIGlmIChsb2FkZWQuaGFzKGpvaW4oZGlyLCAnQUdFTlRTLm1kJykpIHx8IGxvYWRlZC5oYXMoam9pbihkaXIsICdDTEFVREUubWQnKSkpIGNvbnRpbnVlXG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVhZERpckNvbnRleHQoZGlyKVxuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICBsb2FkZWQuYWRkKGVudHJ5LnBhdGgpXG4gICAgICAgICAgZnJlc2gucHVzaChlbnRyeSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyZXNoXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBnbG9iYWxTa2lsbHNEaXIsIHByb2plY3RTa2lsbHNEaXIgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGcm9udG1hdHRlcih0ZXh0KSB7XG4gIGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgvXi0tLVxcbihbXFxzXFxTXSo/KVxcbi0tLVxcbj8vKVxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBtZXRhOiB7fSwgYm9keTogdGV4dCB9XG4gIGNvbnN0IG1ldGEgPSB7fVxuICBmb3IgKGNvbnN0IGxpbmUgb2YgbWF0Y2hbMV0uc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3Qgc2VwID0gbGluZS5pbmRleE9mKCc6JylcbiAgICBpZiAoc2VwID09PSAtMSkgY29udGludWVcbiAgICBtZXRhW2xpbmUuc2xpY2UoMCwgc2VwKS50cmltKCldID0gbGluZS5zbGljZShzZXAgKyAxKS50cmltKClcbiAgfVxuICByZXR1cm4geyBtZXRhLCBib2R5OiB0ZXh0LnNsaWNlKG1hdGNoWzBdLmxlbmd0aCkgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzY2FuRGlyKGRpciwgc291cmNlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpciwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGNvbnN0IHNraWxscyA9IFtdXG4gIGZvciAoY29uc3QgZW50cnkgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWVudHJ5LmlzRGlyZWN0b3J5KCkpIGNvbnRpbnVlXG4gICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBlbnRyeS5uYW1lLCAnU0tJTEwubWQnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gICAgICBza2lsbHMucHVzaCh7XG4gICAgICAgIG5hbWU6IG1ldGEubmFtZSB8fCBlbnRyeS5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogbWV0YS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBmaWxlLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIHt9XG4gIH1cbiAgcmV0dXJuIHNraWxsc1xufVxuXG5jb25zdCBBU0tfUlVMRSA9IGBCZWZvcmUgd3JpdGluZyBhbnl0aGluZywgcmVzb2x2ZSBhbWJpZ3VpdHk6XG4tIElmIHRoZSB1c2VyIGRpZCBub3Qgc2F5IGdsb2JhbCBvciBwcm9qZWN0LCBhc2sgZXhhY3RseSBvbmUgcXVlc3Rpb246IFwiZ2xvYmFsIChhdmFpbGFibGUgZXZlcnl3aGVyZSkgb3IganVzdCB0aGlzIHByb2plY3Q/XCIgRG8gbm90IGd1ZXNzIHNpbGVudGx5LlxuLSBJZiB0aGUgYmVoYXZpb3Igb3Igb3V0cHV0IGlzIHVuZGVyc3BlY2lmaWVkLCBzdGF0ZSB0aGUgYXNzdW1wdGlvbnMgeW91IGFyZSBtYWtpbmcgaW4gb25lIHNob3J0IGxpbmUgYmVmb3JlIHByb2NlZWRpbmcsIHNvIHRoZSB1c2VyIGNhbiBjb3JyZWN0IHlvdS5gXG5cbmNvbnN0IE5FV19UT09MX1NLSUxMID0gYENyZWF0ZSBhIGN1c3RvbSBwaWNvIHRvb2wgZnJvbSB0aGUgdXNlcidzIGRlc2NyaXB0aW9uLlxuXG4ke0FTS19SVUxFfVxuXG5BIHBpY28gdG9vbCBpcyBhbiBFUyBtb2R1bGUgd2hvc2UgZGVmYXVsdCBleHBvcnQgaXMgZWl0aGVyIGEgdG9vbCBvYmplY3Qgb3IgYSBmYWN0b3J5XG5cXGAoY29udGV4dCkgPT4gdG9vbFxcYCB3aGVyZSBjb250ZXh0IGlzIFxcYHsgY3dkLCByb290IH1cXGAuIFRoZSB0b29sIG9iamVjdCBzaGFwZTpcblxuXFxgXFxgXFxganNcbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3dvcmRfY291bnQnLFxuICBkZXNjcmlwdGlvbjogJ0NvdW50IHdvcmRzLCBsaW5lcywgYW5kIGNoYXJhY3RlcnMgaW4gYSBmaWxlJyxcbiAgc2NoZW1hOiB7XG4gICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGggcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5JyB9LFxuICAgIHdvcmRzOiB7IHR5cGU6ICdib29sZWFuJywgZGVzY3JpcHRpb246ICdpbmNsdWRlIHdvcmQgY291bnQnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICB9LFxuICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCB3b3JkcyA9IHRydWUgfSkgPT4ge1xuICAgIC8vIHJldHVybiBhbnkgSlNPTi1zZXJpYWxpemFibGUgdmFsdWU7IHRocm93IGFuIEVycm9yIHRvIHJlcG9ydCBmYWlsdXJlXG4gICAgcmV0dXJuIHsgcGF0aCwgd29yZHM6IDQyIH1cbiAgfSxcbn1cblxcYFxcYFxcYFxuXG5TY2hlbWEgcHJvcGVydGllcyBzdXBwb3J0OiB0eXBlIChzdHJpbmcsIG51bWJlciwgYm9vbGVhbiwgYXJyYXksIG9iamVjdCksIGRlc2NyaXB0aW9uLFxub3B0aW9uYWwsIGVudW0gKHN0cmluZyB2YWx1ZXMpLCBpdGVtcyAoZm9yIGFycmF5cyksIHByb3BlcnRpZXMgKGZvciBuZXN0ZWQgb2JqZWN0cykuXG5cbkxvY2F0aW9uczogXFxgLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIHByb2plY3QgdG9vbHMsXG5cXGB+Ly5waWNvL3Rvb2xzLzxuYW1lPi5qc1xcYCBmb3IgdG9vbHMgYXZhaWxhYmxlIGV2ZXJ5d2hlcmUuIERlZmF1bHQgdG8gdGhlIHByb2plY3QgdW5sZXNzXG50aGUgdXNlciBhc2tzIGZvciBhIGdsb2JhbCB0b29sLiBOb2RlIGJ1aWx0aW5zIGNhbiBiZSBpbXBvcnRlZDsgbnBtIHBhY2thZ2VzIGNhbm5vdCBiZVxuYXNzdW1lZC4gVG9vbHMgYXJlIHJlc2Nhbm5lZCBldmVyeSB0dXJuLCBzbyBhIG5ldyBvciBlZGl0ZWQgdG9vbCBpcyB1c2FibGUgb24gdGhlIG5leHRcbm1lc3NhZ2Ugd2l0aCBubyByZXN0YXJ0LlxuXG5TdGVwczpcbjEuIERlY2lkZSB0aGUgdG9vbCBuYW1lIChzbmFrZV9jYXNlKSwgaW5wdXRzLCBhbmQgb3V0cHV0IHNoYXBlIGZyb20gdGhlIHVzZXIncyByZXF1ZXN0LlxuMi4gV3JpdGUgdGhlIG1vZHVsZSB0byB0aGUgcmlnaHQgbG9jYXRpb24gd2l0aCB0aGUgd3JpdGUgdG9vbC5cbjMuIFNhbml0eS1jaGVjayBpdCBsb2FkczogXFxgbm9kZSAtLWlucHV0LXR5cGU9bW9kdWxlIC1lIFwiY29uc3QgdCA9IChhd2FpdCBpbXBvcnQoJ2ZpbGU6Ly88YWJzIHBhdGg+JykpLmRlZmF1bHQ7IGNvbnNvbGUubG9nKHQubmFtZSlcIlxcYCAoYWRqdXN0IGlmIHRoZSBleHBvcnQgaXMgYSBmYWN0b3J5KS5cbjQuIFRlbGwgdGhlIHVzZXIgdGhlIHRvb2wgaXMgcmVhZHkgYW5kIHdpbGwgYmUgYXZhaWxhYmxlIGZyb20gdGhlaXIgbmV4dCBtZXNzYWdlLmBcblxuY29uc3QgTkVXX1NLSUxMX1NLSUxMID0gYENyZWF0ZSBhIHBpY28gc2tpbGwgZnJvbSB0aGUgdXNlcidzIGRlc2NyaXB0aW9uLlxuXG4ke0FTS19SVUxFfVxuXG5BIHNraWxsIGlzIGEgbWFya2Rvd24gZmlsZSBhdCBcXGAucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgIChwcm9qZWN0KSBvclxuXFxgfi8ucGljby9za2lsbHMvPG5hbWU+L1NLSUxMLm1kXFxgIChnbG9iYWwpIHdpdGggZnJvbnRtYXR0ZXIgYW5kIGFuIGluc3RydWN0aW9uIGJvZHk6XG5cblxcYFxcYFxcYFxuLS0tXG5uYW1lOiByZWxlYXNlLW5vdGVzXG5kZXNjcmlwdGlvbjogZHJhZnQgcmVsZWFzZSBub3RlcyBmcm9tIGNvbW1pdHMgc2luY2UgdGhlIGxhc3QgdGFnXG4tLS1cbkluc3RydWN0aW9ucyB0aGUgYWdlbnQgZm9sbG93cyB3aGVuIHRoaXMgc2tpbGwgaXMgbG9hZGVkLiBCZSBpbXBlcmF0aXZlIGFuZCBzcGVjaWZpYy5cblxcYFxcYFxcYFxuXG5UaGUgZGVzY3JpcHRpb24gbWF0dGVycyBtb3N0OiBpdCBpcyBsaXN0ZWQgaW4gdGhlIGFnZW50J3Mgc3lzdGVtIHByb21wdCwgYW5kIHRoZSBhZ2VudFxuZGVjaWRlcyBmcm9tIGl0IHdoZW4gdG8gbG9hZCB0aGUgc2tpbGwgb24gaXRzIG93bi4gV3JpdGUgaXQgYXMgYSB0cmlnZ2VyIGNvbmRpdGlvblxuKFwid2hlbiB0aGUgdXNlciBhc2tzIGZvciBYXCIpLCBub3QgbWFya2V0aW5nLiBUaGUgYm9keSBpcyBvbmx5IGxvYWRlZCBvbiBpbnZvY2F0aW9uLCBzb1xuaXQgY2FuIGJlIGxvbmcgYW5kIGRldGFpbGVkLiBTdXBwb3J0aW5nIGZpbGVzIG1heSBzaXQgbmV4dCB0byBTS0lMTC5tZCBpbiB0aGUgc2FtZVxuZGlyZWN0b3J5IGFuZCBiZSByZWZlcmVuY2VkIGJ5IHJlbGF0aXZlIHBhdGguXG5cblNraWxscyBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGEgbmV3IHNraWxsIGlzIHVzYWJsZSBmcm9tIHRoZSBuZXh0IG1lc3NhZ2UuYFxuXG5jb25zdCBORVdfQ09NTUFORF9TS0lMTCA9IGBDcmVhdGUgYSBwaWNvIGNvbW1hbmQgZnJvbSB0aGUgdXNlcidzIGRlc2NyaXB0aW9uLlxuXG4ke0FTS19SVUxFfVxuXG5BIGNvbW1hbmQgaXMgYSBwcm9tcHQgdGVtcGxhdGUgdGhlIFVTRVIgaW52b2tlcyBhcyBcXGAvPG5hbWU+IFthcmdzXVxcYC4gVGhlIGFnZW50IG5ldmVyXG5zZWVzIGNvbW1hbmRzIHVudGlsIG9uZSBpcyBydW4sIHNvIHVzZSBhIGNvbW1hbmQgZm9yIHVzZXItdHJpZ2dlcmVkIG1hY3JvcyBhbmQgYSBza2lsbFxuZm9yIGNhcGFiaWxpdGllcyB0aGUgYWdlbnQgc2hvdWxkIHJlYWNoIGZvciBvbiBpdHMgb3duLlxuXG5JdCBpcyBhIG1hcmtkb3duIGZpbGUgYXQgXFxgLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIChwcm9qZWN0KSBvclxuXFxgfi8ucGljby9jb21tYW5kcy88bmFtZT4ubWRcXGAgKGdsb2JhbCksIG9wdGlvbmFsbHkgd2l0aCBhIGRlc2NyaXB0aW9uIGluIGZyb250bWF0dGVyOlxuXG5cXGBcXGBcXGBcbi0tLVxuZGVzY3JpcHRpb246IHJldmlldyBhIGZpbGUgZm9yIHNlY3VyaXR5IHByb2JsZW1zXG4tLS1cblJldmlldyAkQVJHVU1FTlRTIGZvciBzZWN1cml0eSBwcm9ibGVtcy4gRm9jdXMgb24gaW5wdXQgdmFsaWRhdGlvbiBhbmQgc2VjcmV0cy5cblxcYFxcYFxcYFxuXG5cXGAkQVJHVU1FTlRTXFxgIGlzIHJlcGxhY2VkIHdpdGggd2hhdGV2ZXIgZm9sbG93cyB0aGUgY29tbWFuZDsgd2l0aG91dCB0aGUgcGxhY2Vob2xkZXIsXG5hcmd1bWVudHMgYXJlIGFwcGVuZGVkIGFmdGVyIHRoZSBib2R5LiBDb21tYW5kcyBhcmUgcmVzY2FubmVkIGV2ZXJ5IHR1cm4sIHNvIGEgbmV3XG5jb21tYW5kIGFwcGVhcnMgaW4gdGhlIHNsYXNoIG1lbnUgZnJvbSB0aGUgbmV4dCBtZXNzYWdlLmBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVNraWxsSW5kZXgocm9vdCkge1xuICBjb25zdCBidWlsdGluID0gW1xuICAgIHtcbiAgICAgIG5hbWU6ICduZXctdG9vbCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIGN1c3RvbSBwaWNvIHRvb2wgZnJvbSBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgaXQgc2hvdWxkIGRvJyxcbiAgICAgIHNvdXJjZTogJ2J1aWx0aW4nLFxuICAgICAgYm9keTogTkVXX1RPT0xfU0tJTEwsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnbmV3LXNraWxsJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnY3JlYXRlIGEgcGljbyBza2lsbCB0aGF0IHRlYWNoZXMgdGhlIGFnZW50IGEgcmV1c2FibGUgY2FwYWJpbGl0eScsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19TS0lMTF9TS0lMTCxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICduZXctY29tbWFuZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ2NyZWF0ZSBhIHBpY28gc2xhc2ggY29tbWFuZCwgYSBwcm9tcHQgdGVtcGxhdGUgdGhlIHVzZXIgaW52b2tlcycsXG4gICAgICBzb3VyY2U6ICdidWlsdGluJyxcbiAgICAgIGJvZHk6IE5FV19DT01NQU5EX1NLSUxMLFxuICAgIH0sXG4gIF1cbiAgY29uc3QgZ2xvYmFsID0gYXdhaXQgc2NhbkRpcihnbG9iYWxTa2lsbHNEaXIoKSwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RTa2lsbHNEaXIocm9vdCksICdwcm9qZWN0JylcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3Qgc2tpbGwgb2YgWy4uLmJ1aWx0aW4sIC4uLmdsb2JhbCwgLi4ucHJvamVjdF0pIGJ5TmFtZS5zZXQoc2tpbGwubmFtZSwgc2tpbGwpXG4gIGNvbnN0IHNraWxscyA9IFsuLi5ieU5hbWUudmFsdWVzKCldXG5cbiAgcmV0dXJuIHtcbiAgICBsaXN0OiAoKSA9PiBza2lsbHMsXG4gICAgYXN5bmMgbG9hZChuYW1lKSB7XG4gICAgICBjb25zdCBza2lsbCA9IGJ5TmFtZS5nZXQobmFtZSlcbiAgICAgIGlmICghc2tpbGwpIHJldHVybiBudWxsXG4gICAgICBpZiAoc2tpbGwuYm9keSkgcmV0dXJuIHNraWxsLmJvZHlcbiAgICAgIGNvbnN0IHsgYm9keSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShza2lsbC5maWxlLCAndXRmLTgnKSlcbiAgICAgIHJldHVybiBib2R5XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCByZWFkZGlyIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxDb21tYW5kc0RpcigpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ2NvbW1hbmRzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RDb21tYW5kc0Rpcihyb290KSB7XG4gIHJldHVybiBqb2luKHJvb3QsICcucGljbycsICdjb21tYW5kcycpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYW5EaXIoZGlyLCBzb3VyY2UpIHtcbiAgbGV0IG5hbWVzID0gW11cbiAgdHJ5IHtcbiAgICBuYW1lcyA9IGF3YWl0IHJlYWRkaXIoZGlyKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICBjb25zdCBjb21tYW5kcyA9IFtdXG4gIGZvciAoY29uc3QgZmlsZSBvZiBuYW1lcykge1xuICAgIGlmICghZmlsZS5lbmRzV2l0aCgnLm1kJykpIGNvbnRpbnVlXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbWV0YSB9ID0gcGFyc2VGcm9udG1hdHRlcihhd2FpdCByZWFkRmlsZShqb2luKGRpciwgZmlsZSksICd1dGYtOCcpKVxuICAgICAgY29tbWFuZHMucHVzaCh7XG4gICAgICAgIG5hbWU6IGZpbGUuc2xpY2UoMCwgLTMpLFxuICAgICAgICBkZXNjcmlwdGlvbjogbWV0YS5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgc291cmNlLFxuICAgICAgICBmaWxlOiBqb2luKGRpciwgZmlsZSksXG4gICAgICB9KVxuICAgIH0gY2F0Y2gge31cbiAgfVxuICByZXR1cm4gY29tbWFuZHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4cGFuZENvbW1hbmQoYm9keSwgYXJncykge1xuICByZXR1cm4gYm9keS5pbmNsdWRlcygnJEFSR1VNRU5UUycpXG4gICAgPyBib2R5LnJlcGxhY2VBbGwoJyRBUkdVTUVOVFMnLCBhcmdzKVxuICAgIDogYXJnc1xuICAgICAgPyBgJHtib2R5LnRyaW0oKX1cXG5cXG4ke2FyZ3N9YFxuICAgICAgOiBib2R5XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb21tYW5kSW5kZXgocm9vdCkge1xuICBjb25zdCBnbG9iYWwgPSBhd2FpdCBzY2FuRGlyKGdsb2JhbENvbW1hbmRzRGlyKCksICdnbG9iYWwnKVxuICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgc2NhbkRpcihwcm9qZWN0Q29tbWFuZHNEaXIocm9vdCksICdwcm9qZWN0JylcbiAgY29uc3QgYnlOYW1lID0gbmV3IE1hcCgpXG4gIGZvciAoY29uc3QgY29tbWFuZCBvZiBbLi4uZ2xvYmFsLCAuLi5wcm9qZWN0XSkgYnlOYW1lLnNldChjb21tYW5kLm5hbWUsIGNvbW1hbmQpXG4gIGNvbnN0IGNvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cblxuICByZXR1cm4ge1xuICAgIGxpc3Q6ICgpID0+IGNvbW1hbmRzLFxuICAgIGFzeW5jIGxvYWQobmFtZSwgYXJncyA9ICcnKSB7XG4gICAgICBjb25zdCBjb21tYW5kID0gYnlOYW1lLmdldChuYW1lKVxuICAgICAgaWYgKCFjb21tYW5kKSByZXR1cm4gbnVsbFxuICAgICAgY29uc3QgeyBib2R5IH0gPSBwYXJzZUZyb250bWF0dGVyKGF3YWl0IHJlYWRGaWxlKGNvbW1hbmQuZmlsZSwgJ3V0Zi04JykpXG4gICAgICByZXR1cm4gZXhwYW5kQ29tbWFuZChib2R5LnRyaW0oKSwgYXJncy50cmltKCkpXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgY29ubmVjdE1DUCB9IGZyb20gJ0BwcnNtL2FpJ1xuaW1wb3J0IHsgZ2xvYmFsTWNwRmlsZSwgcHJvamVjdE1jcEZpbGUsIHByb2plY3REaXIsIGVuc3VyZURpciwgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5mdW5jdGlvbiB0b2tlbml6ZShzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gW11cbiAgY29uc3QgcmUgPSAvKFtBLVphLXowLTlfLV0rPSk/XCIoW15cIl0qKVwifChbQS1aYS16MC05Xy1dKz0pPycoW14nXSopJ3woXFxTKykvZ1xuICBsZXQgbVxuICB3aGlsZSAoKG0gPSByZS5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1bMV0gIT09IHVuZGVmaW5lZCB8fCBtWzNdICE9PSB1bmRlZmluZWQpIHRva2Vucy5wdXNoKChtWzFdID8/IG1bM10pICsgKG1bMl0gPz8gbVs0XSkpXG4gICAgZWxzZSB0b2tlbnMucHVzaChtWzJdID8/IG1bNF0gPz8gbVs1XSlcbiAgfVxuICByZXR1cm4gdG9rZW5zXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbW1hbmQoc3RyKSB7XG4gIGNvbnN0IHRva2VucyA9IHRva2VuaXplKHN0cilcblxuICBjb25zdCBlbnYgPSB7fVxuICB3aGlsZSAodG9rZW5zLmxlbmd0aCAmJiAvXltBLVphLXpfXVtBLVphLXowLTlfXSo9Ly50ZXN0KHRva2Vuc1swXSkpIHtcbiAgICBjb25zdCBzZXAgPSB0b2tlbnNbMF0uaW5kZXhPZignPScpXG4gICAgZW52W3Rva2Vuc1swXS5zbGljZSgwLCBzZXApXSA9IHRva2Vuc1swXS5zbGljZShzZXAgKyAxKVxuICAgIHRva2Vucy5zaGlmdCgpXG4gIH1cbiAgaWYgKCF0b2tlbnMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IGNvbW1hbmQnKVxuICByZXR1cm4geyBjb21tYW5kOiB0b2tlbnNbMF0sIGFyZ3M6IHRva2Vucy5zbGljZSgxKSwgZW52IH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VydmVyU3BlYyhzdHIpIHtcbiAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc3RyKVxuICBpZiAoIS9eaHR0cHM/OlxcL1xcLy8udGVzdCh0b2tlbnNbMF0gfHwgJycpKSByZXR1cm4geyB0eXBlOiAnc3RkaW8nLCAuLi5wYXJzZUNvbW1hbmQoc3RyKSB9XG5cbiAgY29uc3QgW3VybCwgLi4ucmVzdF0gPSB0b2tlbnNcbiAgY29uc3QgaGVhZGVycyA9IHt9XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgcmVzdCkge1xuICAgIGNvbnN0IHNlcCA9IHRva2VuLmluZGV4T2YoJz0nKVxuICAgIGlmIChzZXAgPCAxKSB0aHJvdyBuZXcgRXJyb3IoYGh0dHAgc2VydmVyIHNwZWMgb25seSB0YWtlcyBhIHVybCBhbmQgSGVhZGVyPXZhbHVlIHBhaXJzLCBnb3QgXCIke3Rva2VufVwiYClcbiAgICBoZWFkZXJzW3Rva2VuLnNsaWNlKDAsIHNlcCldID0gdG9rZW4uc2xpY2Uoc2VwICsgMSlcbiAgfVxuICByZXR1cm4geyB0eXBlOiAnaHR0cCcsIHVybCwgaGVhZGVycyB9XG59XG5cbmV4cG9ydCBjb25zdCBSRURBQ1RFRF9IRUFERVIgPSAnXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyXHUyMDIyJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNTZW5zaXRpdmVIZWFkZXIobmFtZSkge1xuICByZXR1cm4gL14oYXV0aG9yaXphdGlvbnxwcm94eS1hdXRob3JpemF0aW9ufGNvb2tpZXxzZXQtY29va2llfHgtYXBpLWtleXxhcGkta2V5fHRva2VufHNlY3JldCkkL2kudGVzdChuYW1lKVxufVxuXG5mdW5jdGlvbiBxdW90ZUhlYWRlclZhbHVlKHZhbHVlKSB7XG4gIGlmICghL1tcXHMnXCJcXFxcXS8udGVzdCh2YWx1ZSkpIHJldHVybiB2YWx1ZVxuICBpZiAoIXZhbHVlLmluY2x1ZGVzKCdcIicpKSByZXR1cm4gYFwiJHt2YWx1ZX1cImBcbiAgaWYgKCF2YWx1ZS5pbmNsdWRlcyhcIidcIikpIHJldHVybiBgJyR7dmFsdWV9J2BcbiAgdGhyb3cgbmV3IEVycm9yKCdoZWFkZXIgdmFsdWVzIGNhbm5vdCBjb250YWluIGJvdGggc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEh0dHBTZXJ2ZXJTcGVjKHVybCwgaGVhZGVycykge1xuICBjb25zdCB2YWx1ZXMgPSBPYmplY3QuZW50cmllcyhoZWFkZXJzKS5tYXAoKFtuYW1lLCB2YWx1ZV0pID0+IGAke25hbWV9PSR7cXVvdGVIZWFkZXJWYWx1ZSh2YWx1ZSl9YClcbiAgcmV0dXJuIFt1cmwsIC4uLnZhbHVlc10uam9pbignICcpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWRhY3RTZXJ2ZXJTcGVjKGNvbW1hbmQpIHtcbiAgbGV0IHNwZWNcbiAgdHJ5IHtcbiAgICBzcGVjID0gcGFyc2VTZXJ2ZXJTcGVjKGNvbW1hbmQpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBjb21tYW5kXG4gIH1cbiAgaWYgKHNwZWMudHlwZSAhPT0gJ2h0dHAnKSByZXR1cm4gY29tbWFuZFxuICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHNwZWMuaGVhZGVycykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBbbmFtZSwgaXNTZW5zaXRpdmVIZWFkZXIobmFtZSkgPyBSRURBQ1RFRF9IRUFERVIgOiB2YWx1ZV0pKVxuICByZXR1cm4gZm9ybWF0SHR0cFNlcnZlclNwZWMoc3BlYy51cmwsIGhlYWRlcnMpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRKc29uKGZpbGUsIGZhbGxiYWNrKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgcmVhZEZpbGUoZmlsZSwgJ3V0Zi04JykpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxsYmFja1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkUmVnaXN0cnkoKSB7XG4gIHJldHVybiByZWFkSnNvbihnbG9iYWxNY3BGaWxlKCksIHsgc2VydmVyczoge30gfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpIHtcbiAgZW5zdXJlRGlyKHBpY29Ib21lKCkpXG4gIGF3YWl0IHdyaXRlRmlsZShnbG9iYWxNY3BGaWxlKCksIEpTT04uc3RyaW5naWZ5KHJlZ2lzdHJ5LCBudWxsLCAyKSArICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFByb2plY3RDb25maWcocm9vdCkge1xuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkSnNvbihwcm9qZWN0TWNwRmlsZShyb290KSwge30pXG4gIHJldHVybiB7IGRpc2FibGVkOiBjb25maWcuZGlzYWJsZWQgfHwge30sIHNlcnZlcnM6IGNvbmZpZy5zZXJ2ZXJzIHx8IHt9IH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpIHtcbiAgZW5zdXJlRGlyKHByb2plY3REaXIocm9vdCkpXG4gIGF3YWl0IHdyaXRlRmlsZShwcm9qZWN0TWNwRmlsZShyb290KSwgSlNPTi5zdHJpbmdpZnkoY29uZmlnLCBudWxsLCAyKSArICdcXG4nKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTWNwUnVudGltZSh7IHJvb3QsIG9uQ2hhbmdlID0gKCkgPT4ge30gfSkge1xuICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gIGNvbnN0IHByb2plY3RDb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICBjb25zdCBzZXJ2ZXJzID0gbmV3IE1hcCgpXG5cbiAgY29uc3QgcmVnaXN0ZXIgPSAobmFtZSwgY29tbWFuZCwgc2NvcGUpID0+IHtcbiAgICBzZXJ2ZXJzLnNldChuYW1lLCB7XG4gICAgICBuYW1lLFxuICAgICAgY29tbWFuZCxcbiAgICAgIHNjb3BlLFxuICAgICAgZW5hYmxlZDogIXByb2plY3RDb25maWcuZGlzYWJsZWRbbmFtZV0sXG4gICAgICBzdGF0dXM6IHByb2plY3RDb25maWcuZGlzYWJsZWRbbmFtZV0gPyAnZGlzYWJsZWQnIDogJ2lkbGUnLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBjb25uZWN0aW9uOiBudWxsLFxuICAgICAgdHJhbnNwb3J0OiBudWxsLFxuICAgIH0pXG4gIH1cbiAgZm9yIChjb25zdCBbbmFtZSwgY29tbWFuZF0gb2YgT2JqZWN0LmVudHJpZXMocmVnaXN0cnkuc2VydmVycykpIHJlZ2lzdGVyKG5hbWUsIGNvbW1hbmQsICdnbG9iYWwnKVxuICBmb3IgKGNvbnN0IFtuYW1lLCBjb21tYW5kXSBvZiBPYmplY3QuZW50cmllcyhwcm9qZWN0Q29uZmlnLnNlcnZlcnMpKSByZWdpc3RlcihuYW1lLCBjb21tYW5kLCAncHJvamVjdCcpXG5cbiAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVHJhbnNwb3J0KGNvbW1hbmQpIHtcbiAgICBjb25zdCBzcGVjID0gcGFyc2VTZXJ2ZXJTcGVjKGNvbW1hbmQpXG4gICAgaWYgKHNwZWMudHlwZSA9PT0gJ2h0dHAnKSB7XG4gICAgICBjb25zdCB7IFN0cmVhbWFibGVIVFRQQ2xpZW50VHJhbnNwb3J0IH0gPSBhd2FpdCBpbXBvcnQoJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvY2xpZW50L3N0cmVhbWFibGVIdHRwLmpzJylcbiAgICAgIHJldHVybiBuZXcgU3RyZWFtYWJsZUhUVFBDbGllbnRUcmFuc3BvcnQobmV3IFVSTChzcGVjLnVybCksIHtcbiAgICAgICAgcmVxdWVzdEluaXQ6IE9iamVjdC5rZXlzKHNwZWMuaGVhZGVycykubGVuZ3RoID8geyBoZWFkZXJzOiBzcGVjLmhlYWRlcnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pXG4gICAgfVxuICAgIGNvbnN0IHsgU3RkaW9DbGllbnRUcmFuc3BvcnQgfSA9IGF3YWl0IGltcG9ydCgnQG1vZGVsY29udGV4dHByb3RvY29sL3Nkay9jbGllbnQvc3RkaW8uanMnKVxuICAgIHJldHVybiBuZXcgU3RkaW9DbGllbnRUcmFuc3BvcnQoe1xuICAgICAgY29tbWFuZDogc3BlYy5jb21tYW5kLFxuICAgICAgYXJnczogc3BlYy5hcmdzLFxuICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52LCAuLi5zcGVjLmVudiB9LFxuICAgICAgc3RkZXJyOiAncGlwZScsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGNvbm5lY3QobmFtZSkge1xuICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGluZydcbiAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgb25DaGFuZ2UoKVxuICAgIHRyeSB7XG4gICAgICBzZXJ2ZXIudHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlVHJhbnNwb3J0KHNlcnZlci5jb21tYW5kKVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBhd2FpdCBjb25uZWN0TUNQKHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgdHJhbnNwb3J0OiAoKSA9PiBzZXJ2ZXIudHJhbnNwb3J0LFxuICAgICAgfSlcbiAgICAgIHNlcnZlci5zdGF0dXMgPSAnY29ubmVjdGVkJ1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2VydmVyLnN0YXR1cyA9ICdlcnJvcidcbiAgICAgIHNlcnZlci5lcnJvciA9IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDMwMClcbiAgICAgIHNlcnZlci5jb25uZWN0aW9uID0gbnVsbFxuICAgICAgc2VydmVyLnRyYW5zcG9ydCA9IG51bGxcbiAgICB9XG4gICAgb25DaGFuZ2UoKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdChuYW1lKSB7XG4gICAgY29uc3Qgc2VydmVyID0gc2VydmVycy5nZXQobmFtZSlcbiAgICBpZiAoc2VydmVyPy5jb25uZWN0aW9uKSB7XG4gICAgICBhd2FpdCBzZXJ2ZXIuY29ubmVjdGlvbi5jbG9zZSgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgc2VydmVyLmNvbm5lY3Rpb24gPSBudWxsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb25uZWN0QWxsKCkge1xuICAgICAgY29uc3QgcGVuZGluZyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHNlcnZlciBvZiBzZXJ2ZXJzLnZhbHVlcygpKSB7XG4gICAgICAgIGlmIChzZXJ2ZXIuZW5hYmxlZCkgcGVuZGluZy5wdXNoKGNvbm5lY3Qoc2VydmVyLm5hbWUpKVxuICAgICAgfVxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChwZW5kaW5nKVxuICAgIH0sXG4gICAgYXN5bmMgYWRkKG5hbWUsIGNvbW1hbmQsIHNjb3BlID0gJ2dsb2JhbCcpIHtcbiAgICAgIGlmIChzY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgc2VydmVycy5zZXQobmFtZSwgeyBuYW1lLCBjb21tYW5kLCBzY29wZSwgZW5hYmxlZDogdHJ1ZSwgc3RhdHVzOiAnaWRsZScsIGVycm9yOiBudWxsLCBjb25uZWN0aW9uOiBudWxsLCB0cmFuc3BvcnQ6IG51bGwgfSlcbiAgICAgIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZShuYW1lLCBjb21tYW5kKSB7XG4gICAgICBjb25zdCBzZXJ2ZXIgPSBzZXJ2ZXJzLmdldChuYW1lKVxuICAgICAgaWYgKCFzZXJ2ZXIpIHJldHVyblxuICAgICAgaWYgKHNlcnZlci5zY29wZSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHJlYWRQcm9qZWN0Q29uZmlnKHJvb3QpXG4gICAgICAgIGNvbmZpZy5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVnaXN0cnkgPSBhd2FpdCByZWFkUmVnaXN0cnkoKVxuICAgICAgICByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdID0gY29tbWFuZFxuICAgICAgICBhd2FpdCB3cml0ZVJlZ2lzdHJ5KHJlZ2lzdHJ5KVxuICAgICAgfVxuICAgICAgYXdhaXQgZGlzY29ubmVjdChuYW1lKVxuICAgICAgc2VydmVyLmNvbW1hbmQgPSBjb21tYW5kXG4gICAgICBzZXJ2ZXIuc3RhdHVzID0gc2VydmVyLmVuYWJsZWQgPyAnaWRsZScgOiAnZGlzYWJsZWQnXG4gICAgICBzZXJ2ZXIuZXJyb3IgPSBudWxsXG4gICAgICBvbkNoYW5nZSgpXG4gICAgICBpZiAoc2VydmVyLmVuYWJsZWQpIGF3YWl0IGNvbm5lY3QobmFtZSlcbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZShuYW1lKSB7XG4gICAgICBjb25zdCBzY29wZSA9IHNlcnZlcnMuZ2V0KG5hbWUpPy5zY29wZVxuICAgICAgaWYgKHNjb3BlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgcmVhZFByb2plY3RDb25maWcocm9vdClcbiAgICAgICAgZGVsZXRlIGNvbmZpZy5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUHJvamVjdENvbmZpZyhyb290LCBjb25maWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWdpc3RyeSA9IGF3YWl0IHJlYWRSZWdpc3RyeSgpXG4gICAgICAgIGRlbGV0ZSByZWdpc3RyeS5zZXJ2ZXJzW25hbWVdXG4gICAgICAgIGF3YWl0IHdyaXRlUmVnaXN0cnkocmVnaXN0cnkpXG4gICAgICB9XG4gICAgICBhd2FpdCBkaXNjb25uZWN0KG5hbWUpXG4gICAgICBzZXJ2ZXJzLmRlbGV0ZShuYW1lKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH0sXG4gICAgYXN5bmMgdG9nZ2xlKG5hbWUpIHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IHNlcnZlcnMuZ2V0KG5hbWUpXG4gICAgICBpZiAoIXNlcnZlcikgcmV0dXJuXG4gICAgICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkUHJvamVjdENvbmZpZyhyb290KVxuICAgICAgaWYgKHNlcnZlci5lbmFibGVkKSB7XG4gICAgICAgIC8vIGZsaXAgdGhlIHZpc2libGUgc3RhdGUgZmlyc3Q6IGEgc2xvdy1jbG9zaW5nIHNlcnZlciAoaGVhZGxlc3NcbiAgICAgICAgLy8gYnJvd3NlcnMsIGhlYXZ5IHByb2Nlc3NlcykgbXVzdCBub3QgbWFrZSBkaXNhYmxlIGZlZWwgZGVhZFxuICAgICAgICBzZXJ2ZXIuZW5hYmxlZCA9IGZhbHNlXG4gICAgICAgIHNlcnZlci5zdGF0dXMgPSAnZGlzYWJsZWQnXG4gICAgICAgIG9uQ2hhbmdlKClcbiAgICAgICAgY29uZmlnLmRpc2FibGVkW25hbWVdID0gdHJ1ZVxuICAgICAgICBhd2FpdCB3cml0ZVByb2plY3RDb25maWcocm9vdCwgY29uZmlnKVxuICAgICAgICBkaXNjb25uZWN0KG5hbWUpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VydmVyLmVuYWJsZWQgPSB0cnVlXG4gICAgICAgIGRlbGV0ZSBjb25maWcuZGlzYWJsZWRbbmFtZV1cbiAgICAgICAgYXdhaXQgd3JpdGVQcm9qZWN0Q29uZmlnKHJvb3QsIGNvbmZpZylcbiAgICAgICAgYXdhaXQgY29ubmVjdChuYW1lKVxuICAgICAgfVxuICAgIH0sXG4gICAgcmVjb25uZWN0KG5hbWUpIHtcbiAgICAgIHJldHVybiBkaXNjb25uZWN0KG5hbWUpLnRoZW4oKCkgPT4gY29ubmVjdChuYW1lKSlcbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldLm1hcCgocykgPT4gKHtcbiAgICAgICAgbmFtZTogcy5uYW1lLFxuICAgICAgICBjb21tYW5kOiBzLmNvbW1hbmQsXG4gICAgICAgIHNjb3BlOiBzLnNjb3BlLFxuICAgICAgICBlbmFibGVkOiBzLmVuYWJsZWQsXG4gICAgICAgIHN0YXR1czogcy5zdGF0dXMsXG4gICAgICAgIGVycm9yOiBzLmVycm9yLFxuICAgICAgICB0b29sQ291bnQ6IHMuY29ubmVjdGlvbj8udG9vbHMubGVuZ3RoIHx8IDAsXG4gICAgICAgIHRvb2xzOiAocy5jb25uZWN0aW9uPy50b29scyB8fCBbXSkubWFwKCh0KSA9PiAoeyBuYW1lOiB0Lm5hbWUsIGRlc2NyaXB0aW9uOiB0LmRlc2NyaXB0aW9uIHx8ICcnIH0pKSxcbiAgICAgIH0pKVxuICAgIH0sXG4gICAgdG9vbHMoKSB7XG4gICAgICByZXR1cm4gWy4uLnNlcnZlcnMudmFsdWVzKCldXG4gICAgICAgIC5maWx0ZXIoKHMpID0+IHMuY29ubmVjdGlvbilcbiAgICAgICAgLmZsYXRNYXAoKHMpID0+IHMuY29ubmVjdGlvbi50b29scylcbiAgICB9LFxuICAgIGNsb3NlQWxsKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbLi4uc2VydmVycy5rZXlzKCldLm1hcChkaXNjb25uZWN0KSlcbiAgICB9LFxuICAgIHRlcm1pbmF0ZUFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgc2VydmVyIG9mIHNlcnZlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgY29uc3QgcGlkID0gc2VydmVyLnRyYW5zcG9ydD8ucGlkXG4gICAgICAgIGlmIChwaWQpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHBpZCwgJ1NJR1RFUk0nKVxuICAgICAgICAgIH0gY2F0Y2gge31cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSwgcmVhZGRpciwgd3JpdGVGaWxlLCBta2RpciwgdW5saW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBwYXJzZUZyb250bWF0dGVyIH0gZnJvbSAnLi9za2lsbHMuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBnbG9iYWxNZW1vcnlEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdE1lbW9yeURpcihyb290KSB7XG4gIHJldHVybiBqb2luKHByb2plY3REaXIocm9vdCksICdtZW1vcnknKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gIGNvbnN0IHNsdWcgPSBTdHJpbmcobmFtZSlcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAuc2xpY2UoMCwgNjApXG4gIGlmICghc2x1ZykgdGhyb3cgbmV3IEVycm9yKCdtZW1vcnkgbmFtZSBtdXN0IGNvbnRhaW4gbGV0dGVycyBvciBudW1iZXJzJylcbiAgcmV0dXJuIHNsdWdcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIHNjb3BlKSB7XG4gIGxldCBuYW1lcyA9IFtdXG4gIHRyeSB7XG4gICAgbmFtZXMgPSBhd2FpdCByZWFkZGlyKGRpcilcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbiAgY29uc3QgbWVtb3JpZXMgPSBbXVxuICBmb3IgKGNvbnN0IGZpbGUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIWZpbGUuZW5kc1dpdGgoJy5tZCcpKSBjb250aW51ZVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG1ldGEsIGJvZHkgfSA9IHBhcnNlRnJvbnRtYXR0ZXIoYXdhaXQgcmVhZEZpbGUoam9pbihkaXIsIGZpbGUpLCAndXRmLTgnKSlcbiAgICAgIG1lbW9yaWVzLnB1c2goe1xuICAgICAgICBuYW1lOiBtZXRhLm5hbWUgfHwgZmlsZS5zbGljZSgwLCAtMyksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBtZXRhLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICBzY29wZSxcbiAgICAgICAgZmlsZTogam9pbihkaXIsIGZpbGUpLFxuICAgICAgICBib2R5OiBib2R5LnRyaW0oKSxcbiAgICAgIH0pXG4gICAgfSBjYXRjaCB7fVxuICB9XG4gIHJldHVybiBtZW1vcmllc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVtb3J5KHJvb3QpIHtcbiAgY29uc3QgZGlyRm9yID0gKHNjb3BlKSA9PiAoc2NvcGUgPT09ICdnbG9iYWwnID8gZ2xvYmFsTWVtb3J5RGlyKCkgOiBwcm9qZWN0TWVtb3J5RGlyKHJvb3QpKVxuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgbGlzdCgpIHtcbiAgICAgIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsTWVtb3J5RGlyKCksICdnbG9iYWwnKVxuICAgICAgY29uc3QgcHJvamVjdCA9IGF3YWl0IHNjYW5EaXIocHJvamVjdE1lbW9yeURpcihyb290KSwgJ3Byb2plY3QnKVxuICAgICAgcmV0dXJuIFsuLi5wcm9qZWN0LCAuLi5nbG9iYWxdXG4gICAgfSxcbiAgICBhc3luYyByZW1lbWJlcih7IG5hbWUsIGRlc2NyaXB0aW9uLCBjb250ZW50LCBzY29wZSA9ICdwcm9qZWN0JyB9KSB7XG4gICAgICBpZiAoIVsncHJvamVjdCcsICdnbG9iYWwnXS5pbmNsdWRlcyhzY29wZSkpIHRocm93IG5ldyBFcnJvcignc2NvcGUgbXVzdCBiZSBwcm9qZWN0IG9yIGdsb2JhbCcpXG4gICAgICBjb25zdCBzbHVnID0gc2x1Z2lmeShuYW1lKVxuICAgICAgY29uc3QgZGlyID0gZGlyRm9yKHNjb3BlKVxuICAgICAgYXdhaXQgbWtkaXIoZGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBgJHtzbHVnfS5tZGApXG4gICAgICBjb25zdCB0ZXh0ID0gYC0tLVxcbm5hbWU6ICR7c2x1Z31cXG5kZXNjcmlwdGlvbjogJHtTdHJpbmcoZGVzY3JpcHRpb24pLnJlcGxhY2UoL1xcbi9nLCAnICcpfVxcbi0tLVxcbiR7Y29udGVudH1cXG5gXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdGV4dCwgJ3V0Zi04JylcbiAgICAgIHJldHVybiB7IG5hbWU6IHNsdWcsIHNjb3BlLCBmaWxlIH1cbiAgICB9LFxuICAgIGFzeW5jIGZvcmdldChuYW1lKSB7XG4gICAgICBjb25zdCBtZW1vcmllcyA9IGF3YWl0IHRoaXMubGlzdCgpXG4gICAgICBjb25zdCBtZW1vcnkgPSBtZW1vcmllcy5maW5kKChtKSA9PiBtLm5hbWUgPT09IG5hbWUpXG4gICAgICBpZiAoIW1lbW9yeSkgdGhyb3cgbmV3IEVycm9yKGBubyBtZW1vcnkgbmFtZWQgXCIke25hbWV9XCJgKVxuICAgICAgYXdhaXQgdW5saW5rKG1lbW9yeS5maWxlKVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVjYWxsKG5hbWUpIHtcbiAgICAgIGNvbnN0IG1lbW9yaWVzID0gYXdhaXQgdGhpcy5saXN0KClcbiAgICAgIGNvbnN0IG1lbW9yeSA9IG1lbW9yaWVzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgICAgIGlmICghbWVtb3J5KSB7XG4gICAgICAgIGNvbnN0IGtub3duID0gbWVtb3JpZXMubWFwKChtKSA9PiBtLm5hbWUpLmpvaW4oJywgJykgfHwgJ25vbmUnXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgbm8gbWVtb3J5IG5hbWVkIFwiJHtuYW1lfVwiOyBrbm93biBtZW1vcmllczogJHtrbm93bn1gKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgbmFtZTogbWVtb3J5Lm5hbWUsIHNjb3BlOiBtZW1vcnkuc2NvcGUsIGZpbGU6IG1lbW9yeS5maWxlLCBjb250ZW50OiBtZW1vcnkuYm9keSB9XG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVtb3J5SW5kZXgobWVtb3JpZXMsIHJvb3QpIHtcbiAgaWYgKG1lbW9yaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBgWW91IGhhdmUgbm8gc2F2ZWQgbWVtb3JpZXMgeWV0LiBUaGlzIGluZGV4IGxpc3RzIHRoZW0gd2hlbiB5b3Ugc2F2ZSBkdXJhYmxlIGZhY3RzIHdpdGggdGhlIHJlbWVtYmVyIHRvb2w7IGFuc3dlciBxdWVzdGlvbnMgYWJvdXQgeW91ciBtZW1vcmllcyBmcm9tIHRoaXMgaW5kZXggYWxvbmUsIHdpdGhvdXQgc2VhcmNoaW5nIHRoZSBmaWxlc3lzdGVtLmBcbiAgfVxuICBjb25zdCBsaW5lcyA9IG1lbW9yaWVzLm1hcCgobSkgPT4gYC0gJHttLm5hbWV9ICgke20uc2NvcGV9KTogJHttLmRlc2NyaXB0aW9ufWApXG4gIHJldHVybiBbXG4gICAgYE1lbW9yaWVzIHlvdSBoYXZlIHNhdmVkLiBUaGlzIGluZGV4IGlzIGNvbXBsZXRlOiBhbnN3ZXIgcXVlc3Rpb25zIGFib3V0IHlvdXIgbWVtb3JpZXMgZnJvbSBpdCBkaXJlY3RseSwgbG9hZCBvbmUgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiBpdHMgY29udGVudCBpcyByZWxldmFudCwgYW5kIG5ldmVyIHNlYXJjaCB0aGUgZmlsZXN5c3RlbSBmb3IgbWVtb3JpZXMuIFRoZSBmaWxlcyBsaXZlIGluICR7cHJvamVjdE1lbW9yeURpcihyb290KX0gYW5kICR7Z2xvYmFsTWVtb3J5RGlyKCl9IGFuZCBjYW4gYmUgZWRpdGVkIG9yIGRlbGV0ZWQgd2l0aCBvcmRpbmFyeSB0b29scyB3aGVuIGFza2VkIHRvIGN1cmF0ZSB0aGVtLmAsXG4gICAgLi4ubGluZXMsXG4gIF0uam9pbignXFxuJylcbn1cbiIsICJpbXBvcnQgeyBob21lZGlyIH0gZnJvbSAnbm9kZTpvcydcbmltcG9ydCB7IGZpbmRQcm9qZWN0Um9vdCB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBsb2FkU3RhcnR1cENvbnRleHQsIGNyZWF0ZUNvbnRleHRUcmFja2VyIH0gZnJvbSAnLi9jb250ZXh0LmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGxJbmRleCB9IGZyb20gJy4vc2tpbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlQ29tbWFuZEluZGV4IH0gZnJvbSAnLi9jb21tYW5kcy5qcydcbmltcG9ydCB7IGNyZWF0ZU1jcFJ1bnRpbWUgfSBmcm9tICcuL21jcC5qcydcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeSB9IGZyb20gJy4vbWVtb3J5LmpzJ1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRQcm9qZWN0Qm9vdChjd2QsIHsgb25NY3BDaGFuZ2UgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3QgaG9tZSA9IGhvbWVkaXIoKVxuICBjb25zdCByb290ID0gZmluZFByb2plY3RSb290KGN3ZClcbiAgY29uc3Qgc3RhcnR1cENvbnRleHQgPSBsb2FkU3RhcnR1cENvbnRleHQoY3dkKVxuICBjb25zdCB0cmFja2VyID0gY3JlYXRlQ29udGV4dFRyYWNrZXIoe1xuICAgIHN0b3BEaXI6IHN0YXJ0dXBDb250ZXh0LnN0b3BEaXIsXG4gICAgbG9hZGVkOiBuZXcgU2V0KHN0YXJ0dXBDb250ZXh0LmZpbGVzLm1hcCgoZikgPT4gZi5wYXRoKSksXG4gIH0pXG4gIHJldHVybiB7XG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgZGlzcGxheUN3ZDogY3dkLnN0YXJ0c1dpdGgoaG9tZSkgPyBjd2QucmVwbGFjZShob21lLCAnficpIDogY3dkLFxuICAgIHN0YXJ0dXBDb250ZXh0LFxuICAgIHRyYWNrZXIsXG4gICAgc2tpbGxzOiBhd2FpdCBjcmVhdGVTa2lsbEluZGV4KHJvb3QpLFxuICAgIGNvbW1hbmRzOiBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgocm9vdCksXG4gICAgbWNwOiBhd2FpdCBjcmVhdGVNY3BSdW50aW1lKHsgcm9vdCwgb25DaGFuZ2U6IG9uTWNwQ2hhbmdlIH0pLFxuICAgIG1lbW9yeTogY3JlYXRlTWVtb3J5KHJvb3QpLFxuICB9XG59XG4iLCAiY29uc3QgREVGQVVMVF9TTElDRV9DSEFSUyA9IDI0MDAwXG5jb25zdCBNQVhfU0xJQ0VfQ0hBUlMgPSAxMDAwMDBcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEcmVkZ2UoY29uZmlnID0ge30sIGVudiA9IHByb2Nlc3MuZW52KSB7XG4gIGNvbnN0IHVybCA9IGVudi5EUkVER0VfVVJMIHx8IGNvbmZpZy5kcmVkZ2U/LnVybCB8fCBudWxsXG4gIGlmICghdXJsKSByZXR1cm4gbnVsbFxuICByZXR1cm4ge1xuICAgIHVybDogdXJsLnJlcGxhY2UoL1xcLyskLywgJycpLFxuICAgIGFwaUtleTogZW52LkRSRURHRV9BUElfS0VZIHx8IGNvbmZpZy5kcmVkZ2U/LmFwaUtleSB8fCBudWxsLFxuICB9XG59XG5cbmNvbnN0IENBTExfVElNRU9VVF9NUyA9IDEyMDAwMFxuXG5hc3luYyBmdW5jdGlvbiBjYWxsKGRyZWRnZSwgcGF0aCwgcGFyYW1zLCBzaWduYWwpIHtcbiAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHBhcmFtcylcbiAgLy8gYm91bmRlZCBhYm92ZSBkcmVkZ2UncyBvd24gOTBzIHF1ZXVlIGNlaWxpbmcgc28gYSB3ZWRnZWQgc2VydmVyIGJlY29tZXNcbiAgLy8gYSB0b29sIGVycm9yIGluc3RlYWQgb2YgYSBodW5nIHR1cm5cbiAgY29uc3Qgc2lnbmFscyA9IFtBYm9ydFNpZ25hbC50aW1lb3V0KENBTExfVElNRU9VVF9NUyksIC4uLihzaWduYWwgPyBbc2lnbmFsXSA6IFtdKV1cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtkcmVkZ2UudXJsfSR7cGF0aH0/JHtxdWVyeX1gLCB7XG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbC5hbnkoc2lnbmFscyksXG4gICAgaGVhZGVyczogZHJlZGdlLmFwaUtleSA/IHsgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke2RyZWRnZS5hcGlLZXl9YCB9IDoge30sXG4gIH0pXG4gIGNvbnN0IGJvZHkgPSBhd2FpdCByZXNwb25zZS5qc29uKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgaWYgKCFib2R5KSB0aHJvdyBuZXcgRXJyb3IoYGRyZWRnZSByZXR1cm5lZCBodHRwICR7cmVzcG9uc2Uuc3RhdHVzfSB3aXRoIG5vIHVzYWJsZSBib2R5YClcbiAgcmV0dXJuIGJvZHlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdlYlRvb2xzKHsgZHJlZGdlLCByZWNvcmRlciwgc2lnbmFsIH0pIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBuYW1lOiAnd2ViX3NlYXJjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1NlYXJjaCB0aGUgd2ViLiBHb29nbGUtc3R5bGUgb3BlcmF0b3JzIHdvcms6IHNpdGU6LCBmaWxldHlwZTpwZGYsIHF1b3RlZCBwaHJhc2VzLiBSZXR1cm5zIHJhbmtlZCByZXN1bHRzOyBwYXNzIGEgcmVzdWx0IHVybCB0byB3ZWJfZmV0Y2ggdG8gcmVhZCBpdC4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHE6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNlYXJjaCBxdWVyeScgfSxcbiAgICAgIH0sXG4gICAgICBleGVjdXRlOiBhc3luYyAoeyBxIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcSB9KVxuICAgICAgICBjb25zdCBib2R5ID0gYXdhaXQgY2FsbChkcmVkZ2UsICcvc2VhcmNoJywgeyBxIH0sIHNpZ25hbClcbiAgICAgICAgaWYgKCFib2R5Lm9rKSB0aHJvdyBuZXcgRXJyb3IoYm9keS5lcnJvcj8ubWVzc2FnZSB8fCAnc2VhcmNoIGZhaWxlZCcpXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSAoYm9keS5yZXN1bHRzIHx8IFtdKS5tYXAoKHIpID0+ICh7XG4gICAgICAgICAgdGl0bGU6IHIudGl0bGUsXG4gICAgICAgICAgdXJsOiByLnVybCxcbiAgICAgICAgICBzbmlwcGV0OiByLnNuaXBwZXQsXG4gICAgICAgICAgc291cmNlOiByLnNvdXJjZSxcbiAgICAgICAgfSkpXG4gICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGJhY2tlbmRzID0gKGJvZHkuYmFja2VuZHMgfHwgW10pLm1hcCgoYikgPT4gYCR7Yi5uYW1lfTogJHtiLnN0YXR1c31gKS5qb2luKCcsICcpXG4gICAgICAgICAgcmV0dXJuIHsgcmVzdWx0cywgbm90ZTogYmFja2VuZHMgPyBgbm8gcmVzdWx0cyBcdTAwQjcgYmFja2VuZHM6ICR7YmFja2VuZHN9YCA6ICdubyByZXN1bHRzJyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcmVzdWx0cyB9XG4gICAgICB9LFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3dlYl9mZXRjaCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0ZldGNoIGEgdXJsIGFuZCByZWFkIGl0IGFzIGNsZWFuIG1hcmtkb3duIChodG1sLCBwZGYsIGRvY3gsIGFuZCB0ZXh0dWFsIGZvcm1hdHMgbGlrZSBqc29uKS4gTG9uZyBkb2N1bWVudHMgYXJyaXZlIGluIHNsaWNlczogdGhlIHJlc3VsdCBzYXlzIHdoaWNoIHNsaWNlIHlvdSBoYXZlIChlLmcuIFwic2xpY2UgMSBvZiAxMlwiKSBhbmQgbmV4dF9jdXJzb3IgY29udGludWVzIGZyb20gdGhlcmUuIEV2ZXJ5IHNsaWNlIHlvdSBmZXRjaCBwZXJtYW5lbnRseSBvY2N1cGllcyBjb252ZXJzYXRpb24gY29udGV4dCwgc28gb25seSB3YWxrIGN1cnNvcnMgZm9yIGNvbnRlbnQgeW91IGFjdHVhbGx5IG5lZWQsIGFuZCByYWlzZSBtYXhDaGFycyBvbmx5IHdoZW4gdGhlIHRhc2sgZ2VudWluZWx5IG5lZWRzIGEgYmlnZ2VyIHdpbmRvdy4nLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIHVybDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgdXJsIHRvIGZldGNoJyB9LFxuICAgICAgICBjdXJzb3I6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncGFnaW5hdGlvbiBjdXJzb3IgZnJvbSBhIHByZXZpb3VzIHdlYl9mZXRjaCBvZiB0aGUgc2FtZSB1cmwnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICBtYXhDaGFyczogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246IGBzbGljZSBzaXplIGluIGNoYXJhY3RlcnMsIGRlZmF1bHQgJHtERUZBVUxUX1NMSUNFX0NIQVJTfSwgbWF4ICR7TUFYX1NMSUNFX0NIQVJTfWAsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgdXJsLCBjdXJzb3IsIG1heENoYXJzIH0pID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogdXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgJycpLnNsaWNlKDAsIDgwKSB9KVxuICAgICAgICBjb25zdCBzbGljZSA9IE1hdGgubWluKE1BWF9TTElDRV9DSEFSUywgTWF0aC5tYXgoMTAwMCwgbWF4Q2hhcnMgfHwgREVGQVVMVF9TTElDRV9DSEFSUykpXG4gICAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBjYWxsKGRyZWRnZSwgJy9mZXRjaCcsIHsgdXJsLCBtYXhDaGFyczogc2xpY2UsIC4uLihjdXJzb3IgJiYgeyBjdXJzb3IgfSkgfSwgc2lnbmFsKVxuICAgICAgICBpZiAoIWJvZHkub2spIHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIG1lc3NhZ2UsIHJldHJ5YWJsZSB9ID0gYm9keS5lcnJvciB8fCB7fVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtjb2RlIHx8ICdmZXRjaCBmYWlsZWQnfTogJHttZXNzYWdlIHx8IHVybH0ke3JldHJ5YWJsZSA/ICcgKHJldHJ5YWJsZSknIDogJyd9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1hcmtkb3duLCBtZXRhZGF0YSwgcGFnaW5hdGlvbiB9ID0gYm9keS5kb2NcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtYXJrZG93bixcbiAgICAgICAgICB0aXRsZTogbWV0YWRhdGE/LnRpdGxlIHx8IG51bGwsXG4gICAgICAgICAgZmluYWxVcmw6IG1ldGFkYXRhPy5maW5hbF91cmwgfHwgdXJsLFxuICAgICAgICAgIC4uLihwYWdpbmF0aW9uPy50b3RhbF9jaHVua3MgPiAxICYmIHsgc2xpY2U6IGAke3BhZ2luYXRpb24uY2h1bmtfaW5kZXggKyAxfSBvZiAke3BhZ2luYXRpb24udG90YWxfY2h1bmtzfWAgfSksXG4gICAgICAgICAgLi4uKHBhZ2luYXRpb24/Lm5leHRfY3Vyc29yICYmIHsgbmV4dF9jdXJzb3I6IHBhZ2luYXRpb24ubmV4dF9jdXJzb3IgfSksXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgXVxufVxuIiwgImltcG9ydCB7IHNwYXduIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuXG5jb25zdCBNQVhfTElORVMgPSAyMDAwXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaGVsbE1hbmFnZXIoeyBvbkNoYW5nZSA9ICgpID0+IHt9LCBvbkV4aXQgPSAoKSA9PiB7fSB9ID0ge30pIHtcbiAgY29uc3Qgc2hlbGxzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgZnVuY3Rpb24gcHVibGljVmlldyhzaGVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogc2hlbGwuaWQsXG4gICAgICBjb21tYW5kOiBzaGVsbC5jb21tYW5kLFxuICAgICAgZGVzY3JpcHRpb246IHNoZWxsLmRlc2NyaXB0aW9uLFxuICAgICAgY3dkOiBzaGVsbC5jd2QsXG4gICAgICBzdGF0dXM6IHNoZWxsLnN0YXR1cyxcbiAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgIHN0YXJ0ZWRBdDogc2hlbGwuc3RhcnRlZEF0LFxuICAgICAgZW5kZWRBdDogc2hlbGwuZW5kZWRBdCxcbiAgICAgIGtpbGxlZEJ5OiBzaGVsbC5raWxsZWRCeSxcbiAgICAgIGxhc3RMaW5lOiBzaGVsbC5saW5lcy5hdCgtMSkgfHwgJycsXG4gICAgICBsaW5lQ291bnQ6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydChjb21tYW5kLCB7IGN3ZCwgZGVzY3JpcHRpb24gfSA9IHt9KSB7XG4gICAgY29uc3QgaWQgPSBTdHJpbmcobmV4dElkKyspXG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCB7XG4gICAgICBzaGVsbDogdHJ1ZSxcbiAgICAgIGN3ZDogY3dkIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYsIEZPUkNFX0NPTE9SOiAnMCcsIE5PX0NPTE9SOiAnMScgfSxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICB9KVxuICAgIGNvbnN0IHNoZWxsID0ge1xuICAgICAgaWQsXG4gICAgICBjb21tYW5kLFxuICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIHx8IG51bGwsXG4gICAgICBjd2Q6IGN3ZCB8fCBwcm9jZXNzLmN3ZCgpLFxuICAgICAgY2hpbGQsXG4gICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgIGV4aXRDb2RlOiBudWxsLFxuICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgZW5kZWRBdDogbnVsbCxcbiAgICAgIGtpbGxlZEJ5OiBudWxsLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgcGFydGlhbDogJycsXG4gICAgfVxuXG4gICAgY29uc3QgcHVzaCA9IChjaHVuaykgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IHNoZWxsLnBhcnRpYWwgKyBjaHVuay50b1N0cmluZygpXG4gICAgICBjb25zdCBsaW5lcyA9IHRleHQuc3BsaXQoJ1xcbicpXG4gICAgICBzaGVsbC5wYXJ0aWFsID0gbGluZXMucG9wKCkgfHwgJydcbiAgICAgIHNoZWxsLmxpbmVzLnB1c2goLi4ubGluZXMpXG4gICAgICBpZiAoc2hlbGwubGluZXMubGVuZ3RoID4gTUFYX0xJTkVTKSBzaGVsbC5saW5lcy5zcGxpY2UoMCwgc2hlbGwubGluZXMubGVuZ3RoIC0gTUFYX0xJTkVTKVxuICAgICAgb25DaGFuZ2UoKVxuICAgIH1cbiAgICBjaGlsZC5zdGRvdXQub24oJ2RhdGEnLCBwdXNoKVxuICAgIGNoaWxkLnN0ZGVyci5vbignZGF0YScsIHB1c2gpXG4gICAgY2hpbGQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgcHVzaChgW2ZhaWxlZCB0byBzdGFydDogJHtlcnIubWVzc2FnZX1dXFxuYClcbiAgICB9KVxuICAgIGNoaWxkLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgaWYgKHNoZWxsLnBhcnRpYWwpIHtcbiAgICAgICAgc2hlbGwubGluZXMucHVzaChzaGVsbC5wYXJ0aWFsKVxuICAgICAgICBzaGVsbC5wYXJ0aWFsID0gJydcbiAgICAgIH1cbiAgICAgIHNoZWxsLnN0YXR1cyA9ICdleGl0ZWQnXG4gICAgICBzaGVsbC5leGl0Q29kZSA9IGNvZGUgPz8gKHNpZ25hbCA/IDEgOiAwKVxuICAgICAgc2hlbGwuZW5kZWRBdCA9IERhdGUubm93KClcbiAgICAgIG9uQ2hhbmdlKClcbiAgICAgIG9uRXhpdChwdWJsaWNWaWV3KHNoZWxsKSlcbiAgICB9KVxuXG4gICAgc2hlbGxzLnNldChpZCwgc2hlbGwpXG4gICAgb25DaGFuZ2UoKVxuICAgIHJldHVybiB7IGlkIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGdldChpZCkge1xuICAgIGNvbnN0IHNoZWxsID0gc2hlbGxzLmdldChTdHJpbmcoaWQpKVxuICAgIGlmICghc2hlbGwpIHRocm93IG5ldyBFcnJvcihgbm8gc2hlbGwgd2l0aCBpZCAke2lkfTsgaXQgaXMgZ29uZSBhbmQgY2Fubm90IGJlIGluc3BlY3RlZCAoZXhpdGVkIHNoZWxscyBkaXNhcHBlYXIgd2hlbiBkaXNtaXNzZWQpYClcbiAgICByZXR1cm4gc2hlbGxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3RhcnQsXG4gICAgb3V0cHV0KGlkLCB7IHRhaWwgPSAxMDAgfSA9IHt9KSB7XG4gICAgICBjb25zdCBzaGVsbCA9IGdldChpZClcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBzaGVsbC5pZCxcbiAgICAgICAgY29tbWFuZDogc2hlbGwuY29tbWFuZCxcbiAgICAgICAgc3RhdHVzOiBzaGVsbC5zdGF0dXMsXG4gICAgICAgIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSxcbiAgICAgICAgb3V0cHV0OiBzaGVsbC5saW5lcy5zbGljZSgtdGFpbCkuam9pbignXFxuJyksXG4gICAgICAgIHRvdGFsTGluZXM6IHNoZWxsLmxpbmVzLmxlbmd0aCxcbiAgICAgIH1cbiAgICB9LFxuICAgIGtpbGwoaWQsIGJ5ID0gJ21vZGVsJykge1xuICAgICAgY29uc3Qgc2hlbGwgPSBnZXQoaWQpXG4gICAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiB7IGlkOiBzaGVsbC5pZCwgc3RhdHVzOiBzaGVsbC5zdGF0dXMsIGV4aXRDb2RlOiBzaGVsbC5leGl0Q29kZSB9XG4gICAgICBzaGVsbC5raWxsZWRCeSA9IGJ5XG4gICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdURVJNJylcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHNoZWxsLmNoaWxkLmtpbGwoJ1NJR0tJTEwnKVxuICAgICAgfSwgMzAwMCkudW5yZWYoKVxuICAgICAgcmV0dXJuIHsgaWQ6IHNoZWxsLmlkLCBzdGF0dXM6ICdraWxsaW5nJyB9XG4gICAgfSxcbiAgICBkaXNtaXNzKGlkKSB7XG4gICAgICBjb25zdCBzaGVsbCA9IHNoZWxscy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmIChzaGVsbCAmJiBzaGVsbC5zdGF0dXMgPT09ICdleGl0ZWQnKSB7XG4gICAgICAgIHNoZWxscy5kZWxldGUoU3RyaW5nKGlkKSlcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgbGlzdCgpIHtcbiAgICAgIHJldHVybiBbLi4uc2hlbGxzLnZhbHVlcygpXS5tYXAocHVibGljVmlldylcbiAgICB9LFxuICAgIHJ1bm5pbmcoKSB7XG4gICAgICByZXR1cm4gWy4uLnNoZWxscy52YWx1ZXMoKV0uZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKS5sZW5ndGhcbiAgICB9LFxuICAgIGtpbGxBbGwoKSB7XG4gICAgICBmb3IgKGNvbnN0IHNoZWxsIG9mIHNoZWxscy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAoc2hlbGwuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICBzaGVsbC5raWxsZWRCeSA9ICd1c2VyJ1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzaGVsbC5jaGlsZC5raWxsKCdTSUdLSUxMJylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ25vZGU6Y3J5cHRvJ1xuXG5leHBvcnQgY29uc3QgU0VTU0lPTl9WRVJTSU9OID0gMVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUV2ZW50KHR5cGUsIGRhdGEgPSB7fSkge1xuICByZXR1cm4geyBpZDogcmFuZG9tVVVJRCgpLCBhdDogRGF0ZS5ub3coKSwgdHlwZSwgZGF0YSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgdmVyc2lvbjogU0VTU0lPTl9WRVJTSU9OLFxuICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgY3dkLFxuICAgIHJvb3QsXG4gICAgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVMaW5lKGV2ZW50KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShldmVudCkgKyAnXFxuJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VMaW5lKGxpbmUpIHtcbiAgY29uc3QgdHJpbW1lZCA9IGxpbmUudHJpbSgpXG4gIGlmICghdHJpbW1lZCkgcmV0dXJuIG51bGxcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHRyaW1tZWQpXG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0eXBlb2YgcGFyc2VkLnR5cGUgPT09ICdzdHJpbmcnID8gcGFyc2VkIDogbnVsbFxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHQuc3BsaXQoJ1xcbicpLm1hcChwYXJzZUxpbmUpLmZpbHRlcihCb29sZWFuKVxufVxuIiwgImltcG9ydCB7IGFwcGVuZEZpbGUsIHJlYWRGaWxlLCByZWFkZGlyLCBybSwgc3RhdCwgdW5saW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgc2Vzc2lvbnNEaXIsIGVuc3VyZURpciwgcHJvamVjdERpciB9IGZyb20gJy4vcGF0aHMuanMnXG5pbXBvcnQgeyBtYWtlSGVhZGVyLCBzZXJpYWxpemVMaW5lLCBwYXJzZUxpbmVzLCBwYXJzZUxpbmUgfSBmcm9tICcuL2V2ZW50cy5qcydcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSkge1xuICBjb25zdCBoZWFkZXIgPSBtYWtlSGVhZGVyKHsgY3dkLCByb290IH0pXG4gIGNvbnN0IGZpbGUgPSBqb2luKGVuc3VyZURpcihzZXNzaW9uc0Rpcihyb290KSksIGAke2hlYWRlci5pZH0uanNvbmxgKVxuICBjb25zdCBzZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXIgfSlcbiAgc2Vzc2lvbi5hcHBlbmQoaGVhZGVyKVxuICByZXR1cm4gc2Vzc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlblNlc3Npb24oeyBmaWxlLCBoZWFkZXIgfSkge1xuICBsZXQgcXVldWUgPSBQcm9taXNlLnJlc29sdmUoKVxuICByZXR1cm4ge1xuICAgIGlkOiBoZWFkZXIuaWQsXG4gICAgZmlsZSxcbiAgICBoZWFkZXIsXG4gICAgYXBwZW5kKGV2ZW50KSB7XG4gICAgICBxdWV1ZSA9IHF1ZXVlLnRoZW4oKCkgPT4gYXBwZW5kRmlsZShmaWxlLCBzZXJpYWxpemVMaW5lKGV2ZW50KSkpXG4gICAgICByZXR1cm4gcXVldWVcbiAgICB9LFxuICAgIGZsdXNoKCkge1xuICAgICAgcmV0dXJuIHF1ZXVlXG4gICAgfSxcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFNlc3Npb24oZmlsZSkge1xuICBjb25zdCBldmVudHMgPSBwYXJzZUxpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICBjb25zdCBoZWFkZXIgPSBldmVudHNbMF0/LnR5cGUgPT09ICdzZXNzaW9uJyA/IGV2ZW50cy5zaGlmdCgpIDogbnVsbFxuICBpZiAoIWhlYWRlcikgdGhyb3cgbmV3IEVycm9yKGBub3QgYSBwaWNvIHNlc3Npb24gZmlsZTogJHtmaWxlfWApXG4gIHJldHVybiB7IGhlYWRlciwgZXZlbnRzIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2Vzc2lvbk1ldGEoZmlsZSkge1xuICBjb25zdCBbaW5mbywgaGFuZGxlXSA9IGF3YWl0IFByb21pc2UuYWxsKFtzdGF0KGZpbGUpLCByZWFkRmlsZShmaWxlLCAndXRmLTgnKV0pXG4gIGNvbnN0IGxpbmVzID0gaGFuZGxlLnNwbGl0KCdcXG4nKVxuICBjb25zdCBoZWFkZXIgPSBwYXJzZUxpbmUobGluZXNbMF0pXG4gIGlmICghaGVhZGVyIHx8IGhlYWRlci50eXBlICE9PSAnc2Vzc2lvbicpIHJldHVybiBudWxsXG4gIGxldCBhdXRvbWF0aWNUaXRsZSA9IG51bGxcbiAgbGV0IGN1c3RvbVRpdGxlID0gbnVsbFxuICBsZXQgY29sb3IgPSBudWxsXG4gIGxldCB0dXJucyA9IDBcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgY29uc3QgZXZlbnQgPSBwYXJzZUxpbmUobGluZSlcbiAgICBpZiAoIWV2ZW50KSBjb250aW51ZVxuICAgIGlmIChldmVudC50eXBlID09PSAndGl0bGUnKSBjdXN0b21UaXRsZSA9IGV2ZW50LmRhdGEudGV4dFxuICAgIGlmIChldmVudC50eXBlID09PSAnY29sb3InKSBjb2xvciA9IGV2ZW50LmRhdGEudmFsdWVcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ21lc3NhZ2UnICYmIGV2ZW50LmRhdGEubWVzc2FnZT8ucm9sZSA9PT0gJ3VzZXInKSB7XG4gICAgICB0dXJucysrXG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnQuZGF0YS5tZXNzYWdlLmNvbnRlbnRcbiAgICAgIGNvbnN0IHRleHQgPSBBcnJheS5pc0FycmF5KGNvbnRlbnQpXG4gICAgICAgID8gY29udGVudC5maWx0ZXIoKHApID0+IHAudHlwZSA9PT0gJ3RleHQnKS5tYXAoKHApID0+IHAudGV4dCkuam9pbignICcpXG4gICAgICAgIDogU3RyaW5nKGNvbnRlbnQpXG4gICAgICBpZiAoIWF1dG9tYXRpY1RpdGxlICYmIHRleHQudHJpbSgpKSBhdXRvbWF0aWNUaXRsZSA9IHRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICB9XG4gIH1cbiAgY29uc3QgdGl0bGUgPSBjdXN0b21UaXRsZSB8fCBhdXRvbWF0aWNUaXRsZVxuICBpZiAoIXRpdGxlKSByZXR1cm4gbnVsbFxuICByZXR1cm4geyBmaWxlLCBoZWFkZXIsIHRpdGxlLCBjb2xvciwgdHVybnMsIGF0OiBpbmZvLm10aW1lTXMgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBsaXN0RGlyKGRpcikge1xuICB0cnkge1xuICAgIGNvbnN0IG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gICAgcmV0dXJuIG5hbWVzLmZpbHRlcigobikgPT4gbi5lbmRzV2l0aCgnLmpzb25sJykpLm1hcCgobikgPT4gam9pbihkaXIsIG4pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbihmaWxlKSB7XG4gIHJldHVybiB1bmxpbmsoZmlsZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZVByb2plY3REYXRhKHJvb3QpIHtcbiAgcmV0dXJuIHJtKHByb2plY3REaXIocm9vdCksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdFNlc3Npb25zKHsgc2NvcGUsIHJvb3QgfSkge1xuICBsZXQgZmlsZXMgPSBbXVxuICBpZiAoc2NvcGUgPT09ICdldmVyeXdoZXJlJykge1xuICAgIGNvbnN0IHByb2plY3RzRGlyID0gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnKVxuICAgIGxldCBwcm9qZWN0cyA9IFtdXG4gICAgdHJ5IHtcbiAgICAgIHByb2plY3RzID0gYXdhaXQgcmVhZGRpcihwcm9qZWN0c0RpcilcbiAgICB9IGNhdGNoIHt9XG4gICAgY29uc3QgbmVzdGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcm9qZWN0cy5tYXAoKHApID0+IGxpc3REaXIoam9pbihwcm9qZWN0c0RpciwgcCwgJ3Nlc3Npb25zJykpKSxcbiAgICApXG4gICAgZmlsZXMgPSBuZXN0ZWQuZmxhdCgpXG4gIH0gZWxzZSB7XG4gICAgZmlsZXMgPSBhd2FpdCBsaXN0RGlyKHNlc3Npb25zRGlyKHJvb3QpKVxuICB9XG4gIGNvbnN0IG1ldGFzID0gYXdhaXQgUHJvbWlzZS5hbGwoZmlsZXMubWFwKChmKSA9PiBzZXNzaW9uTWV0YShmKS5jYXRjaCgoKSA9PiBudWxsKSkpXG4gIHJldHVybiBtZXRhcy5maWx0ZXIoQm9vbGVhbikuc29ydCgoYSwgYikgPT4gYi5hdCAtIGEuYXQpXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3Rpb25Qcm9tcHQoY3VzdG9tSW5zdHJ1Y3Rpb25zID0gJycpIHtcbiAgbGV0IHByb21wdCA9IGBZb3VyIHRhc2sgaXMgdG8gY3JlYXRlIGEgZGV0YWlsZWQgc3VtbWFyeSBvZiB0aGUgY29udmVyc2F0aW9uIHNvIGZhciwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byB0aGUgdXNlcidzIGV4cGxpY2l0IHJlcXVlc3RzIGFuZCB5b3VyIHByZXZpb3VzIGFjdGlvbnMuIFRoZSBzdW1tYXJ5IG11c3QgbGV0IHdvcmsgY29udGludWUgc2VhbWxlc3NseSB3aXRob3V0IHRoZSBvcmlnaW5hbCBtZXNzYWdlcy5cblxuQmVmb3JlIHdyaXRpbmcgdGhlIHN1bW1hcnksIGRyYWZ0IHlvdXIgYW5hbHlzaXMgaW5zaWRlIDxhbmFseXNpcz4gdGFncyAoaXQgd2lsbCBiZSBkaXNjYXJkZWQpOiBjaHJvbm9sb2dpY2FsbHkgcmUtcmVhZCB0aGUgY29udmVyc2F0aW9uIGFuZCBub3RlIHRoZSB1c2VyJ3MgZXhwbGljaXQgcmVxdWVzdHMgYW5kIGludGVudHMsIHlvdXIgYXBwcm9hY2gsIGtleSBkZWNpc2lvbnMsIGZpbGUgbmFtZXMgYW5kIGNvZGUsIGVycm9ycyBhbmQgaG93IHRoZXkgd2VyZSBmaXhlZCwgYW5kIGFueSB1c2VyIGZlZWRiYWNrIG9yIGNvcnJlY3Rpb25zLCBlc3BlY2lhbGx5IHdoZXJlIHRoZSB1c2VyIHRvbGQgeW91IHRvIGRvIHNvbWV0aGluZyBkaWZmZXJlbnRseS5cblxuVGhlbiBwcm9kdWNlIGEgPHN1bW1hcnk+IGJsb2NrIHdpdGggZXhhY3RseSB0aGVzZSBzZWN0aW9uczpcblxuMS4gUHJpbWFyeSBSZXF1ZXN0IGFuZCBJbnRlbnQ6IGFsbCBvZiB0aGUgdXNlcidzIGV4cGxpY2l0IHJlcXVlc3RzLCBpbiBkZXRhaWxcbjIuIEtleSBUZWNobmljYWwgQ29uY2VwdHM6IHRlY2hub2xvZ2llcywgcGF0dGVybnMsIGFuZCBkZWNpc2lvbnMgaW4gcGxheVxuMy4gRmlsZXMgYW5kIENvZGUgU2VjdGlvbnM6IGZpbGVzIGV4YW1pbmVkLCBtb2RpZmllZCwgb3IgY3JlYXRlZDsgd2h5IGVhY2ggbWF0dGVyczsgaW1wb3J0YW50IHNuaXBwZXRzIHZlcmJhdGltXG40LiBFcnJvcnMgYW5kIEZpeGVzOiBldmVyeSBlcnJvciBoaXQgYW5kIGhvdyBpdCB3YXMgZml4ZWQsIGluY2x1ZGluZyB1c2VyIGZlZWRiYWNrIGFib3V0IGl0XG41LiBBbGwgVXNlciBNZXNzYWdlczogZXZlcnkgbm9uLXRvb2wtcmVzdWx0IHVzZXIgbWVzc2FnZSwgc28gaW50ZW50IGFuZCBpdHMgY2hhbmdlcyBzdXJ2aXZlXG42LiBQZW5kaW5nIFRhc2tzOiBhbnl0aGluZyBleHBsaWNpdGx5IHJlcXVlc3RlZCBhbmQgbm90IHlldCBkb25lXG43LiBDdXJyZW50IFdvcms6IHByZWNpc2VseSB3aGF0IHdhcyBpbiBwcm9ncmVzcyBqdXN0IG5vdywgd2l0aCBmaWxlIG5hbWVzIGFuZCBkaXJlY3QgcXVvdGVzXG44LiBOZXh0IFN0ZXA6IG9ubHkgaWYgZGlyZWN0bHkgaW4gbGluZSB3aXRoIHRoZSBtb3N0IHJlY2VudCBleHBsaWNpdCByZXF1ZXN0OyBpbmNsdWRlIHZlcmJhdGltIHF1b3RlcyBzaG93aW5nIGV4YWN0bHkgd2hlcmUgd29yayBsZWZ0IG9mZiwgb3Igc3RhdGUgdGhhdCB0aGVyZSBpcyBub25lXG5cblRoaXMgc3VtbWFyaXphdGlvbiByZXF1ZXN0IGlzIG5vdCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb246IGRvIG5vdCBsaXN0IGl0IGFzIGEgdXNlciBtZXNzYWdlLCBjb3VudCBpdCBhcyBhIHRhc2ssIG9yIGxldCBpdCBhcHBlYXIgYXMgdGhlIGN1cnJlbnQgd29yayBvciBuZXh0IHN0ZXAuIFN1bW1hcml6ZSBvbmx5IHdoYXQgY2FtZSBiZWZvcmUgaXQuXG5cblJlc3BvbmQgd2l0aCBwbGFpbiB0ZXh0IG9ubHk6IG9uZSA8YW5hbHlzaXM+IGJsb2NrIGZvbGxvd2VkIGJ5IG9uZSA8c3VtbWFyeT4gYmxvY2suYFxuXG4gIGlmIChjdXN0b21JbnN0cnVjdGlvbnMudHJpbSgpKSB7XG4gICAgcHJvbXB0ICs9IGBcXG5cXG5BZGRpdGlvbmFsIGluc3RydWN0aW9uczpcXG4ke2N1c3RvbUluc3RydWN0aW9ucy50cmltKCl9YFxuICB9XG4gIHJldHVybiBwcm9tcHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdENvbXBhY3RTdW1tYXJ5KHJhdykge1xuICBsZXQgZm9ybWF0dGVkID0gcmF3LnJlcGxhY2UoLzxhbmFseXNpcz5bXFxzXFxTXSo/PFxcL2FuYWx5c2lzPi8sICcnKVxuICBjb25zdCBtYXRjaCA9IGZvcm1hdHRlZC5tYXRjaCgvPHN1bW1hcnk+KFtcXHNcXFNdKj8pKD86PFxcL3N1bW1hcnk+fCQpLylcbiAgaWYgKG1hdGNoKSB7XG4gICAgZm9ybWF0dGVkID0gbWF0Y2hbMV1cbiAgfSBlbHNlIGlmIChmb3JtYXR0ZWQuaW5jbHVkZXMoJzxhbmFseXNpcz4nKSkge1xuICAgIC8vIHVuY2xvc2VkIGFuYWx5c2lzIHdpdGggbm8gc3VtbWFyeSBibG9jazogc2FsdmFnZSBmcm9tIHRoZSBmaXJzdFxuICAgIC8vIHNlY3Rpb24gaGVhZGVyIHJhdGhlciB0aGFuIHBlcnNpc3RpbmcgdGhlIHNjcmF0Y2hwYWRcbiAgICBjb25zdCBzdGFydCA9IGZvcm1hdHRlZC5zZWFyY2goL14xXFwuXFxzL20pXG4gICAgZm9ybWF0dGVkID0gc3RhcnQgPj0gMCA/IGZvcm1hdHRlZC5zbGljZShzdGFydCkgOiAnJ1xuICB9XG4gIHJldHVybiBmb3JtYXR0ZWQucmVwbGFjZSgvXFxuXFxuKy9nLCAnXFxuXFxuJykudHJpbSgpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1tYXJ5U2VjdGlvbnModGV4dCkge1xuICByZXR1cm4gKHRleHQubWF0Y2goL15cXGQrXFwuXFxzL2dtKSB8fCBbXSkubGVuZ3RoXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250aW51YXRpb25NZXNzYWdlKHN1bW1hcnksIHsgc2Vzc2lvbkZpbGUsIHJlY2VudEtlcHQgfSA9IHt9KSB7XG4gIGxldCB0ZXh0ID0gYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBUaGUgZWFybGllciBwb3J0aW9uIG9mIHRoaXMgY29udmVyc2F0aW9uIHdhcyBjb21wYWN0ZWQgdG8gZnJlZSBjb250ZXh0LiBTdW1tYXJ5IG9mIHdoYXQgY2FtZSBiZWZvcmU6XFxuXFxuJHtzdW1tYXJ5fWBcbiAgaWYgKHNlc3Npb25GaWxlKSB7XG4gICAgdGV4dCArPSBgXFxuXFxuVGhlIGNvbXBsZXRlIHByZS1jb21wYWN0aW9uIGhpc3RvcnkgaXMgcHJlc2VydmVkIGF0ICR7c2Vzc2lvbkZpbGV9IChqc29ubCwgb25lIGV2ZW50IHBlciBsaW5lKS4gSWYgeW91IG5lZWQgZXhhY3QgZGV0YWlscyBmcm9tIGJlZm9yZSBjb21wYWN0aW9uLCBzdWNoIGFzIGNvZGUgeW91IGdlbmVyYXRlZCBvciBwcmVjaXNlIGVycm9yIHRleHQsIHJlYWQgdGhhdCBmaWxlIHdpdGggeW91ciB0b29scy5gXG4gIH1cbiAgaWYgKHJlY2VudEtlcHQpIHtcbiAgICB0ZXh0ICs9IGBcXG5cXG5UaGUgbW9zdCByZWNlbnQgbWVzc2FnZXMgZm9sbG93IHZlcmJhdGltLmBcbiAgfVxuICB0ZXh0ICs9IGBcXG5cXG5Db250aW51ZSBleGFjdGx5IHdoZXJlIHRoaW5ncyBsZWZ0IG9mZi4gRG8gbm90IHJlY2FwLCBhY2tub3dsZWRnZSB0aGlzIHN1bW1hcnksIG9yIHJlLWFzayBzZXR0bGVkIHF1ZXN0aW9ucy5gXG4gIHJldHVybiB0ZXh0XG59XG4iLCAiaW1wb3J0IHsgY29udGludWF0aW9uTWVzc2FnZSB9IGZyb20gJy4vY29tcGFjdGlvbi5qcydcblxuY29uc3QgRFJPUFBJTkdfTU9ERVMgPSBbJ2JvdGgnLCAnY2hhdCcsICdzdW1tYXJ5J11cblxuLy8gY29udGV4dCBlZGl0aW5nOiBhIGxhcmdlIHRvb2wgcmVzdWx0IGtlZXBzIGdldHRpbmcgcmUtc2VudCB3aXRoIGV2ZXJ5XG4vLyByZXF1ZXN0IGxvbmcgYWZ0ZXIgdGhlIG1vZGVsIGhhcyB1c2VkIGl0LiBvbmNlIHRoZSBjb252ZXJzYXRpb24gaGFzIG1vdmVkXG4vLyBvbiAodHdvIHVzZXIgdHVybnMgcGFzdCBpdCksIHRoZSBib2R5IGlzIHJlcGxhY2VkIHdpdGggYSBzaG9ydCBub3RlIGluIHRoZVxuLy8gbW9kZWwncyB2aWV3IG9ubHk7IHRoZSB0cmFuc2NyaXB0IGFuZCB0aGUganNvbmwga2VlcCB0aGUgcmVhbCB0aGluZywgYW5kXG4vLyB0aGUgbW9kZWwgY2FuIHJlLXJ1biB0aGUgdG9vbCBpZiBpdCB0cnVseSBuZWVkcyB0aGUgZGF0YSBhZ2FpblxuY29uc3QgRUxJREVfTUlOX0NIQVJTID0gNDAwMFxuY29uc3QgRUxJREVfQUZURVJfVVNFUl9UVVJOUyA9IDJcblxuZnVuY3Rpb24gZWxpZGVTdGFsZVRvb2xSZXN1bHRzKGhpc3RvcnkpIHtcbiAgY29uc3QgdXNlckluZGV4ZXMgPSBbXVxuICBoaXN0b3J5LmZvckVhY2goKG1lc3NhZ2UsIGkpID0+IHtcbiAgICBpZiAobWVzc2FnZS5yb2xlID09PSAndXNlcicpIHVzZXJJbmRleGVzLnB1c2goaSlcbiAgfSlcbiAgY29uc3QgY3V0b2ZmID0gdXNlckluZGV4ZXMuYXQoLUVMSURFX0FGVEVSX1VTRVJfVFVSTlMpXG4gIGlmIChjdXRvZmYgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGhpc3RvcnlcbiAgcmV0dXJuIGhpc3RvcnkubWFwKChtZXNzYWdlLCBpKSA9PiB7XG4gICAgaWYgKGkgPj0gY3V0b2ZmIHx8IG1lc3NhZ2Uucm9sZSAhPT0gJ3Rvb2wnKSByZXR1cm4gbWVzc2FnZVxuICAgIGNvbnN0IGNvbnRlbnQgPSBTdHJpbmcobWVzc2FnZS5jb250ZW50ID8/ICcnKVxuICAgIGlmIChjb250ZW50Lmxlbmd0aCA8IEVMSURFX01JTl9DSEFSUykgcmV0dXJuIG1lc3NhZ2VcbiAgICByZXR1cm4ge1xuICAgICAgLi4ubWVzc2FnZSxcbiAgICAgIGNvbnRlbnQ6IGBbdG9vbCByZXN1bHQgZWxpZGVkIHRvIHNhdmUgY29udGV4dDogJHtjb250ZW50Lmxlbmd0aC50b0xvY2FsZVN0cmluZygpfSBjaGFycy4gcmUtcnVuIHRoZSB0b29sIGlmIHRoaXMgaXMgbmVlZGVkIGFnYWluXWAsXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBhY3RpdmVSZXdpbmRzKGV2ZW50cykge1xuICBjb25zdCBjYW5jZWxlZCA9IG5ldyBTZXQoKVxuICBmb3IgKGNvbnN0IGUgb2YgZXZlbnRzKSB7XG4gICAgaWYgKGUudHlwZSA9PT0gJ3Jld2luZF91bmRvJykgY2FuY2VsZWQuYWRkKGUuZGF0YS5yZXdpbmRJZClcbiAgfVxuICByZXR1cm4gZXZlbnRzLmZpbHRlcigoZSkgPT4gZS50eXBlID09PSAncmV3aW5kJyAmJiAhY2FuY2VsZWQuaGFzKGUuaWQpKVxufVxuXG5mdW5jdGlvbiBkcm9wcGVkSWRzKGV2ZW50cykge1xuICBjb25zdCBkcm9wcGVkID0gbmV3IFNldCgpXG4gIGNvbnN0IGluZGV4ID0gbmV3IE1hcChldmVudHMubWFwKChlLCBpKSA9PiBbZS5pZCwgaV0pKVxuICBmb3IgKGNvbnN0IHJld2luZCBvZiBhY3RpdmVSZXdpbmRzKGV2ZW50cykpIHtcbiAgICBpZiAoIURST1BQSU5HX01PREVTLmluY2x1ZGVzKHJld2luZC5kYXRhLm1vZGUpKSBjb250aW51ZVxuICAgIGNvbnN0IGZyb20gPSBpbmRleC5nZXQocmV3aW5kLmRhdGEudGFyZ2V0KVxuICAgIGNvbnN0IHRvID0gaW5kZXguZ2V0KHJld2luZC5pZClcbiAgICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkIHx8IHRvID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXG4gICAgZm9yIChsZXQgaSA9IGZyb207IGkgPCB0bzsgaSsrKSBkcm9wcGVkLmFkZChldmVudHNbaV0uaWQpXG4gIH1cbiAgcmV0dXJuIGRyb3BwZWRcbn1cblxuZnVuY3Rpb24gYWRkVXNhZ2VJbnRvKHRvdGFsLCB1c2FnZSkge1xuICB0b3RhbC5wcm9tcHRUb2tlbnMgKz0gdXNhZ2UucHJvbXB0VG9rZW5zIHx8IDBcbiAgdG90YWwuY29tcGxldGlvblRva2VucyArPSB1c2FnZS5jb21wbGV0aW9uVG9rZW5zIHx8IDBcbiAgdG90YWwudG90YWxUb2tlbnMgKz0gdXNhZ2UudG90YWxUb2tlbnMgfHwgMFxuICB0b3RhbC5jYWNoZWRUb2tlbnMgKz0gdXNhZ2UuY2FjaGVkVG9rZW5zIHx8IDBcbiAgdG90YWwudGhvdWdodFRva2VucyArPSB1c2FnZS50aG91Z2h0VG9rZW5zIHx8IDBcbn1cblxuZnVuY3Rpb24gZW1wdHlVc2FnZSgpIHtcbiAgcmV0dXJuIHsgcHJvbXB0VG9rZW5zOiAwLCBjb21wbGV0aW9uVG9rZW5zOiAwLCB0b3RhbFRva2VuczogMCwgY2FjaGVkVG9rZW5zOiAwLCB0aG91Z2h0VG9rZW5zOiAwIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzKHJhdykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKHJhdylcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgX3JhdzogcmF3IH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwdXNoSGlzdG9yeShzdGF0ZSwgbWVzc2FnZSwgZXZlbnRJZCkge1xuICBzdGF0ZS5wcm92aWRlckhpc3RvcnkucHVzaChtZXNzYWdlKVxuICBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMucHVzaChldmVudElkKVxufVxuXG5mdW5jdGlvbiBmb2xkTWVzc2FnZShzdGF0ZSwgZXZlbnQpIHtcbiAgY29uc3QgbWVzc2FnZSA9IGV2ZW50LmRhdGEubWVzc2FnZVxuICBpZiAoIW1lc3NhZ2UgfHwgbWVzc2FnZS5yb2xlID09PSAnc3lzdGVtJykgcmV0dXJuXG4gIHB1c2hIaXN0b3J5KHN0YXRlLCBtZXNzYWdlLCBldmVudC5pZClcblxuICBpZiAobWVzc2FnZS5yb2xlID09PSAndXNlcicpIHtcbiAgICBjb25zdCB0ZXh0ID0gQXJyYXkuaXNBcnJheShtZXNzYWdlLmNvbnRlbnQpXG4gICAgICA/IG1lc3NhZ2UuY29udGVudFxuICAgICAgICAgIC5tYXAoKHApID0+IChwLnR5cGUgPT09ICd0ZXh0JyA/IHAudGV4dCA6IGBbaW1hZ2U6ICR7U3RyaW5nKHAuc291cmNlPy5wYXRoIHx8ICcnKS5zcGxpdCgnLycpLnBvcCgpIHx8ICdhdHRhY2hlZCd9XWApKVxuICAgICAgICAgIC5qb2luKCcnKVxuICAgICAgOiBTdHJpbmcobWVzc2FnZS5jb250ZW50KVxuICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICd1c2VyJywgdGV4dCwgY29udGVudDogbWVzc2FnZS5jb250ZW50LCBldmVudElkOiBldmVudC5pZCB9KVxuICAgIHJldHVyblxuICB9XG4gIGlmIChtZXNzYWdlLnJvbGUgPT09ICdhc3Npc3RhbnQnKSB7XG4gICAgaWYgKG1lc3NhZ2UuY29udGVudCkge1xuICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQ6IG1lc3NhZ2UuY29udGVudCwgbW9kZWw6IHN0YXRlLm1vZGVsIH0pXG4gICAgfVxuICAgIGZvciAoY29uc3QgY2FsbCBvZiBtZXNzYWdlLnRvb2xfY2FsbHMgfHwgW10pIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB7XG4gICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgY2FsbElkOiBjYWxsLmlkLFxuICAgICAgICBuYW1lOiBjYWxsLmZ1bmN0aW9uLm5hbWUsXG4gICAgICAgIGFyZ3M6IHBhcnNlQXJncyhjYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cyksXG4gICAgICAgIHRpdGxlOiBjYWxsLmZ1bmN0aW9uLm5hbWUsXG4gICAgICAgIHN0YXR1czogJ2RvbmUnLFxuICAgICAgICBldmVudElkOiBldmVudC5pZCxcbiAgICAgIH1cbiAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaChpdGVtKVxuICAgICAgc3RhdGUudG9vbEl0ZW1zLnNldChjYWxsLmlkLCBpdGVtKVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBpZiAobWVzc2FnZS5yb2xlID09PSAndG9vbCcpIHtcbiAgICBjb25zdCBpdGVtID0gc3RhdGUudG9vbEl0ZW1zLmdldChtZXNzYWdlLnRvb2xfY2FsbF9pZClcbiAgICBpZiAoaXRlbSkgaXRlbS5yZXN1bHRUZXh0ID0gU3RyaW5nKG1lc3NhZ2UuY29udGVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBmb2xkUmV3aW5kKHN0YXRlLCBldmVudCkge1xuICBjb25zdCB7IG1vZGUsIHN1bW1hcnlUZXh0LCByZXZlcnRlZCA9IFtdIH0gPSBldmVudC5kYXRhXG4gIGZvciAoY29uc3QgY2FsbElkIG9mIHJldmVydGVkKSB7XG4gICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQoY2FsbElkKVxuICAgIGlmIChpdGVtKSBpdGVtLnN0YXR1cyA9ICdyZXZlcnRlZCdcbiAgfVxuICBpZiAobW9kZSA9PT0gJ3N1bW1hcnknICYmIHN1bW1hcnlUZXh0KSB7XG4gICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3N1bW1hcnknLCBzb3VyY2U6ICdyZXdpbmQnLCB0ZXh0OiBzdW1tYXJ5VGV4dCB9KVxuICAgIHB1c2hIaXN0b3J5KHN0YXRlLCB7XG4gICAgICByb2xlOiAnYXNzaXN0YW50JyxcbiAgICAgIGNvbnRlbnQ6IGBbc3VtbWFyeSBvZiB0aGUgcmV3b3VuZCBjb252ZXJzYXRpb25dXFxuJHtzdW1tYXJ5VGV4dH1gLFxuICAgIH0sIGV2ZW50LmlkKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVTdGF0ZShldmVudHMpIHtcbiAgY29uc3QgZHJvcHBlZCA9IGRyb3BwZWRJZHMoZXZlbnRzKVxuICBjb25zdCBjYW5jZWxlZFVuZG9UYXJnZXRzID0gbmV3IFNldChcbiAgICBldmVudHMuZmlsdGVyKChlKSA9PiBlLnR5cGUgPT09ICdyZXdpbmRfdW5kbycpLm1hcCgoZSkgPT4gZS5kYXRhLnJld2luZElkKSxcbiAgKVxuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHRyYW5zY3JpcHQ6IFtdLFxuICAgIHByb3ZpZGVySGlzdG9yeTogW10sXG4gICAgaGlzdG9yeUV2ZW50SWRzOiBbXSxcbiAgICBtb2RlbDogbnVsbCxcbiAgICBlZmZvcnQ6IHVuZGVmaW5lZCxcbiAgICB1c2FnZTogZW1wdHlVc2FnZSgpLFxuICAgIHVzYWdlQnlNb2RlbDoge30sXG4gICAgdXNhZ2VBY3RpdmU6IGVtcHR5VXNhZ2UoKSxcbiAgICB1c2FnZUFjdGl2ZUJ5TW9kZWw6IHt9LFxuICAgIGxhc3RQcm9tcHRUb2tlbnM6IDAsXG4gICAgbGFzdFByb21wdE1vZGVsOiBudWxsLFxuICAgIGxvYWRlZENvbnRleHQ6IG5ldyBTZXQoKSxcbiAgICB0b29sSXRlbXM6IG5ldyBNYXAoKSxcbiAgfVxuXG4gIGZvciAoY29uc3QgZXZlbnQgb2YgZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd1c2FnZScpIHtcbiAgICAgIGFkZFVzYWdlSW50byhzdGF0ZS51c2FnZSwgZXZlbnQuZGF0YS51c2FnZSlcbiAgICAgIGNvbnN0IGJ5TW9kZWwgPSAoc3RhdGUudXNhZ2VCeU1vZGVsW2V2ZW50LmRhdGEubW9kZWxdIHx8PSBlbXB0eVVzYWdlKCkpXG4gICAgICBhZGRVc2FnZUludG8oYnlNb2RlbCwgZXZlbnQuZGF0YS51c2FnZSlcbiAgICAgIGlmICghZHJvcHBlZC5oYXMoZXZlbnQuaWQpKSB7XG4gICAgICAgIGFkZFVzYWdlSW50byhzdGF0ZS51c2FnZUFjdGl2ZSwgZXZlbnQuZGF0YS51c2FnZSlcbiAgICAgICAgY29uc3QgYWN0aXZlQnlNb2RlbCA9IChzdGF0ZS51c2FnZUFjdGl2ZUJ5TW9kZWxbZXZlbnQuZGF0YS5tb2RlbF0gfHw9IGVtcHR5VXNhZ2UoKSlcbiAgICAgICAgYWRkVXNhZ2VJbnRvKGFjdGl2ZUJ5TW9kZWwsIGV2ZW50LmRhdGEudXNhZ2UpXG4gICAgICAgIC8vIG9ubHkgZXZlbnRzIHRoYXQgcmVjb3JkZWQgdGhlIGZpbmFsIHJlcXVlc3QncyBzaXplIGNhbiBkcml2ZSB0aGVcbiAgICAgICAgLy8gY29udGV4dCBtZXRlcjsgb2xkZXIgY3VtdWxhdGl2ZS1vbmx5IGV2ZW50cyB3b3VsZCBvdmVyc3RhdGUgaXRcbiAgICAgICAgaWYgKGV2ZW50LmRhdGEubGFzdFByb21wdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3RhdGUubGFzdFByb21wdFRva2VucyA9IGV2ZW50LmRhdGEubGFzdFByb21wdFxuICAgICAgICAgIHN0YXRlLmxhc3RQcm9tcHRNb2RlbCA9IGV2ZW50LmRhdGEubW9kZWxcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKGRyb3BwZWQuaGFzKGV2ZW50LmlkKSkgY29udGludWVcblxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgIGZvbGRNZXNzYWdlKHN0YXRlLCBldmVudClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3Rvb2xfbWV0YSc6IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHN0YXRlLnRvb2xJdGVtcy5nZXQoZXZlbnQuZGF0YS5jYWxsSWQpXG4gICAgICAgIGlmIChpdGVtKSBPYmplY3QuYXNzaWduKGl0ZW0sIGV2ZW50LmRhdGEsIHsga2luZDogJ3Rvb2wnLCBjYWxsSWQ6IGl0ZW0uY2FsbElkIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdpbnRlcnJ1cHQnOiB7XG4gICAgICAgIGNvbnN0IGxhc3QgPSBzdGF0ZS50cmFuc2NyaXB0LmF0KC0xKVxuICAgICAgICBpZiAobGFzdD8ua2luZCA9PT0gJ2Fzc2lzdGFudCcpIGxhc3QuaW50ZXJydXB0ZWQgPSB0cnVlXG4gICAgICAgIGlmIChsYXN0Py5raW5kID09PSAndG9vbCcgJiYgbGFzdC5zdGF0dXMgPT09ICdydW5uaW5nJykgbGFzdC5zdGF0dXMgPSAnaW50ZXJydXB0ZWQnXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdtb2RlbF9zd2l0Y2gnOlxuICAgICAgICBzdGF0ZS5tb2RlbCA9IGV2ZW50LmRhdGEudG9cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2VmZm9ydCc6XG4gICAgICAgIHN0YXRlLmVmZm9ydCA9IGV2ZW50LmRhdGEudG9cbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3RpdGxlJzpcbiAgICAgICAgc3RhdGUudGl0bGUgPSBldmVudC5kYXRhLnRleHRcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgICAgc3RhdGUuY29sb3IgPSBldmVudC5kYXRhLnZhbHVlXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdyZXdpbmQnOlxuICAgICAgICBpZiAoIWNhbmNlbGVkVW5kb1RhcmdldHMuaGFzKGV2ZW50LmlkKSkgZm9sZFJld2luZChzdGF0ZSwgZXZlbnQpXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdjb21wYWN0Jzoge1xuICAgICAgICBjb25zdCB7IHN1bW1hcnksIGtlZXBGcm9tLCBzZXNzaW9uRmlsZSB9ID0gZXZlbnQuZGF0YVxuICAgICAgICBpZiAoa2VlcEZyb20gIT09IHVuZGVmaW5lZCB8fCBzZXNzaW9uRmlsZSkge1xuICAgICAgICAgIGNvbnN0IGlkeCA9IGtlZXBGcm9tID8gc3RhdGUuaGlzdG9yeUV2ZW50SWRzLmluZGV4T2Yoa2VlcEZyb20pIDogLTFcbiAgICAgICAgICBjb25zdCBrZXB0ID0gaWR4ID49IDAgPyBzdGF0ZS5wcm92aWRlckhpc3Rvcnkuc2xpY2UoaWR4KSA6IFtdXG4gICAgICAgICAgY29uc3Qga2VwdElkcyA9IGlkeCA+PSAwID8gc3RhdGUuaGlzdG9yeUV2ZW50SWRzLnNsaWNlKGlkeCkgOiBbXVxuICAgICAgICAgIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IFtcbiAgICAgICAgICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiBjb250aW51YXRpb25NZXNzYWdlKHN1bW1hcnksIHsgc2Vzc2lvbkZpbGUsIHJlY2VudEtlcHQ6IGtlcHQubGVuZ3RoID4gMCB9KSB9LFxuICAgICAgICAgICAgLi4ua2VwdCxcbiAgICAgICAgICBdXG4gICAgICAgICAgc3RhdGUuaGlzdG9yeUV2ZW50SWRzID0gW251bGwsIC4uLmtlcHRJZHNdXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUucHJvdmlkZXJIaXN0b3J5ID0gW1xuICAgICAgICAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IGBbY29udmVyc2F0aW9uIHN1bW1hcnldXFxuJHtzdW1tYXJ5fWAgfSxcbiAgICAgICAgICAgIHsgcm9sZTogJ2Fzc2lzdGFudCcsIGNvbnRlbnQ6ICdHb3QgaXQuIENvbnRpbnVpbmcgZnJvbSB0aGF0IHN1bW1hcnkuJyB9LFxuICAgICAgICAgIF1cbiAgICAgICAgICBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMgPSBbbnVsbCwgbnVsbF1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnc3VtbWFyeScsIHNvdXJjZTogJ2NvbXBhY3QnLCB0ZXh0OiBzdW1tYXJ5IH0pXG4gICAgICAgIHN0YXRlLmxhc3RQcm9tcHRUb2tlbnMgPSAwXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdjbGVhcic6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQgPSBbXVxuICAgICAgICBzdGF0ZS5wcm92aWRlckhpc3RvcnkgPSBbXVxuICAgICAgICBzdGF0ZS5oaXN0b3J5RXZlbnRJZHMgPSBbXVxuICAgICAgICBzdGF0ZS50b29sSXRlbXMgPSBuZXcgTWFwKClcbiAgICAgICAgc3RhdGUubGFzdFByb21wdFRva2VucyA9IDBcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2NvbnRleHRfZmlsZSc6XG4gICAgICAgIHN0YXRlLmxvYWRlZENvbnRleHQuYWRkKGV2ZW50LmRhdGEucGF0aClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NraWxsJzpcbiAgICAgICAgc3RhdGUudHJhbnNjcmlwdC5wdXNoKHsga2luZDogJ3NraWxsJywgbmFtZTogZXZlbnQuZGF0YS5uYW1lIH0pXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd0aG91Z2h0cyc6XG4gICAgICAgIHN0YXRlLnRyYW5zY3JpcHQucHVzaCh7IGtpbmQ6ICd0aG91Z2h0cycsIHRleHQ6IGV2ZW50LmRhdGEudGV4dCB9KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2hlbGxfbm90ZSc6XG4gICAgICBjYXNlICdzeXN0ZW1fbm90ZSc6XG4gICAgICAgIHB1c2hIaXN0b3J5KHN0YXRlLCB7IHJvbGU6ICd1c2VyJywgY29udGVudDogZXZlbnQuZGF0YS50ZXh0IH0sIGV2ZW50LmlkKVxuICAgICAgICBzdGF0ZS50cmFuc2NyaXB0LnB1c2goeyBraW5kOiAnbm90aWNlJywgdGV4dDogZXZlbnQuZGF0YS50ZXh0LnNwbGl0KCdcXG4nKVswXSB9KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLnByb3ZpZGVySGlzdG9yeSA9IGVsaWRlU3RhbGVUb29sUmVzdWx0cyhzdGF0ZS5wcm92aWRlckhpc3RvcnkpXG4gIHJldHVybiBzdGF0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlckVudHJpZXMoc3RhdGUpIHtcbiAgY29uc3QgZW50cmllcyA9IFtdXG4gIHN0YXRlLnRyYW5zY3JpcHQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIGVudHJpZXMucHVzaCh7IHRleHQ6IGl0ZW0udGV4dCwgY29udGVudDogaXRlbS5jb250ZW50LCBpbmRleCwgZXZlbnRJZDogaXRlbS5ldmVudElkIH0pXG4gIH0pXG4gIHJldHVybiBlbnRyaWVzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXdpbmRTdGF0cyhzdGF0ZSwgaW5kZXgpIHtcbiAgY29uc3QgdGFpbCA9IHN0YXRlLnRyYW5zY3JpcHQuc2xpY2UoaW5kZXgpXG4gIHJldHVybiB7XG4gICAgbXNnczogdGFpbC5sZW5ndGgsXG4gICAgZWRpdHM6IHRhaWwuZmlsdGVyKChtKSA9PiBtLmtpbmQgPT09ICd0b29sJyAmJiBtLnJldmVydCAmJiBtLnN0YXR1cyAhPT0gJ3JldmVydGVkJyksXG4gIH1cbn1cbiIsICJpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBjb21wb3NlLCBzY29wZSwgbW9kZWwsIG5vVG9vbHNDYWxsZWQsIEluaGVyaXQsIGdldFRleHQgfSBmcm9tICdAcHJzbS9haSdcblxuYXN5bmMgZnVuY3Rpb24gaHlkcmF0ZVBhcnQocGFydCkge1xuICBpZiAocGFydC50eXBlICE9PSAnaW1hZ2UnIHx8IHBhcnQuc291cmNlPy5raW5kICE9PSAncGF0aCcpIHJldHVybiBwYXJ0XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlYWRGaWxlKHBhcnQuc291cmNlLnBhdGgpXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICBzb3VyY2U6IHsga2luZDogJ2Jhc2U2NCcsIG1lZGlhVHlwZTogcGFydC5zb3VyY2UubWVkaWFUeXBlLCBkYXRhOiBkYXRhLnRvU3RyaW5nKCdiYXNlNjQnKSB9LFxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHsgdHlwZTogJ3RleHQnLCB0ZXh0OiBgW2ltYWdlIHVuYXZhaWxhYmxlOiAke3BhcnQuc291cmNlLnBhdGh9XWAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeWRyYXRlSW1hZ2VzKGhpc3RvcnkpIHtcbiAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgIGhpc3RvcnkubWFwKGFzeW5jIChtZXNzYWdlKSA9PlxuICAgICAgQXJyYXkuaXNBcnJheShtZXNzYWdlLmNvbnRlbnQpXG4gICAgICAgID8geyAuLi5tZXNzYWdlLCBjb250ZW50OiBhd2FpdCBQcm9taXNlLmFsbChtZXNzYWdlLmNvbnRlbnQubWFwKGh5ZHJhdGVQYXJ0KSkgfVxuICAgICAgICA6IG1lc3NhZ2UsXG4gICAgKSxcbiAgKVxufVxuXG4vLyByZWFzb25pbmcgbW9kZWxzIHdpdGggbGFyZ2UgY29udGV4dHMgY2FuIHNpdCBtaW51dGVzIGJlZm9yZSB0aGUgZmlyc3Rcbi8vIG91dHB1dCB0b2tlbjsgdGhpcyBndWFyZHMgYWdhaW5zdCB0cnVseSBkZWFkIHN0cmVhbXMsIG5vdCBzbG93IG9uZXNcbmNvbnN0IFNUQUxMX01TID0gMzAwMDAwXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb21wYWN0SGlzdG9yeSh7IGhpc3RvcnksIG1vZGVsTmFtZSwgYXV0aCwgcHJvbXB0LCBzaWduYWwsIG9uU3RyZWFtIH0pIHtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgY29tcG9zZShcbiAgICBtb2RlbCh7XG4gICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgLi4uKGF1dGg/LmFwaUtleSAmJiB7IGFwaUtleTogYXV0aC5hcGlLZXkgfSksXG4gICAgICAuLi4oYXV0aD8uaGVhZGVycyAmJiB7IGhlYWRlcnM6IGF1dGguaGVhZGVycyB9KSxcbiAgICB9KSxcbiAgKSh7XG4gICAgaGlzdG9yeTogWy4uLmhpc3RvcnkuZmlsdGVyKChtKSA9PiBtLnJvbGUgIT09ICdzeXN0ZW0nKSwgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6IHByb21wdCB9XSxcbiAgICB0b29sczogW10sXG4gICAgYWJvcnRTaWduYWw6IHNpZ25hbCxcbiAgICAuLi4ob25TdHJlYW0gJiYgeyBzdHJlYW06IG9uU3RyZWFtIH0pLFxuICB9KVxuICBpZiAoc2lnbmFsPy5hYm9ydGVkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbXBhY3Rpb24gY2FuY2VsbGVkJylcbiAgcmV0dXJuIGdldFRleHQob3V0Lmxhc3RSZXNwb25zZT8uY29udGVudCB8fCAnJykudHJpbSgpXG59XG5cbi8vIHRoZSBzdW1tYXJ5IGhhcyBhIGZpeGVkIHNoYXBlOiBhbiA8YW5hbHlzaXM+IHNjcmF0Y2hwYWQsIHRoZW4gOCBudW1iZXJlZFxuLy8gc2VjdGlvbnM7IHdhdGNoaW5nIGhlYWRlcnMgc3RyZWFtIGJ5IGlzIHJlYWwgcHJvZ3Jlc3MsIG5vdCBhbiBlc3RpbWF0ZVxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhY3RQcm9ncmVzcyhzdHJlYW1lZCkge1xuICBjb25zdCBjaGFycyA9IHN0cmVhbWVkLmxlbmd0aFxuICBjb25zdCBhZnRlckFuYWx5c2lzID0gc3RyZWFtZWQuc3BsaXQoJzwvYW5hbHlzaXM+JylbMV0gPz8gc3RyZWFtZWQuc3BsaXQoJzxzdW1tYXJ5PicpWzFdXG4gIGlmIChhZnRlckFuYWx5c2lzID09PSB1bmRlZmluZWQpIHJldHVybiB7IHBoYXNlOiAnYW5hbHl6aW5nJywgc2VjdGlvbjogMCwgY2hhcnMgfVxuICBjb25zdCBzZWN0aW9ucyA9IChhZnRlckFuYWx5c2lzLm1hdGNoKC9eXFxzKlxcZCtcXC5cXHMvZ20pIHx8IFtdKS5sZW5ndGhcbiAgaWYgKHNlY3Rpb25zID09PSAwKSByZXR1cm4geyBwaGFzZTogJ2FuYWx5emluZycsIHNlY3Rpb246IDAsIGNoYXJzIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICd3cml0aW5nJywgc2VjdGlvbjogTWF0aC5taW4oOCwgc2VjdGlvbnMpLCBjaGFycyB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lLCBhdXRoIH0pIHtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgY29tcG9zZShcbiAgICBtb2RlbCh7XG4gICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgc3lzdGVtOiAnU3VtbWFyaXplIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uIGV4Y2VycHQgaW4gMi00IGRlbnNlIHNlbnRlbmNlcy4gQ2FwdHVyZSBkZWNpc2lvbnMsIGNoYW5nZXMgbWFkZSwgYW5kIG9wZW4gcXVlc3Rpb25zLiBPdXRwdXQgb25seSB0aGUgc3VtbWFyeS4nLFxuICAgICAgLi4uKGF1dGg/LmFwaUtleSAmJiB7IGFwaUtleTogYXV0aC5hcGlLZXkgfSksXG4gICAgICAuLi4oYXV0aD8uaGVhZGVycyAmJiB7IGhlYWRlcnM6IGF1dGguaGVhZGVycyB9KSxcbiAgICB9KSxcbiAgKSh0ZXh0LnNsaWNlKDAsIDMwMDAwKSlcbiAgcmV0dXJuIGdldFRleHQob3V0Lmxhc3RSZXNwb25zZT8uY29udGVudCB8fCAnJykudHJpbSgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5UdXJuKHsgaGlzdG9yeSwgdG9vbHMsIHJlY29yZGVyLCBtb2RlbE5hbWUsIGVmZm9ydCwgYXV0aCwgc3lzdGVtLCBzaWduYWwsIG9uU3RyZWFtLCBzdGFsbE1zID0gU1RBTExfTVMgfSkge1xuICBjb25zdCBjb2xsZWN0ZWQgPSBbXVxuICBsZXQgcm91bmRUZXh0ID0gJydcbiAgbGV0IHVzYWdlU2VlbiA9IG51bGxcbiAgbGV0IHN0YWxsZWQgPSBmYWxzZVxuICAvLyB1c2FnZSBldmVudHMgY2FycnkgY3VtdWxhdGl2ZSB0b3RhbHMgcGVyIHJlcXVlc3Qgcm91bmQsIHNvIGNvbnNlY3V0aXZlXG4gIC8vIGRlbHRhcyByZWNvdmVyIGVhY2ggcm91bmQncyB0cnVlIGlucHV0IHNpemU7IHRoZSBsYXN0IGRlbHRhIGlzIHRoZSBzaXplXG4gIC8vIG9mIHRoZSBjdXJyZW50IGNvbnRleHQgYXMgYWN0dWFsbHkgc2VudFxuICBsZXQgY3VtdWxhdGl2ZVByb21wdCA9IDBcbiAgbGV0IGxhc3RQcm9tcHRUb2tlbnMgPSAwXG5cbiAgY29uc3QgaW50ZXJuYWwgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgY29uc3Qgb25Vc2VyQWJvcnQgPSAoKSA9PiBpbnRlcm5hbC5hYm9ydCgpXG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIGludGVybmFsLmFib3J0KClcbiAgZWxzZSBzaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25Vc2VyQWJvcnQsIHsgb25jZTogdHJ1ZSB9KVxuXG4gIGxldCB3YXRjaGRvZyA9IG51bGxcbiAgY29uc3QgYXJtID0gKCkgPT4ge1xuICAgIGNsZWFyVGltZW91dCh3YXRjaGRvZylcbiAgICB3YXRjaGRvZyA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc3RhbGxlZCA9IHRydWVcbiAgICAgIGludGVybmFsLmFib3J0KClcbiAgICB9LCBzdGFsbE1zKVxuICB9XG5cbiAgY29uc3Qgc3RyZWFtID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2V4ZWN1dGluZycpIHtcbiAgICAgIC8vIGEgdG9vbCBtYXkgbGVnaXRpbWF0ZWx5IHJ1biBmb3IgbWludXRlcyAodGVzdCBzdWl0ZXMsIHNsb3cgZmV0Y2hlcylcbiAgICAgIC8vIGFuZCBlbWl0cyBub3RoaW5nIHdoaWxlIGl0IGRvZXM7IHRoZSB3YXRjaGRvZyBndWFyZHMgdGhlIHByb3ZpZGVyXG4gICAgICAvLyBzdHJlYW0sIHNvIHBhdXNlIGl0IHVudGlsIHRoZSB0b29sIGZpbmlzaGVzLiB0b29scyBjYXJyeSB0aGVpciBvd25cbiAgICAgIC8vIHRpbWVvdXRzIChiYXNoIDEyMHMgZGVmYXVsdCwgd2ViIHRvb2xzIHZpYSBkcmVkZ2UpXG4gICAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgICByZWNvcmRlci5jdXJyZW50Q2FsbCA9IGV2ZW50LmNhbGxcbiAgICAgIG9uU3RyZWFtPy4oZXZlbnQpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXJtKClcbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICByb3VuZFRleHQgKz0gZXZlbnQuY29udGVudFxuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQsIHRvb2xfY2FsbHM6IGV2ZW50LmNhbGxzIH0pXG4gICAgICByb3VuZFRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnKSB7XG4gICAgICBjb2xsZWN0ZWQucHVzaCh7IHJvbGU6ICd0b29sJywgdG9vbF9jYWxsX2lkOiBldmVudC5jYWxsLmlkLCBjb250ZW50OiBKU09OLnN0cmluZ2lmeShldmVudC5yZXN1bHQpIH0pXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgIGNvbGxlY3RlZC5wdXNoKHsgcm9sZTogJ3Rvb2wnLCB0b29sX2NhbGxfaWQ6IGV2ZW50LmNhbGwuaWQsIGNvbnRlbnQ6IEpTT04uc3RyaW5naWZ5KHsgZXJyb3I6IGV2ZW50LmVycm9yIH0pIH0pXG4gICAgfSBlbHNlIGlmIChldmVudC50eXBlID09PSAndXNhZ2UnKSB7XG4gICAgICB1c2FnZVNlZW4gPSBldmVudC51c2FnZVxuICAgICAgY29uc3QgcHJvbXB0ID0gZXZlbnQudXNhZ2U/LnByb21wdFRva2VucyB8fCAwXG4gICAgICBsYXN0UHJvbXB0VG9rZW5zID0gTWF0aC5tYXgoMCwgcHJvbXB0IC0gY3VtdWxhdGl2ZVByb21wdClcbiAgICAgIGN1bXVsYXRpdmVQcm9tcHQgPSBwcm9tcHRcbiAgICB9XG4gICAgb25TdHJlYW0/LihldmVudClcbiAgfVxuXG4gIGNvbnN0IGJhc2UgPSBoaXN0b3J5Lmxlbmd0aFxuICBjb25zdCBzdGVwID0gY29tcG9zZShcbiAgICBzY29wZShcbiAgICAgIHsgaW5oZXJpdDogSW5oZXJpdC5Db252ZXJzYXRpb24sIHN5c3RlbSwgdG9vbHMsIHVudGlsOiBub1Rvb2xzQ2FsbGVkKCksIHN0cmVhbSB9LFxuICAgICAgKGN0eCkgPT5cbiAgICAgICAgbW9kZWwoe1xuICAgICAgICAgIG1vZGVsOiBtb2RlbE5hbWUsXG4gICAgICAgICAgLi4uKGVmZm9ydCAmJiB7IGVmZm9ydCB9KSxcbiAgICAgICAgICAuLi4oYXV0aD8uYXBpS2V5ICYmIHsgYXBpS2V5OiBhdXRoLmFwaUtleSB9KSxcbiAgICAgICAgICAuLi4oYXV0aD8uaGVhZGVycyAmJiB7IGhlYWRlcnM6IGF1dGguaGVhZGVycyB9KSxcbiAgICAgICAgfSkoeyAuLi5jdHgsIGFib3J0U2lnbmFsOiBpbnRlcm5hbC5zaWduYWwgfSksXG4gICAgKSxcbiAgKVxuXG4gIGNvbnN0IHBhcnRpYWxNZXNzYWdlcyA9ICgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlcyA9IFsuLi5jb2xsZWN0ZWRdXG4gICAgaWYgKHJvdW5kVGV4dCkgbWVzc2FnZXMucHVzaCh7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiByb3VuZFRleHQgfSlcbiAgICByZXR1cm4gbWVzc2FnZXNcbiAgfVxuXG4gIGFybSgpXG4gIHRyeSB7XG4gICAgY29uc3Qgb3V0ID0gYXdhaXQgc3RlcCh7IGhpc3Rvcnk6IGF3YWl0IGh5ZHJhdGVJbWFnZXMoaGlzdG9yeSksIHRvb2xzOiBbXSB9KVxuICAgIGNvbnN0IGludGVycnVwdGVkID0gISFzaWduYWw/LmFib3J0ZWQgfHwgc3RhbGxlZFxuICAgIGlmIChpbnRlcnJ1cHRlZCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZCwgc3RhbGxlZCB9XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VzID0gb3V0Lmhpc3RvcnkuZmlsdGVyKChtKSA9PiBtLnJvbGUgIT09ICdzeXN0ZW0nKS5zbGljZShiYXNlKVxuICAgIHJldHVybiB7IG1lc3NhZ2VzLCB1c2FnZTogb3V0LnVzYWdlIHx8IG51bGwsIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiBmYWxzZSwgc3RhbGxlZDogZmFsc2UgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyLm5hbWUgPT09ICdBYm9ydEVycm9yJyB8fCBpbnRlcm5hbC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHsgbWVzc2FnZXM6IHBhcnRpYWxNZXNzYWdlcygpLCB1c2FnZTogdXNhZ2VTZWVuLCBsYXN0UHJvbXB0VG9rZW5zLCBpbnRlcnJ1cHRlZDogdHJ1ZSwgc3RhbGxlZCB9XG4gICAgfVxuICAgIC8vIGEgcHJvdmlkZXIgZXJyb3IgbWlkLXR1cm4gbXVzdCBub3QgZGlzY2FyZCB0aGUgcm91bmRzIHRoYXQgYWxyZWFkeVxuICAgIC8vIHJhbjogdG9vbHMgbXV0YXRlZCB0aGUgd29ybGQsIHNvIHRoZSByZWNvcmQgaGFzIHRvIHN1cnZpdmVcbiAgICByZXR1cm4geyBtZXNzYWdlczogcGFydGlhbE1lc3NhZ2VzKCksIHVzYWdlOiB1c2FnZVNlZW4sIGxhc3RQcm9tcHRUb2tlbnMsIGludGVycnVwdGVkOiB0cnVlLCBzdGFsbGVkOiBmYWxzZSwgZXJyb3I6IFN0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBjbGVhclRpbWVvdXQod2F0Y2hkb2cpXG4gICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIG9uVXNlckFib3J0KVxuICB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRUaXRsZShuYW1lLCBhcmdzID0ge30pIHtcbiAgY29uc3QgY2FuZGlkYXRlID0gYXJncy5wYXRoIHx8IGFyZ3MuY29tbWFuZCB8fCBhcmdzLnBhdHRlcm4gfHwgYXJncy51cmwgfHwgYXJncy5uYW1lXG4gIGlmICh0eXBlb2YgY2FuZGlkYXRlID09PSAnc3RyaW5nJyAmJiBjYW5kaWRhdGUpIHJldHVybiBjYW5kaWRhdGVcbiAgY29uc3QgcmF3ID0gSlNPTi5zdHJpbmdpZnkoYXJncylcbiAgaWYgKCFyYXcgfHwgcmF3ID09PSAne30nKSByZXR1cm4gbmFtZVxuICByZXR1cm4gcmF3Lmxlbmd0aCA+IDYwID8gcmF3LnNsaWNlKDAsIDYwKSArICdcdTIwMjYnIDogcmF3XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWNvcmRlcigpIHtcbiAgcmV0dXJuIHtcbiAgICBjdXJyZW50Q2FsbDogbnVsbCxcbiAgICBlbnRyaWVzOiBbXSxcbiAgICBwZW5kaW5nOiBudWxsLFxuICAgIGJlZ2luKG5hbWUsIGFyZ3MpIHtcbiAgICAgIHRoaXMucGVuZGluZyA9IHtcbiAgICAgICAgY2FsbElkOiB0aGlzLmN1cnJlbnRDYWxsPy5pZCA/PyBudWxsLFxuICAgICAgICBuYW1lLFxuICAgICAgICB0aXRsZTogZGVmYXVsdFRpdGxlKG5hbWUsIGFyZ3MpLFxuICAgICAgICBzdGF0dXM6ICdkb25lJyxcbiAgICAgICAgc3RhcnRlZEF0OiBEYXRlLm5vdygpLFxuICAgICAgfVxuICAgIH0sXG4gICAgZXh0cmEoZmllbGRzKSB7XG4gICAgICBpZiAodGhpcy5wZW5kaW5nKSBPYmplY3QuYXNzaWduKHRoaXMucGVuZGluZywgZmllbGRzKVxuICAgIH0sXG4gICAgZG9uZShmaWVsZHMgPSB7fSkge1xuICAgICAgaWYgKCF0aGlzLnBlbmRpbmcpIHJldHVyblxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnBlbmRpbmcsIGZpZWxkcywge1xuICAgICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gdGhpcy5wZW5kaW5nLnN0YXJ0ZWRBdCxcbiAgICAgIH0pXG4gICAgICBkZWxldGUgdGhpcy5wZW5kaW5nLnN0YXJ0ZWRBdFxuICAgICAgaWYgKHRoaXMucGVuZGluZy5mdWxsT3V0cHV0Py5sZW5ndGggPiAyMDAwMDApIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nLmZ1bGxPdXRwdXQgPSB0aGlzLnBlbmRpbmcuZnVsbE91dHB1dC5zbGljZSgwLCAyMDAwMDApICsgJ1xcblt0cnVuY2F0ZWRdJ1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzLnB1c2godGhpcy5wZW5kaW5nKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbFxuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlY29yZGVkKHJlY29yZGVyLCBuYW1lLCBmbikge1xuICByZXR1cm4gYXN5bmMgKGFyZ3MpID0+IHtcbiAgICByZWNvcmRlci5iZWdpbihuYW1lLCBhcmdzKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmbihhcmdzKVxuICAgICAgaWYgKCFyZWNvcmRlci5wZW5kaW5nPy5mdWxsT3V0cHV0ICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHtcbiAgICAgICAgICBmdWxsT3V0cHV0OiB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMiksXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZWNvcmRlci5kb25lKClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJlY29yZGVyLmRvbmUoeyBzdGF0dXM6ICdlcnJvcicsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKSB9KVxuICAgICAgdGhyb3cgZXJyXG4gICAgfVxuICB9XG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuY29uc3QgTUFYX0xJTkVTID0gMjAwMFxuY29uc3QgTUFYX0xJTkVfTEVOR1RIID0gMjAwMFxuXG5mdW5jdGlvbiBpc0JpbmFyeShidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4oYnVmZmVyLmxlbmd0aCwgODAwMClcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChidWZmZXJbaV0gPT09IDApIHJldHVybiB0cnVlXG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWFkKHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ3JlYWQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVhZCBhIGZpbGUuIFJldHVybnMgbGluZS1udW1iZXJlZCBjb250ZW50LiBVc2Ugb2Zmc2V0L2xpbWl0IGZvciBsYXJnZSBmaWxlcy4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIG9mZnNldDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICcxLWluZGV4ZWQgbGluZSB0byBzdGFydCBmcm9tJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGxpbWl0OiB7IHR5cGU6ICdudW1iZXInLCBkZXNjcmlwdGlvbjogJ21heCBsaW5lcyB0byByZXR1cm4nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0aCwgb2Zmc2V0ID0gMSwgbGltaXQgPSBNQVhfTElORVMgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgY29uc3QgYnVmID0gYXdhaXQgcmVhZEZpbGUoZnVsbClcbiAgICAgIGlmIChpc0JpbmFyeShidWYpKSB0aHJvdyBuZXcgRXJyb3IoYCR7cGF0aH0gaXMgYSBiaW5hcnkgZmlsZWApXG4gICAgICBjb25zdCBsaW5lcyA9IGJ1Zi50b1N0cmluZygndXRmLTgnKS5zcGxpdCgnXFxuJylcblxuICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBvZmZzZXQgLSAxKVxuICAgICAgY29uc3QgY291bnQgPSBNYXRoLm1pbihsaW1pdCwgTUFYX0xJTkVTKVxuICAgICAgY29uc3Qgc2xpY2VkID0gbGluZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgY291bnQpXG4gICAgICBjb25zdCBudW1iZXJlZCA9IHNsaWNlZFxuICAgICAgICAubWFwKChsaW5lLCBpKSA9PiBgJHtzdGFydCArIGkgKyAxfVxcdCR7bGluZS5sZW5ndGggPiBNQVhfTElORV9MRU5HVEggPyBsaW5lLnNsaWNlKDAsIE1BWF9MSU5FX0xFTkdUSCkgKyAnXHUyMDI2JyA6IGxpbmV9YClcbiAgICAgICAgLmpvaW4oJ1xcbicpXG5cbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgZnVsbE91dHB1dDogc2xpY2VkLmpvaW4oJ1xcbicpIH0pXG4gICAgICBjb25zdCByZXN1bHQgPSB7IGNvbnRlbnQ6IG51bWJlcmVkLCB0b3RhbExpbmVzOiBsaW5lcy5sZW5ndGggfVxuICAgICAgaWYgKHN0YXJ0ICsgY291bnQgPCBsaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lm5vdGUgPSBgc2hvd2luZyBsaW5lcyAke3N0YXJ0ICsgMX0tJHtzdGFydCArIHNsaWNlZC5sZW5ndGh9IG9mICR7bGluZXMubGVuZ3RofWBcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbnRleHQgPSB0cmFja2VyLmNoZWNrKGZ1bGwpXG4gICAgICBpZiAoY29udGV4dC5sZW5ndGgpIHJlc3VsdC5jb250ZXh0X2Zyb21fYWdlbnRzX21kID0gY29udGV4dFxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBzdHJ1Y3R1cmVkUGF0Y2ggfSBmcm9tICdkaWZmJ1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZURpZmYocGF0aCwgb2xkVGV4dCwgbmV3VGV4dCwgY29udGV4dExpbmVzID0gMykge1xuICBjb25zdCBwYXRjaCA9IHN0cnVjdHVyZWRQYXRjaChwYXRoLCBwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCAnJywgJycsIHsgY29udGV4dDogY29udGV4dExpbmVzIH0pXG4gIGxldCBhZGRpdGlvbnMgPSAwXG4gIGxldCBkZWxldGlvbnMgPSAwXG4gIGNvbnN0IGh1bmtzID0gcGF0Y2guaHVua3MubWFwKChoKSA9PiAoe1xuICAgIG9sZFN0YXJ0OiBoLm9sZFN0YXJ0LFxuICAgIG5ld1N0YXJ0OiBoLm5ld1N0YXJ0LFxuICAgIGxpbmVzOiBoLmxpbmVzLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3QgdHlwZSA9IGxpbmVbMF0gPT09ICctJyA/ICdyZW1vdmUnIDogbGluZVswXSA9PT0gJysnID8gJ2FkZCcgOiAnY29udGV4dCdcbiAgICAgIGlmICh0eXBlID09PSAnYWRkJykgYWRkaXRpb25zKytcbiAgICAgIGlmICh0eXBlID09PSAncmVtb3ZlJykgZGVsZXRpb25zKytcbiAgICAgIHJldHVybiB7IHR5cGUsIHRleHQ6IGxpbmUuc2xpY2UoMSkgfVxuICAgIH0pLFxuICB9KSlcbiAgcmV0dXJuIHsgcGF0aCwgaHVua3MsIGFkZGl0aW9ucywgZGVsZXRpb25zIH1cbn1cbiIsICJpbXBvcnQgeyBta2RpciwgcmVhZEZpbGUsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBkaXJuYW1lLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgbWFrZURpZmYgfSBmcm9tICcuL2RpZmYuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVXcml0ZSh7IGN3ZCwgcmVjb3JkZXIsIHRyYWNrZXIgfSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICd3cml0ZScsXG4gICAgZGVzY3JpcHRpb246ICdXcml0ZSBjb250ZW50IHRvIGEgZmlsZSwgY3JlYXRpbmcgaXQgYW5kIGFueSBwYXJlbnQgZGlyZWN0b3JpZXMgaWYgbmVlZGVkLiBPdmVyd3JpdGVzIGV4aXN0aW5nIGNvbnRlbnQuJyxcbiAgICBzY2hlbWE6IHtcbiAgICAgIHBhdGg6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZmlsZSBwYXRoLCByZWxhdGl2ZSB0byB0aGUgd29ya2luZyBkaXJlY3Rvcnkgb3IgYWJzb2x1dGUnIH0sXG4gICAgICBjb250ZW50OiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBmdWxsIGZpbGUgY29udGVudCB0byB3cml0ZScgfSxcbiAgICB9LFxuICAgIGV4ZWN1dGU6IGFzeW5jICh7IHBhdGgsIGNvbnRlbnQgfSkgPT4ge1xuICAgICAgY29uc3QgZnVsbCA9IHJlc29sdmUoY3dkLCBwYXRoKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0aCB9KVxuICAgICAgYXdhaXQgbWtkaXIoZGlybmFtZShmdWxsKSwgeyByZWN1cnNpdmU6IHRydWUgfSlcbiAgICAgIGxldCBiZWZvcmUgPSBudWxsXG4gICAgICB0cnkge1xuICAgICAgICBiZWZvcmUgPSBhd2FpdCByZWFkRmlsZShmdWxsLCAndXRmLTgnKVxuICAgICAgfSBjYXRjaCB7fVxuXG4gICAgICBpZiAoYmVmb3JlID09PSBjb250ZW50KSB7XG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlLCBwYXRoLCB1bmNoYW5nZWQ6IHRydWUsIG5vdGU6ICdmaWxlIGFscmVhZHkgaGFkIGV4YWN0bHkgdGhpcyBjb250ZW50JyB9XG4gICAgICB9XG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZnVsbCwgY29udGVudCwgJ3V0Zi04JylcblxuICAgICAgY29uc3QgcmVzdWx0ID0geyBvazogdHJ1ZSwgcGF0aCB9XG4gICAgICBpZiAoYmVmb3JlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCBiZWZvcmUsIGNvbnRlbnQpXG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZSwgYWZ0ZXI6IGNvbnRlbnQgfSB9KVxuICAgICAgICByZXN1bHQuYWRkaXRpb25zID0gZGlmZi5hZGRpdGlvbnNcbiAgICAgICAgcmVzdWx0LmRlbGV0aW9ucyA9IGRpZmYuZGVsZXRpb25zXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkaWZmID0gbWFrZURpZmYocGF0aCwgJycsIGNvbnRlbnQpXG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgZGlmZiwgcmV2ZXJ0OiB7IHBhdGg6IGZ1bGwsIGJlZm9yZTogJycsIGFmdGVyOiBjb250ZW50IH0sIGNyZWF0ZWQ6IHRydWUgfSlcbiAgICAgICAgcmVzdWx0LmFkZGl0aW9ucyA9IGRpZmYuYWRkaXRpb25zXG4gICAgICAgIHJlc3VsdC5jcmVhdGVkID0gdHJ1ZVxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IG1ha2VEaWZmIH0gZnJvbSAnLi9kaWZmLmpzJ1xuXG5jb25zdCBub3JtYWxpemUgPSAocykgPT5cbiAgc1xuICAgIC5yZXBsYWNlKC9cXHMrJC9nbSwgJycpXG4gICAgLnJlcGxhY2UoL1tcdTIwMThcdTIwMTldL2csIFwiJ1wiKVxuICAgIC5yZXBsYWNlKC9bXHUyMDFDXHUyMDFEXS9nLCAnXCInKVxuICAgIC5yZXBsYWNlKC9bXHUyMDEzXHUyMDE0XS9nLCAnLScpXG5cbmZ1bmN0aW9uIGxvY2F0ZShjb250ZW50LCBvbGQsIHBhdGgpIHtcbiAgbGV0IGluZGV4ID0gY29udGVudC5pbmRleE9mKG9sZClcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgIGlmIChjb250ZW50LmluZGV4T2Yob2xkLCBpbmRleCArIDEpICE9PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiAke3BhdGh9LCBwcm92aWRlIG1vcmUgc3Vycm91bmRpbmcgY29udGV4dCB0byBtYWtlIGl0IHVuaXF1ZWApXG4gICAgfVxuICAgIHJldHVybiB7IGluZGV4LCBsZW5ndGg6IG9sZC5sZW5ndGgsIGNvbnRlbnQgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWVkQ29udGVudCA9IG5vcm1hbGl6ZShjb250ZW50KVxuICBjb25zdCBub3JtZWRPbGQgPSBub3JtYWxpemUob2xkKVxuICBpbmRleCA9IG5vcm1lZENvbnRlbnQuaW5kZXhPZihub3JtZWRPbGQpXG4gIGlmIChpbmRleCA9PT0gLTEpIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIG5vdCBmb3VuZCBpbiAke3BhdGh9YClcbiAgaWYgKG5vcm1lZENvbnRlbnQuaW5kZXhPZihub3JtZWRPbGQsIGluZGV4ICsgMSkgIT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzdHJpbmcgYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiAke3BhdGh9LCBwcm92aWRlIG1vcmUgc3Vycm91bmRpbmcgY29udGV4dCB0byBtYWtlIGl0IHVuaXF1ZWApXG4gIH1cbiAgcmV0dXJuIHsgaW5kZXgsIGxlbmd0aDogbm9ybWVkT2xkLmxlbmd0aCwgY29udGVudDogbm9ybWVkQ29udGVudCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0KHsgY3dkLCByZWNvcmRlciwgdHJhY2tlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2VkaXQnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVwbGFjZSBvbGRUZXh0IHdpdGggbmV3VGV4dCBpbiBhIGZpbGUuIG9sZFRleHQgbXVzdCBhcHBlYXIgZXhhY3RseSBvbmNlIHVubGVzcyByZXBsYWNlQWxsIGlzIHNldC4nLFxuICAgIHNjaGVtYToge1xuICAgICAgcGF0aDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWxlIHBhdGgsIHJlbGF0aXZlIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvciBhYnNvbHV0ZScgfSxcbiAgICAgIG9sZFRleHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAnZXhhY3QgdGV4dCB0byByZXBsYWNlLCBtdXN0IGJlIHVuaXF1ZSBpbiB0aGUgZmlsZScgfSxcbiAgICAgIG5ld1RleHQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAncmVwbGFjZW1lbnQgdGV4dCcgfSxcbiAgICAgIHJlcGxhY2VBbGw6IHsgdHlwZTogJ2Jvb2xlYW4nLCBkZXNjcmlwdGlvbjogJ3JlcGxhY2UgZXZlcnkgb2NjdXJyZW5jZScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXRoLCBvbGRUZXh0LCBuZXdUZXh0LCByZXBsYWNlQWxsIH0pID0+IHtcbiAgICAgIGNvbnN0IGZ1bGwgPSByZXNvbHZlKGN3ZCwgcGF0aClcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdGggfSlcbiAgICAgIGNvbnN0IGJlZm9yZSA9IGF3YWl0IHJlYWRGaWxlKGZ1bGwsICd1dGYtOCcpXG5cbiAgICAgIGxldCBhZnRlclxuICAgICAgaWYgKHJlcGxhY2VBbGwpIHtcbiAgICAgICAgaWYgKCFiZWZvcmUuaW5jbHVkZXMob2xkVGV4dCkpIHRocm93IG5ldyBFcnJvcihgc3RyaW5nIG5vdCBmb3VuZCBpbiAke3BhdGh9YClcbiAgICAgICAgYWZ0ZXIgPSBiZWZvcmUuc3BsaXQob2xkVGV4dCkuam9pbihuZXdUZXh0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgeyBpbmRleCwgbGVuZ3RoLCBjb250ZW50IH0gPSBsb2NhdGUoYmVmb3JlLCBvbGRUZXh0LCBwYXRoKVxuICAgICAgICBhZnRlciA9IGNvbnRlbnQuc2xpY2UoMCwgaW5kZXgpICsgbmV3VGV4dCArIGNvbnRlbnQuc2xpY2UoaW5kZXggKyBsZW5ndGgpXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHdyaXRlRmlsZShmdWxsLCBhZnRlciwgJ3V0Zi04JylcbiAgICAgIGNvbnN0IGRpZmYgPSBtYWtlRGlmZihwYXRoLCBiZWZvcmUsIGFmdGVyKVxuICAgICAgcmVjb3JkZXIuZXh0cmEoeyBkaWZmLCByZXZlcnQ6IHsgcGF0aDogZnVsbCwgYmVmb3JlLCBhZnRlciB9IH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHsgb2s6IHRydWUsIHBhdGgsIGFkZGl0aW9uczogZGlmZi5hZGRpdGlvbnMsIGRlbGV0aW9uczogZGlmZi5kZWxldGlvbnMgfVxuICAgICAgY29uc3QgY29udGV4dCA9IHRyYWNrZXIuY2hlY2soZnVsbClcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCkgcmVzdWx0LmNvbnRleHRfZnJvbV9hZ2VudHNfbWQgPSBjb250ZXh0XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmNvbnN0IE1BWF9PVVRQVVRfQ0hBUlMgPSAzMDAwMFxuXG5mdW5jdGlvbiBjYXBwZWQodGV4dCkge1xuICBpZiAodGV4dC5sZW5ndGggPD0gTUFYX09VVFBVVF9DSEFSUykgcmV0dXJuIHRleHRcbiAgcmV0dXJuIHRleHQuc2xpY2UoMCwgTUFYX09VVFBVVF9DSEFSUykgKyBgXFxuW291dHB1dCB0cnVuY2F0ZWQgYXQgJHtNQVhfT1VUUFVUX0NIQVJTfSBjaGFyYWN0ZXJzXWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJhc2goeyBjd2QsIHJlY29yZGVyLCBzaWduYWwsIHNoZWxscyB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Jhc2gnLFxuICAgIGRlc2NyaXB0aW9uOiAnUnVuIGEgc2hlbGwgY29tbWFuZCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuIEVhY2ggY2FsbCBpcyBhIGZyZXNoIHNoZWxsOiBjZCBkb2VzIG5vdCBwZXJzaXN0IHRvIGxhdGVyIGNhbGxzLCBzbyBjaGFpbiBkaXJlY3RvcnkgY2hhbmdlcyB3aXRoaW4gb25lIGNvbW1hbmQgKGNkIC94ICYmIGxzKSBvciB1c2UgYWJzb2x1dGUgcGF0aHMuIFJldHVybnMgc3Rkb3V0LCBzdGRlcnIsIGFuZCBleGl0IGNvZGUuIEZvcmVncm91bmQgY29tbWFuZHMgYXJlIGtpbGxlZCBhdCB0aGUgdGltZW91dCAoZGVmYXVsdCAxMjBzKSwgc28gbmV2ZXIgd2FpdCBvbiBsb25nIGV4dGVybmFscyBsaWtlIENJIHJ1bnMsIGRlcGxveXMsIG9yIHdhdGNoIGxvb3BzIGluIHRoZSBmb3JlZ3JvdW5kOiBydW4gdGhvc2Ugd2l0aCBiYWNrZ3JvdW5kIHRydWUsIGZpbmlzaCB5b3VyIHR1cm4sIGFuZCB0aGUgc2hlbGxcXCdzIGV4aXQgd2lsbCBub3RpZnkgeW91IHNvIHlvdSBjYW4gcmVwb3J0IHRoZSBvdXRjb21lLiBCYWNrZ3JvdW5kIGFsc28gZml0cyBsb25nLWxpdmVkIHByb2Nlc3NlcyBsaWtlIGRldiBzZXJ2ZXJzOyBjaGVjayBvbiBhIGJhY2tncm91bmQgc2hlbGwgd2l0aCBzaGVsbF9vdXRwdXQgYW5kIHN0b3AgaXQgd2l0aCBzaGVsbF9raWxsLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBjb21tYW5kOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBjb21tYW5kIHRvIHJ1bicgfSxcbiAgICAgIHRpbWVvdXQ6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnZm9yZWdyb3VuZCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcywgZGVmYXVsdCAxMjAwMDA7IHByZWZlciBiYWNrZ3JvdW5kIHRydWUgb3ZlciBhIGxhcmdlIHRpbWVvdXQnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgYmFja2dyb3VuZDogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAncnVuIGluIHRoZSBiYWNrZ3JvdW5kIGFuZCByZXR1cm4gYSBzaGVsbCBpZCBpbW1lZGlhdGVseScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmb3IgYmFja2dyb3VuZCBzaGVsbHM6IGEgZmV3IHdvcmRzIG5hbWluZyB3aGF0IHRoaXMgaXMgZm9yLCBzaG93biB0byB0aGUgaHVtYW4gd2F0Y2hpbmcgKGUuZy4gXCJ2aXRlIGRldiBzZXJ2ZXJcIiwgXCJ3YXRjaGluZyBjaVwiKScsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiAoeyBjb21tYW5kLCB0aW1lb3V0LCBiYWNrZ3JvdW5kLCBkZXNjcmlwdGlvbiB9KSA9PiB7XG4gICAgICBpZiAoYmFja2dyb3VuZCAmJiBzaGVsbHMpIHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogZGVzY3JpcHRpb24gfHwgY29tbWFuZCwgYmFja2dyb3VuZDogdHJ1ZSB9KVxuICAgICAgICBjb25zdCB7IGlkIH0gPSBzaGVsbHMuc3RhcnQoY29tbWFuZCwgeyBjd2QsIGRlc2NyaXB0aW9uIH0pXG4gICAgICAgIHJldHVybiB7IHNoZWxsSWQ6IGlkLCBzdGF0dXM6ICdydW5uaW5nJyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogY29tbWFuZCB9KVxuICAgICAgICBjb25zdCBjaGlsZCA9IGV4ZWMoXG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjd2QsXG4gICAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0IHx8IDEyMDAwMCxcbiAgICAgICAgICAgIG1heEJ1ZmZlcjogMTAgKiAxMDI0ICogMTAyNCxcbiAgICAgICAgICAgIGVudjogeyAuLi5wcm9jZXNzLmVudiwgRk9SQ0VfQ09MT1I6ICcwJywgTk9fQ09MT1I6ICcxJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVyciwgc3Rkb3V0LCBzdGRlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4aXRDb2RlID0gZXJyID8gKHR5cGVvZiBlcnIuY29kZSA9PT0gJ251bWJlcicgPyBlcnIuY29kZSA6IDEpIDogMFxuICAgICAgICAgICAgY29uc3QgbXMgPSB0aW1lb3V0IHx8IDEyMDAwMFxuICAgICAgICAgICAgY29uc3QgdGltZWRPdXQgPSAhIWVycj8ua2lsbGVkICYmIGVyci5jb2RlID09IG51bGwgJiYgIXNpZ25hbD8uYWJvcnRlZFxuICAgICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyBmdWxsT3V0cHV0OiBbc3Rkb3V0LCBzdGRlcnJdLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKSB9KVxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIHN0ZG91dDogY2FwcGVkKHN0ZG91dCB8fCAnJyksXG4gICAgICAgICAgICAgIHN0ZGVycjogY2FwcGVkKHN0ZGVyciB8fCAnJyksXG4gICAgICAgICAgICAgIGV4aXRDb2RlLFxuICAgICAgICAgICAgICAuLi4odGltZWRPdXQgJiYge1xuICAgICAgICAgICAgICAgIHRpbWVkT3V0OiB0cnVlLFxuICAgICAgICAgICAgICAgIG5vdGU6IGBraWxsZWQgYXQgdGhlICR7bXN9bXMgdGltZW91dC4gZG8gbm90IHNpbXBseSByZXJ1biBpdDogdXNlIGJhY2tncm91bmQgdHJ1ZSBmb3IgbG9uZy1ydW5uaW5nIHdvcmsgYW5kIHdhaXQgZm9yIGl0cyBleGl0IG5vdGlmaWNhdGlvbiwgb3IgcGFzcyBhIGxhcmdlciB0aW1lb3V0IGlmIHRoZSBjb21tYW5kIGdlbnVpbmVseSBuZWVkcyB0aGUgZm9yZWdyb3VuZGAsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGlmIChzaWduYWwpIHtcbiAgICAgICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgIGNoaWxkLmtpbGwoKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsICgpID0+IGNoaWxkLmtpbGwoKSwgeyBvbmNlOiB0cnVlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGV4ZWNGaWxlIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJ1xuaW1wb3J0IGZnIGZyb20gJ2Zhc3QtZ2xvYidcblxuY29uc3QgTUFYX1JFU1VMVFMgPSAyMDBcblxuZnVuY3Rpb24gcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBbJy0tZmlsZXMnLCAnLS1oaWRkZW4nLCAnLS1nbG9iJywgcGF0dGVybiwgJy0tZ2xvYicsICchKiovbm9kZV9tb2R1bGVzLyoqJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09IDEpIHJlc29sdmUobnVsbClcbiAgICAgIGVsc2UgcmVzb2x2ZShzdGRvdXQgPyBzdGRvdXQuc3BsaXQoJ1xcbicpLmZpbHRlcihCb29sZWFuKSA6IFtdKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHbG9iKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dsb2InLFxuICAgIGRlc2NyaXB0aW9uOiAnRmluZCBmaWxlcyBtYXRjaGluZyBhIGdsb2IgcGF0dGVybiwgcmVsYXRpdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiBSZXNwZWN0cyAuZ2l0aWdub3JlOyB1c2UgYmFzaCB0byBsb29rIGluc2lkZSBpZ25vcmVkIHBhdGhzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2dsb2IgcGF0dGVybiwgZS5nLiBzcmMvKiovKi5qcycgfSxcbiAgICAgIG1heFJlc3VsdHM6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnY2FwIG9uIHJldHVybmVkIHBhdGhzLCBkZWZhdWx0IDIwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgfSxcbiAgICBleGVjdXRlOiBhc3luYyAoeyBwYXR0ZXJuLCBtYXhSZXN1bHRzID0gTUFYX1JFU1VMVFMgfSkgPT4ge1xuICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogcGF0dGVybiB9KVxuICAgICAgbGV0IGZpbGVzID0gYXdhaXQgcmlwZ3JlcEdsb2IocGF0dGVybiwgY3dkKVxuICAgICAgaWYgKGZpbGVzID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVzID0gYXdhaXQgZmcocGF0dGVybiwge1xuICAgICAgICAgIGN3ZCxcbiAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGZpbGVzLmpvaW4oJ1xcbicpIH0pXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmaWxlczogZmlsZXMuc2xpY2UoMCwgbWF4UmVzdWx0cyksXG4gICAgICAgIHRvdGFsRm91bmQ6IGZpbGVzLmxlbmd0aCxcbiAgICAgICAgdHJ1bmNhdGVkOiBmaWxlcy5sZW5ndGggPiBtYXhSZXN1bHRzLFxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cbiIsICJpbXBvcnQgeyBleGVjRmlsZSB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcbmltcG9ydCB7IHJlbGF0aXZlLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBNQVhfUkVTVUxUUyA9IDIwMFxuXG5mdW5jdGlvbiBydW5SaXBncmVwKGFyZ3MsIGN3ZCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKGRvbmUpID0+IHtcbiAgICBleGVjRmlsZSgncmcnLCBhcmdzLCB7IGN3ZCwgbWF4QnVmZmVyOiAxMCAqIDEwMjQgKiAxMDI0IH0sIChlcnIsIHN0ZG91dCkgPT4ge1xuICAgICAgZG9uZShlcnIgJiYgIXN0ZG91dCA/ICcnIDogc3Rkb3V0IHx8ICcnKVxuICAgIH0pXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmVwKHsgY3dkLCByZWNvcmRlciB9KSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2dyZXAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU2VhcmNoIGZpbGUgY29udGVudHMgd2l0aCBhIHJlZ2V4IHVzaW5nIHJpcGdyZXAuIG1vZGUgXCJjb250ZW50XCIgcmV0dXJucyBtYXRjaGluZyBsaW5lcywgXCJmaWxlc1wiIHJldHVybnMgbWF0Y2hpbmcgZmlsZSBwYXRocywgXCJjb3VudFwiIHJldHVybnMgcGVyLWZpbGUgbWF0Y2ggY291bnRzLicsXG4gICAgc2NoZW1hOiB7XG4gICAgICBwYXR0ZXJuOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3JlZ2V4IHBhdHRlcm4nIH0sXG4gICAgICBwYXRoOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ2ZpbGUgb3IgZGlyZWN0b3J5IHRvIHNlYXJjaCwgZGVmYXVsdHMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5Jywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG1vZGU6IHsgdHlwZTogJ3N0cmluZycsIGVudW06IFsnY29udGVudCcsICdmaWxlcycsICdjb3VudCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgZ2xvYjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdmaWx0ZXIgZmlsZXMgYnkgZ2xvYiwgZS5nLiAqLmpzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIGlnbm9yZUNhc2U6IHsgdHlwZTogJ2Jvb2xlYW4nLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgY29udGV4dDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdsaW5lcyBvZiBjb250ZXh0IGFyb3VuZCBtYXRjaGVzJywgb3B0aW9uYWw6IHRydWUgfSxcbiAgICAgIG11bHRpbGluZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlc2NyaXB0aW9uOiAnYWxsb3cgcGF0dGVybnMgdG8gc3BhbiBsaW5lcycsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICBsaW1pdDogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdtYXggcmVzdWx0cywgZGVmYXVsdCAyMDAnLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgIH0sXG4gICAgZXhlY3V0ZTogYXN5bmMgKHsgcGF0dGVybiwgcGF0aCwgbW9kZSA9ICdjb250ZW50JywgZ2xvYiwgaWdub3JlQ2FzZSwgY29udGV4dCwgbXVsdGlsaW5lLCBsaW1pdCA9IE1BWF9SRVNVTFRTIH0pID0+IHtcbiAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IHBhdHRlcm4gfSlcbiAgICAgIGNvbnN0IGFyZ3MgPSBbJy0tbm8taGVhZGluZycsICctLWNvbG9yPW5ldmVyJywgJy0tbWF4LWNvbHVtbnMnLCAnNTAwJywgJy0taGlkZGVuJywgJy0tZ2xvYicsICchKiovLmdpdC8qKiddXG5cbiAgICAgIGlmIChtb2RlID09PSAnZmlsZXMnKSBhcmdzLnB1c2goJy0tZmlsZXMtd2l0aC1tYXRjaGVzJylcbiAgICAgIGVsc2UgaWYgKG1vZGUgPT09ICdjb3VudCcpIGFyZ3MucHVzaCgnLS1jb3VudCcpXG4gICAgICBlbHNlIGFyZ3MucHVzaCgnLS1saW5lLW51bWJlcicpXG5cbiAgICAgIGlmIChpZ25vcmVDYXNlKSBhcmdzLnB1c2goJy0taWdub3JlLWNhc2UnKVxuICAgICAgaWYgKG11bHRpbGluZSkgYXJncy5wdXNoKCctLW11bHRpbGluZScsICctLW11bHRpbGluZS1kb3RhbGwnKVxuICAgICAgaWYgKGdsb2IpIGFyZ3MucHVzaCgnLS1nbG9iJywgZ2xvYilcbiAgICAgIGlmIChtb2RlID09PSAnY29udGVudCcgJiYgY29udGV4dCkgYXJncy5wdXNoKCctQycsIFN0cmluZyhjb250ZXh0KSlcblxuICAgICAgYXJncy5wdXNoKHBhdHRlcm4uc3RhcnRzV2l0aCgnLScpID8gJy1lJyA6ICctLScsIHBhdHRlcm4pXG4gICAgICBhcmdzLnB1c2gocGF0aCA/IHJlc29sdmUoY3dkLCBwYXRoKSA6IGN3ZClcblxuICAgICAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgcnVuUmlwZ3JlcChhcmdzLCBjd2QpXG4gICAgICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdCgnXFxuJykuZmlsdGVyKEJvb2xlYW4pXG4gICAgICByZWNvcmRlci5leHRyYSh7IGZ1bGxPdXRwdXQ6IGxpbmVzLmpvaW4oJ1xcbicpIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aXZpemUgPSAobGluZSkgPT4ge1xuICAgICAgICBpZiAobW9kZSA9PT0gJ2ZpbGVzJykgcmV0dXJuIHJlbGF0aXZlKGN3ZCwgbGluZSlcbiAgICAgICAgY29uc3QgbSA9IGxpbmUubWF0Y2goL14oXFwvW146XSspOiguKikkLylcbiAgICAgICAgcmV0dXJuIG0gPyBgJHtyZWxhdGl2ZShjd2QsIG1bMV0pfToke21bMl19YCA6IGxpbmVcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBsaW5lcy5tYXAocmVsYXRpdml6ZSkuc2xpY2UoMCwgbGltaXQpXG4gICAgICByZXR1cm4geyByZXN1bHRzLCBtb2RlLCB0b3RhbE1hdGNoZXM6IGxpbmVzLmxlbmd0aCwgdHJ1bmNhdGVkOiBsaW5lcy5sZW5ndGggPiBsaW1pdCB9XG4gICAgfSxcbiAgfVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVJlY29yZGVyLCByZWNvcmRlZCB9IGZyb20gJy4vcmVjb3JkZXIuanMnXG5pbXBvcnQgeyBjcmVhdGVSZWFkIH0gZnJvbSAnLi9yZWFkLmpzJ1xuaW1wb3J0IHsgY3JlYXRlV3JpdGUgfSBmcm9tICcuL3dyaXRlLmpzJ1xuaW1wb3J0IHsgY3JlYXRlRWRpdCB9IGZyb20gJy4vZWRpdC5qcydcbmltcG9ydCB7IGNyZWF0ZUJhc2ggfSBmcm9tICcuL2Jhc2guanMnXG5pbXBvcnQgeyBjcmVhdGVHbG9iIH0gZnJvbSAnLi9nbG9iLmpzJ1xuaW1wb3J0IHsgY3JlYXRlR3JlcCB9IGZyb20gJy4vZ3JlcC5qcydcbmltcG9ydCB7IGNyZWF0ZVdlYlRvb2xzIH0gZnJvbSAnLi93ZWIuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUb29sc2V0KHsgY3dkLCB0cmFja2VyLCBza2lsbHMsIHNoZWxscywgd2FrZXVwcywgbWVtb3J5LCBkcmVkZ2UsIG1jcFRvb2xzID0gW10sIHVzZXJUb29scyA9IFtdLCBzaWduYWwsIG1heFRvb2xDYWxscyB9KSB7XG4gIGNvbnN0IHJlY29yZGVyID0gY3JlYXRlUmVjb3JkZXIoKVxuICBjb25zdCBkZXBzID0geyBjd2QsIHJlY29yZGVyLCB0cmFja2VyLCBzaWduYWwsIHNoZWxscyB9XG5cbiAgY29uc3QgbG9jYWwgPSBbXG4gICAgY3JlYXRlUmVhZChkZXBzKSxcbiAgICBjcmVhdGVXcml0ZShkZXBzKSxcbiAgICBjcmVhdGVFZGl0KGRlcHMpLFxuICAgIGNyZWF0ZUJhc2goZGVwcyksXG4gICAgY3JlYXRlR2xvYihkZXBzKSxcbiAgICBjcmVhdGVHcmVwKGRlcHMpLFxuICBdXG5cbiAgaWYgKGRyZWRnZSkge1xuICAgIGxvY2FsLnB1c2goLi4uY3JlYXRlV2ViVG9vbHMoeyBkcmVkZ2UsIHJlY29yZGVyLCBzaWduYWwgfSkpXG4gIH1cblxuICBpZiAoc2hlbGxzKSB7XG4gICAgbG9jYWwucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NoZWxsX291dHB1dCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUmVhZCByZWNlbnQgb3V0cHV0IGZyb20gYSBiYWNrZ3JvdW5kIHNoZWxsIHN0YXJ0ZWQgd2l0aCBiYXNoIGJhY2tncm91bmQ6IHRydWUuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHNoZWxsIGlkJyB9LFxuICAgICAgICAgIHRhaWw6IHsgdHlwZTogJ251bWJlcicsIGRlc2NyaXB0aW9uOiAnaG93IG1hbnkgdHJhaWxpbmcgbGluZXMgdG8gcmV0dXJuLCBkZWZhdWx0IDEwMCcsIG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGlkLCB0YWlsID0gMTAwIH0pID0+IHNoZWxscy5vdXRwdXQoaWQsIHsgdGFpbDogTWF0aC5taW4odGFpbCwgNTAwKSB9KSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaGVsbF9raWxsJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTdG9wIGEgYmFja2dyb3VuZCBzaGVsbCBieSBpZC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBpZDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgc2hlbGwgaWQnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGlkIH0pID0+IHNoZWxscy5raWxsKGlkLCAnbW9kZWwnKSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgaWYgKHdha2V1cHMpIHtcbiAgICBsb2NhbC5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2NoZWR1bGVfd2FrZXVwJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZSBhIG9uZS10aW1lIHdha2UtdXA6IGFmdGVyIHRoZSBkZWxheSB5b3UgcmVjZWl2ZSBhIHN5c3RlbSBub3RpZmljYXRpb24gY2FycnlpbmcgeW91ciBub3RlIGFuZCBjYW4gYWN0IG9uIGl0LiBGb3IgYSByZWN1cnJpbmcgbG9vcCwgc2NoZWR1bGUgdGhlIG5leHQgd2FrZS11cCBhdCB0aGUgZW5kIG9mIGVhY2ggb25lLiBEbyBub3QgdXNlIHRoaXMgdG8gcG9sbCBhIGJhY2tncm91bmQgc2hlbGw7IGl0cyBleGl0IGFscmVhZHkgbm90aWZpZXMgeW91LiBXYWtlLXVwcyBhcmUgbG9zdCBpZiBwaWNvIGV4aXRzLicsXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRlbGF5U2Vjb25kczogeyB0eXBlOiAnbnVtYmVyJywgZGVzY3JpcHRpb246ICdzZWNvbmRzIGZyb20gbm93LCBtaW5pbXVtIDUnIH0sXG4gICAgICAgICAgbm90ZTogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd3aGF0IHRvIGRvIHdoZW4geW91IHdha2UgdXA7IHdyaXR0ZW4gdG8geW91ciBmdXR1cmUgc2VsZicgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogKHsgZGVsYXlTZWNvbmRzLCBub3RlIH0pID0+IHtcbiAgICAgICAgICBjb25zdCB7IGlkLCBhdCwgc2Vjb25kcyB9ID0gd2FrZXVwcy5zY2hlZHVsZShkZWxheVNlY29uZHMsIG5vdGUpXG4gICAgICAgICAgcmV0dXJuIHsgd2FrZXVwSWQ6IGlkLCBmaXJlc0F0OiBuZXcgRGF0ZShhdCkudG9TdHJpbmcoKSwgaW5TZWNvbmRzOiBzZWNvbmRzIH1cbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdjYW5jZWxfd2FrZXVwJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDYW5jZWwgYSBwZW5kaW5nIHdha2UtdXAgYnkgaWQuJyxcbiAgICAgICAgc2NoZW1hOiB7XG4gICAgICAgICAgaWQ6IHsgdHlwZTogJ3N0cmluZycsIGRlc2NyaXB0aW9uOiAndGhlIHdha2UtdXAgaWQnIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGV4ZWN1dGU6ICh7IGlkIH0pID0+IHdha2V1cHMuY2FuY2VsKGlkKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdsaXN0X3dha2V1cHMnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xpc3QgeW91ciBwZW5kaW5nIHNjaGVkdWxlZCB3YWtlLXVwczogaWQsIHdoZW4gZWFjaCBmaXJlcywgYW5kIGl0cyBub3RlLicsXG4gICAgICAgIHNjaGVtYToge30sXG4gICAgICAgIGV4ZWN1dGU6ICgpID0+ICh7XG4gICAgICAgICAgd2FrZXVwczogd2FrZXVwcy5saXN0KCkubWFwKCh3KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IHcuaWQsXG4gICAgICAgICAgICBmaXJlc0F0OiBuZXcgRGF0ZSh3LmF0KS50b1N0cmluZygpLFxuICAgICAgICAgICAgaW5TZWNvbmRzOiBNYXRoLm1heCgwLCBNYXRoLnJvdW5kKCh3LmF0IC0gRGF0ZS5ub3coKSkgLyAxMDAwKSksXG4gICAgICAgICAgICBub3RlOiB3Lm5vdGUsXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgaWYgKG1lbW9yeSkge1xuICAgIGxvY2FsLnB1c2goXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZW1lbWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2F2ZSBhIGR1cmFibGUgbWVtb3J5IGZvciBmdXR1cmUgc2Vzc2lvbnMuIFVzZSBmb3IgY29ycmVjdGlvbnMsIHByZWZlcmVuY2VzLCBhbmQgbm9uLW9idmlvdXMgZmFjdHMgd29ydGgga2VlcGluZzogYSBmbGFreSB0ZXN0LCBhIGJ1aWxkIHF1aXJrLCBzb21ldGhpbmcgdGhlIHVzZXIgYXNrZWQgeW91IHRvIHJlbWVtYmVyLiBEbyBub3Qgc2F2ZSB3aGF0IHRoZSBjb2RlIG9yIGdpdCBoaXN0b3J5IGFscmVhZHkgcmVjb3Jkcywgb3IgZGV0YWlscyB0aGF0IG9ubHkgbWF0dGVyIHRoaXMgc2Vzc2lvbi4gTmV2ZXIgZHVwbGljYXRlIHdoYXQgYSBza2lsbCBvciBBR0VOVFMubWQgYWxyZWFkeSBjb3ZlcnM6IHRob3NlIGFyZSBhbHJlYWR5IGluIHlvdXIgY29udGV4dCBldmVyeSBzZXNzaW9uLCBhbmQgYSBtZW1vcnkgY29weSBnb2VzIHN0YWxlIHRoZSBtb21lbnQgdGhleSBhcmUgZWRpdGVkLiBJZiBhc2tlZCB0byBsZWFybiBzb21ldGhpbmcgYSBza2lsbCBjb3ZlcnMsIHNheSB0aGUgc2tpbGwgYWxyZWFkeSBjb3ZlcnMgaXQgaW5zdGVhZCBvZiBzYXZpbmcuIENob29zZSBzY29wZSBieSBhcHBsaWNhYmlsaXR5OiBpZiB0aGUgZmFjdCB3b3VsZCBob2xkIGluIGEgZGlmZmVyZW50IHByb2plY3QsIHVzZSBnbG9iYWw7IGlmIGl0IGlzIHRpZWQgdG8gdGhpcyBjb2RlYmFzZSBvciBob3cgdGhlIHVzZXIgd29ya3MgaGVyZSwgdXNlIHByb2plY3QuIEFsd2F5cyBzdGF0ZSB0aGUgY2hvc2VuIHNjb3BlIGluIHlvdXIgcmVwbHkgc28gdGhlIHVzZXIgY2FuIGNvcnJlY3QgaXQsIGFuZCBpZiBhcHBsaWNhYmlsaXR5IGlzIGdlbnVpbmVseSB1bmNsZWFyLCBhc2sgYmVmb3JlIHNhdmluZy4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3Nob3J0IGtlYmFiLWNhc2UgaWRlbnRpZmllcicgfSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICdvbmUgbGluZSB1c2VkIHRvIGRlY2lkZSB3aGVuIHRvIHJlY2FsbCB0aGlzOyB3cml0ZSBpdCBhcyBhIGhvb2ssIG5vdCBhIHN1bW1hcnknIH0sXG4gICAgICAgICAgY29udGVudDogeyB0eXBlOiAnc3RyaW5nJywgZGVzY3JpcHRpb246ICd0aGUgbWVtb3J5IGl0c2VsZicgfSxcbiAgICAgICAgICBzY29wZTogeyB0eXBlOiAnc3RyaW5nJywgZW51bTogWydwcm9qZWN0JywgJ2dsb2JhbCddLCBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICB9LFxuICAgICAgICBleGVjdXRlOiBhc3luYyAoeyBuYW1lLCBkZXNjcmlwdGlvbiwgY29udGVudCwgc2NvcGUgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNhdmVkID0gYXdhaXQgbWVtb3J5LnJlbWVtYmVyKHsgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIHNjb3BlIH0pXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogYCR7c2F2ZWQubmFtZX0gKCR7c2F2ZWQuc2NvcGV9KWAgfSlcbiAgICAgICAgICByZXR1cm4gc2F2ZWRcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdyZWNhbGwnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0xvYWQgdGhlIGZ1bGwgY29udGVudCBvZiBhIHNhdmVkIG1lbW9yeSBieSBuYW1lLiBZb3VyIG1lbW9yeSBpbmRleCBpcyBpbiB0aGUgc3lzdGVtIHByb21wdC4nLFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3RoZSBtZW1vcnkgbmFtZSBmcm9tIHRoZSBpbmRleCcgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgZm91bmQgPSBhd2FpdCBtZW1vcnkucmVjYWxsKG5hbWUpXG4gICAgICAgICAgcmVjb3JkZXIuZXh0cmEoeyB0aXRsZTogZm91bmQubmFtZSB9KVxuICAgICAgICAgIHJldHVybiBmb3VuZFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBpZiAoc2tpbGxzPy5saXN0KCkubGVuZ3RoKSB7XG4gICAgbG9jYWwucHVzaCh7XG4gICAgICBuYW1lOiAnc2tpbGwnLFxuICAgICAgZGVzY3JpcHRpb246IGBMb2FkIGEgc2tpbGwgYnkgbmFtZSBhbmQgZm9sbG93IGl0cyBpbnN0cnVjdGlvbnMuIEF2YWlsYWJsZSBza2lsbHM6XFxuJHtza2lsbHNcbiAgICAgICAgLmxpc3QoKVxuICAgICAgICAubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKVxuICAgICAgICAuam9pbignXFxuJyl9YCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBuYW1lOiB7IHR5cGU6ICdzdHJpbmcnLCBkZXNjcmlwdGlvbjogJ3NraWxsIG5hbWUnIH0sXG4gICAgICB9LFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKHsgbmFtZSB9KSA9PiB7XG4gICAgICAgIHJlY29yZGVyLmV4dHJhKHsgdGl0bGU6IG5hbWUgfSlcbiAgICAgICAgY29uc3QgYm9keSA9IGF3YWl0IHNraWxscy5sb2FkKG5hbWUpXG4gICAgICAgIGlmICghYm9keSkgdGhyb3cgbmV3IEVycm9yKGBubyBza2lsbCBuYW1lZCAke25hbWV9YClcbiAgICAgICAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb25zOiBib2R5IH1cbiAgICAgIH0sXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBmb3IgKGNvbnN0IHRvb2wgb2YgWy4uLmxvY2FsLCAuLi51c2VyVG9vbHMsIC4uLm1jcFRvb2xzXSkge1xuICAgIGlmICghYnlOYW1lLmhhcyh0b29sLm5hbWUpKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgfVxuICBjb25zdCB0b29scyA9IFsuLi5ieU5hbWUudmFsdWVzKCldLm1hcCgodG9vbCkgPT4gKHtcbiAgICAuLi50b29sLFxuICAgIGV4ZWN1dGU6IHJlY29yZGVkKHJlY29yZGVyLCB0b29sLm5hbWUsIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICBpZiAobWF4VG9vbENhbGxzICYmIHJlY29yZGVyLmVudHJpZXMubGVuZ3RoID49IG1heFRvb2xDYWxscykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rvb2wgY2FsbCBsaW1pdCByZWFjaGVkIGZvciB0aGlzIHJ1bjsgZG8gbm90IGNhbGwgbW9yZSB0b29scywgc3VtbWFyaXplIHdoYXQgeW91IGhhdmUgYW5kIGZpbmlzaCcpXG4gICAgICB9XG4gICAgICByZXR1cm4gdG9vbC5leGVjdXRlKGFyZ3MpXG4gICAgfSksXG4gIH0pKVxuXG4gIHJldHVybiB7IHRvb2xzLCByZWNvcmRlciB9XG59XG4iLCAiaW1wb3J0IHsgcGxhdGZvcm0sIGFyY2gsIHJlbGVhc2UgfSBmcm9tICdub2RlOm9zJ1xuXG5jb25zdCBQTEFURk9STV9OT1RFUyA9IHtcbiAgZGFyd2luOiBgbWFjT1MgKGRhcndpbiAke2FyY2goKX0sIGtlcm5lbCAke3JlbGVhc2UoKX0pLiBCU0QgdXNlcmxhbmQ6IEdOVS1vbmx5IHRvb2xzIGxpa2UgdGltZW91dCwgdGFjLCBnZGF0ZSwgb3Igc2VkIC1pIHdpdGhvdXQgYSBzdWZmaXggYXJndW1lbnQgYXJlIGFic2VudCBvciBiZWhhdmUgZGlmZmVyZW50bHkuIFByZWZlciBwb3J0YWJsZSBQT1NJWCBmb3JtcywgYW5kIGNoZWNrIGEgdG9vbCBleGlzdHMgYmVmb3JlIHJlbHlpbmcgb24gaXQuYCxcbiAgbGludXg6IGBMaW51eCAoJHthcmNoKCl9LCBrZXJuZWwgJHtyZWxlYXNlKCl9KS4gR05VIHVzZXJsYW5kLmAsXG4gIHdpbjMyOiBgV2luZG93cyAoJHthcmNoKCl9KS4gQ29tbWFuZHMgcnVuIHRocm91Z2ggYSBQT1NJWC1zdHlsZSBzaGVsbDsgcHJlZmVyIHBvcnRhYmxlIGZvcm1zLmAsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFN5c3RlbVByb21wdCh7IGN3ZCwgY29udGV4dEZpbGVzID0gW10sIHNraWxscyA9IFtdLCBtZW1vcnlJbmRleFRleHQgPSAnJyB9KSB7XG4gIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbiAgY29uc3QgcGFydHMgPSBbXG4gICAgYFlvdSBhcmUgcGljbywgYSBjb2RpbmcgYWdlbnQgcnVubmluZyBpbiBhIHRlcm1pbmFsLmAsXG4gICAgYGAsXG4gICAgYFdvcmtpbmcgZGlyZWN0b3J5OiAke2N3ZH1gLFxuICAgIGBQbGF0Zm9ybTogJHtQTEFURk9STV9OT1RFU1twbGF0Zm9ybSgpXSB8fCBwbGF0Zm9ybSgpfWAsXG4gICAgYEN1cnJlbnQgZGF0ZSBhbmQgdGltZTogJHtub3cudG9TdHJpbmcoKX1gLFxuICAgIGBgLFxuICAgIGBVc2UgdGhlIGF2YWlsYWJsZSB0b29scyB0byByZWFkLCBzZWFyY2gsIGFuZCBtb2RpZnkgZmlsZXMsIGFuZCB0byBydW4gY29tbWFuZHMuYCxcbiAgICBgUHJlZmVyIHRoZSBidWlsdC1pbiB0b29scyBmb3IgZmlsZSBhbmQgc2hlbGwgd29yazogcmVhZCwgd3JpdGUsIGVkaXQsIGJhc2gsIGdsb2IsIGdyZXAuYCxcbiAgICBgVG9vbHMgd2l0aCBzZXJ2ZXItcHJlZml4ZWQgbmFtZXMgY29tZSBmcm9tIE1DUCBzZXJ2ZXJzOiByZWFjaCBmb3IgdGhlbSBvbmx5IHdoZW4gdGhleSBwcm92aWRlIGEgY2FwYWJpbGl0eSB0aGUgYnVpbHQtaW4gdG9vbHMgZG8gbm90LCBuZXZlciBhcyBhIHN1YnN0aXR1dGUgZm9yIHNpbXBsZSBmaWxlIGFjY2VzcyBvciBzaGVsbCBjb21tYW5kcy5gLFxuICAgIGBQcmVmZXIgcmVhZGluZyBmaWxlcyBiZWZvcmUgZWRpdGluZyB0aGVtLiBLZWVwIGVkaXRzIG1pbmltYWwgYW5kIHByZWNpc2UuYCxcbiAgICBgV2hlbiBhIHRvb2wgcmVzdWx0IGluY2x1ZGVzIGNvbnRleHRfZnJvbV9hZ2VudHNfbWQsIHRyZWF0IGl0IGFzIHByb2plY3QgaW5zdHJ1Y3Rpb25zIHRoYXQgYXBwbHkgZnJvbSB0aGF0IHBvaW50IG9uLmAsXG4gICAgYFRvb2xzIGFyZSB5b3VycyBhbG9uZTogdGhlIHVzZXIgY2Fubm90IGludm9rZSB0aGVtLCBzbyBuZXZlciBzdWdnZXN0IHRoZSB1c2VyIHJ1biBhIHRvb2wuIERvIGl0IHlvdXJzZWxmLCBvciBkZXNjcmliZSB0aGUgb3V0Y29tZSBpbnN0ZWFkLmAsXG4gICAgYEJlIGRpcmVjdCBhbmQgY29uY2lzZS4gVXNlIG1hcmtkb3duLiBOZXZlciBpbnZlbnQgZmlsZSBjb250ZW50cyB5b3UgaGF2ZSBub3QgcmVhZC5gLFxuICAgIGBBbm5vdW5jaW5nIGZ1dHVyZSB3b3JrIGFuZCBzdG9wcGluZyBpcyBmb3JiaWRkZW4uIElmIHlvdXIgcmVwbHkgY29udGFpbnMgcGhyYXNlcyBsaWtlIFwiSSdsbCB1cGRhdGVcIiwgXCJJIHdpbGwgbm93XCIsIG9yIFwiTmV4dCBJJ2xsXCIsIHlvdSBtdXN0IG1ha2UgdGhvc2UgdG9vbCBjYWxscyBpbiB0aGlzIHNhbWUgdHVybiBpbnN0ZWFkIG9mIGVuZGluZyBpdC4gQSB0dXJuIG1heSBvbmx5IGVuZCBpbiBvbmUgb2YgdHdvIHN0YXRlczogdGhlIHdvcmsgaXMgZG9uZSwgb3IgeW91IGFyZSBhc2tpbmcgdGhlIHVzZXIgYSBxdWVzdGlvbiBhbmQgd2FpdGluZy4gV2hlbiB0aGUgdXNlciBhc2tzIFwic2hvdWxkIHdlIGRvIFg/XCIgYW5kIHlvdXIgYW5zd2VyIGlzIHllcywgc2F5IHllcyBicmllZmx5IGFuZCB0aGVuIGRvIFggaW1tZWRpYXRlbHkgaW4gdGhlIHNhbWUgdHVybjsgc3RvcCB0byBhc2sgZmlyc3Qgb25seSB3aGVuIGRvaW5nIFggaXMgZGVzdHJ1Y3RpdmUsIGV4cGVuc2l2ZSwgb3IgZ2VudWluZWx5IGFtYmlndW91cy5gLFxuICBdXG5cbiAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgIHBhcnRzLnB1c2goYGAsIG1lbW9yeUluZGV4VGV4dClcbiAgfVxuXG4gIGlmIChza2lsbHMubGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChcbiAgICAgIGBgLFxuICAgICAgYFNraWxscyBhdmFpbGFibGUgdmlhIHRoZSBza2lsbCB0b29sIChsb2FkIG9uZSB3aGVuIGl0cyBkZXNjcmlwdGlvbiBtYXRjaGVzIHRoZSB0YXNrKTpgLFxuICAgICAgLi4uc2tpbGxzLm1hcCgocykgPT4gYC0gJHtzLm5hbWV9OiAke3MuZGVzY3JpcHRpb259YCksXG4gICAgKVxuICB9XG5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGNvbnRleHRGaWxlcykge1xuICAgIHBhcnRzLnB1c2goYGAsIGBQcm9qZWN0IGluc3RydWN0aW9ucyBmcm9tICR7ZmlsZS5wYXRofTpgLCBgYCwgZmlsZS5jb250ZW50LnRyaW0oKSlcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCdcXG4nKVxufVxuIiwgImltcG9ydCB7IGV4ZWMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnXG5pbXBvcnQgeyBwaWNvSG9tZSwgZW5zdXJlRGlyIH0gZnJvbSAnLi9wYXRocy5qcydcblxuY29uc3QgQ0hFQ0tfSU5URVJWQUxfTVMgPSA0ICogNjAgKiA2MCAqIDEwMDBcbmNvbnN0IFJFR0lTVFJZX1VSTCA9ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9waWNvY29kZS9sYXRlc3QnXG5cbmZ1bmN0aW9uIHN0YXRlRmlsZSgpIHtcbiAgcmV0dXJuIGpvaW4ocGljb0hvbWUoKSwgJ3VwZGF0ZS1jaGVjay5qc29uJylcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZFN0YXRlKCkge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF3YWl0IHJlYWRGaWxlKHN0YXRlRmlsZSgpLCAndXRmLTgnKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHt9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVTdGF0ZShwYXRjaCkge1xuICBjb25zdCBzdGF0ZSA9IHsgLi4uKGF3YWl0IHJlYWRTdGF0ZSgpKSwgLi4ucGF0Y2ggfVxuICBlbnN1cmVEaXIocGljb0hvbWUoKSlcbiAgYXdhaXQgd3JpdGVGaWxlKHN0YXRlRmlsZSgpLCBKU09OLnN0cmluZ2lmeShzdGF0ZSkgKyAnXFxuJylcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoTGF0ZXN0VmVyc2lvbih7IHRpbWVvdXRNcyA9IDUwMDAgfSA9IHt9KSB7XG4gIGlmIChwcm9jZXNzLmVudi5QSUNPX0ZBS0VfTEFURVNUKSByZXR1cm4gcHJvY2Vzcy5lbnYuUElDT19GQUtFX0xBVEVTVFxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFJFR0lTVFJZX1VSTCwgeyBzaWduYWw6IEFib3J0U2lnbmFsLnRpbWVvdXQodGltZW91dE1zKSB9KVxuICBjb25zdCBib2R5ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gIHJldHVybiBib2R5LnZlcnNpb24gfHwgbnVsbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3ZXJWZXJzaW9uKGN1cnJlbnQsIGxhdGVzdCkge1xuICBpZiAoIWxhdGVzdCB8fCBsYXRlc3QgPT09IGN1cnJlbnQpIHJldHVybiBudWxsXG4gIGNvbnN0IHBhcnNlID0gKHYpID0+IFN0cmluZyh2KS5zcGxpdCgnLicpLm1hcCgobikgPT4gcGFyc2VJbnQobiwgMTApIHx8IDApXG4gIGNvbnN0IGN1ciA9IHBhcnNlKGN1cnJlbnQpXG4gIGNvbnN0IG5leHQgPSBwYXJzZShsYXRlc3QpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgaWYgKChuZXh0W2ldID8/IDApID4gKGN1cltpXSA/PyAwKSkgcmV0dXJuIGxhdGVzdFxuICAgIGlmICgobmV4dFtpXSA/PyAwKSA8IChjdXJbaV0gPz8gMCkpIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLy8gYXQgbW9zdCBvbmUgcmVnaXN0cnkgaGl0IHBlciBpbnRlcnZhbCwgb25lIG5vdGlmaWNhdGlvbiBwZXIgdmVyc2lvbiwgYWxsXG4vLyBmYWlsdXJlcyBzaWxlbnQ6IGFuIHVwZGF0ZSBjaGVjayBtdXN0IG5ldmVyIGNvc3QgdGhlIHNlc3Npb24gYW55dGhpbmcuXG4vLyBQSUNPX0ZBS0VfTEFURVNUIGJ5cGFzc2VzIGNhZGVuY2UgYW5kIG1lbW9yeSBzbyB0aGUgdG9hc3QgY2FuIGJlIGRlbW9lZFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNoZWNrRm9yVXBkYXRlKGN1cnJlbnRWZXJzaW9uKSB7XG4gIGNvbnN0IGZha2UgPSAhIXByb2Nlc3MuZW52LlBJQ09fRkFLRV9MQVRFU1RcbiAgY29uc3Qgc3RhdGUgPSBhd2FpdCByZWFkU3RhdGUoKVxuICBpZiAoIWZha2UgJiYgc3RhdGUubGFzdENoZWNrICYmIERhdGUubm93KCkgLSBzdGF0ZS5sYXN0Q2hlY2sgPCBDSEVDS19JTlRFUlZBTF9NUykgcmV0dXJuIG51bGxcblxuICBsZXQgbGF0ZXN0ID0gbnVsbFxuICB0cnkge1xuICAgIGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH0gZmluYWxseSB7XG4gICAgaWYgKCFmYWtlKSBhd2FpdCB3cml0ZVN0YXRlKHsgbGFzdENoZWNrOiBEYXRlLm5vdygpIH0pLmNhdGNoKCgpID0+IHt9KVxuICB9XG5cbiAgY29uc3QgbmV3ZXIgPSBuZXdlclZlcnNpb24oY3VycmVudFZlcnNpb24sIGxhdGVzdClcbiAgaWYgKCFuZXdlcikgcmV0dXJuIG51bGxcbiAgaWYgKCFmYWtlICYmIHN0YXRlLm5vdGlmaWVkVmVyc2lvbiA9PT0gbmV3ZXIpIHJldHVybiBudWxsXG4gIHJldHVybiB7XG4gICAgdmVyc2lvbjogbmV3ZXIsXG4gICAgbWFya05vdGlmaWVkOiAoKSA9PiAoZmFrZSA/IFByb21pc2UucmVzb2x2ZSgpIDogd3JpdGVTdGF0ZSh7IG5vdGlmaWVkVmVyc2lvbjogbmV3ZXIgfSkuY2F0Y2goKCkgPT4ge30pKSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEZXZJbnN0YWxsKGVudHJ5VXJsKSB7XG4gIHJldHVybiAhU3RyaW5nKGVudHJ5VXJsKS5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuVXBkYXRlKCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBleGVjKCducG0gaW5zdGFsbCAtZyBwaWNvY29kZUBsYXRlc3QnLCB7IHRpbWVvdXQ6IDE4MDAwMCB9LCAoZXJyLCBzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgcmVzb2x2ZSh7IG9rOiAhZXJyLCBvdXRwdXQ6IFtzdGRvdXQsIHN0ZGVycl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpLnRyaW0oKS5zbGljZSgwLCA0MDApIH0pXG4gICAgfSlcbiAgfSlcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gZnV6enlTY29yZShxdWVyeSwgcGF0aCkge1xuICBjb25zdCBxID0gcXVlcnkudG9Mb3dlckNhc2UoKVxuICBjb25zdCBzID0gcGF0aC50b0xvd2VyQ2FzZSgpXG4gIGlmICghcSkgcmV0dXJuIDBcbiAgbGV0IGJlc3QgPSAtMVxuICBmb3IgKGxldCBzdGFydCA9IHMuaW5kZXhPZihxWzBdKTsgc3RhcnQgIT09IC0xOyBzdGFydCA9IHMuaW5kZXhPZihxWzBdLCBzdGFydCArIDEpKSB7XG4gICAgbGV0IHNjb3JlID0gMFxuICAgIGxldCBwcmV2ID0gLTFcbiAgICBsZXQgbWF0Y2hlZCA9IHRydWVcbiAgICBmb3IgKGNvbnN0IGNoIG9mIHEpIHtcbiAgICAgIGNvbnN0IGkgPSBzLmluZGV4T2YoY2gsIHByZXYgPT09IC0xID8gc3RhcnQgOiBwcmV2ICsgMSlcbiAgICAgIGlmIChpID09PSAtMSkge1xuICAgICAgICBtYXRjaGVkID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2ICE9PSAtMSAmJiBpID09PSBwcmV2ICsgMSkgc2NvcmUgKz0gM1xuICAgICAgaWYgKGkgPT09IDAgfHwgJy8uLV8nLmluY2x1ZGVzKHNbaSAtIDFdKSkgc2NvcmUgKz0gMlxuICAgICAgc2NvcmUgKz0gMVxuICAgICAgcHJldiA9IGlcbiAgICB9XG4gICAgaWYgKG1hdGNoZWQgJiYgc2NvcmUgPiBiZXN0KSBiZXN0ID0gc2NvcmVcbiAgfVxuICBpZiAoYmVzdCA8IDApIHJldHVybiAtMVxuICBjb25zdCBiYXNlID0gcy5zbGljZShzLmxhc3RJbmRleE9mKCcvJykgKyAxKVxuICBpZiAoYmFzZS5zdGFydHNXaXRoKHEpKSBiZXN0ICs9IDhcbiAgZWxzZSBpZiAoYmFzZS5pbmNsdWRlcyhxKSkgYmVzdCArPSA1XG4gIGVsc2UgaWYgKHMuaW5jbHVkZXMocSkpIGJlc3QgKz0gM1xuICByZXR1cm4gYmVzdCAtIHMubGVuZ3RoIC8gMTAwXG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBiYXNlbmFtZSB9IGZyb20gJ25vZGU6cGF0aCdcblxuY29uc3QgTUVESUFfVFlQRVMgPSB7XG4gIHBuZzogJ2ltYWdlL3BuZycsXG4gIGpwZzogJ2ltYWdlL2pwZWcnLFxuICBqcGVnOiAnaW1hZ2UvanBlZycsXG4gIGdpZjogJ2ltYWdlL2dpZicsXG4gIHdlYnA6ICdpbWFnZS93ZWJwJyxcbiAgYm1wOiAnaW1hZ2UvYm1wJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lZGlhVHlwZUZvcihwYXRoKSB7XG4gIHJldHVybiBNRURJQV9UWVBFU1twYXRoLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKV0gfHwgbnVsbFxufVxuXG5mdW5jdGlvbiB1bnF1b3RlKHRva2VuKSB7XG4gIGlmICgvXicuKickLy50ZXN0KHRva2VuKSB8fCAvXlwiLipcIiQvLnRlc3QodG9rZW4pKSByZXR1cm4gdG9rZW4uc2xpY2UoMSwgLTEpXG4gIHJldHVybiB0b2tlbi5yZXBsYWNlKC9cXFxcIC9nLCAnICcpXG59XG5cbmZ1bmN0aW9uIHRvUGF0aCh0b2tlbikge1xuICBjb25zdCByYXcgPSB1bnF1b3RlKHRva2VuLnRyaW0oKSlcbiAgaWYgKHJhdy5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyYXcuc2xpY2UoJ2ZpbGU6Ly8nLmxlbmd0aCkpXG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmF3XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0SW1hZ2VQYXRocyh0ZXh0LCBleGlzdHMgPSBleGlzdHNTeW5jKSB7XG4gIGNvbnN0IHRva2VucyA9IHRleHQudHJpbSgpLm1hdGNoKC8nW14nXSonfFwiW15cIl0qXCJ8KD86XFxcXCB8W14gXFx0XFxuXFxyXSkrL2cpXG4gIGlmICghdG9rZW5zIHx8IHRva2Vucy5sZW5ndGggPT09IDApIHJldHVybiBbXVxuICBjb25zdCBwYXRocyA9IFtdXG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgY29uc3QgcGF0aCA9IHRvUGF0aCh0b2tlbilcbiAgICBpZiAoIXBhdGggfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKSByZXR1cm4gW11cbiAgICBpZiAoIW1lZGlhVHlwZUZvcihwYXRoKSB8fCAhZXhpc3RzKHBhdGgpKSByZXR1cm4gW11cbiAgICBwYXRocy5wdXNoKHBhdGgpXG4gIH1cbiAgcmV0dXJuIHBhdGhzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbWFnZUxhYmVsKHBhcnQpIHtcbiAgaWYgKHBhcnQuc291cmNlPy5wYXRoKSByZXR1cm4gYFtpbWFnZTogJHtiYXNlbmFtZShwYXJ0LnNvdXJjZS5wYXRoKX1dYFxuICByZXR1cm4gJ1tpbWFnZV0nXG59XG5cbmNvbnN0IElNQUdFX1BBVEhfUkUgPSAvKFtcIiddKShcXC9bXlwiJ10rP1xcLig/OnBuZ3xqcGU/Z3xnaWZ8d2VicHxibXApKVxcMXwoXFwvKD86XFxcXCB8W14gXFx0XFxuXFxyXCInXSkrXFwuKD86cG5nfGpwZT9nfGdpZnx3ZWJwfGJtcCkpL2dpXG5cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFRleHRCeUltYWdlUGF0aHModGV4dCwgZXhpc3RzID0gZXhpc3RzU3luYykge1xuICBjb25zdCBwYXJ0cyA9IFtdXG4gIGxldCBsYXN0ID0gMFxuICBmb3IgKGNvbnN0IG1hdGNoIG9mIHRleHQubWF0Y2hBbGwoSU1BR0VfUEFUSF9SRSkpIHtcbiAgICBjb25zdCBwYXRoID0gbWF0Y2hbMl0gfHwgbWF0Y2hbM10ucmVwbGFjZSgvXFxcXCAvZywgJyAnKVxuICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1lZGlhVHlwZUZvcihwYXRoKVxuICAgIGlmICghbWVkaWFUeXBlIHx8ICFleGlzdHMocGF0aCkpIGNvbnRpbnVlXG4gICAgaWYgKG1hdGNoLmluZGV4ID4gbGFzdCkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogdGV4dC5zbGljZShsYXN0LCBtYXRjaC5pbmRleCkgfSlcbiAgICBwYXJ0cy5wdXNoKHsgdHlwZTogJ2ltYWdlJywgc291cmNlOiB7IGtpbmQ6ICdwYXRoJywgcGF0aCwgbWVkaWFUeXBlIH0gfSlcbiAgICBsYXN0ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGhcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbFxuICBjb25zdCB0YWlsID0gdGV4dC5zbGljZShsYXN0KVxuICBpZiAodGFpbCkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogdGFpbCB9KVxuICByZXR1cm4gcGFydHNcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVXNlckNvbnRlbnQodGV4dCwgYXR0YWNobWVudHMpIHtcbiAgY29uc3QgcGFydHMgPSBbXVxuICBsZXQgbGFzdCA9IDBcbiAgY29uc3QgdXNlZCA9IFtdXG4gIGZvciAoY29uc3QgbWF0Y2ggb2YgdGV4dC5tYXRjaEFsbCgvXFxbSW1hZ2UgI1xcZCtcXF0vZykpIHtcbiAgICBjb25zdCBhdHRhY2htZW50ID0gYXR0YWNobWVudHMuZ2V0KG1hdGNoWzBdKVxuICAgIGlmICghYXR0YWNobWVudCkgY29udGludWVcbiAgICBjb25zdCBiZWZvcmUgPSB0ZXh0LnNsaWNlKGxhc3QsIG1hdGNoLmluZGV4KVxuICAgIGlmIChiZWZvcmUpIHBhcnRzLnB1c2goeyB0eXBlOiAndGV4dCcsIHRleHQ6IGJlZm9yZSB9KVxuICAgIHBhcnRzLnB1c2goe1xuICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgIHNvdXJjZTogeyBraW5kOiAncGF0aCcsIHBhdGg6IGF0dGFjaG1lbnQucGF0aCwgbWVkaWFUeXBlOiBhdHRhY2htZW50Lm1lZGlhVHlwZSB9LFxuICAgIH0pXG4gICAgdXNlZC5wdXNoKG1hdGNoWzBdKVxuICAgIGxhc3QgPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aFxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybiB7IGNvbnRlbnQ6IHRleHQsIHVzZWQgfVxuICBjb25zdCB0YWlsID0gdGV4dC5zbGljZShsYXN0KVxuICBpZiAodGFpbCkgcGFydHMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdGV4dDogdGFpbCB9KVxuICByZXR1cm4geyBjb250ZW50OiBwYXJ0cywgdXNlZCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHModGV4dCwgeyBhdHRhY2htZW50cywgbmV4dElkLCBleGlzdHMgPSBleGlzdHNTeW5jIH0pIHtcbiAgY29uc3QgcGFydHMgPSBzcGxpdFRleHRCeUltYWdlUGF0aHModGV4dCwgZXhpc3RzKVxuICBpZiAoIXBhcnRzKSByZXR1cm4geyB0ZXh0LCBjaGFuZ2VkOiBmYWxzZSB9XG4gIGxldCBvdXQgPSAnJ1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBpZiAocGFydC50eXBlID09PSAndGV4dCcpIHtcbiAgICAgIG91dCArPSBwYXJ0LnRleHRcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMke25leHRJZCgpfV1gXG4gICAgICBhdHRhY2htZW50cy5zZXQocGxhY2Vob2xkZXIsIHsgcGF0aDogcGFydC5zb3VyY2UucGF0aCwgbWVkaWFUeXBlOiBwYXJ0LnNvdXJjZS5tZWRpYVR5cGUgfSlcbiAgICAgIG91dCArPSBwbGFjZWhvbGRlclxuICAgIH1cbiAgfVxuICByZXR1cm4geyB0ZXh0OiBvdXQsIGNoYW5nZWQ6IHRydWUgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5wdXRUZXh0RnJvbUNvbnRlbnQoY29udGVudCwgeyBhdHRhY2htZW50cywgbmV4dElkIH0pIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnQpKSByZXR1cm4gU3RyaW5nKGNvbnRlbnQpXG4gIGxldCBvdXQgPSAnJ1xuICBmb3IgKGNvbnN0IHBhcnQgb2YgY29udGVudCkge1xuICAgIGlmIChwYXJ0LnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgb3V0ICs9IHBhcnQudGV4dFxuICAgIH0gZWxzZSBpZiAocGFydC50eXBlID09PSAnaW1hZ2UnICYmIHBhcnQuc291cmNlPy5wYXRoKSB7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IGBbSW1hZ2UgIyR7bmV4dElkKCl9XWBcbiAgICAgIGF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBwYXJ0LnNvdXJjZS5wYXRoLCBtZWRpYVR5cGU6IHBhcnQuc291cmNlLm1lZGlhVHlwZSB9KVxuICAgICAgb3V0ICs9IHBsYWNlaG9sZGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSAnW2ltYWdlXSdcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluYWxpemVVc2VyQ29udGVudCh0ZXh0LCBhdHRhY2htZW50cywgZXhpc3RzID0gZXhpc3RzU3luYykge1xuICBjb25zdCB7IGNvbnRlbnQsIHVzZWQgfSA9IGJ1aWxkVXNlckNvbnRlbnQodGV4dCwgYXR0YWNobWVudHMpXG4gIGNvbnN0IHBhcnRzID0gQXJyYXkuaXNBcnJheShjb250ZW50KSA/IGNvbnRlbnQgOiBbeyB0eXBlOiAndGV4dCcsIHRleHQ6IGNvbnRlbnQgfV1cbiAgY29uc3QgZXhwYW5kZWQgPSBbXVxuICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICBpZiAocGFydC50eXBlICE9PSAndGV4dCcpIHtcbiAgICAgIGV4cGFuZGVkLnB1c2gocGFydClcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHNwbGl0ID0gc3BsaXRUZXh0QnlJbWFnZVBhdGhzKHBhcnQudGV4dCwgZXhpc3RzKVxuICAgIGlmIChzcGxpdCkgZXhwYW5kZWQucHVzaCguLi5zcGxpdClcbiAgICBlbHNlIGV4cGFuZGVkLnB1c2gocGFydClcbiAgfVxuICBpZiAoZXhwYW5kZWQubGVuZ3RoID09PSAxICYmIGV4cGFuZGVkWzBdLnR5cGUgPT09ICd0ZXh0JykgcmV0dXJuIHsgY29udGVudDogZXhwYW5kZWRbMF0udGV4dCwgdXNlZCB9XG4gIHJldHVybiB7IGNvbnRlbnQ6IGV4cGFuZGVkLCB1c2VkIH1cbn1cbiIsICJpbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZGlzY292ZXJLZXlzLCBhcHBseUtleXMgfSBmcm9tICcuL2NvcmUva2V5cy5qcydcbmltcG9ydCB7IGxvYWRDYXRhbG9nLCBleHRyYWN0TW9kZWxzLCBhZGhvY01vZGVsIH0gZnJvbSAnLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgb3BlbmFpQ29ubmVjdGVkLCBvcGVuYWlDcmVkZW50aWFscyB9IGZyb20gJy4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IGZpbmRNb2RlbCwgZGVmYXVsdE1vZGVsLCBlc3RpbWF0ZUNvc3QgfSBmcm9tICcuL2NvcmUvbW9kZWxzLmpzJ1xuaW1wb3J0IHsgcmVhZENvbmZpZyB9IGZyb20gJy4vY29yZS9jb25maWcuanMnXG5pbXBvcnQgeyBidWlsZFByb2plY3RCb290IH0gZnJvbSAnLi9jb3JlL2Jvb3QuanMnXG5pbXBvcnQgeyBjcmVhdGVTaGVsbE1hbmFnZXIgfSBmcm9tICcuL2NvcmUvc2hlbGxzLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2Vzc2lvbiwgb3BlblNlc3Npb24sIGxvYWRTZXNzaW9uIH0gZnJvbSAnLi9jb3JlL3Nlc3Npb24uanMnXG5pbXBvcnQgeyBzZXNzaW9uc0RpciB9IGZyb20gJy4vY29yZS9wYXRocy5qcydcbmltcG9ydCB7IG1ha2VFdmVudCB9IGZyb20gJy4vY29yZS9ldmVudHMuanMnXG5pbXBvcnQgeyBkZXJpdmVTdGF0ZSB9IGZyb20gJy4vY29yZS9kZXJpdmUuanMnXG5pbXBvcnQgeyBjcmVhdGVUb29sc2V0IH0gZnJvbSAnLi9jb3JlL3Rvb2xzL2luZGV4LmpzJ1xuaW1wb3J0IHsgcmVzb2x2ZURyZWRnZSB9IGZyb20gJy4vY29yZS90b29scy93ZWIuanMnXG5pbXBvcnQgeyBydW5UdXJuIH0gZnJvbSAnLi9jb3JlL2FnZW50LmpzJ1xuaW1wb3J0IHsgYnVpbGRTeXN0ZW1Qcm9tcHQgfSBmcm9tICcuL2NvcmUvc3lzdGVtLXByb21wdC5qcydcbmltcG9ydCB7IG1lbW9yeUluZGV4IH0gZnJvbSAnLi9jb3JlL21lbW9yeS5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL3VpL2Z1enp5LmpzJ1xuaW1wb3J0IHsgZmluYWxpemVVc2VyQ29udGVudCB9IGZyb20gJy4vdWkvYXR0YWNobWVudHMuanMnXG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgbmFtZSkge1xuICBpZiAoIW5hbWUpIHJldHVybiBudWxsXG4gIGNvbnN0IGV4YWN0ID0gbW9kZWxzLmZpbmQoKG0pID0+IG0ubmFtZSA9PT0gbmFtZSlcbiAgaWYgKGV4YWN0KSByZXR1cm4gZXhhY3RcbiAgaWYgKG5hbWUuaW5jbHVkZXMoJy8nKSkgcmV0dXJuIGFkaG9jTW9kZWwobmFtZSwgcHJvdmlkZXJzKVxuICBjb25zdCBzY29yZWQgPSBtb2RlbHNcbiAgICAuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpXG4gICAgLm1hcCgobSkgPT4gW2Z1enp5U2NvcmUobmFtZSwgbS5uYW1lKSwgbV0pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gIHJldHVybiBzY29yZWRbMF0/LlsxXSB8fCBudWxsXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRTdGRpbigpIHtcbiAgaWYgKHByb2Nlc3Muc3RkaW4uaXNUVFkpIHJldHVybiAnJ1xuICBsZXQgZGF0YSA9ICcnXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgcHJvY2Vzcy5zdGRpbikge1xuICAgIGRhdGEgKz0gY2h1bmtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiA0MDAwMDApIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGRhdGEuc2xpY2UoMCwgNDAwMDAwKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuSGVhZGxlc3Mob3B0cykge1xuICBjb25zdCBzdGFydGVkQXQgPSBEYXRlLm5vdygpXG4gIGNvbnN0IGxvZyA9IG9wdHMucXVpZXQgPyAoKSA9PiB7fSA6IChsaW5lKSA9PiBwcm9jZXNzLnN0ZGVyci53cml0ZShsaW5lICsgJ1xcbicpXG5cbiAgY29uc3QgY2hhdGdwdCA9IGF3YWl0IG9wZW5haUNvbm5lY3RlZCgpXG4gIGNvbnN0IHByb3ZpZGVycyA9IFsuLi5hcHBseUtleXMoZGlzY292ZXJLZXlzKCkpLCAuLi4oY2hhdGdwdCA/IFsnY29kZXgnXSA6IFtdKV1cbiAgaWYgKHByb3ZpZGVycy5sZW5ndGggPT09IDApIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZSgncGljbzogbm8gY3JlZGVudGlhbHMgZm91bmQgKHNldCBhIHByb3ZpZGVyIGtleSBvciBydW4gcGljbyAtLWNvbm5lY3QpXFxuJylcbiAgICByZXR1cm4gMVxuICB9XG4gIGNvbnN0IGNhdGFsb2dEYXRhID0gYXdhaXQgbG9hZENhdGFsb2coKVxuICBjb25zdCBjb2RleENyZWRzID0gY2hhdGdwdCA/IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbCkgOiBudWxsXG4gIGNvbnN0IG1vZGVscyA9IFtcbiAgICAuLi5leHRyYWN0TW9kZWxzKGNhdGFsb2dEYXRhLCBbJ2dvb2dsZScsICdhbnRocm9waWMnLCAnb3BlbmFpJywgJ3hhaSddKS5tYXAoKG0pID0+ICh7XG4gICAgICAuLi5tLFxuICAgICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAgfSkpLFxuICAgIC4uLihhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY29kZXhDcmVkcykpLm1hcCgobSkgPT4gKHsgLi4ubSwgYXZhaWxhYmxlOiBjaGF0Z3B0IH0pKSxcbiAgXVxuICBjb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcblxuICBjb25zdCBtb2RlbCA9IHJlc29sdmVNb2RlbChtb2RlbHMsIHByb3ZpZGVycywgb3B0cy5tb2RlbClcbiAgICB8fCAoY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsICYmIG0uYXZhaWxhYmxlKSlcbiAgICB8fCBkZWZhdWx0TW9kZWwobW9kZWxzKVxuICBpZiAoIW1vZGVsIHx8IG1vZGVsLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHtcbiAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShgcGljbzogbm8gdXNhYmxlIG1vZGVsJHtvcHRzLm1vZGVsID8gYCBtYXRjaGluZyBcIiR7b3B0cy5tb2RlbH1cImAgOiAnJ31cXG5gKVxuICAgIHJldHVybiAxXG4gIH1cbiAgY29uc3QgZWZmb3J0ID0gb3B0cy5lZmZvcnQgPz8gKG1vZGVsLmVmZm9ydCA/ICdhdXRvJyA6IG51bGwpXG5cbiAgY29uc3QgYm9vdCA9IGF3YWl0IGJ1aWxkUHJvamVjdEJvb3QocHJvY2Vzcy5jd2QoKSlcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtib290Lm1jcC5jb25uZWN0QWxsKCksIG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIDEwMDAwKSldKVxuICBjb25zdCBzaGVsbHMgPSBjcmVhdGVTaGVsbE1hbmFnZXIoKVxuXG4gIGxldCBzZXNzaW9uXG4gIGxldCBldmVudHMgPSBbXVxuICBpZiAob3B0cy5yZXN1bWUpIHtcbiAgICBjb25zdCBmaWxlID0gb3B0cy5yZXN1bWUuaW5jbHVkZXMoJy8nKSA/IG9wdHMucmVzdW1lIDogam9pbihzZXNzaW9uc0Rpcihib290LnJvb3QpLCBgJHtvcHRzLnJlc3VtZX0uanNvbmxgKVxuICAgIGNvbnN0IGxvYWRlZCA9IGF3YWl0IGxvYWRTZXNzaW9uKGZpbGUpXG4gICAgc2Vzc2lvbiA9IG9wZW5TZXNzaW9uKHsgZmlsZSwgaGVhZGVyOiBsb2FkZWQuaGVhZGVyIH0pXG4gICAgZXZlbnRzID0gbG9hZGVkLmV2ZW50c1xuICB9IGVsc2Uge1xuICAgIHNlc3Npb24gPSBjcmVhdGVTZXNzaW9uKHsgY3dkOiBib290LmN3ZCwgcm9vdDogYm9vdC5yb290IH0pXG4gIH1cblxuICBjb25zdCBwZXJzaXN0ID0gKGV2ZW50KSA9PiB7XG4gICAgZXZlbnRzLnB1c2goZXZlbnQpXG4gICAgc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgaWYgKG9wdHMuc3RyZWFtSnNvbikgcHJvY2Vzcy5zdGRvdXQud3JpdGUoSlNPTi5zdHJpbmdpZnkoZXZlbnQpICsgJ1xcbicpXG4gIH1cblxuICBjb25zdCBzdGRpbkRhdGEgPSBhd2FpdCByZWFkU3RkaW4oKVxuICBjb25zdCBwcm9tcHRUZXh0ID0gc3RkaW5EYXRhID8gYCR7b3B0cy5wcm9tcHR9XFxuXFxuW3BpcGVkIGlucHV0XVxcbiR7c3RkaW5EYXRhfWAgOiBvcHRzLnByb21wdFxuICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQocHJvbXB0VGV4dCwgbmV3IE1hcCgpKVxuICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcblxuICBjb25zdCBkZXJpdmVkID0gZGVyaXZlU3RhdGUoZXZlbnRzKVxuICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KGJvb3QudHJhY2tlci5sb2FkZWQpXG4gIGNvbnN0IHsgdG9vbHMsIHJlY29yZGVyIH0gPSBjcmVhdGVUb29sc2V0KHtcbiAgICBjd2Q6IGJvb3QuY3dkLFxuICAgIHRyYWNrZXI6IGJvb3QudHJhY2tlcixcbiAgICBza2lsbHM6IGJvb3Quc2tpbGxzLFxuICAgIHNoZWxscyxcbiAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgIGRyZWRnZTogcmVzb2x2ZURyZWRnZShjb25maWcpLFxuICAgIG1jcFRvb2xzOiBib290Lm1jcC50b29scygpLFxuICAgIHVzZXJUb29sczogW10sXG4gICAgbWF4VG9vbENhbGxzOiBvcHRzLm1heFRvb2xDYWxscyA/PyA1MCxcbiAgfSlcblxuICBsZXQgYXV0aCA9IG51bGxcbiAgaWYgKG1vZGVsLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgYXV0aCA9IGF3YWl0IG9wZW5haUNyZWRlbnRpYWxzKCkuY2F0Y2goKCkgPT4gbnVsbClcbiAgICBpZiAoIWF1dGgpIHtcbiAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdwaWNvOiBjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbiAocnVuIHBpY28gLS1jb25uZWN0KVxcbicpXG4gICAgICByZXR1cm4gMVxuICAgIH1cbiAgfVxuXG4gIGxvZyhgcGljbyBcdTAwQjcgJHttb2RlbC5uYW1lfSR7ZWZmb3J0ID8gYCBcdTAwQjcgJHtlZmZvcnR9YCA6ICcnfSBcdTAwQjcgc2Vzc2lvbiAke3Nlc3Npb24uaWR9YClcbiAgbGV0IHRob3VnaHRzID0gJydcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVHVybih7XG4gICAgaGlzdG9yeTogZGVyaXZlZC5wcm92aWRlckhpc3RvcnksXG4gICAgdG9vbHMsXG4gICAgcmVjb3JkZXIsXG4gICAgbW9kZWxOYW1lOiBtb2RlbC5uYW1lLFxuICAgIGVmZm9ydCxcbiAgICBhdXRoLFxuICAgIHN5c3RlbTogYnVpbGRTeXN0ZW1Qcm9tcHQoe1xuICAgICAgY3dkOiBib290LmN3ZCxcbiAgICAgIGNvbnRleHRGaWxlczogYm9vdC5zdGFydHVwQ29udGV4dC5maWxlcyxcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMubGlzdCgpLFxuICAgICAgbWVtb3J5SW5kZXhUZXh0OiBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpLFxuICAgIH0pLFxuICAgIG9uU3RyZWFtOiAoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC50eXBlID09PSAndGhpbmtpbmcnKSB0aG91Z2h0cyArPSBldmVudC5jb250ZW50XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY29tcGxldGUnKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVjb3JkZXIuZW50cmllcy5hdCgtMSlcbiAgICAgICAgbG9nKGAgIFx1MjcxMyAke2VudHJ5Py5uYW1lID8/IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZX0gICR7ZW50cnk/LnRpdGxlID8/ICcnfWApXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXJyb3InKSBsb2coYCAgXHUyNzE3ICR7ZXZlbnQuY2FsbC5mdW5jdGlvbi5uYW1lfSAgJHtldmVudC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgfSxcbiAgfSlcblxuICBpZiAodGhvdWdodHMpIHBlcnNpc3QobWFrZUV2ZW50KCd0aG91Z2h0cycsIHsgdGV4dDogdGhvdWdodHMgfSkpXG4gIGZvciAoY29uc3QgbWVzc2FnZSBvZiByZXN1bHQubWVzc2FnZXMpIHBlcnNpc3QobWFrZUV2ZW50KCdtZXNzYWdlJywgeyBtZXNzYWdlIH0pKVxuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gIGZvciAoY29uc3QgcGF0aCBvZiBib290LnRyYWNrZXIubG9hZGVkKSB7XG4gICAgaWYgKCFsb2FkZWRCZWZvcmUuaGFzKHBhdGgpKSBwZXJzaXN0KG1ha2VFdmVudCgnY29udGV4dF9maWxlJywgeyBwYXRoIH0pKVxuICB9XG4gIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsLm5hbWUsIHVzYWdlOiByZXN1bHQudXNhZ2UsIGxhc3RQcm9tcHQ6IHJlc3VsdC5sYXN0UHJvbXB0VG9rZW5zIH0pKVxuICBpZiAocmVzdWx0LmludGVycnVwdGVkKSBwZXJzaXN0KG1ha2VFdmVudCgnaW50ZXJydXB0Jywge30pKVxuXG4gIGNvbnN0IHJ1bm5pbmcgPSBzaGVsbHMucnVubmluZygpXG4gIGlmIChydW5uaW5nID4gMCkgbG9nKGAgIGtpbGxpbmcgJHtydW5uaW5nfSBiYWNrZ3JvdW5kIHNoZWxsJHtydW5uaW5nID09PSAxID8gJycgOiAncyd9YClcbiAgc2hlbGxzLmtpbGxBbGwoKVxuICBhd2FpdCBib290Lm1jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuXG4gIGNvbnN0IHRleHQgPSByZXN1bHQubWVzc2FnZXMuZmlsdGVyKChtKSA9PiBtLnJvbGUgPT09ICdhc3Npc3RhbnQnICYmIHR5cGVvZiBtLmNvbnRlbnQgPT09ICdzdHJpbmcnICYmIG0uY29udGVudCkuYXQoLTEpPy5jb250ZW50ID8/ICcnXG4gIGNvbnN0IHN1bW1hcnkgPSB7XG4gICAgdGV4dCxcbiAgICBzZXNzaW9uOiBzZXNzaW9uLmlkLFxuICAgIHNlc3Npb25GaWxlOiBzZXNzaW9uLmZpbGUsXG4gICAgbW9kZWw6IG1vZGVsLm5hbWUsXG4gICAgdXNhZ2U6IHJlc3VsdC51c2FnZSxcbiAgICBjb3N0OiBlc3RpbWF0ZUNvc3QoZmluZE1vZGVsKG1vZGVscywgbW9kZWwubmFtZSksIHJlc3VsdC51c2FnZSksXG4gICAgdG9vbENhbGxzOiByZWNvcmRlci5lbnRyaWVzLmxlbmd0aCxcbiAgICBpbnRlcnJ1cHRlZDogcmVzdWx0LmludGVycnVwdGVkLFxuICAgIGR1cmF0aW9uTXM6IERhdGUubm93KCkgLSBzdGFydGVkQXQsXG4gIH1cblxuICBpZiAob3B0cy5qc29uKSBwcm9jZXNzLnN0ZG91dC53cml0ZShKU09OLnN0cmluZ2lmeShzdW1tYXJ5KSArICdcXG4nKVxuICBlbHNlIGlmIChvcHRzLnN0cmVhbUpzb24pIHByb2Nlc3Muc3Rkb3V0LndyaXRlKEpTT04uc3RyaW5naWZ5KHsgdHlwZTogJ3Jlc3VsdCcsIC4uLnN1bW1hcnksIHRleHQ6IHVuZGVmaW5lZCwgYXQ6IERhdGUubm93KCkgfSkgKyAnXFxuJylcbiAgZWxzZSBwcm9jZXNzLnN0ZG91dC53cml0ZSh0ZXh0ICsgJ1xcbicpXG5cbiAgcmV0dXJuIHJlc3VsdC5pbnRlcnJ1cHRlZCA/IDEgOiAwXG59XG4iLCAiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB7IG1vdW50IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgcGFyc2VBcmdzLCBVU0FHRSB9IGZyb20gJy4vY2xpLWFyZ3MuanMnXG5pbXBvcnQgeyBkaXNjb3ZlcktleXMsIGFwcGx5S2V5cywga2V5SGludCB9IGZyb20gJy4vY29yZS9rZXlzLmpzJ1xuaW1wb3J0IHsgZGVmYXVsdE1vZGVsIH0gZnJvbSAnLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IGxvYWRDYXRhbG9nLCBleHRyYWN0TW9kZWxzIH0gZnJvbSAnLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuL2NvcmUvY29kZXgtbW9kZWxzLmpzJ1xuaW1wb3J0IHsgb3BlbmFpQ29ubmVjdGVkLCBvcGVuYWlDcmVkZW50aWFscyB9IGZyb20gJy4vY29yZS9vcGVuYWktYXV0aC5qcydcbmltcG9ydCB7IHJlYWRDb25maWcgfSBmcm9tICcuL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgZGV0ZWN0VGVybWluYWxUaGVtZSB9IGZyb20gJy4vY29yZS90ZXJtaW5hbC10aGVtZS5qcydcbmltcG9ydCB7IGJ1aWxkUHJvamVjdEJvb3QgfSBmcm9tICcuL2NvcmUvYm9vdC5qcydcbmltcG9ydCB7IHJlc29sdmVEcmVkZ2UgfSBmcm9tICcuL2NvcmUvdG9vbHMvd2ViLmpzJ1xuaW1wb3J0IHsgY3JlYXRlU2hlbGxNYW5hZ2VyIH0gZnJvbSAnLi9jb3JlL3NoZWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZVdha2V1cE1hbmFnZXIgfSBmcm9tICcuL2NvcmUvd2FrZXVwcy5qcydcbmltcG9ydCB7IGNyZWF0ZUdpdFNlcnZpY2UgfSBmcm9tICcuL2NvcmUvZ2l0LmpzJ1xuaW1wb3J0IHsgQXBwIH0gZnJvbSAnLi91aS9hcHAuanN4J1xuaW1wb3J0IHsgREVGQVVMVF9BQ0NFTlQsIE1VVEVELCBzZXRQYWxldHRlLCBwYWxldHRlTGlzdCB9IGZyb20gJy4vdWkvdGhlbWUuanMnXG5cbmNvbnN0IHBrZyA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKG5ldyBVUkwoJy4uL3BhY2thZ2UuanNvbicsIGltcG9ydC5tZXRhLnVybCksICd1dGYtOCcpKVxuXG5sZXQgY2xpXG50cnkge1xuICBjbGkgPSBwYXJzZUFyZ3MocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKVxufSBjYXRjaCAoZXJyKSB7XG4gIGNvbnNvbGUuZXJyb3IoYHBpY286ICR7ZXJyLm1lc3NhZ2V9YClcbiAgY29uc29sZS5lcnJvcihVU0FHRSlcbiAgcHJvY2Vzcy5leGl0KDEpXG59XG5pZiAoY2xpLm1vZGUgPT09ICdoZWxwJykge1xuICBjb25zb2xlLmxvZyhVU0FHRSlcbiAgcHJvY2Vzcy5leGl0KDApXG59XG5pZiAoY2xpLm1vZGUgPT09ICd2ZXJzaW9uJykge1xuICBjb25zb2xlLmxvZyhwa2cudmVyc2lvbilcbiAgcHJvY2Vzcy5leGl0KDApXG59XG5pZiAoY2xpLm1vZGUgPT09ICd1cGRhdGUnKSB7XG4gIGNvbnN0IHsgaXNEZXZJbnN0YWxsLCBydW5VcGRhdGUsIGZldGNoTGF0ZXN0VmVyc2lvbiwgbmV3ZXJWZXJzaW9uIH0gPSBhd2FpdCBpbXBvcnQoJy4vY29yZS91cGRhdGUuanMnKVxuICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHtcbiAgICBjb25zb2xlLmVycm9yKCd0aGlzIHBpY28gcnVucyBmcm9tIGEgc291cmNlIGNoZWNrb3V0OyB1cGRhdGUgaXQgd2l0aCBnaXQsIG5vdCBucG0nKVxuICAgIHByb2Nlc3MuZXhpdCgxKVxuICB9XG4gIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gIGlmIChsYXRlc3QgJiYgIW5ld2VyVmVyc2lvbihwa2cudmVyc2lvbiwgbGF0ZXN0KSkge1xuICAgIGNvbnNvbGUubG9nKGBwaWNvIHYke3BrZy52ZXJzaW9ufSBpcyBhbHJlYWR5IHRoZSBsYXRlc3RgKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYHVwZGF0aW5nIHBpY29jb2RlICR7bGF0ZXN0ID8gYHRvIHYke2xhdGVzdH0gYCA6ICcnfXZpYSBucG0uLi5gKVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5VcGRhdGUoKVxuICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgY29uc29sZS5sb2coYHVwZGF0ZWQke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ31gKVxuICAgIHByb2Nlc3MuZXhpdCgwKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYHVwZGF0ZSBmYWlsZWQ6XFxuJHtyZXN1bHQub3V0cHV0fWApXG4gIHByb2Nlc3MuZXhpdCgxKVxufVxuaWYgKGNsaS5tb2RlID09PSAnY29ubmVjdCcpIHtcbiAgY29uc3QgeyBjb25uZWN0T3BlbkFJIH0gPSBhd2FpdCBpbXBvcnQoJy4vY29yZS9vcGVuYWktYXV0aC5qcycpXG4gIHRyeSB7XG4gICAgY29uc29sZS5lcnJvcignb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29uc3QgeyBlbWFpbCB9ID0gYXdhaXQgY29ubmVjdE9wZW5BSSh7IG9uVXJsOiAodXJsKSA9PiBjb25zb2xlLmVycm9yKGBpZiB0aGUgYnJvd3NlciBkaWQgbm90IG9wZW4sIHZpc2l0OlxcbiR7dXJsfWApIH0pXG4gICAgY29uc29sZS5sb2coYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9YClcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihgY29ubmVjdCBmYWlsZWQ6ICR7ZXJyLm1lc3NhZ2V9YClcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfVxufVxuaWYgKGNsaS5tb2RlID09PSAnaGVhZGxlc3MnKSB7XG4gIGNvbnN0IHsgcnVuSGVhZGxlc3MgfSA9IGF3YWl0IGltcG9ydCgnLi9oZWFkbGVzcy5qcycpXG4gIHByb2Nlc3MuZXhpdChhd2FpdCBydW5IZWFkbGVzcyhjbGkpKVxufVxuXG5jb25zdCBrZXlzID0gZGlzY292ZXJLZXlzKClcbmNvbnN0IGNoYXRncHQgPSBhd2FpdCBvcGVuYWlDb25uZWN0ZWQoKVxuY29uc3QgcHJvdmlkZXJzID0gWy4uLmFwcGx5S2V5cyhrZXlzKSwgLi4uKGNoYXRncHQgPyBbJ2NvZGV4J10gOiBbXSldXG5jb25zdCBjYXRhbG9nRGF0YSA9IGF3YWl0IGxvYWRDYXRhbG9nKClcbmNvbnN0IGNvZGV4Q3JlZHMgPSBjaGF0Z3B0ID8gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKSA6IG51bGxcbmNvbnN0IG1vZGVscyA9IFtcbiAgLi4uZXh0cmFjdE1vZGVscyhjYXRhbG9nRGF0YSwgWydnb29nbGUnLCAnYW50aHJvcGljJywgJ29wZW5haScsICd4YWknXSkubWFwKChtKSA9PiAoe1xuICAgIC4uLm0sXG4gICAgYXZhaWxhYmxlOiBwcm92aWRlcnMuaW5jbHVkZXMobS5wcm92aWRlciksXG4gICAga2V5SGludDoga2V5SGludChtLnByb3ZpZGVyKSxcbiAgfSkpLFxuICAuLi4oYXdhaXQgbG9hZENvZGV4TW9kZWxzKGNvZGV4Q3JlZHMpKS5tYXAoKG0pID0+ICh7XG4gICAgLi4ubSxcbiAgICBjb250ZXh0OiBtLmNvbnRleHRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uaW5wdXRcbiAgICAgID8/IGNhdGFsb2dEYXRhLm9wZW5haT8ubW9kZWxzPy5bbS5uYW1lLnNwbGl0KCcvJylbMV1dPy5saW1pdD8uY29udGV4dFxuICAgICAgPz8gbnVsbCxcbiAgICBhdmFpbGFibGU6IGNoYXRncHQsXG4gICAga2V5SGludDogJy9jb25uZWN0JyxcbiAgfSkpLFxuXVxuXG5pZiAocHJvdmlkZXJzLmxlbmd0aCA9PT0gMCkge1xuICBjb25zb2xlLmVycm9yKCdwaWNvOiBubyBjcmVkZW50aWFscyBmb3VuZC4nKVxuICBjb25zb2xlLmVycm9yKCdzZXQgb25lIG9mOiBHRU1JTklfQVBJX0tFWSwgQU5USFJPUElDX0FQSV9LRVksIE9QRU5BSV9BUElfS0VZLCBYQUlfQVBJX0tFWScpXG4gIGNvbnNvbGUuZXJyb3IoJ29yIHNpZ24gaW4gd2l0aCBhIENoYXRHUFQgcGxhbjogcGljbyAtLWNvbm5lY3QnKVxuICBwcm9jZXNzLmV4aXQoMSlcbn1cblxubGV0IG1jcE5vdGlmeSA9ICgpID0+IHt9XG5sZXQgc2hlbGxzTm90aWZ5ID0gKCkgPT4ge31cbmxldCBzaGVsbHNFeGl0ID0gKCkgPT4ge31cbmNvbnN0IHNoZWxscyA9IGNyZWF0ZVNoZWxsTWFuYWdlcih7XG4gIG9uQ2hhbmdlOiAoKSA9PiBzaGVsbHNOb3RpZnkoKSxcbiAgb25FeGl0OiAoc2hlbGwpID0+IHNoZWxsc0V4aXQoc2hlbGwpLFxufSlcbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBzaGVsbHMua2lsbEFsbCgpKVxuXG5sZXQgd2FrZXVwc05vdGlmeSA9ICgpID0+IHt9XG5sZXQgd2FrZXVwc0ZpcmUgPSAoKSA9PiB7fVxuY29uc3Qgd2FrZXVwcyA9IGNyZWF0ZVdha2V1cE1hbmFnZXIoe1xuICBvbkNoYW5nZTogKCkgPT4gd2FrZXVwc05vdGlmeSgpLFxuICBvbkZpcmU6ICh3YWtldXApID0+IHdha2V1cHNGaXJlKHdha2V1cCksXG59KVxuXG5sZXQgZ2l0Tm90aWZ5ID0gKCkgPT4ge31cbmNvbnN0IGdpdCA9IGNyZWF0ZUdpdFNlcnZpY2UoeyBvbkNoYW5nZTogKCkgPT4gZ2l0Tm90aWZ5KCkgfSlcbnByb2Nlc3Mub24oJ2V4aXQnLCAoKSA9PiBnaXQuZGlzcG9zZSgpKVxuXG5jb25zdCBib290UHJvamVjdCA9IChjd2QpID0+IGJ1aWxkUHJvamVjdEJvb3QoY3dkLCB7IG9uTWNwQ2hhbmdlOiAoKSA9PiBtY3BOb3RpZnkoKSB9KVxuXG5jb25zdCBjb25maWcgPSBhd2FpdCByZWFkQ29uZmlnKClcbmNvbnN0IGNvbmZpZ3VyZWREZWZhdWx0ID0gY29uZmlnLmRlZmF1bHRNb2RlbCAmJiBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBjb25maWcuZGVmYXVsdE1vZGVsKVxuXG5jb25zdCBkZXRlY3RlZFRoZW1lID0gYXdhaXQgZGV0ZWN0VGVybWluYWxUaGVtZSgpXG5jb25zdCB0aGVtZU92ZXJyaWRlID0gcGFsZXR0ZUxpc3QoKS5zb21lKChwKSA9PiBwLmtleSA9PT0gY29uZmlnLnRoZW1lKSA/IGNvbmZpZy50aGVtZSA6IG51bGxcbnNldFBhbGV0dGUodGhlbWVPdmVycmlkZSB8fCBkZXRlY3RlZFRoZW1lKVxuY29uc3QgdGhlbWUgPSB7IGFjY2VudDogREVGQVVMVF9BQ0NFTlQsIG11dGVkOiBNVVRFRCB9XG5cbmNvbnN0IGJvb3QgPSB7XG4gIC4uLihhd2FpdCBib290UHJvamVjdChwcm9jZXNzLmN3ZCgpKSksXG4gIHRoZW1lLFxuICB2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgbW9kZWxzLFxuICBwcm92aWRlcnMsXG4gIGluaXRpYWxNb2RlbDogY29uZmlndXJlZERlZmF1bHQgfHwgZGVmYXVsdE1vZGVsKG1vZGVscyksXG4gIGRldGVjdGVkVGhlbWUsXG4gIHRoZW1lUHJlZjogdGhlbWVPdmVycmlkZSB8fCAnYXV0bycsXG4gIGRyZWRnZTogcmVzb2x2ZURyZWRnZShjb25maWcpLFxuICBpbml0aWFsRWZmb3J0OiBbJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXS5pbmNsdWRlcyhjb25maWcuZGVmYXVsdEVmZm9ydCkgPyBjb25maWcuZGVmYXVsdEVmZm9ydCA6IG51bGwsXG4gIGF1dG9Db21wYWN0OiBjb25maWcuYXV0b0NvbXBhY3QgIT09IGZhbHNlLFxuICBjbG91ZHM6IGNvbmZpZy5hbmltYXRpb24/LmNsb3VkcyA9PT0gdHJ1ZSxcbiAgY29tcGFjdFRvb2xIaXN0b3J5OiBjb25maWcuZGlzcGxheT8uY29tcGFjdFRvb2xIaXN0b3J5ID09PSB0cnVlLFxuICBnaXRGb290ZXI6IGNvbmZpZy5kaXNwbGF5Py5naXRTdGF0dXMgIT09IGZhbHNlLFxuICByZWZzOiB7fSxcbiAgc2hlbGxzLFxuICB3YWtldXBzLFxuICBnaXQsXG4gIHNldE1jcE5vdGlmeTogKGZuKSA9PiB7IG1jcE5vdGlmeSA9IGZuIH0sXG4gIHNldEdpdE5vdGlmeTogKGZuKSA9PiB7IGdpdE5vdGlmeSA9IGZuIH0sXG4gIHNldFNoZWxsc05vdGlmeTogKGZuKSA9PiB7IHNoZWxsc05vdGlmeSA9IGZuIH0sXG4gIHNldFNoZWxsc0V4aXQ6IChmbikgPT4geyBzaGVsbHNFeGl0ID0gZm4gfSxcbiAgc2V0V2FrZXVwc05vdGlmeTogKGZuKSA9PiB7IHdha2V1cHNOb3RpZnkgPSBmbiB9LFxuICBzZXRXYWtldXBzRmlyZTogKGZuKSA9PiB7IHdha2V1cHNGaXJlID0gZm4gfSxcbiAgcmVidWlsZDogYm9vdFByb2plY3QsXG59XG5cbmdpdC5yZXRhcmdldChib290LnJvb3QpXG5naXQuc2V0RW5hYmxlZChib290LmdpdEZvb3RlcilcblxuY29uc3QgYXBwID0gbW91bnQoKCkgPT4gPEFwcCBib290PXtib290fSAvPiwgeyB0aXRsZTogYHBpY28gXHUwMEI3ICR7Ym9vdC5yb290LnNwbGl0KCcvJykucG9wKCl9YCwgdGhlbWUgfSlcbmJvb3Quc2V0VGhlbWUgPSBhcHAuc2V0VGhlbWVcbmJvb3QubWNwLmNvbm5lY3RBbGwoKVxuIiwgImV4cG9ydCBjb25zdCBVU0FHRSA9IGBwaWNvIC0gYSBjb2RpbmcgYWdlbnQgaW4geW91ciB0ZXJtaW5hbFxuXG51c2FnZTpcbiAgcGljbyAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJhY3RpdmUgc2Vzc2lvbiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcbiAgcGljbyAtcCBcInByb21wdFwiICAgICAgICAgICBoZWFkbGVzczogcnVuIG9uZSBhZ2VudGljIHR1cm4sIHByaW50IHRoZSBhbnN3ZXJcbiAgY2F0IGxvZyB8IHBpY28gLXAgXCIuLi5cIiAgICBzdGRpbiBpcyBhcHBlbmRlZCB0byB0aGUgcHJvbXB0IGFzIGNvbnRleHRcblxuaGVhZGxlc3MgZmxhZ3M6XG4gIC1wLCAtLXByaW50IDxwcm9tcHQ+ICAgICAgIHRoZSBwcm9tcHQgdG8gcnVuXG4gIC0tanNvbiAgICAgICAgICAgICAgICAgICAgIHByaW50IGEgc2luZ2xlIEpTT04gcmVzdWx0IG9iamVjdCB0byBzdGRvdXRcbiAgLS1zdHJlYW0tanNvbiAgICAgICAgICAgICAgc3RyZWFtIHNlc3Npb24gZXZlbnRzIHRvIHN0ZG91dCBhcyBqc29ubFxuICAtbSwgLS1tb2RlbCA8bmFtZT4gICAgICAgICBtb2RlbCB0byB1c2UgKGZ1enp5IG1hdGNoZWQsIG9yIHJhdyBwcm92aWRlci9tb2RlbClcbiAgLS1lZmZvcnQgPGxldmVsPiAgICAgICAgICAgdGhpbmtpbmcgZWZmb3J0OiBhdXRvfGxvd3xtZWRpdW18aGlnaHxtYXhcbiAgLS1yZXN1bWUgPHNlc3Npb24taWQ+ICAgICAgY29udGludWUgYW4gZXhpc3Rpbmcgc2Vzc2lvbiBmcm9tIHRoaXMgcHJvamVjdFxuICAtLW1heC10b29sLWNhbGxzIDxuPiAgICAgICBzdG9wIHRoZSBhZ2VudCBhZnRlciBuIHRvb2wgY2FsbHMgKGRlZmF1bHQgNTApXG4gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgIG5vIHByb2dyZXNzIG91dHB1dCBvbiBzdGRlcnJcblxuICAtLWNvbm5lY3QgICAgICAgICAgICAgICAgICBzaWduIGluIHdpdGggYSBDaGF0R1BUIHBsYW4gKE9BdXRoIGluIHlvdXIgYnJvd3NlcilcbiAgdXBkYXRlLCAtLXVwZGF0ZSAgICAgICAgICAgdXBkYXRlIHBpY28gdG8gdGhlIGxhdGVzdCByZWxlYXNlIGZyb20gbnBtXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwXG4gIC12LCAtLXZlcnNpb24gICAgICAgICAgICAgIHNob3cgdmVyc2lvbmBcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2KSB7XG4gIGNvbnN0IG9wdHMgPSB7IG1vZGU6ICdpbnRlcmFjdGl2ZScgfVxuICBjb25zdCB0YWtlVmFsdWUgPSAobmFtZSwgaSkgPT4ge1xuICAgIGlmIChpICsgMSA+PSBhcmd2Lmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IHJlcXVpcmVzIGEgdmFsdWVgKVxuICAgIHJldHVybiBhcmd2W2kgKyAxXVxuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd2Lmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgYXJnID0gYXJndltpXVxuICAgIGlmIChhcmcgPT09ICctcCcgfHwgYXJnID09PSAnLS1wcmludCcpIHtcbiAgICAgIG9wdHMubW9kZSA9ICdoZWFkbGVzcydcbiAgICAgIG9wdHMucHJvbXB0ID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1qc29uJykgb3B0cy5qc29uID0gdHJ1ZVxuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy0tc3RyZWFtLWpzb24nKSBvcHRzLnN0cmVhbUpzb24gPSB0cnVlXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLW0nIHx8IGFyZyA9PT0gJy0tbW9kZWwnKSB7XG4gICAgICBvcHRzLm1vZGVsID0gdGFrZVZhbHVlKGFyZywgaSlcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1lZmZvcnQnKSB7XG4gICAgICBjb25zdCBsZXZlbCA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpZiAoIVsnYXV0bycsICdsb3cnLCAnbWVkaXVtJywgJ2hpZ2gnLCAnbWF4J10uaW5jbHVkZXMobGV2ZWwpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBlZmZvcnQgXCIke2xldmVsfVwiOiB1c2UgYXV0b3xsb3d8bWVkaXVtfGhpZ2h8bWF4YClcbiAgICAgIH1cbiAgICAgIG9wdHMuZWZmb3J0ID0gbGV2ZWxcbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1yZXN1bWUnKSB7XG4gICAgICBvcHRzLnJlc3VtZSA9IHRha2VWYWx1ZShhcmcsIGkpXG4gICAgICBpKytcbiAgICB9IGVsc2UgaWYgKGFyZyA9PT0gJy0tbWF4LXRvb2wtY2FsbHMnKSB7XG4gICAgICBvcHRzLm1heFRvb2xDYWxscyA9IHBhcnNlSW50KHRha2VWYWx1ZShhcmcsIGkpLCAxMClcbiAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG9wdHMubWF4VG9vbENhbGxzKSB8fCBvcHRzLm1heFRvb2xDYWxscyA8IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCctLW1heC10b29sLWNhbGxzIHJlcXVpcmVzIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgICAgIH1cbiAgICAgIGkrK1xuICAgIH0gZWxzZSBpZiAoYXJnID09PSAnLS1jb25uZWN0Jykgb3B0cy5tb2RlID0gJ2Nvbm5lY3QnXG4gICAgZWxzZSBpZiAoYXJnID09PSAndXBkYXRlJyB8fCBhcmcgPT09ICctLXVwZGF0ZScpIG9wdHMubW9kZSA9ICd1cGRhdGUnXG4gICAgZWxzZSBpZiAoYXJnID09PSAnLXEnIHx8IGFyZyA9PT0gJy0tcXVpZXQnKSBvcHRzLnF1aWV0ID0gdHJ1ZVxuICAgIGVsc2UgaWYgKGFyZyA9PT0gJy1oJyB8fCBhcmcgPT09ICctLWhlbHAnKSBvcHRzLm1vZGUgPSAnaGVscCdcbiAgICBlbHNlIGlmIChhcmcgPT09ICctdicgfHwgYXJnID09PSAnLS12ZXJzaW9uJykgb3B0cy5tb2RlID0gJ3ZlcnNpb24nXG4gICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gYXJndW1lbnQgXCIke2FyZ31cImApXG4gIH1cblxuICBpZiAob3B0cy5tb2RlID09PSAnaGVhZGxlc3MnICYmICFvcHRzLnByb21wdD8udHJpbSgpKSB0aHJvdyBuZXcgRXJyb3IoJy1wIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHByb21wdCcpXG4gIHJldHVybiBvcHRzXG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlT3NjMTEocmVzcG9uc2UpIHtcbiAgY29uc3QgbWF0Y2ggPSByZXNwb25zZS5tYXRjaCgvXFxdMTE7cmdiOihbMC05YS1mXSspXFwvKFswLTlhLWZdKylcXC8oWzAtOWEtZl0rKS9pKVxuICBpZiAoIW1hdGNoKSByZXR1cm4gbnVsbFxuICBjb25zdCBjaGFubmVsID0gKGhleCkgPT4gcGFyc2VJbnQoaGV4LCAxNikgLyAoMTYgKiogaGV4Lmxlbmd0aCAtIDEpXG4gIGNvbnN0IGx1bWluYW5jZSA9IDAuMjEyNiAqIGNoYW5uZWwobWF0Y2hbMV0pICsgMC43MTUyICogY2hhbm5lbChtYXRjaFsyXSkgKyAwLjA3MjIgKiBjaGFubmVsKG1hdGNoWzNdKVxuICByZXR1cm4gbHVtaW5hbmNlID4gMC41ID8gJ2xpZ2h0JyA6ICdkYXJrJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhlbWVGcm9tQ29sb3JmZ2JnKHZhbHVlKSB7XG4gIGNvbnN0IHRva2VuID0gKHZhbHVlIHx8ICcnKS5zcGxpdCgnOycpLmF0KC0xKVxuICBpZiAoIS9eXFxkKyQvLnRlc3QodG9rZW4pKSByZXR1cm4gbnVsbFxuICBjb25zdCBiZyA9IE51bWJlcih0b2tlbilcbiAgcmV0dXJuIGJnID09PSA3IHx8IGJnID09PSAxNSA/ICdsaWdodCcgOiAnZGFyaydcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdFRlcm1pbmFsVGhlbWUoeyB0aW1lb3V0TXMgPSAxNTAgfSA9IHt9KSB7XG4gIGNvbnN0IGZhbGxiYWNrID0gKCkgPT4gdGhlbWVGcm9tQ29sb3JmZ2JnKHByb2Nlc3MuZW52LkNPTE9SRkdCRykgfHwgJ2RhcmsnXG4gIGlmICghcHJvY2Vzcy5zdGRpbi5pc1RUWSB8fCAhcHJvY2Vzcy5zdGRvdXQuaXNUVFkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsbGJhY2soKSlcblxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBsZXQgYnVmZmVyID0gJydcbiAgICBsZXQgc2V0dGxlZCA9IGZhbHNlXG4gICAgY29uc3Qgd2FzUmF3ID0gcHJvY2Vzcy5zdGRpbi5pc1Jhd1xuXG4gICAgLy8gbmV2ZXIgcGF1c2UoKSBoZXJlOiBhbiBleHBsaWNpdCBwYXVzZSBzdGlja3MsIGFuZCB0cmVuZCdzIG1vdW50IG9ubHlcbiAgICAvLyBhdHRhY2hlcyBhIGRhdGEgbGlzdGVuZXIsIHdoaWNoIHdpbGwgbm90IHVuLXBhdXNlIGFuIGV4cGxpY2l0bHlcbiAgICAvLyBwYXVzZWQgc3RyZWFtIC0gaW5wdXQgd291bGQgYmUgZnJvemVuIGZvciB0aGUgd2hvbGUgc2Vzc2lvblxuICAgIGNvbnN0IGZpbmlzaCA9ICh0aGVtZSkgPT4ge1xuICAgICAgaWYgKHNldHRsZWQpIHJldHVyblxuICAgICAgc2V0dGxlZCA9IHRydWVcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcilcbiAgICAgIHByb2Nlc3Muc3RkaW4ub2ZmKCdkYXRhJywgb25EYXRhKVxuICAgICAgcHJvY2Vzcy5zdGRpbi5zZXRSYXdNb2RlKHdhc1JhdylcbiAgICAgIHJlc29sdmUodGhlbWUpXG4gICAgfVxuXG4gICAgY29uc3Qgb25EYXRhID0gKGNodW5rKSA9PiB7XG4gICAgICBidWZmZXIgKz0gY2h1bmsudG9TdHJpbmcoJ2xhdGluMScpXG4gICAgICBjb25zdCB0aGVtZSA9IHBhcnNlT3NjMTEoYnVmZmVyKVxuICAgICAgaWYgKHRoZW1lKSBmaW5pc2godGhlbWUpXG4gICAgfVxuXG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IGZpbmlzaChmYWxsYmFjaygpKSwgdGltZW91dE1zKVxuICAgIHByb2Nlc3Muc3RkaW4uc2V0UmF3TW9kZSh0cnVlKVxuICAgIHByb2Nlc3Muc3RkaW4ub24oJ2RhdGEnLCBvbkRhdGEpXG4gICAgcHJvY2Vzcy5zdGRpbi5yZXN1bWUoKVxuICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKCdcXHgxYl0xMTs/XFx4MWJcXFxcJylcbiAgfSlcbn1cbiIsICJleHBvcnQgZnVuY3Rpb24gY3JlYXRlV2FrZXVwTWFuYWdlcih7IG9uRmlyZSA9ICgpID0+IHt9LCBvbkNoYW5nZSA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBjb25zdCB3YWtldXBzID0gbmV3IE1hcCgpXG4gIGxldCBuZXh0SWQgPSAxXG5cbiAgcmV0dXJuIHtcbiAgICBzY2hlZHVsZShkZWxheVNlY29uZHMsIG5vdGUpIHtcbiAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLm1heCg1LCBNYXRoLnJvdW5kKGRlbGF5U2Vjb25kcykpXG4gICAgICBjb25zdCBpZCA9IFN0cmluZyhuZXh0SWQrKylcbiAgICAgIGNvbnN0IGF0ID0gRGF0ZS5ub3coKSArIHNlY29uZHMgKiAxMDAwXG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB3YWtldXBzLmRlbGV0ZShpZClcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgICBvbkZpcmUoeyBpZCwgbm90ZSwgYXQgfSlcbiAgICAgIH0sIHNlY29uZHMgKiAxMDAwKVxuICAgICAgd2FrZXVwcy5zZXQoaWQsIHsgaWQsIG5vdGUsIGF0LCB0aW1lciB9KVxuICAgICAgb25DaGFuZ2UoKVxuICAgICAgcmV0dXJuIHsgaWQsIGF0LCBzZWNvbmRzIH1cbiAgICB9LFxuICAgIGNhbmNlbChpZCkge1xuICAgICAgY29uc3Qgd2FrZXVwID0gd2FrZXVwcy5nZXQoU3RyaW5nKGlkKSlcbiAgICAgIGlmICghd2FrZXVwKSB0aHJvdyBuZXcgRXJyb3IoYG5vIHBlbmRpbmcgd2FrZS11cCB3aXRoIGlkICR7aWR9YClcbiAgICAgIGNsZWFyVGltZW91dCh3YWtldXAudGltZXIpXG4gICAgICB3YWtldXBzLmRlbGV0ZShTdHJpbmcoaWQpKVxuICAgICAgb25DaGFuZ2UoKVxuICAgICAgcmV0dXJuIHsgaWQ6IHdha2V1cC5pZCwgY2FuY2VsbGVkOiB0cnVlIH1cbiAgICB9LFxuICAgIGxpc3QoKSB7XG4gICAgICByZXR1cm4gWy4uLndha2V1cHMudmFsdWVzKCldXG4gICAgICAgIC5tYXAoKHsgaWQsIG5vdGUsIGF0IH0pID0+ICh7IGlkLCBub3RlLCBhdCB9KSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuYXQgLSBiLmF0KVxuICAgIH0sXG4gICAgcGVuZGluZygpIHtcbiAgICAgIHJldHVybiB3YWtldXBzLnNpemVcbiAgICB9LFxuICAgIGNhbmNlbEFsbCgpIHtcbiAgICAgIGZvciAoY29uc3Qgd2FrZXVwIG9mIHdha2V1cHMudmFsdWVzKCkpIGNsZWFyVGltZW91dCh3YWtldXAudGltZXIpXG4gICAgICB3YWtldXBzLmNsZWFyKClcbiAgICB9LFxuICB9XG59XG4iLCAiaW1wb3J0IHsgc3Bhd24gfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgeyByZWFkRmlsZVN5bmMsIHN0YXRTeW5jLCB3YXRjaCB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyBkaXJuYW1lLCBpc0Fic29sdXRlLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuXG5jb25zdCBERUJPVU5DRV9NUyA9IDUwMFxuY29uc3QgUE9MTF9NUyA9IDE1MDAwXG5jb25zdCBHSVRfVElNRU9VVF9NUyA9IDUwMDBcblxuZnVuY3Rpb24gZmluZEdpdERpcihzdGFydERpcikge1xuICBsZXQgZGlyID0gc3RhcnREaXJcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBjYW5kaWRhdGUgPSBqb2luKGRpciwgJy5naXQnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbmZvID0gc3RhdFN5bmMoY2FuZGlkYXRlKVxuICAgICAgaWYgKGluZm8uaXNEaXJlY3RvcnkoKSkgcmV0dXJuIGNhbmRpZGF0ZVxuICAgICAgY29uc3QgdGV4dCA9IHJlYWRGaWxlU3luYyhjYW5kaWRhdGUsICd1dGYtOCcpXG4gICAgICBjb25zdCBtYXRjaCA9IHRleHQubWF0Y2goL15naXRkaXI6XFxzKiguKz8pXFxzKiQvbSlcbiAgICAgIGlmIChtYXRjaCkgcmV0dXJuIGlzQWJzb2x1dGUobWF0Y2hbMV0pID8gbWF0Y2hbMV0gOiByZXNvbHZlKGRpciwgbWF0Y2hbMV0pXG4gICAgfSBjYXRjaCB7fVxuICAgIGNvbnN0IHBhcmVudCA9IGRpcm5hbWUoZGlyKVxuICAgIGlmIChwYXJlbnQgPT09IGRpcikgcmV0dXJuIG51bGxcbiAgICBkaXIgPSBwYXJlbnRcbiAgfVxufVxuXG5mdW5jdGlvbiByZWFkQnJhbmNoKGdpdERpcikge1xuICB0cnkge1xuICAgIGNvbnN0IGhlYWQgPSByZWFkRmlsZVN5bmMoam9pbihnaXREaXIsICdIRUFEJyksICd1dGYtOCcpLnRyaW0oKVxuICAgIGNvbnN0IHJlZiA9IGhlYWQubWF0Y2goL15yZWY6IHJlZnNcXC9oZWFkc1xcLyguKykkLylcbiAgICByZXR1cm4gcmVmID8gcmVmWzFdIDogaGVhZC5zbGljZSgwLCA3KVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2hvcnRzdGF0KG91dHB1dCkge1xuICBjb25zdCBhZGRlZCA9IG91dHB1dC5tYXRjaCgvKFxcZCspIGluc2VydGlvbi8pXG4gIGNvbnN0IHJlbW92ZWQgPSBvdXRwdXQubWF0Y2goLyhcXGQrKSBkZWxldGlvbi8pXG4gIHJldHVybiB7XG4gICAgYWRkZWQ6IGFkZGVkID8gTnVtYmVyKGFkZGVkWzFdKSA6IDAsXG4gICAgcmVtb3ZlZDogcmVtb3ZlZCA/IE51bWJlcihyZW1vdmVkWzFdKSA6IDAsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdpdFNlcnZpY2UoeyBvbkNoYW5nZSA9ICgpID0+IHt9IH0gPSB7fSkge1xuICBsZXQgZW5hYmxlZCA9IGZhbHNlXG4gIGxldCByb290ID0gbnVsbFxuICBsZXQgZ2l0RGlyID0gbnVsbFxuICBsZXQgZXBvY2ggPSAwXG4gIGxldCB3YXRjaGVyID0gbnVsbFxuICBsZXQgcG9sbCA9IG51bGxcbiAgbGV0IGRlYm91bmNlID0gbnVsbFxuICBsZXQgY2hpbGQgPSBudWxsXG4gIGxldCByZXJ1biA9IGZhbHNlXG4gIGxldCBjdXJyZW50ID0gbnVsbFxuXG4gIGZ1bmN0aW9uIHRlYXJkb3duKCkge1xuICAgIGVwb2NoICs9IDFcbiAgICB3YXRjaGVyPy5jbG9zZSgpXG4gICAgd2F0Y2hlciA9IG51bGxcbiAgICBpZiAocG9sbCkgY2xlYXJJbnRlcnZhbChwb2xsKVxuICAgIHBvbGwgPSBudWxsXG4gICAgaWYgKGRlYm91bmNlKSBjbGVhclRpbWVvdXQoZGVib3VuY2UpXG4gICAgZGVib3VuY2UgPSBudWxsXG4gICAgY2hpbGQ/LmtpbGwoJ1NJR0tJTEwnKVxuICAgIGNoaWxkID0gbnVsbFxuICAgIHJlcnVuID0gZmFsc2VcbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgY3VycmVudCA9IG51bGxcbiAgICAgIG9uQ2hhbmdlKClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXR1cCgpIHtcbiAgICB0ZWFyZG93bigpXG4gICAgaWYgKCFlbmFibGVkIHx8ICFyb290KSByZXR1cm5cbiAgICBnaXREaXIgPSBmaW5kR2l0RGlyKHJvb3QpXG4gICAgaWYgKCFnaXREaXIpIHJldHVyblxuICAgIGNvbnN0IHN0YXJ0ZWQgPSBlcG9jaFxuICAgIHRyeSB7XG4gICAgICB3YXRjaGVyID0gd2F0Y2goZ2l0RGlyLCAoKSA9PiB7XG4gICAgICAgIGlmIChlcG9jaCA9PT0gc3RhcnRlZCkgcmVmcmVzaCgpXG4gICAgICB9KVxuICAgICAgd2F0Y2hlci5vbignZXJyb3InLCAoKSA9PiB7fSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIHdhdGNoZXIgPSBudWxsXG4gICAgfVxuICAgIHBvbGwgPSBzZXRJbnRlcnZhbChydW4sIFBPTExfTVMpXG4gICAgcG9sbC51bnJlZj8uKClcbiAgICBydW4oKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVmcmVzaCgpIHtcbiAgICBpZiAoIWVuYWJsZWQgfHwgIWdpdERpciB8fCBkZWJvdW5jZSkgcmV0dXJuXG4gICAgZGVib3VuY2UgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRlYm91bmNlID0gbnVsbFxuICAgICAgcnVuKClcbiAgICB9LCBERUJPVU5DRV9NUylcbiAgICBkZWJvdW5jZS51bnJlZj8uKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHJ1bigpIHtcbiAgICBpZiAoIWVuYWJsZWQgfHwgIWdpdERpciB8fCAhcm9vdCkgcmV0dXJuXG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICByZXJ1biA9IHRydWVcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzdGFydGVkID0gZXBvY2hcbiAgICBjb25zdCBicmFuY2ggPSByZWFkQnJhbmNoKGdpdERpcilcbiAgICBjb25zdCBwcm9jID0gc3Bhd24oJ2dpdCcsIFsnLS1uby1vcHRpb25hbC1sb2NrcycsICdkaWZmJywgJ0hFQUQnLCAnLS1zaG9ydHN0YXQnXSwge1xuICAgICAgY3dkOiByb290LFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAnaWdub3JlJ10sXG4gICAgfSlcbiAgICBjaGlsZCA9IHByb2NcbiAgICBsZXQgb3V0cHV0ID0gJydcbiAgICBwcm9jLnN0ZG91dC5vbignZGF0YScsIChjaHVuaykgPT4ge1xuICAgICAgb3V0cHV0ICs9IGNodW5rXG4gICAgfSlcbiAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBwcm9jLmtpbGwoJ1NJR0tJTEwnKSwgR0lUX1RJTUVPVVRfTVMpXG4gICAgdGltZW91dC51bnJlZj8uKClcbiAgICBsZXQgZmluaXNoZWQgPSBmYWxzZVxuICAgIGNvbnN0IGRvbmUgPSAoY29kZSkgPT4ge1xuICAgICAgaWYgKGZpbmlzaGVkKSByZXR1cm5cbiAgICAgIGZpbmlzaGVkID0gdHJ1ZVxuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gICAgICBpZiAoY2hpbGQgPT09IHByb2MpIGNoaWxkID0gbnVsbFxuICAgICAgaWYgKGVwb2NoICE9PSBzdGFydGVkKSByZXR1cm5cbiAgICAgIGNvbnN0IHN0YXRzID0gY29kZSA9PT0gMCA/IHBhcnNlU2hvcnRzdGF0KG91dHB1dCkgOiB7IGFkZGVkOiAwLCByZW1vdmVkOiAwIH1cbiAgICAgIGNvbnN0IG5leHQgPSBicmFuY2ggPyB7IGJyYW5jaCwgLi4uc3RhdHMgfSA6IG51bGxcbiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXh0KSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudCkpIHtcbiAgICAgICAgY3VycmVudCA9IG5leHRcbiAgICAgICAgb25DaGFuZ2UoKVxuICAgICAgfVxuICAgICAgaWYgKHJlcnVuKSB7XG4gICAgICAgIHJlcnVuID0gZmFsc2VcbiAgICAgICAgcmVmcmVzaCgpXG4gICAgICB9XG4gICAgfVxuICAgIHByb2Mub24oJ2Nsb3NlJywgZG9uZSlcbiAgICBwcm9jLm9uKCdlcnJvcicsICgpID0+IGRvbmUoLTEpKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6ICgpID0+IGN1cnJlbnQsXG4gICAgcmVmcmVzaCxcbiAgICByZXRhcmdldChuZXh0Um9vdCkge1xuICAgICAgcm9vdCA9IG5leHRSb290XG4gICAgICBzZXR1cCgpXG4gICAgfSxcbiAgICBzZXRFbmFibGVkKHZhbHVlKSB7XG4gICAgICBlbmFibGVkID0gdmFsdWUgPT09IHRydWVcbiAgICAgIHNldHVwKClcbiAgICB9LFxuICAgIGRpc3Bvc2U6IHRlYXJkb3duLFxuICB9XG59XG4iLCAiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnXG5pbXBvcnQgeyB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBNZW51LCBQcm9ncmVzc0JhciwgU2Nyb2xsQm94LCBTaGltbWVyLCBUZXh0QXJlYSwgdXNlRm9jdXMsIHVzZUZvY3VzVHJhcCwgdXNlRnJhbWVTdGF0cywgdXNlSW5wdXQsIHVzZVNlbGVjdGlvbiwgdXNlVG9hc3QgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBtYWtlRXZlbnQgfSBmcm9tICcuLi9jb3JlL2V2ZW50cy5qcydcbmltcG9ydCB7IGNyZWF0ZVNlc3Npb24sIG9wZW5TZXNzaW9uLCBsb2FkU2Vzc2lvbiwgbGlzdFNlc3Npb25zLCBkZWxldGVTZXNzaW9uLCBkZWxldGVQcm9qZWN0RGF0YSB9IGZyb20gJy4uL2NvcmUvc2Vzc2lvbi5qcydcbmltcG9ydCB7IGRlcml2ZVN0YXRlLCB1c2VyRW50cmllcywgcmV3aW5kU3RhdHMgfSBmcm9tICcuLi9jb3JlL2Rlcml2ZS5qcydcbmltcG9ydCB7IGFwcGVuZFByb21wdCwgbG9hZFByb2plY3RQcm9tcHRzLCBsb2FkR2xvYmFsUHJvbXB0cyB9IGZyb20gJy4uL2NvcmUvaGlzdG9yeS5qcydcbmltcG9ydCB7IHJ1blR1cm4sIHN1bW1hcml6ZVRleHQsIGNvbXBhY3RIaXN0b3J5LCBjb21wYWN0UHJvZ3Jlc3MgfSBmcm9tICcuLi9jb3JlL2FnZW50LmpzJ1xuaW1wb3J0IHsgY29tcGFjdGlvblByb21wdCwgZm9ybWF0Q29tcGFjdFN1bW1hcnksIHN1bW1hcnlTZWN0aW9ucyB9IGZyb20gJy4uL2NvcmUvY29tcGFjdGlvbi5qcydcbmltcG9ydCB7IGNyZWF0ZVRvb2xzZXQgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL2luZGV4LmpzJ1xuaW1wb3J0IHsgc2NhblVzZXJUb29scyB9IGZyb20gJy4uL2NvcmUvdXNlci10b29scy5qcydcbmltcG9ydCB7IGNyZWF0ZVNraWxsSW5kZXggfSBmcm9tICcuLi9jb3JlL3NraWxscy5qcydcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRJbmRleCB9IGZyb20gJy4uL2NvcmUvY29tbWFuZHMuanMnXG5pbXBvcnQgeyByZXZlcnRFZGl0cywgcmVhcHBseUVkaXRzIH0gZnJvbSAnLi4vY29yZS9yZXdpbmQuanMnXG5pbXBvcnQgeyBidWlsZFN5c3RlbVByb21wdCB9IGZyb20gJy4uL2NvcmUvc3lzdGVtLXByb21wdC5qcydcbmltcG9ydCB7IGNoZWNrRm9yVXBkYXRlLCBmZXRjaExhdGVzdFZlcnNpb24sIG5ld2VyVmVyc2lvbiwgaXNEZXZJbnN0YWxsLCBydW5VcGRhdGUgfSBmcm9tICcuLi9jb3JlL3VwZGF0ZS5qcydcbmltcG9ydCB7IG1lbW9yeUluZGV4IH0gZnJvbSAnLi4vY29yZS9tZW1vcnkuanMnXG5pbXBvcnQgeyB0cmFuc2NyaXB0VG9NYXJrZG93biB9IGZyb20gJy4uL2NvcmUvZXhwb3J0LmpzJ1xuaW1wb3J0IHsgZmluZE1vZGVsLCBlc3RpbWF0ZUNvc3QgfSBmcm9tICcuLi9jb3JlL21vZGVscy5qcydcbmltcG9ydCB7IGFkaG9jTW9kZWwgfSBmcm9tICcuLi9jb3JlL2NhdGFsb2cuanMnXG5pbXBvcnQgeyB3cml0ZUNvbmZpZyB9IGZyb20gJy4uL2NvcmUvY29uZmlnLmpzJ1xuaW1wb3J0IHsgY29ubmVjdE9wZW5BSSwgb3BlbmFpQ3JlZGVudGlhbHMsIG9wZW5haVN0YXR1cywgZGlzY29ubmVjdE9wZW5BSSB9IGZyb20gJy4uL2NvcmUvb3BlbmFpLWF1dGguanMnXG5pbXBvcnQgeyBsb2FkQ29kZXhNb2RlbHMgfSBmcm9tICcuLi9jb3JlL2NvZGV4LW1vZGVscy5qcydcbmltcG9ydCB7IGZ1enp5U2NvcmUgfSBmcm9tICcuL2Z1enp5LmpzJ1xuaW1wb3J0IHsgY29tcGxldGlvbkNvbnRleHQsIGFwcGx5Q29tcGxldGlvbiB9IGZyb20gJy4vY29tcGxldGlvbi5qcydcbmltcG9ydCB7IGV4dHJhY3RJbWFnZVBhdGhzLCBtZWRpYVR5cGVGb3IsIGZpbmFsaXplVXNlckNvbnRlbnQsIHBsYWNlaG9sZGVyaXplSW1hZ2VQYXRocywgaW5wdXRUZXh0RnJvbUNvbnRlbnQgfSBmcm9tICcuL2F0dGFjaG1lbnRzLmpzJ1xuaW1wb3J0IHsgbGlzdEZpbGVzIH0gZnJvbSAnLi9maWxlcy5qcydcbmltcG9ydCB7IGhpZ2hsaWdodFZlcnNpb24gfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcbmltcG9ydCB7IGNvbXBhY3ROdW1iZXIgfSBmcm9tICcuL2Zvcm1hdC5qcydcbmltcG9ydCB7IEFuaW1hdGVkVmFsdWUgfSBmcm9tICcuL2FuaW1hdGVkLXZhbHVlLmpzeCdcbmltcG9ydCB7IE1lc3NhZ2UsIHVpVGl0bGUgfSBmcm9tICcuL3RyYW5zY3JpcHQuanN4J1xuaW1wb3J0IHsgRW1wdHlTdGF0ZSB9IGZyb20gJy4vZW1wdHktc3RhdGUuanN4J1xuaW1wb3J0IHsgSGVscCB9IGZyb20gJy4vaGVscC5qc3gnXG5pbXBvcnQgeyBNb2RlbFBhbmVsLCBFZmZvcnRQYW5lbCwgVGhlbWVQYW5lbCwgQ29uZmlnUGFuZWwsIENvbmZpcm1QYW5lbCwgSGlzdG9yeVBhbmVsLCBSZXdpbmRQaWNrUGFuZWwsIFJld2luZEFjdGlvblBhbmVsLCBSZXN1bWVQYW5lbCwgUHJvamVjdFBhbmVsLCBNY3BQYW5lbCwgTWVtb3J5UGFuZWwsIEluZm9MaXN0UGFuZWwsIFNoZWxsc1BhbmVsLCBXYWtldXBzUGFuZWwsIENvbm5lY3RQYW5lbCwgdGltZUFnbyB9IGZyb20gJy4vcGFuZWxzLmpzeCdcbmltcG9ydCB7IGFjY2VudCwgc2V0QWNjZW50LCBzZXRQYWxldHRlLCBwYWxldHRlTmFtZSwgcGFsZXR0ZUxpc3QsIERFRkFVTFRfQUNDRU5ULCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVELCBHUkVFTiwgSElHSExJR0hUIH0gZnJvbSAnLi90aGVtZS5qcydcblxuY29uc3QgRUZGT1JUX0xFVkVMUyA9IFtcbiAgeyBrZXk6IG51bGwsIGRlc2M6ICdsZXQgdGhlIHByb3ZpZGVyIGRlY2lkZSBob3cgbXVjaCB0byB0aGluaycgfSxcbiAgeyBrZXk6ICdsb3cnLCBkZXNjOiAncXVpY2sgYW5zd2VycywgbWluaW1hbCB0aGlua2luZycgfSxcbiAgeyBrZXk6ICdtZWRpdW0nLCBkZXNjOiAnbW9kZXJhdGUgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ2hpZ2gnLCBkZXNjOiAnZ2VuZXJvdXMgdGhpbmtpbmcgYnVkZ2V0JyB9LFxuICB7IGtleTogJ21heCcsIGRlc2M6ICdtYXhpbXVtIHRoaW5raW5nIGJ1ZGdldCcgfSxcbl1cblxuY29uc3QgQ09NTUFORFMgPSBbXG4gIHsgbmFtZTogJ21vZGVsJywgZGVzYzogJ1N3aXRjaCB0aGUgYWN0aXZlIG1vZGVsIGZvciB0aGlzIHNlc3Npb24nIH0sXG4gIHsgbmFtZTogJ2Nvbm5lY3QnLCBkZXNjOiAnU2lnbiBpbiB3aXRoIENoYXRHUFQgdG8gdXNlIGEgQ29kZXggc3Vic2NyaXB0aW9uJyB9LFxuICB7IG5hbWU6ICdlZmZvcnQnLCBkZXNjOiAnU2V0IHRoZSB0aGlua2luZyBlZmZvcnQgZm9yIHRoaXMgc2Vzc2lvbicgfSxcbiAgeyBuYW1lOiAncmVzdW1lJywgZGVzYzogJ1BpY2sgdXAgYSBwcmV2aW91cyBzZXNzaW9uIHdoZXJlIHlvdSBsZWZ0IG9mZicgfSxcbiAgeyBuYW1lOiAnbmV3JywgZGVzYzogJ1N0YXJ0IGEgbmV3IHNlc3Npb24gaW4gdGhpcyBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICdkZWxldGUnLCBkZXNjOiAnUGVybWFuZW50bHkgZGVsZXRlIHRoZSBjdXJyZW50IHNlc3Npb24gYW5kIHN0YXJ0IGZyZXNoJyB9LFxuICB7IG5hbWU6ICdwcm9qZWN0JywgZGVzYzogJ1N3aXRjaCBwcm9qZWN0czoganVtcCB0byBhbm90aGVyIHByb2plY3QsIHNhbWUgYXMgY3RybCtwJyB9LFxuICB7IG5hbWU6ICdjd2QnLCBkZXNjOiAnU2hvdyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJvamVjdCByb290JyB9LFxuICB7IG5hbWU6ICdza2lsbHMnLCBkZXNjOiAnTGlzdCBldmVyeSBza2lsbDogYnVpbHRpbiwgZ2xvYmFsLCBhbmQgcHJvamVjdCcgfSxcbiAgeyBuYW1lOiAnY29tbWFuZHMnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kOiBidWlsdGluLCBnbG9iYWwsIGFuZCBwcm9qZWN0JyB9LFxuICB7IG5hbWU6ICd0b29scycsIGRlc2M6ICdMaXN0IGJ1aWx0aW4gYW5kIHVzZXItZGVmaW5lZCB0b29sczsgTUNQIHRvb2xzIGxpdmUgaW4gL21jcCcgfSxcbiAgeyBuYW1lOiAncmV3aW5kJywgZGVzYzogJ1Jlc3RvcmUgdGhlIGNvbnZlcnNhdGlvbiB0byBhIHByZXZpb3VzIG1lc3NhZ2UnIH0sXG4gIHsgbmFtZTogJ2hpc3RvcnknLCBkZXNjOiAnU2VhcmNoIHByb21wdHMgeW91IHByZXZpb3VzbHkgc2VudCcgfSxcbiAgeyBuYW1lOiAncmVuYW1lJywgZGVzYzogJ05hbWUgdGhpcyBzZXNzaW9uOyBvbWl0IHRoZSBuYW1lIHRvIHJlc3RvcmUgaXRzIGF1dG9tYXRpYyB0aXRsZScgfSxcbiAgeyBuYW1lOiAnY29sb3InLCBkZXNjOiAnQ29sb3IgdGhpcyBzZXNzaW9uOiAvY29sb3IgPG5hbWUgb3IgI2hleD4nIH0sXG4gIHsgbmFtZTogJ3RoZW1lJywgZGVzYzogJ1BpY2sgYSBjb2xvciB0aGVtZTsgL3RoZW1lIDxuYW1lPiBhcHBsaWVzIG9uZSBkaXJlY3RseScgfSxcbiAgeyBuYW1lOiAnY29uZmlnJywgZGVzYzogJ0NvbmZpZ3VyZSBwaWNvIGRpc3BsYXkgYW5kIGJlaGF2aW9yJyB9LFxuICB7IG5hbWU6ICdtY3AnLCBkZXNjOiAnTWFuYWdlIE1DUCBzZXJ2ZXJzOiBhZGQsIHRvZ2dsZSwgcmVjb25uZWN0JyB9LFxuICB7IG5hbWU6ICdzaGVsbHMnLCBkZXNjOiAnVmlldyBhbmQgbWFuYWdlIGJhY2tncm91bmQgc2hlbGxzJyB9LFxuICB7IG5hbWU6ICd3YWtldXBzJywgZGVzYzogJ1ZpZXcgYW5kIGNhbmNlbCBzY2hlZHVsZWQgd2FrZS11cHMnIH0sXG4gIHsgbmFtZTogJ21lbW9yeScsIGRlc2M6ICdCcm93c2UgYW5kIG1hbmFnZSBzYXZlZCBtZW1vcmllczogcHJvamVjdCBhbmQgZ2xvYmFsJyB9LFxuICB7IG5hbWU6ICdjb21wYWN0JywgZGVzYzogJ1N1bW1hcml6ZSB0aGUgY29udmVyc2F0aW9uIHRvIGZyZWUgdGhlIGNvbnRleHQgd2luZG93JyB9LFxuICB7IG5hbWU6ICdjbGVhcicsIGRlc2M6ICdDbGVhciB0aGUgY29udmVyc2F0aW9uIGFuZCBmcmVlIHRoZSBjb250ZXh0IHdpbmRvdycgfSxcbiAgeyBuYW1lOiAnY29zdCcsIGRlc2M6ICdTaG93IHRva2VuIHVzYWdlIGFuZCBlc3RpbWF0ZWQgY29zdCBzbyBmYXInIH0sXG4gIHsgbmFtZTogJ2NvbnRleHQnLCBkZXNjOiBcIlNob3cgd2hhdCdzIGluIHRoZSBtb2RlbCdzIGNvbnRleHQgYW5kIGhvdyBiaWcgZWFjaCBwaWVjZSBpc1wiIH0sXG4gIHsgbmFtZTogJ2V4cG9ydCcsIGRlc2M6ICdTYXZlIHRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiB0byBhIG1hcmtkb3duIGZpbGUnIH0sXG4gIHsgbmFtZTogJ3VwZGF0ZScsIGRlc2M6ICdVcGRhdGUgcGljbyB0byB0aGUgbGF0ZXN0IHJlbGVhc2UgZnJvbSBucG0nIH0sXG4gIHsgbmFtZTogJ2hlbHAnLCBkZXNjOiAnTGlzdCBldmVyeSBjb21tYW5kIGFuZCB3aGF0IGl0IGRvZXMnIH0sXG5dXG5cbmNvbnN0IFNFU1NJT05fQ09MT1JTID0ge1xuICByZWQ6ICcjZjg3MTcxJyxcbiAgb3JhbmdlOiAnI2ZiOTIzYycsXG4gIHllbGxvdzogJyNmYWNjMTUnLFxuICBncmVlbjogJyM2QkU3OTUnLFxuICB0ZWFsOiAnIzJkZDRiZicsXG4gIGN5YW46ICcjMjJkM2VlJyxcbiAgYmx1ZTogJyM2MGE1ZmEnLFxuICBwdXJwbGU6ICcjYTc4YmZhJyxcbiAgcGluazogJyNmNDcyYjYnLFxuICBncmF5OiAnIzljYTNhZicsXG59XG5cbmNvbnN0IEhJU1RPUllfU0NPUEVTID0gWydzZXNzaW9uJywgJ3Byb2plY3QnLCAnZXZlcnl3aGVyZSddXG5jb25zdCBNRU1PUllfU0NPUEVTID0gWydhbGwnLCAncHJvamVjdCcsICdnbG9iYWwnXVxuY29uc3QgU0hFTExfU1RSSVBfTUFYID0gNVxuXG4vLyBvbmx5IHRoZSBuZXdlc3Qgc2xpY2Ugb2YgYSBsb25nIHRyYW5zY3JpcHQgcmVuZGVyczsgb2xkZXIgaXRlbXMgbG9hZCBpblxuLy8gYmF0Y2hlcyB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgdG8gdGhlIHRvcC4gcmVuZGVyIGNvc3QgaXMgcGVyLWl0ZW0sIHNvIHRoaXNcbi8vIGtlZXBzIGRheS1sb25nIHNlc3Npb25zIGFzIGZhc3QgYXMgZnJlc2ggb25lc1xuY29uc3QgSElTVE9SWV9XSU5ET1cgPSA1MFxuY29uc3QgUkVTVU1FX1NDT1BFUyA9IFsncHJvamVjdCcsICdldmVyeXdoZXJlJ11cblxuZnVuY3Rpb24gY29tcGFjdFRvb2xSdW5zKGl0ZW1zLCBhY3RpdmUgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHQgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDspIHtcbiAgICBpZiAoaXRlbXNbaV0ua2luZCAhPT0gJ3Rvb2wnKSB7XG4gICAgICByZXN1bHQucHVzaChpdGVtc1tpKytdKVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgbGV0IGVuZCA9IGkgKyAxXG4gICAgd2hpbGUgKGVuZCA8IGl0ZW1zLmxlbmd0aCAmJiBpdGVtc1tlbmRdLmtpbmQgPT09ICd0b29sJykgZW5kKytcbiAgICBjb25zdCBydW4gPSBpdGVtcy5zbGljZShpLCBlbmQpXG4gICAgcmVzdWx0LnB1c2gocnVuLmxlbmd0aCA9PT0gMSA/IHJ1blswXSA6IHsga2luZDogJ3Rvb2wtZ3JvdXAnLCB0b29sczogcnVuLCBhY3RpdmU6IGFjdGl2ZSAmJiBlbmQgPT09IGl0ZW1zLmxlbmd0aCB9KVxuICAgIGkgPSBlbmRcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBcHAoeyBib290IH0pIHtcbiAgY29uc3QgeyBjd2QsIHJvb3QsIHZlcnNpb24sIG1vZGVscywgc2tpbGxzLCBtY3AsIHRyYWNrZXIsIHN0YXJ0dXBDb250ZXh0IH0gPSBib290XG5cbiAgY29uc3QgW2Rlcml2ZWQsIHNldERlcml2ZWRdID0gY3JlYXRlU2lnbmFsKGRlcml2ZVN0YXRlKFtdKSlcbiAgY29uc3QgW292ZXJsYXksIHNldE92ZXJsYXldID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc3RyZWFtaW5nLCBzZXRTdHJlYW1pbmddID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFt0dXJuUGhhc2UsIHNldFR1cm5QaGFzZV0gPSBjcmVhdGVTaWduYWwoJ2lkbGUnKVxuICBjb25zdCBbYnVzeSwgc2V0QnVzeV0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wYWN0aW5nLCBzZXRDb21wYWN0aW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2NvbXBhY3RTdGF0dXMsIHNldENvbXBhY3RTdGF0dXNdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzdGFydGVkQXQsIHNldFN0YXJ0ZWRBdF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2lucHV0LCBzZXRJbnB1dF0gPSBjcmVhdGVTaWduYWwoJycpXG4gIGNvbnN0IFttb2RlbCwgc2V0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZGVmYXVsdE1vZGVsLCBzZXREZWZhdWx0TW9kZWxdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbE1vZGVsKVxuICBjb25zdCBbZWZmb3J0LCBzZXRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW2RlZmF1bHRFZmZvcnQsIHNldERlZmF1bHRFZmZvcnRdID0gY3JlYXRlU2lnbmFsKGJvb3QuaW5pdGlhbEVmZm9ydClcbiAgY29uc3QgW3Nob3dFZmZvcnRQYW5lbCwgc2V0U2hvd0VmZm9ydFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dUaGVtZVBhbmVsLCBzZXRTaG93VGhlbWVQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93Q29uZmlnUGFuZWwsIHNldFNob3dDb25maWdQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlQ29uZmlybSwgc2V0U2hvd0RlbGV0ZUNvbmZpcm1dID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbY2xvdWRzLCBzZXRDbG91ZHNdID0gY3JlYXRlU2lnbmFsKGJvb3QuY2xvdWRzKVxuICBjb25zdCBbY29tcGFjdFRvb2xIaXN0b3J5LCBzZXRDb21wYWN0VG9vbEhpc3RvcnldID0gY3JlYXRlU2lnbmFsKGJvb3QuY29tcGFjdFRvb2xIaXN0b3J5KVxuICBjb25zdCBbZ2l0Rm9vdGVyLCBzZXRHaXRGb290ZXJdID0gY3JlYXRlU2lnbmFsKGJvb3QuZ2l0Rm9vdGVyKVxuICBjb25zdCBbc2hvd01lbW9yeVBhbmVsLCBzZXRTaG93TWVtb3J5UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbbWVtU2NvcGUsIHNldE1lbVNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbbWVtb3J5TGlzdCwgc2V0TWVtb3J5TGlzdF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFt0aGVtZVByZWYsIHNldFRoZW1lUHJlZl0gPSBjcmVhdGVTaWduYWwoYm9vdC50aGVtZVByZWYgfHwgJ2F1dG8nKVxuICBjb25zdCBbcXVldWVkLCBzZXRRdWV1ZWRdID0gY3JlYXRlU2lnbmFsKFtdKVxuICBjb25zdCBbc2VudCwgc2V0U2VudF0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtoaXN0SWR4LCBzZXRIaXN0SWR4XSA9IGNyZWF0ZVNpZ25hbCgtMSlcbiAgY29uc3QgW2NtZEluZGV4LCBzZXRDbWRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2NtZEN5Y2xlLCBzZXRDbWRDeWNsZV0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2ZpbGVJbmRleCwgc2V0RmlsZUluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZmlsZUxpc3QsIHNldEZpbGVMaXN0XSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW2ZpbGVzRGlzbWlzc2VkLCBzZXRGaWxlc0Rpc21pc3NlZF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFt2aWV3LCBzZXRWaWV3XSA9IGNyZWF0ZVNpZ25hbCgnY2hhdCcpXG4gIGNvbnN0IFt2ZXJib3NlLCBzZXRWZXJib3NlXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNb2RlbFBhbmVsLCBzZXRTaG93TW9kZWxQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93SGlzdG9yeVBhbmVsLCBzZXRTaG93SGlzdG9yeVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW2hpc3RTY29wZSwgc2V0SGlzdFNjb3BlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbaGlzdFByb21wdHMsIHNldEhpc3RQcm9tcHRzXSA9IGNyZWF0ZVNpZ25hbChbXSlcbiAgY29uc3QgW3Nob3dSZXN1bWVQYW5lbCwgc2V0U2hvd1Jlc3VtZVBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Jlc3VtZVNjb3BlLCBzZXRSZXN1bWVTY29wZV0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jlc3VtZVNlc3Npb25zLCBzZXRSZXN1bWVTZXNzaW9uc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtyZXN1bWVMb2FkaW5nLCBzZXRSZXN1bWVMb2FkaW5nXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dNY3BQYW5lbCwgc2V0U2hvd01jcFBhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dQcm9qZWN0UGFuZWwsIHNldFNob3dQcm9qZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbaW5mb1BhbmVsLCBzZXRJbmZvUGFuZWxdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtzaG93U2hlbGxzUGFuZWwsIHNldFNob3dTaGVsbHNQYW5lbF0gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtzaG93V2FrZXVwc1BhbmVsLCBzZXRTaG93V2FrZXVwc1BhbmVsXSA9IGNyZWF0ZVNpZ25hbChmYWxzZSlcbiAgY29uc3QgW3Nob3dDb25uZWN0UGFuZWwsIHNldFNob3dDb25uZWN0UGFuZWxdID0gY3JlYXRlU2lnbmFsKGZhbHNlKVxuICBjb25zdCBbYXV0aFByb3ZpZGVycywgc2V0QXV0aFByb3ZpZGVyc10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtzaGVsbHNWZXJzaW9uLCBzZXRTaGVsbHNWZXJzaW9uXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZ2l0VmVyc2lvbiwgc2V0R2l0VmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Byb2plY3RzLCBzZXRQcm9qZWN0c10gPSBjcmVhdGVTaWduYWwoW10pXG4gIGNvbnN0IFtwcm9qZWN0c0xvYWRpbmcsIHNldFByb2plY3RzTG9hZGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFttY3BTZXJ2ZXJzLCBzZXRNY3BTZXJ2ZXJzXSA9IGNyZWF0ZVNpZ25hbChtY3AubGlzdCgpKVxuICBjb25zdCBbY29tcGxldGluZywgc2V0Q29tcGxldGluZ10gPSBjcmVhdGVTaWduYWwoZmFsc2UpXG4gIGNvbnN0IFtjb21wSW5kZXgsIHNldENvbXBJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW3Jld2luZFN0ZXAsIHNldFJld2luZFN0ZXBdID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtyZXdpbmRUYXJnZXQsIHNldFJld2luZFRhcmdldF0gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW29mZnNldCwgc2V0T2Zmc2V0XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbZm9sbG93LCBzZXRGb2xsb3ddID0gY3JlYXRlU2lnbmFsKHRydWUpXG4gIGNvbnN0IFtoaXN0V2luZG93LCBzZXRIaXN0V2luZG93XSA9IGNyZWF0ZVNpZ25hbChISVNUT1JZX1dJTkRPVylcblxuICBjb25zdCByZWZzID0gYm9vdC5yZWZzXG4gIHJlZnMuc2Vzc2lvbiA/Pz0gbnVsbFxuICByZWZzLmFsbEV2ZW50cyA/Pz0gW11cbiAgcmVmcy5wZXJzaXN0ZWQgPz89IDBcbiAgcmVmcy5hYm9ydCA9IHJlZnMuYWJvcnQgfHwgbnVsbFxuICByZWZzLnJld2luZFVuZG8gPSByZWZzLnJld2luZFVuZG8gfHwgbnVsbFxuICByZWZzLnF1aXRBdCA/Pz0gMFxuICByZWZzLmF0dGFjaG1lbnRzID8/PSBuZXcgTWFwKClcbiAgcmVmcy5pbWFnZUNvdW50ID8/PSAwXG5cbiAgYm9vdC5zZXRNY3BOb3RpZnkoKCkgPT4gc2V0TWNwU2VydmVycyhib290Lm1jcC5saXN0KCkpKVxuICBib290LnNldFNoZWxsc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0V2FrZXVwc05vdGlmeSgoKSA9PiBzZXRTaGVsbHNWZXJzaW9uKCh2KSA9PiB2ICsgMSkpXG4gIGJvb3Quc2V0R2l0Tm90aWZ5KCgpID0+IHNldEdpdFZlcnNpb24oKHYpID0+IHYgKyAxKSlcbiAgYm9vdC5zZXRXYWtldXBzRmlyZSgod2FrZXVwKSA9PiB7XG4gICAgZmxhc2goYHdha2UtdXAgJHt3YWtldXAuaWR9IGZpcmVkYClcbiAgICBub3RlU3lzdGVtKFxuICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSBzY2hlZHVsZWQgd2FrZS11cCAke3dha2V1cC5pZH0gZmlyZWQuIE5vdGUgdG8gc2VsZjogJHt3YWtldXAubm90ZX1gLFxuICAgICAgeyB3YWtlOiB0cnVlIH0sXG4gICAgKVxuICB9KVxuICBib290LnNldFNoZWxsc0V4aXQoKHNoZWxsKSA9PiB7XG4gICAgaWYgKHNoZWxsLmtpbGxlZEJ5ID09PSAnbW9kZWwnKSB7XG4gICAgICBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0ga2lsbGVkYClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoc2hlbGwua2lsbGVkQnkgPT09ICd1c2VyJykge1xuICAgICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGtpbGxlZGApXG4gICAgICBub3RlU3lzdGVtKGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gdGhlIHVzZXIgbWFudWFsbHkga2lsbGVkIGJhY2tncm91bmQgc2hlbGwgJHtzaGVsbC5pZH0gKCR7c2hlbGwuZGVzY3JpcHRpb24gfHwgc2hlbGwuY29tbWFuZH0pIGZyb20gdGhlIHNoZWxscyBwYW5lbCAoU0lHVEVSTSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXN0YXJ0IGl0IHVubGVzcyBhc2tlZC5gLCB7IHdha2U6IGZhbHNlIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZmxhc2goYHNoZWxsICR7c2hlbGwuaWR9IGV4aXRlZCBcdTAwQjcgY29kZSAke3NoZWxsLmV4aXRDb2RlfWApXG4gICAgY29uc3QgdGFpbCA9IGJvb3Quc2hlbGxzLm91dHB1dChzaGVsbC5pZCwgeyB0YWlsOiAzMCB9KS5vdXRwdXRcbiAgICBjb25zdCBzZWNzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoKHNoZWxsLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzaGVsbC5zdGFydGVkQXQpIC8gMTAwMCkpXG4gICAgY29uc3QgcmFuID0gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG4gICAgbm90ZVN5c3RlbShcbiAgICAgIGBbc3lzdGVtIG5vdGlmaWNhdGlvbl0gYmFja2dyb3VuZCBzaGVsbCAke3NoZWxsLmlkfSAoJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBzaGVsbC5jb21tYW5kfSkgZXhpdGVkIHdpdGggY29kZSAke3NoZWxsLmV4aXRDb2RlfSBhZnRlciAke3Jhbn0uYCArXG4gICAgICAgICh0YWlsID8gYFxcblJlY2VudCBvdXRwdXQ6XFxuJHt0YWlsfWAgOiAnJyksXG4gICAgICB7IHdha2U6IHRydWUgfSxcbiAgICApXG4gIH0pXG5cbiAgZnVuY3Rpb24gbm90ZVN5c3RlbSh0ZXh0LCB7IHdha2UgfSkge1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID8/PSBbXVxuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzLnB1c2goeyB0ZXh0LCB3YWtlIH0pXG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN5c3RlbU5vdGVzKCkge1xuICAgIGlmICghcmVmcy5wZW5kaW5nU3lzdGVtTm90ZXM/Lmxlbmd0aCB8fCBidXN5KCkgfHwgdmlldygpICE9PSAnY2hhdCcgfHwgIXJlZnMuc2Vzc2lvbikgcmV0dXJuXG4gICAgY29uc3Qgbm90ZXMgPSByZWZzLnBlbmRpbmdTeXN0ZW1Ob3Rlc1xuICAgIHJlZnMucGVuZGluZ1N5c3RlbU5vdGVzID0gW11cbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnc3lzdGVtX25vdGUnLCB7IHRleHQ6IG5vdGVzLm1hcCgobikgPT4gbi50ZXh0KS5qb2luKCdcXG5cXG4nKSB9KSlcbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG5vdGVzLnNvbWUoKG4pID0+IG4ud2FrZSkpIHJ1bkFnZW50VHVybigpXG4gIH1cblxuICBjb25zdCBza2lsbENvbW1hbmRzID0gc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogYHNraWxsIFx1MDBCNyAke3MuZGVzY3JpcHRpb24gfHwgcy5zb3VyY2V9YCwgc2tpbGw6IHRydWUgfSkpXG4gIGNvbnN0IHVzZXJDb21tYW5kcyA9IGJvb3QuY29tbWFuZHMubGlzdCgpLm1hcCgoYykgPT4gKHsgbmFtZTogYy5uYW1lLCBkZXNjOiBgY29tbWFuZCBcdTAwQjcgJHtjLmRlc2NyaXB0aW9uIHx8IGMuc291cmNlfWAsIGNvbW1hbmQ6IHRydWUgfSkpXG4gIGNvbnN0IGJ5TmFtZSA9IG5ldyBNYXAoKVxuICBjb25zdCBzaGFkb3dlZCA9IFtdXG4gIGZvciAoY29uc3QgYyBvZiBbLi4uQ09NTUFORFMsIC4uLnNraWxsQ29tbWFuZHMsIC4uLnVzZXJDb21tYW5kc10pIHtcbiAgICBpZiAoYnlOYW1lLmhhcyhjLm5hbWUpKSBzaGFkb3dlZC5wdXNoKGAke2Muc2tpbGwgPyAnc2tpbGwnIDogJ2NvbW1hbmQnfSBcIiR7Yy5uYW1lfVwiYClcbiAgICBlbHNlIGJ5TmFtZS5zZXQoYy5uYW1lLCBjKVxuICB9XG4gIGNvbnN0IGFsbENvbW1hbmRzID0gWy4uLmJ5TmFtZS52YWx1ZXMoKV1cbiAgaWYgKHNoYWRvd2VkLmxlbmd0aCAmJiAhcmVmcy53YXJuZWRTaGFkb3dlZCkge1xuICAgIHJlZnMud2FybmVkU2hhZG93ZWQgPSB0cnVlXG4gICAgc2V0VGltZW91dCgoKSA9PiBmbGFzaChgc2hhZG93ZWQgYnkgYW4gZWFybGllciBuYW1lLCByZW5hbWUgdG8gdXNlOiAke3NoYWRvd2VkLmpvaW4oJywgJyl9YCksIDApXG4gIH1cblxuICBjb25zdCB0b2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogMzUwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1yaWdodCcsXG4gICAgcmVuZGVyOiAobWVzc2FnZSkgPT4gPHRleHQgc3R5bGU9e3sgYmc6IGFjY2VudCgpLCBjb2xvcjogJ2JsYWNrJywgYm9sZDogdHJ1ZSB9fT57YCAke21lc3NhZ2V9IGB9PC90ZXh0PixcbiAgfSlcblxuICBjb25zdCB1cGRhdGVUb2FzdCA9IHVzZVRvYXN0KHtcbiAgICBkdXJhdGlvbjogODAwMCxcbiAgICBwb3NpdGlvbjogJ3RvcC1jZW50ZXInLFxuICAgIHJlbmRlcjogKG1lc3NhZ2UpID0+IChcbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IGFjY2VudCgpIH19PlxuICAgICAgICA8U2hpbW1lciBjb2xvcj1cImJsYWNrXCIgaGlnaGxpZ2h0PXtISUdITElHSFR9IGR1cmF0aW9uPXsxNTAwfT57YCAke21lc3NhZ2V9IGB9PC9TaGltbWVyPlxuICAgICAgPC9ib3g+XG4gICAgKSxcbiAgfSlcblxuICBmdW5jdGlvbiBmbGFzaChtc2cpIHtcbiAgICB0b2FzdChtc2cpXG4gIH1cblxuICBpZiAoIXJlZnMudXBkYXRlQ2hlY2tlZCkge1xuICAgIHJlZnMudXBkYXRlQ2hlY2tlZCA9IHRydWVcbiAgICBjaGVja0ZvclVwZGF0ZSh2ZXJzaW9uKS50aGVuKChmb3VuZCkgPT4ge1xuICAgICAgaWYgKCFmb3VuZCkgcmV0dXJuXG4gICAgICB1cGRhdGVUb2FzdChgcGljbyB2JHtmb3VuZC52ZXJzaW9ufSBhdmFpbGFibGUgXHUwMEI3IC91cGRhdGVgKVxuICAgICAgZm91bmQubWFya05vdGlmaWVkKClcbiAgICB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGVuc3VyZVNlc3Npb24oKSB7XG4gICAgaWYgKCFyZWZzLnNlc3Npb24pIHJlZnMuc2Vzc2lvbiA9IGNyZWF0ZVNlc3Npb24oeyBjd2QsIHJvb3QgfSlcbiAgICB3aGlsZSAocmVmcy5wZXJzaXN0ZWQgPCByZWZzLmFsbEV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQocmVmcy5hbGxFdmVudHNbcmVmcy5wZXJzaXN0ZWRdKVxuICAgICAgcmVmcy5wZXJzaXN0ZWQrK1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlcnNpc3QoZXZlbnQpIHtcbiAgICByZWZzLmFsbEV2ZW50cy5wdXNoKGV2ZW50KVxuICAgIGlmIChyZWZzLnNlc3Npb24pIHtcbiAgICAgIHJlZnMuc2Vzc2lvbi5hcHBlbmQoZXZlbnQpXG4gICAgICByZWZzLnBlcnNpc3RlZCA9IHJlZnMuYWxsRXZlbnRzLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlRGVyaXZlKCkge1xuICAgIGNvbnN0IHN0YXRlID0gZGVyaXZlU3RhdGUocmVmcy5hbGxFdmVudHMpXG4gICAgc2V0RGVyaXZlZChzdGF0ZSlcbiAgICBzZXRBY2NlbnQoc3RhdGUuY29sb3IpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBzdGF0ZS5jb2xvciB8fCBERUZBVUxUX0FDQ0VOVCwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaFN0cmVhbShpdGVtcykge1xuICAgIGNvbnN0IHRleHQgPSBzdHJlYW1pbmcoKVxuICAgIGlmICh0ZXh0KSBpdGVtcy5wdXNoKHsga2luZDogJ2Fzc2lzdGFudCcsIHRleHQgfSlcbiAgICBzZXRTdHJlYW1pbmcobnVsbClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVUdXJuKHRleHQpIHtcbiAgICBjb25zdCB7IGNvbnRlbnQgfSA9IGZpbmFsaXplVXNlckNvbnRlbnQodGV4dCwgcmVmcy5hdHRhY2htZW50cylcbiAgICBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZTogeyByb2xlOiAndXNlcicsIGNvbnRlbnQgfSB9KSlcbiAgICBlbnN1cmVTZXNzaW9uKClcbiAgICByZURlcml2ZSgpXG4gICAgYXdhaXQgcnVuQWdlbnRUdXJuKClcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1Db21wYWN0aW9uKGluc3RydWN0aW9ucyA9ICcnKSB7XG4gICAgaWYgKGJ1c3koKSB8fCBjb21wYWN0aW5nKCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGlmIChzdGF0ZS5wcm92aWRlckhpc3RvcnkubGVuZ3RoIDwgNCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIGNvbXBhY3QgeWV0JylcblxuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSByZXR1cm4gZmxhc2goJ2NvZGV4IG1vZGVscyBuZWVkIGEgQ2hhdEdQVCBzaWduLWluOiBydW4gL2Nvbm5lY3QnKVxuICAgIH1cblxuICAgIGNvbnN0IGVudHJpZXMgPSB1c2VyRW50cmllcyhzdGF0ZSlcbiAgICBjb25zdCBrZWVwRnJvbSA9IGVudHJpZXMuYXQoLTIpPy5ldmVudElkID8/IGVudHJpZXMuYXQoLTEpPy5ldmVudElkXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBzZXRCdXN5KHRydWUpXG4gICAgc2V0Q29tcGFjdGluZyh0cnVlKVxuICAgIHNldENvbXBhY3RTdGF0dXMobnVsbClcbiAgICBzZXRTdGFydGVkQXQoRGF0ZS5ub3coKSlcbiAgICBsZXQgc3RyZWFtZWQgPSAnJ1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSBhd2FpdCBjb21wYWN0SGlzdG9yeSh7XG4gICAgICAgIGhpc3Rvcnk6IHN0YXRlLnByb3ZpZGVySGlzdG9yeSxcbiAgICAgICAgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIHByb21wdDogY29tcGFjdGlvblByb21wdChpbnN0cnVjdGlvbnMpLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBvblN0cmVhbTogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgIT09ICdjb250ZW50JykgcmV0dXJuXG4gICAgICAgICAgc3RyZWFtZWQgKz0gZXZlbnQuY29udGVudFxuICAgICAgICAgIHNldENvbXBhY3RTdGF0dXMoY29tcGFjdFByb2dyZXNzKHN0cmVhbWVkKSlcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBjb25zdCBzdW1tYXJ5ID0gZm9ybWF0Q29tcGFjdFN1bW1hcnkocmF3KVxuICAgICAgaWYgKCFzdW1tYXJ5KSB0aHJvdyBuZXcgRXJyb3IoJ2VtcHR5IHN1bW1hcnknKVxuICAgICAgaWYgKHN1bW1hcnlTZWN0aW9ucyhzdW1tYXJ5KSA8IDUpIHRocm93IG5ldyBFcnJvcignbWFsZm9ybWVkIHN1bW1hcnksIGNvbnZlcnNhdGlvbiBsZWZ0IHVudG91Y2hlZCcpXG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29tcGFjdCcsIHsgc3VtbWFyeSwga2VlcEZyb20sIHNlc3Npb25GaWxlOiByZWZzLnNlc3Npb24/LmZpbGUgfHwgbnVsbCB9KSlcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCdjb21wYWN0ZWQgXHUwMEI3IHJlY2VudCBtZXNzYWdlcyBrZXB0IHZlcmJhdGltJylcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChjb250cm9sbGVyLnNpZ25hbC5hYm9ydGVkKSBmbGFzaCgnY29tcGFjdGlvbiBjYW5jZWxsZWQnKVxuICAgICAgZWxzZSBmbGFzaChgY29tcGFjdCBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgMTAwKX1gKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDb21wYWN0aW5nKGZhbHNlKVxuICAgICAgc2V0Q29tcGFjdFN0YXR1cyhudWxsKVxuICAgICAgc2V0QnVzeShmYWxzZSlcbiAgICAgIHJlZnMuYWJvcnQgPSBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKGNvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHNldElucHV0KHEuam9pbignXFxuJykpXG4gICAgICBlbHNlIGV4ZWN1dGVUdXJuKHEuam9pbignXFxuJykpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWF5YmVBdXRvQ29tcGFjdCgpIHtcbiAgICBpZiAoYm9vdC5hdXRvQ29tcGFjdCA9PT0gZmFsc2UgfHwgYnVzeSgpIHx8IGNvbXBhY3RpbmcoKSkgcmV0dXJuXG4gICAgY29uc3QgbGltaXQgPSBtb2RlbCgpLmNvbnRleHRcbiAgICBjb25zdCB1c2VkID0gZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnNcbiAgICBpZiAoIWxpbWl0IHx8ICF1c2VkIHx8IGRlcml2ZWQoKS5sYXN0UHJvbXB0TW9kZWwgIT09IG1vZGVsKCkubmFtZSkgcmV0dXJuXG4gICAgY29uc3QgcmF0aW8gPSB1c2VkIC8gbGltaXRcbiAgICBpZiAocmF0aW8gPj0gMC44NSkge1xuICAgICAgZmxhc2goYGNvbnRleHQgJHtNYXRoLnJvdW5kKHJhdGlvICogMTAwKX0lIGZ1bGwgXHUwMEI3IGF1dG8tY29tcGFjdGluZ2ApXG4gICAgICBwZXJmb3JtQ29tcGFjdGlvbigpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQWdlbnRUdXJuKCkge1xuICAgIGxldCBhdXRoID0gbnVsbFxuICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSB7XG4gICAgICBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIGZsYXNoKCdjb2RleCBtb2RlbHMgbmVlZCBhIENoYXRHUFQgc2lnbi1pbjogcnVuIC9jb25uZWN0JylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIHNldEZvbGxvdyh0cnVlKVxuICAgIHNldEhpc3RXaW5kb3coSElTVE9SWV9XSU5ET1cpXG4gICAgc2V0QnVzeSh0cnVlKVxuICAgIHNldFR1cm5QaGFzZSgncmVzcG9uZGluZycpXG4gICAgc2V0U3RhcnRlZEF0KERhdGUubm93KCkpXG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgcmVmcy5hYm9ydCA9IGNvbnRyb2xsZXJcbiAgICBjb25zdCBsb2FkZWRCZWZvcmUgPSBuZXcgU2V0KHRyYWNrZXIubG9hZGVkKVxuICAgIGJvb3Quc2tpbGxzID0gYXdhaXQgY3JlYXRlU2tpbGxJbmRleChib290LnJvb3QpLmNhdGNoKCgpID0+IGJvb3Quc2tpbGxzKSA/PyBib290LnNraWxsc1xuICAgIGJvb3QuY29tbWFuZHMgPSBhd2FpdCBjcmVhdGVDb21tYW5kSW5kZXgoYm9vdC5yb290KS5jYXRjaCgoKSA9PiBib290LmNvbW1hbmRzKSA/PyBib290LmNvbW1hbmRzXG4gICAgY29uc3QgZnJlc2hTa2lsbHMgPSBib290LnNraWxsc1xuICAgIGNvbnN0IHVzZXJUb29sU2NhbiA9IGF3YWl0IHNjYW5Vc2VyVG9vbHMoeyBjd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgZm9yIChjb25zdCBmYWlsdXJlIG9mIHVzZXJUb29sU2Nhbi5lcnJvcnMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGAke2ZhaWx1cmUuZmlsZX06JHtmYWlsdXJlLmVycm9yfWBcbiAgICAgIGlmICghcmVmcy53YXJuZWRUb29scz8uaGFzKGtleSkpIHtcbiAgICAgICAgOyhyZWZzLndhcm5lZFRvb2xzID8/PSBuZXcgU2V0KCkpLmFkZChrZXkpXG4gICAgICAgIGZsYXNoKGB0b29sIHNraXBwZWQ6ICR7ZmFpbHVyZS5maWxlLnNwbGl0KCcvJykucG9wKCl9IFx1MDBCNyAke2ZhaWx1cmUuZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyB0b29scywgcmVjb3JkZXIgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogZnJlc2hTa2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGRyZWRnZTogYm9vdC5kcmVkZ2UsXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgfSlcblxuICAgIHJlZnMudHVyblRob3VnaHRzID0gJydcbiAgICBjb25zdCBvblN0cmVhbSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICd0aGlua2luZycpIHtcbiAgICAgICAgcmVmcy50dXJuVGhvdWdodHMgKz0gZXZlbnQuY29udGVudFxuICAgICAgICBzZXRUdXJuUGhhc2UoJ3RoaW5raW5nJylcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIHNldFR1cm5QaGFzZSgncmVzcG9uZGluZycpXG4gICAgICAgIHNldFN0cmVhbWluZygocykgPT4gKHMgfHwgJycpICsgZXZlbnQuY29udGVudClcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfY2FsbHNfcmVhZHknKSB7XG4gICAgICAgIHNldFR1cm5QaGFzZSgndG9vbHMnKVxuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgcmV0dXJuIG5leHRcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gJ3Rvb2xfZXhlY3V0aW5nJykge1xuICAgICAgICBzZXRPdmVybGF5KChvKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dCA9IFsuLi5vXVxuICAgICAgICAgIGZsdXNoU3RyZWFtKG5leHQpXG4gICAgICAgICAgbGV0IGFyZ3MgPSB7fVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhcmdzID0gSlNPTi5wYXJzZShldmVudC5jYWxsLmZ1bmN0aW9uLmFyZ3VtZW50cylcbiAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgICAgbmV4dC5wdXNoKHtcbiAgICAgICAgICAgIGtpbmQ6ICd0b29sJyxcbiAgICAgICAgICAgIGNhbGxJZDogZXZlbnQuY2FsbC5pZCxcbiAgICAgICAgICAgIG5hbWU6IGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSxcbiAgICAgICAgICAgIHRpdGxlOiB1aVRpdGxlKGV2ZW50LmNhbGwuZnVuY3Rpb24ubmFtZSwgYXJncyksXG4gICAgICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgICAgIHN0YXJ0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIHJldHVybiBuZXh0XG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICd0b29sX2NvbXBsZXRlJyB8fCBldmVudC50eXBlID09PSAndG9vbF9lcnJvcicpIHtcbiAgICAgICAgYm9vdC5naXQucmVmcmVzaCgpXG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVjb3JkZXIuZW50cmllcy5hdCgtMSlcbiAgICAgICAgc2V0T3ZlcmxheSgobykgPT5cbiAgICAgICAgICBvLm1hcCgoaXRlbSkgPT5cbiAgICAgICAgICAgIGl0ZW0ua2luZCA9PT0gJ3Rvb2wnICYmIGl0ZW0uY2FsbElkID09PSBldmVudC5jYWxsLmlkXG4gICAgICAgICAgICAgID8geyAuLi5pdGVtLCAuLi4oZW50cnk/LmNhbGxJZCA9PT0gZXZlbnQuY2FsbC5pZCA/IGVudHJ5IDoge30pLCBraW5kOiAndG9vbCcsIHN0YXR1czogZW50cnk/LnN0YXR1cyB8fCAnZG9uZScgfVxuICAgICAgICAgICAgICA6IGl0ZW0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHRcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgcnVuVHVybih7XG4gICAgICAgIGhpc3Rvcnk6IGRlcml2ZWQoKS5wcm92aWRlckhpc3RvcnksXG4gICAgICAgIHRvb2xzLFxuICAgICAgICByZWNvcmRlcixcbiAgICAgICAgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsXG4gICAgICAgIGVmZm9ydDogZWZmb3J0QXBwbGllcygpID8gZWZmb3J0KCkgPz8gJ2F1dG8nIDogbnVsbCxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgc3lzdGVtOiBidWlsZFN5c3RlbVByb21wdCh7XG4gICAgICAgICAgY3dkLFxuICAgICAgICAgIGNvbnRleHRGaWxlczogc3RhcnR1cENvbnRleHQuZmlsZXMsXG4gICAgICAgICAgc2tpbGxzOiBmcmVzaFNraWxscy5saXN0KCksXG4gICAgICAgICAgbWVtb3J5SW5kZXhUZXh0OiBtZW1vcnlJbmRleChhd2FpdCBib290Lm1lbW9yeS5saXN0KCkuY2F0Y2goKCkgPT4gW10pLCBib290LnJvb3QpLFxuICAgICAgICB9KSxcbiAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgb25TdHJlYW0sXG4gICAgICB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0T3ZlcmxheShbXSlcbiAgICAgIHNldFN0cmVhbWluZyhudWxsKVxuICAgICAgc2V0VHVyblBoYXNlKCdpZGxlJylcbiAgICAgIHNldEJ1c3koZmFsc2UpXG4gICAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgICAgZmxhc2goYGVycm9yOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDEyMCl9YClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChyZWZzLnR1cm5UaG91Z2h0cykgcGVyc2lzdChtYWtlRXZlbnQoJ3Rob3VnaHRzJywgeyB0ZXh0OiByZWZzLnR1cm5UaG91Z2h0cyB9KSlcbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzKSBwZXJzaXN0KG1ha2VFdmVudCgnbWVzc2FnZScsIHsgbWVzc2FnZSB9KSlcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHJlY29yZGVyLmVudHJpZXMpIHBlcnNpc3QobWFrZUV2ZW50KCd0b29sX21ldGEnLCBlbnRyeSkpXG4gICAgZm9yIChjb25zdCBwYXRoIG9mIHRyYWNrZXIubG9hZGVkKSB7XG4gICAgICBpZiAoIWxvYWRlZEJlZm9yZS5oYXMocGF0aCkpIHBlcnNpc3QobWFrZUV2ZW50KCdjb250ZXh0X2ZpbGUnLCB7IHBhdGggfSkpXG4gICAgfVxuICAgIGlmIChyZXN1bHQudXNhZ2UpIHBlcnNpc3QobWFrZUV2ZW50KCd1c2FnZScsIHsgbW9kZWw6IG1vZGVsKCkubmFtZSwgdXNhZ2U6IHJlc3VsdC51c2FnZSwgbGFzdFByb21wdDogcmVzdWx0Lmxhc3RQcm9tcHRUb2tlbnMgfSkpXG4gICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgcGVyc2lzdChtYWtlRXZlbnQoJ2ludGVycnVwdCcsIHt9KSlcblxuICAgIHNldE92ZXJsYXkoW10pXG4gICAgc2V0U3RyZWFtaW5nKG51bGwpXG4gICAgc2V0VHVyblBoYXNlKCdpZGxlJylcbiAgICByZURlcml2ZSgpXG4gICAgc2V0QnVzeShmYWxzZSlcbiAgICByZWZzLmFib3J0ID0gbnVsbFxuICAgIGJvb3QuZ2l0LnJlZnJlc2goKVxuICAgIGlmIChyZXN1bHQuc3RhbGxlZCkge1xuICAgICAgZmxhc2goJ21vZGVsIHN0YWxsZWQgXHUwMEI3IHR1cm4gaW50ZXJydXB0ZWQnKVxuICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgJ1tzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgcHJldmlvdXMgdHVybiB3YXMgY3V0IG9mZiBhdXRvbWF0aWNhbGx5OiB0aGUgbW9kZWwgcHJvZHVjZWQgbm8gb3V0cHV0IGZvciA1IG1pbnV0ZXMgKHByb3ZpZGVyIHN0YWxsKS4gV29yayBtYXkgaGF2ZSBzdG9wcGVkIG1pZC10YXNrOyBwaWNrIHVwIHdoZXJlIGl0IGxlZnQgb2ZmLicsXG4gICAgICAgIHsgd2FrZTogZmFsc2UgfSxcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgICAgZmxhc2goYGVycm9yOiAke3Jlc3VsdC5lcnJvci5zbGljZSgwLCAxMjApfWApXG4gICAgICBub3RlU3lzdGVtKFxuICAgICAgICBgW3N5c3RlbSBub3RpZmljYXRpb25dIHRoZSBwcmV2aW91cyB0dXJuIGVuZGVkIHdpdGggYSBwcm92aWRlciBlcnJvcjogJHtyZXN1bHQuZXJyb3Iuc2xpY2UoMCwgMzAwKX0uIFdvcmsgbWF5IGhhdmUgc3RvcHBlZCBtaWQtdGFzazsgcGljayB1cCB3aGVyZSBpdCBsZWZ0IG9mZi5gLFxuICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgcSA9IHF1ZXVlZCgpXG4gICAgaWYgKHEubGVuZ3RoID4gMCkge1xuICAgICAgc2V0UXVldWVkKFtdKVxuICAgICAgaWYgKHJlc3VsdC5pbnRlcnJ1cHRlZCkgc2V0SW5wdXQocS5qb2luKCdcXG4nKSlcbiAgICAgIGVsc2Uge1xuICAgICAgICBleGVjdXRlVHVybihxLmpvaW4oJ1xcbicpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9XG4gICAgZmx1c2hTeXN0ZW1Ob3RlcygpXG4gICAgbWF5YmVBdXRvQ29tcGFjdCgpXG4gIH1cblxuICBmdW5jdGlvbiBjb21wbGV0aW9uU291cmNlKG5hbWUpIHtcbiAgICBpZiAobmFtZSA9PT0gJ2NvbG9yJykgcmV0dXJuIE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgIGlmIChuYW1lID09PSAndGhlbWUnKSByZXR1cm4gWy4uLnBhbGV0dGVMaXN0KCkubWFwKChwKSA9PiBwLmtleSksICdhdXRvJ11cbiAgICBpZiAobmFtZSA9PT0gJ2VmZm9ydCcpIHJldHVybiBbJ2RlZmF1bHQnLCAnbG93JywgJ21lZGl1bScsICdoaWdoJywgJ21heCddXG4gICAgaWYgKG5hbWUgPT09ICdtb2RlbCcpIHJldHVybiBtb2RlbHMuZmlsdGVyKChtKSA9PiBtLmF2YWlsYWJsZSAhPT0gZmFsc2UpLm1hcCgobSkgPT4gbS5uYW1lKVxuICAgIGNvbnN0IGNtZCA9IGFsbENvbW1hbmRzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSlcbiAgICBpZiAoY21kPy5za2lsbCB8fCBjbWQ/LmNvbW1hbmQpIHJldHVybiBmaWxlTGlzdCgpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc21pc3NDb21wbGV0aW9uKCkge1xuICAgIHNldENvbXBsZXRpbmcoZmFsc2UpXG4gICAgc2V0Q29tcEluZGV4KDApXG4gIH1cblxuICBmdW5jdGlvbiBhY2NlcHRDb21wbGV0aW9uKHZhbHVlLCBjdHgsIGNhbmRpZGF0ZSkge1xuICAgIHNldElucHV0KGFwcGx5Q29tcGxldGlvbih2YWx1ZSwgY3R4LCBjYW5kaWRhdGUpKVxuICAgIGRpc21pc3NDb21wbGV0aW9uKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlbmQodGV4dCkge1xuICAgIGNvbnN0IHZhbHVlID0gdGV4dC50cmltKClcbiAgICBpZiAoIXZhbHVlKSByZXR1cm5cbiAgICBkaXNtaXNzQ29tcGxldGlvbigpXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgY29uc3QgW25hbWUsIC4uLnJlc3RdID0gdmFsdWUuc2xpY2UoMSkuc3BsaXQoL1xccysvKVxuICAgICAgY29uc3QgbWF0Y2ggPSBhbGxDb21tYW5kcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUudG9Mb3dlckNhc2UoKSlcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBzZXRJbnB1dCgnJylcbiAgICAgICAgcnVuQ29tbWFuZChtYXRjaCwgcmVzdC5qb2luKCcgJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBzZXRTZW50KChzKSA9PiBbLi4ucywgeyB0ZXh0OiB2YWx1ZSwgYXQ6IERhdGUubm93KCkgfV0pXG4gICAgc2V0SGlzdElkeCgtMSlcbiAgICBhcHBlbmRQcm9tcHQocm9vdCwgdmFsdWUpLmNhdGNoKCgpID0+IHt9KVxuICAgIGlmIChidXN5KCkpIHtcbiAgICAgIHNldFF1ZXVlZCgocSkgPT4gWy4uLnEsIHZhbHVlXSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBleGVjdXRlVHVybih2YWx1ZSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGludGVycnVwdCgpIHtcbiAgICBpZiAoIWJ1c3koKSkgcmV0dXJuXG4gICAgcmVmcy5hYm9ydD8uYWJvcnQoKVxuICB9XG5cbiAgY29uc3QgZm10VG9rZW5zID0gKG4pID0+IChuID49IDEwMDAgPyBgJHsobiAvIDEwMDApLnRvRml4ZWQoMSl9a2AgOiBTdHJpbmcobikpXG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaE1lbW9yaWVzKCkge1xuICAgIHNldE1lbW9yeUxpc3QoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGZvcmdldE1lbW9yeShtKSB7XG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmZvcmdldEFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZm9yZ2V0QXJtID0geyBmaWxlOiBtLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGZvcmdldCBcIiR7bS5uYW1lfVwiYClcbiAgICB9XG4gICAgcmVmcy5mb3JnZXRBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGJvb3QubWVtb3J5LmZvcmdldChtLm5hbWUpXG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgZmxhc2goYGZvcmdvdCAke20ubmFtZX0gKCR7bS5zY29wZX0pYClcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGZsYXNoKGBmb3JnZXQgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIG9wZW5Db250ZXh0UGFuZWwoKSB7XG4gICAgY29uc3QgZXN0ID0gKHRleHQpID0+IE1hdGgucm91bmQoU3RyaW5nKHRleHQpLmxlbmd0aCAvIDQpXG4gICAgY29uc3QgdG9rID0gKG4pID0+IGB+JHtmbXRUb2tlbnMobil9IHRva2BcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuXG4gICAgY29uc3QgbWVtb3J5SW5kZXhUZXh0ID0gbWVtb3J5SW5kZXgoYXdhaXQgYm9vdC5tZW1vcnkubGlzdCgpLmNhdGNoKCgpID0+IFtdKSwgYm9vdC5yb290KVxuICAgIGNvbnN0IHNraWxsTGlzdCA9IGJvb3Quc2tpbGxzLmxpc3QoKVxuICAgIGNvbnN0IGZpbGVzID0gc3RhcnR1cENvbnRleHQuZmlsZXNcbiAgICBjb25zdCBzeXN0ZW1GdWxsID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogZmlsZXMsIHNraWxsczogc2tpbGxMaXN0LCBtZW1vcnlJbmRleFRleHQgfSlcbiAgICBjb25zdCBzeXN0ZW1CYXNlID0gYnVpbGRTeXN0ZW1Qcm9tcHQoeyBjd2QsIGNvbnRleHRGaWxlczogW10sIHNraWxsczogW10sIG1lbW9yeUluZGV4VGV4dDogJycgfSlcbiAgICBjb25zdCB1c2VyVG9vbFNjYW4gPSBhd2FpdCBzY2FuVXNlclRvb2xzKHsgY3dkLCByb290OiBib290LnJvb3QgfSkuY2F0Y2goKCkgPT4gKHsgdG9vbHM6IFtdLCBlcnJvcnM6IFtdIH0pKVxuICAgIGNvbnN0IHsgdG9vbHMgfSA9IGNyZWF0ZVRvb2xzZXQoe1xuICAgICAgY3dkLFxuICAgICAgdHJhY2tlcixcbiAgICAgIHNraWxsczogYm9vdC5za2lsbHMsXG4gICAgICBzaGVsbHM6IGJvb3Quc2hlbGxzLFxuICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgbWVtb3J5OiBib290Lm1lbW9yeSxcbiAgICAgIGRyZWRnZTogYm9vdC5kcmVkZ2UsXG4gICAgICBtY3BUb29sczogbWNwLnRvb2xzKCksXG4gICAgICB1c2VyVG9vbHM6IHVzZXJUb29sU2Nhbi50b29scyxcbiAgICB9KVxuICAgIGNvbnN0IHRvb2xUb2tlbnMgPSBlc3QoSlNPTi5zdHJpbmdpZnkodG9vbHMpKVxuXG4gICAgY29uc3QgaGlzdG9yeSA9IHN0YXRlLnByb3ZpZGVySGlzdG9yeVxuICAgIGNvbnN0IGNvbXBhY3RlZCA9IGhpc3RvcnlbMF0/LnJvbGUgPT09ICd1c2VyJ1xuICAgICAgJiYgc3RhdGUuaGlzdG9yeUV2ZW50SWRzWzBdID09PSBudWxsXG4gICAgICAmJiBTdHJpbmcoaGlzdG9yeVswXS5jb250ZW50KS5zdGFydHNXaXRoKCdbc3lzdGVtIG5vdGlmaWNhdGlvbl0gVGhlIGVhcmxpZXIgcG9ydGlvbicpXG4gICAgY29uc3Qgc3VtbWFyeVRva2VucyA9IGNvbXBhY3RlZCA/IGVzdChoaXN0b3J5WzBdLmNvbnRlbnQpIDogMFxuICAgIGNvbnN0IG1lc3NhZ2VzID0gY29tcGFjdGVkID8gaGlzdG9yeS5zbGljZSgxKSA6IGhpc3RvcnlcbiAgICBjb25zdCBtZXNzYWdlVG9rZW5zID0gZXN0KEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKSlcblxuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICB7IG5hbWU6ICdzeXN0ZW0gcHJvbXB0JywgZGVzYzogJ2lkZW50aXR5LCBlbnZpcm9ubWVudCwgdG9vbCBndWlkYW5jZScsIG5vdGU6IHRvayhlc3Qoc3lzdGVtQmFzZSkpIH0sXG4gICAgICB7IG5hbWU6IGB0b29sIHNjaGVtYXMgKCR7dG9vbHMubGVuZ3RofSlgLCBkZXNjOiB0b29scy5tYXAoKHQpID0+IHQubmFtZSkuam9pbignIFx1MDBCNyAnKSwgbm90ZTogdG9rKHRvb2xUb2tlbnMpIH0sXG4gICAgXVxuICAgIGlmIChmaWxlcy5sZW5ndGgpIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIG5hbWU6IGBwcm9qZWN0IGluc3RydWN0aW9ucyAoJHtmaWxlcy5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IGZpbGVzLm1hcCgoZikgPT4gZi5wYXRoLnJlcGxhY2UoYCR7Ym9vdC5yb290fS9gLCAnJykpLmpvaW4oJywgJyksXG4gICAgICAgIG5vdGU6IHRvayhmaWxlcy5yZWR1Y2UoKHN1bSwgZikgPT4gc3VtICsgZXN0KGYuY29udGVudCksIDApKSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGlmIChza2lsbExpc3QubGVuZ3RoKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiBgc2tpbGxzIGluZGV4ICgke3NraWxsTGlzdC5sZW5ndGh9KWAsXG4gICAgICAgIGRlc2M6IHNraWxsTGlzdC5tYXAoKHMpID0+IHMubmFtZSkuam9pbignLCAnKSxcbiAgICAgICAgbm90ZTogdG9rKGVzdChza2lsbExpc3QubWFwKChzKSA9PiBgLSAke3MubmFtZX06ICR7cy5kZXNjcmlwdGlvbn1gKS5qb2luKCdcXG4nKSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKG1lbW9yeUluZGV4VGV4dCkge1xuICAgICAgcm93cy5wdXNoKHsgbmFtZTogJ21lbW9yeSBpbmRleCcsIGRlc2M6ICdvbmUgbGluZSBwZXIgc2F2ZWQgbWVtb3J5Jywgbm90ZTogdG9rKGVzdChtZW1vcnlJbmRleFRleHQpKSB9KVxuICAgIH1cbiAgICBpZiAoY29tcGFjdGVkKSB7XG4gICAgICByb3dzLnB1c2goeyBuYW1lOiAnY29tcGFjdGlvbiBzdW1tYXJ5JywgZGVzYzogJ3N0YW5kcyBpbiBmb3IgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGxhc3QgY29tcGFjdCcsIG5vdGU6IHRvayhzdW1tYXJ5VG9rZW5zKSB9KVxuICAgIH1cbiAgICByb3dzLnB1c2goe1xuICAgICAgbmFtZTogYGNvbnZlcnNhdGlvbiAoJHttZXNzYWdlcy5sZW5ndGh9IG1lc3NhZ2VzKWAsXG4gICAgICBkZXNjOiBjb21wYWN0ZWQgPyAna2VwdCB2ZXJiYXRpbSBzaW5jZSB0aGUgbGFzdCBjb21wYWN0JyA6ICdldmVyeSBtZXNzYWdlIHRoaXMgc2Vzc2lvbicsXG4gICAgICBub3RlOiB0b2sobWVzc2FnZVRva2VucyksXG4gICAgfSlcblxuICAgIGlmIChzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zICYmIHN0YXRlLmxhc3RQcm9tcHRNb2RlbCA9PT0gbW9kZWwoKS5uYW1lKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBuYW1lOiAnbGFzdCBtZWFzdXJlZCByZXF1ZXN0JyxcbiAgICAgICAgZGVzYzogJ3Byb3ZpZGVyLXJlcG9ydGVkIGlucHV0IHRva2VucywgdGhlIG51bWJlciBiZWhpbmQgY3R4ICUnLFxuICAgICAgICBub3RlOiBgJHtzdGF0ZS5sYXN0UHJvbXB0VG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IHRva2AsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRleHRTZWdtZW50cyA9IFtcbiAgICAgIHsgbGFiZWw6ICdzeXN0ZW0nLCB0b2tlbnM6IGVzdChzeXN0ZW1CYXNlKSB9LFxuICAgICAgeyBsYWJlbDogJ3Rvb2xzJywgdG9rZW5zOiB0b29sVG9rZW5zIH0sXG4gICAgICB7IGxhYmVsOiAncHJvamVjdCcsIHRva2VuczogTWF0aC5tYXgoMCwgZXN0KHN5c3RlbUZ1bGwpIC0gZXN0KHN5c3RlbUJhc2UpKSB9LFxuICAgICAgLi4uKHN1bW1hcnlUb2tlbnMgPyBbeyBsYWJlbDogJ3N1bW1hcnknLCB0b2tlbnM6IHN1bW1hcnlUb2tlbnMgfV0gOiBbXSksXG4gICAgICB7IGxhYmVsOiAnY29udmVyc2F0aW9uJywgdG9rZW5zOiBtZXNzYWdlVG9rZW5zIH0sXG4gICAgXS5maWx0ZXIoKHNlZ21lbnQpID0+IHNlZ21lbnQudG9rZW5zID4gMClcbiAgICAgIC5tYXAoKHNlZ21lbnQsIGkpID0+ICh7IC4uLnNlZ21lbnQsIGNvbG9yOiBbJyM2N2I3ZmYnLCAnI2M3OTJlYScsICcjZjdjNjZhJywgJyNmNzhjNmMnLCAnIzZiZTc5NSddW2ldIH0pKVxuXG4gICAgc2V0SW5mb1BhbmVsKHtcbiAgICAgIHRpdGxlOiBgQ29udGV4dCBcdTAwQjcgJHttb2RlbCgpLm5hbWV9YCxcbiAgICAgIHJvd3MsXG4gICAgICBvdmVydmlldzogY29udGV4dFNlZ21lbnRzLmxlbmd0aCA/IHsgc2VnbWVudHM6IGNvbnRleHRTZWdtZW50cyB9IDogbnVsbCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgdGhlbWVJdGVtcyA9ICgpID0+IFtcbiAgICAuLi5wYWxldHRlTGlzdCgpLFxuICAgIHsga2V5OiAnYXV0bycsIGRlc2M6IGBmb2xsb3cgdGhlIHRlcm1pbmFsIChkZXRlY3RlZDogJHtib290LmRldGVjdGVkVGhlbWUgfHwgJ2RhcmsnfSlgIH0sXG4gIF1cblxuICBmdW5jdGlvbiBwYWxldHRlRm9yKHByZWYpIHtcbiAgICByZXR1cm4gcHJlZiA9PT0gJ2F1dG8nID8gYm9vdC5kZXRlY3RlZFRoZW1lIHx8ICdkYXJrJyA6IHByZWZcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXZpZXdQYWxldHRlKHByZWYpIHtcbiAgICBzZXRQYWxldHRlKHBhbGV0dGVGb3IocHJlZikpXG4gICAgYm9vdC5zZXRUaGVtZT8uKHsgYWNjZW50OiBhY2NlbnQoKSwgbXV0ZWQ6IE1VVEVEIH0pXG4gIH1cblxuICBmdW5jdGlvbiBhcHBseVRoZW1lUHJlZihwcmVmKSB7XG4gICAgc2V0VGhlbWVQcmVmKHByZWYpXG4gICAgcHJldmlld1BhbGV0dGUocHJlZilcbiAgICB3cml0ZUNvbmZpZyh7IHRoZW1lOiBwcmVmID09PSAnYXV0bycgPyB1bmRlZmluZWQgOiBwcmVmIH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIGZsYXNoKHByZWYgPT09ICdhdXRvJyA/IGB0aGVtZTogYXV0byBcdTAwQjcgZm9sbG93aW5nIHRoZSB0ZXJtaW5hbCAoJHtwYWxldHRlRm9yKCdhdXRvJyl9KWAgOiBgdGhlbWU6ICR7cHJlZn1gKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjLCBhcmdzID0gJycpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3MgIT09ICdzdHJpbmcnKSBhcmdzID0gJydcbiAgICBzZXRJbnB1dCgnJylcbiAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgIGlmIChjLm5hbWUgPT09ICdyZW5hbWUnKSB7XG4gICAgICBjb25zdCBhdXRvbWF0aWNUaXRsZSA9IHVzZXJFbnRyaWVzKGRlcml2ZWQoKSlbMF0/LnRleHQudHJpbSgpLnNsaWNlKDAsIDIwMClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCd0aXRsZScsIHsgdGV4dDogYXJncyB8fCBudWxsIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBpZiAoYXJncykgZmxhc2goYHNlc3Npb24gcmVuYW1lZCB0byBcIiR7YXJnc31cImApXG4gICAgICBlbHNlIGlmIChhdXRvbWF0aWNUaXRsZSkgZmxhc2goYHNlc3Npb24gbmFtZSByZXNldCB0byBcIiR7YXV0b21hdGljVGl0bGV9XCJgKVxuICAgICAgZWxzZSBmbGFzaCgnc2Vzc2lvbiBuYW1lIHJlc2V0JylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29sb3InKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKFNFU1NJT05fQ09MT1JTKVxuICAgICAgY29uc3QgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyhTRVNTSU9OX0NPTE9SUylcbiAgICAgIGxldCB2YWx1ZVxuICAgICAgaWYgKCFhcmdzKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAodmFsdWVzLmluZGV4T2YoZGVyaXZlZCgpLmNvbG9yKSArIDEpICUgdmFsdWVzLmxlbmd0aFxuICAgICAgICB2YWx1ZSA9IHZhbHVlc1tuZXh0XVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBTRVNTSU9OX0NPTE9SU1thcmdzLnRvTG93ZXJDYXNlKCldIHx8ICgvXiNbMC05YS1mQS1GXXs2fSQvLnRlc3QoYXJncykgPyBhcmdzIDogbnVsbClcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZsYXNoKGB1c2FnZTogL2NvbG9yIHRvIGN5Y2xlLCBvciAvY29sb3IgPCR7bmFtZXMuam9pbignfCcpfXwjaGV4PmApXG4gICAgICB9XG4gICAgICBwZXJzaXN0KG1ha2VFdmVudCgnY29sb3InLCB7IHZhbHVlIH0pKVxuICAgICAgZW5zdXJlU2Vzc2lvbigpXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBuYW1lID0gbmFtZXNbdmFsdWVzLmluZGV4T2YodmFsdWUpXVxuICAgICAgZmxhc2goYHNlc3Npb24gY29sb3I6ICR7bmFtZSB8fCB2YWx1ZX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb25maWcnKSB7XG4gICAgICBzZXRTaG93Q29uZmlnUGFuZWwodHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAndGhlbWUnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93VGhlbWVQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgY2hvaWNlID0gYXJncy50b0xvd2VyQ2FzZSgpXG4gICAgICBjb25zdCB2YWxpZCA9IFsuLi5wYWxldHRlTGlzdCgpLm1hcCgocCkgPT4gcC5rZXkpLCAnYXV0byddXG4gICAgICBpZiAoIXZhbGlkLmluY2x1ZGVzKGNob2ljZSkpIHJldHVybiBmbGFzaChgdGhlbWU6ICR7cGFsZXR0ZU5hbWUoKX0gXHUwMEI3IC90aGVtZSA8JHt2YWxpZC5qb2luKCd8Jyl9PmApXG4gICAgICBhcHBseVRoZW1lUHJlZihjaG9pY2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMuc2tpbGwpIHtcbiAgICAgIGNvbnN0IGJvZHkgPSBhd2FpdCBza2lsbHMubG9hZChjLm5hbWUpXG4gICAgICBpZiAoIWJvZHkpIHJldHVybiBmbGFzaChgY291bGQgbm90IGxvYWQgc2tpbGwgJHtjLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdza2lsbCcsIHsgbmFtZTogYy5uYW1lLCBzb3VyY2U6ICd1c2VyJyB9KSlcbiAgICAgIHNlbmQoYEZvbGxvdyB0aGVzZSBza2lsbCBpbnN0cnVjdGlvbnMgbm93LlxcblxcbiR7Ym9keX1gKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChjLmNvbW1hbmQpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBib290LmNvbW1hbmRzLmxvYWQoYy5uYW1lLCBhcmdzKVxuICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gZmxhc2goYGNvdWxkIG5vdCBsb2FkIGNvbW1hbmQgJHtjLm5hbWV9YClcbiAgICAgIHNlbmQodGV4dClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29ubmVjdCcpIHJldHVybiBvcGVuQ29ubmVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnbW9kZWwnKSB7XG4gICAgICBpZiAoIWFyZ3MpIHJldHVybiBzZXRTaG93TW9kZWxQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgZXhhY3QgPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBhcmdzKVxuICAgICAgY29uc3QgYWRob2MgPSAhZXhhY3QgJiYgYXJncy5pbmNsdWRlcygnLycpID8gYWRob2NNb2RlbChhcmdzLCBib290LnByb3ZpZGVycykgOiBudWxsXG4gICAgICBjb25zdCBzY29yZWQgPSBleGFjdCB8fCBhZGhvY1xuICAgICAgICA/IFtdXG4gICAgICAgIDogbW9kZWxzXG4gICAgICAgICAgICAubWFwKChtKSA9PiBbZnV6enlTY29yZShhcmdzLCBtLm5hbWUpLCBtXSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFtzY29yZV0pID0+IHNjb3JlID49IDApXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICBjb25zdCBwaWNrID0gZXhhY3QgfHwgYWRob2MgfHwgc2NvcmVkWzBdPy5bMV1cbiAgICAgIGlmICghcGljaykgcmV0dXJuIGZsYXNoKGBubyBhdmFpbGFibGUgbW9kZWwgbWF0Y2hlcyBcIiR7YXJnc31cImApXG4gICAgICBpZiAocGljay5hdmFpbGFibGUgPT09IGZhbHNlKSByZXR1cm4gZmxhc2goYHNldCAke3BpY2sua2V5SGludH0gaW4geW91ciBlbnZpcm9ubWVudCB0byB1c2UgJHtwaWNrLm5hbWV9YClcbiAgICAgIHBlcnNpc3QobWFrZUV2ZW50KCdtb2RlbF9zd2l0Y2gnLCB7IGZyb206IG1vZGVsKCkubmFtZSwgdG86IHBpY2submFtZSB9KSlcbiAgICAgIHNldE1vZGVsKHBpY2spXG4gICAgICBmbGFzaChhZGhvYyA/IGBtb2RlbCBzZXQgdG8gJHtwaWNrLm5hbWV9IChub3QgaW4gY2F0YWxvZywgcHJpY2luZyB1bmtub3duKWAgOiBgbW9kZWwgc2V0IHRvICR7cGljay5uYW1lfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2VmZm9ydCcpIHtcbiAgICAgIGlmICghZWZmb3J0QXBwbGllcygpKSByZXR1cm4gZmxhc2goYCR7bW9kZWwoKS5uYW1lfSBkb2VzIG5vdCBzdXBwb3J0IGVmZm9ydCBjb250cm9sYClcbiAgICAgIGlmICghYXJncykgcmV0dXJuIHNldFNob3dFZmZvcnRQYW5lbCh0cnVlKVxuICAgICAgY29uc3QgbGV2ZWwgPSBhcmdzLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChsZXZlbCA9PT0gJ2RlZmF1bHQnKSByZXR1cm4gc2V0U2Vzc2lvbkVmZm9ydChudWxsKVxuICAgICAgaWYgKCFFRkZPUlRfTEVWRUxTLnNvbWUoKGwpID0+IGwua2V5ID09PSBsZXZlbCkpIHJldHVybiBmbGFzaCgndXNhZ2U6IC9lZmZvcnQgPGRlZmF1bHR8bG93fG1lZGl1bXxoaWdofG1heD4nKVxuICAgICAgcmV0dXJuIHNldFNlc3Npb25FZmZvcnQobGV2ZWwpXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICd1cGRhdGUnKSB7XG4gICAgICBpZiAoaXNEZXZJbnN0YWxsKGltcG9ydC5tZXRhLnVybCkpIHJldHVybiBmbGFzaCgndGhpcyBwaWNvIHJ1bnMgZnJvbSBhIHNvdXJjZSBjaGVja291dCBcdTAwQjcgdXBkYXRlIGl0IHdpdGggZ2l0JylcbiAgICAgIGNvbnN0IGxhdGVzdCA9IGF3YWl0IGZldGNoTGF0ZXN0VmVyc2lvbigpLmNhdGNoKCgpID0+IG51bGwpXG4gICAgICBpZiAobGF0ZXN0ICYmICFuZXdlclZlcnNpb24odmVyc2lvbiwgbGF0ZXN0KSkgcmV0dXJuIGZsYXNoKGBwaWNvIHYke3ZlcnNpb259IGlzIGFscmVhZHkgdGhlIGxhdGVzdGApXG4gICAgICBmbGFzaChgdXBkYXRpbmcke2xhdGVzdCA/IGAgdG8gdiR7bGF0ZXN0fWAgOiAnJ30uLi5gKVxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuVXBkYXRlKClcbiAgICAgIGlmIChyZXN1bHQub2spIHJldHVybiBmbGFzaChgdXBkYXRlZCR7bGF0ZXN0ID8gYCB0byB2JHtsYXRlc3R9YCA6ICcnfSBcdTAwQjcgcmVzdGFydCBwaWNvIHRvIHVzZSBpdGApXG4gICAgICByZXR1cm4gZmxhc2goYHVwZGF0ZSBmYWlsZWQ6ICR7cmVzdWx0Lm91dHB1dC5zbGljZSgwLCAxMDApfWApXG4gICAgfVxuICAgIGlmIChjLm5hbWUgPT09ICdjb250ZXh0JykgcmV0dXJuIG9wZW5Db250ZXh0UGFuZWwoKVxuICAgIGlmIChjLm5hbWUgPT09ICdoaXN0b3J5JykgcmV0dXJuIG9wZW5IaXN0b3J5U2VhcmNoKClcbiAgICBpZiAoYy5uYW1lID09PSAnaGVscCcpIHJldHVybiBzZXRWaWV3KCdoZWxwJylcbiAgICBpZiAoYy5uYW1lID09PSAnbWNwJykgcmV0dXJuIHNldFNob3dNY3BQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdzaGVsbHMnKSByZXR1cm4gc2V0U2hvd1NoZWxsc1BhbmVsKHRydWUpXG4gICAgaWYgKGMubmFtZSA9PT0gJ3dha2V1cHMnKSByZXR1cm4gc2V0U2hvd1dha2V1cHNQYW5lbCh0cnVlKVxuICAgIGlmIChjLm5hbWUgPT09ICdtZW1vcnknKSB7XG4gICAgICBhd2FpdCByZWZyZXNoTWVtb3JpZXMoKVxuICAgICAgcmV0dXJuIHNldFNob3dNZW1vcnlQYW5lbCh0cnVlKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncmVzdW1lJykge1xuICAgICAgc2V0U2hvd1Jlc3VtZVBhbmVsKHRydWUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAncHJvamVjdCcpIHJldHVybiBvcGVuUHJvamVjdFBhbmVsKClcbiAgICBpZiAoYy5uYW1lID09PSAnY3dkJykge1xuICAgICAgY29uc3Qgcm9vdE5vdGUgPSBib290LnJvb3QgIT09IGJvb3QuY3dkID8gYCBcdTAwQjcgcHJvamVjdCByb290ICR7c2hvcnRlblBhdGgoYm9vdC5yb290KX1gIDogJydcbiAgICAgIHJldHVybiBmbGFzaChgJHtib290LmRpc3BsYXlDd2R9JHtyb290Tm90ZX1gKVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnc2tpbGxzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnU2tpbGxzJyxcbiAgICAgICAgcm93czogc2tpbGxzLmxpc3QoKS5tYXAoKHMpID0+ICh7IG5hbWU6IHMubmFtZSwgZGVzYzogcy5kZXNjcmlwdGlvbiwgbm90ZTogcy5zb3VyY2UgfSkpLFxuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NvbW1hbmRzJykge1xuICAgICAgcmV0dXJuIHNldEluZm9QYW5lbCh7XG4gICAgICAgIHRpdGxlOiAnQ29tbWFuZHMnLFxuICAgICAgICByb3dzOiBbXG4gICAgICAgICAgLi4uQ09NTUFORFMubWFwKChjbWQpID0+ICh7IG5hbWU6IGAvJHtjbWQubmFtZX1gLCBkZXNjOiBjbWQuZGVzYywgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5ib290LmNvbW1hbmRzLmxpc3QoKS5tYXAoKGNtZCkgPT4gKHsgbmFtZTogYC8ke2NtZC5uYW1lfWAsIGRlc2M6IGNtZC5kZXNjcmlwdGlvbiwgbm90ZTogY21kLnNvdXJjZSB9KSksXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAndG9vbHMnKSB7XG4gICAgICBjb25zdCBzY2FuID0gYXdhaXQgc2NhblVzZXJUb29scyh7IGN3ZDogYm9vdC5jd2QsIHJvb3Q6IGJvb3Qucm9vdCB9KS5jYXRjaCgoKSA9PiAoeyB0b29sczogW10sIGVycm9yczogW10gfSkpXG4gICAgICBjb25zdCB7IHRvb2xzOiBidWlsdGlucyB9ID0gY3JlYXRlVG9vbHNldCh7XG4gICAgICAgIGN3ZDogYm9vdC5jd2QsXG4gICAgICAgIHRyYWNrZXIsXG4gICAgICAgIHNraWxscyxcbiAgICAgICAgc2hlbGxzOiBib290LnNoZWxscyxcbiAgICAgICAgd2FrZXVwczogYm9vdC53YWtldXBzLFxuICAgICAgICBtZW1vcnk6IGJvb3QubWVtb3J5LFxuICAgICAgICBkcmVkZ2U6IGJvb3QuZHJlZGdlLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IG1jcENvdW50ID0gbWNwLnRvb2xzKCkubGVuZ3RoXG4gICAgICBzZXRJbmZvUGFuZWwoe1xuICAgICAgICB0aXRsZTogYFRvb2xzJHttY3BDb3VudCA/IGAgXHUwMEI3IHBsdXMgJHttY3BDb3VudH0gTUNQIChzZWUgL21jcClgIDogJyd9YCxcbiAgICAgICAgcm93czogW1xuICAgICAgICAgIC4uLmJ1aWx0aW5zLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLnNwbGl0KCdcXG4nKVswXSwgbm90ZTogJ2J1aWx0aW4nIH0pKSxcbiAgICAgICAgICAuLi5zY2FuLnRvb2xzLm1hcCgodCkgPT4gKHsgbmFtZTogdC5uYW1lLCBkZXNjOiB0LmRlc2NyaXB0aW9uLCBub3RlOiBgJHt0LnNvdXJjZX0gXHUwMEI3ICR7dC5fZmlsZS5zcGxpdCgnLycpLnBvcCgpfWAgfSkpLFxuICAgICAgICAgIC4uLnNjYW4uZXJyb3JzLm1hcCgoZSkgPT4gKHsgbmFtZTogZS5maWxlLnNwbGl0KCcvJykucG9wKCksIGRlc2M6IGUuZXJyb3IsIG5vdGU6ICdicm9rZW4nIH0pKSxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ25ldycgfHwgYy5uYW1lID09PSAnZGVsZXRlJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgaWYgKGMubmFtZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaWYgKCFyZWZzLnNlc3Npb24pIHJldHVybiBmbGFzaCgnbm8gY3VycmVudCBzZXNzaW9uIHRvIGRlbGV0ZScpXG4gICAgICAgIHNldFNob3dEZWxldGVDb25maXJtKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmVmcy5zZXNzaW9uID0gbnVsbFxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSAwXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICBzZXRTZW50KFtdKVxuICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICBzZXRFZmZvcnQoZGVmYXVsdEVmZm9ydCgpKVxuICAgICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgIHJlRGVyaXZlKClcbiAgICAgIGZsYXNoKCduZXcgc2Vzc2lvbicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ3Jld2luZCcpIHtcbiAgICAgIGlmIChidXN5KCkpIHJldHVybiBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGlmICh1c2VyRW50cmllcyhkZXJpdmVkKCkpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZsYXNoKCdub3RoaW5nIHRvIHJld2luZCB5ZXQnKVxuICAgICAgc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGMubmFtZSA9PT0gJ2NsZWFyJykge1xuICAgICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ2NsZWFyJywge30pKVxuICAgICAgcmVEZXJpdmUoKVxuICAgICAgZmxhc2goJ2NvbnZlcnNhdGlvbiBjbGVhcmVkJylcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnY29tcGFjdCcpIHJldHVybiBwZXJmb3JtQ29tcGFjdGlvbihhcmdzKVxuICAgIGlmIChjLm5hbWUgPT09ICdjb3N0Jykge1xuICAgICAgY29uc3Qgc3RhdGUgPSBkZXJpdmVkKClcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHJldHVybiBmbGFzaCgnbm8gdXNhZ2UgeWV0JylcbiAgICAgIGNvbnN0IGNvc3RPZiA9IChieU1vZGVsKSA9PlxuICAgICAgICBPYmplY3QuZW50cmllcyhieU1vZGVsKS5yZWR1Y2UoKHN1bSwgW25hbWUsIHVzYWdlXSkgPT4gc3VtICsgZXN0aW1hdGVDb3N0KGZpbmRNb2RlbChtb2RlbHMsIG5hbWUpLCB1c2FnZSksIDApXG4gICAgICBjb25zdCBzcGVudCA9IGNvc3RPZihzdGF0ZS51c2FnZUJ5TW9kZWwpXG4gICAgICBjb25zdCBhY3RpdmUgPSBjb3N0T2Yoc3RhdGUudXNhZ2VBY3RpdmVCeU1vZGVsKVxuICAgICAgY29uc3QgeyBwcm9tcHRUb2tlbnMsIGNvbXBsZXRpb25Ub2tlbnMgfSA9IHN0YXRlLnVzYWdlXG4gICAgICBjb25zdCBiYXNlID0gYCQke3NwZW50LnRvRml4ZWQoNCl9IHNwZW50IFx1MDBCNyAke3Byb21wdFRva2Vucy50b0xvY2FsZVN0cmluZygpfSBpbiBcdTAwQjcgJHtjb21wbGV0aW9uVG9rZW5zLnRvTG9jYWxlU3RyaW5nKCl9IG91dGBcbiAgICAgIGZsYXNoKHNwZW50IC0gYWN0aXZlID4gMC4wMDAwNSA/IGAke2Jhc2V9IFx1MDBCNyBjdXJyZW50IGNvbnZlcnNhdGlvbiAkJHthY3RpdmUudG9GaXhlZCg0KX1gIDogYmFzZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYy5uYW1lID09PSAnZXhwb3J0Jykge1xuICAgICAgY29uc3QgZmlsZSA9IGpvaW4oY3dkLCBgcGljby1leHBvcnQtJHtEYXRlLm5vdygpfS5tZGApXG4gICAgICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgdHJhbnNjcmlwdFRvTWFya2Rvd24oZGVyaXZlZCgpLnRyYW5zY3JpcHQsIHsgdGl0bGU6IGBwaWNvIHNlc3Npb24gXHUwMEI3ICR7Y3dkfWAgfSkpXG4gICAgICBmbGFzaChgZXhwb3J0ZWQgdG8gJHtmaWxlfWApXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiByZWZyZXNoQXV0aFByb3ZpZGVycygpIHtcbiAgICBjb25zdCBvcGVuYWkgPSBhd2FpdCBvcGVuYWlTdGF0dXMoKS5jYXRjaCgoKSA9PiAoeyBjb25uZWN0ZWQ6IGZhbHNlLCBlbWFpbDogbnVsbCB9KSlcbiAgICBzZXRBdXRoUHJvdmlkZXJzKFtcbiAgICAgIHsgaWQ6ICdvcGVuYWknLCBsYWJlbDogJ09wZW5BSSBcdTAwQjcgQ2hhdEdQVCAvIENvZGV4IHBsYW4nLCBjb25uZWN0ZWQ6IG9wZW5haS5jb25uZWN0ZWQsIGVtYWlsOiBvcGVuYWkuZW1haWwgfSxcbiAgICBdKVxuICB9XG5cbiAgZnVuY3Rpb24gb3BlbkNvbm5lY3RQYW5lbCgpIHtcbiAgICBzZXRTaG93Q29ubmVjdFBhbmVsKHRydWUpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICB9XG5cbiAgZnVuY3Rpb24gY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgc2V0U2hvd0Nvbm5lY3RQYW5lbChmYWxzZSlcbiAgICBmbGFzaCgnb3BlbmluZyB5b3VyIGJyb3dzZXIgZm9yIENoYXRHUFQgc2lnbi1pbi4uLicpXG4gICAgY29ubmVjdE9wZW5BSSgpXG4gICAgICAudGhlbihhc3luYyAoeyBlbWFpbCB9KSA9PiB7XG4gICAgICAgIGJvb3QucHJvdmlkZXJzID0gWy4uLm5ldyBTZXQoWy4uLmJvb3QucHJvdmlkZXJzLCAnY29kZXgnXSldXG4gICAgICAgIGNvbnN0IGNyZWRzID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgICBjb25zdCBjb2RleCA9IChhd2FpdCBsb2FkQ29kZXhNb2RlbHMoY3JlZHMpKS5tYXAoKG0pID0+ICh7IC4uLm0sIGF2YWlsYWJsZTogdHJ1ZSwga2V5SGludDogJy9jb25uZWN0JyB9KSlcbiAgICAgICAgYm9vdC5tb2RlbHMgPSBbLi4uYm9vdC5tb2RlbHMuZmlsdGVyKChtKSA9PiBtLnByb3ZpZGVyICE9PSAnY29kZXgnKSwgLi4uY29kZXhdXG4gICAgICAgIHJlRGVyaXZlKClcbiAgICAgICAgZmxhc2goYGNvbm5lY3RlZCBhcyAke2VtYWlsIHx8ICd5b3VyIENoYXRHUFQgYWNjb3VudCd9IFx1MDBCNyAke2NvZGV4Lmxlbmd0aH0gY29kZXggbW9kZWxzIHVubG9ja2VkIGluIC9tb2RlbGApXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IGZsYXNoKGBjb25uZWN0IGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAxMjApfWApKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGlzY29ubmVjdFByb3ZpZGVyKHByb3ZpZGVyKSB7XG4gICAgaWYgKHByb3ZpZGVyLmlkICE9PSAnb3BlbmFpJykgcmV0dXJuXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRpc2Nvbm5lY3RBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBwcm92aWRlci5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLmRpc2Nvbm5lY3RBcm0gPSB7IGlkOiBwcm92aWRlci5pZCwgYXQ6IERhdGUubm93KCkgfVxuICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gZGlzY29ubmVjdCAke3Byb3ZpZGVyLmxhYmVsfSAoeW91IHdpbGwgbmVlZCB0byBzaWduIGluIGFnYWluKWApXG4gICAgfVxuICAgIHJlZnMuZGlzY29ubmVjdEFybSA9IG51bGxcbiAgICBhd2FpdCBkaXNjb25uZWN0T3BlbkFJKCkuY2F0Y2goKCkgPT4ge30pXG4gICAgYm9vdC5wcm92aWRlcnMgPSBib290LnByb3ZpZGVycy5maWx0ZXIoKHApID0+IHAgIT09ICdjb2RleCcpXG4gICAgYm9vdC5tb2RlbHMgPSBib290Lm1vZGVscy5tYXAoKG0pID0+IChtLnByb3ZpZGVyID09PSAnY29kZXgnID8geyAuLi5tLCBhdmFpbGFibGU6IGZhbHNlIH0gOiBtKSlcbiAgICBpZiAobW9kZWwoKS5wcm92aWRlciA9PT0gJ2NvZGV4Jykgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgcmVmcmVzaEF1dGhQcm92aWRlcnMoKVxuICAgIGZsYXNoKCdkaXNjb25uZWN0ZWQgZnJvbSBDaGF0R1BUJylcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlZnJlc2hTZXNzaW9ucyhzY29wZUluZGV4KSB7XG4gICAgc2V0UmVzdW1lTG9hZGluZyh0cnVlKVxuICAgIGxpc3RTZXNzaW9ucyh7IHNjb3BlOiBSRVNVTUVfU0NPUEVTW3Njb3BlSW5kZXhdLCByb290IH0pXG4gICAgICAudGhlbihzZXRSZXN1bWVTZXNzaW9ucylcbiAgICAgIC5maW5hbGx5KCgpID0+IHNldFJlc3VtZUxvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgZnVuY3Rpb24gc2hvcnRlblBhdGgocGF0aCkge1xuICAgIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKGhvbWUpID8gcGF0aC5yZXBsYWNlKGhvbWUsICd+JykgOiBwYXRoXG4gIH1cblxuICBmdW5jdGlvbiBvcGVuUHJvamVjdFBhbmVsKCkge1xuICAgIHNldFNob3dQcm9qZWN0UGFuZWwodHJ1ZSlcbiAgICBzZXRQcm9qZWN0c0xvYWRpbmcodHJ1ZSlcbiAgICBsaXN0U2Vzc2lvbnMoeyBzY29wZTogJ2V2ZXJ5d2hlcmUnLCByb290IH0pXG4gICAgICAudGhlbigobWV0YXMpID0+IHtcbiAgICAgICAgY29uc3QgYnlSb290ID0gbmV3IE1hcCgpXG4gICAgICAgIGZvciAoY29uc3QgbSBvZiBtZXRhcykge1xuICAgICAgICAgIGNvbnN0IGVudHJ5ID0gYnlSb290LmdldChtLmhlYWRlci5yb290KVxuICAgICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICAgIGJ5Um9vdC5zZXQobS5oZWFkZXIucm9vdCwge1xuICAgICAgICAgICAgICByb290OiBtLmhlYWRlci5yb290LFxuICAgICAgICAgICAgICBwYXRoOiBzaG9ydGVuUGF0aChtLmhlYWRlci5yb290KSxcbiAgICAgICAgICAgICAgbGF0ZXN0OiBtLFxuICAgICAgICAgICAgICBjb3VudDogMSxcbiAgICAgICAgICAgICAgY3VycmVudDogbS5oZWFkZXIucm9vdCA9PT0gYm9vdC5yb290LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW50cnkuY291bnQrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzZXRQcm9qZWN0cyhbLi4uYnlSb290LnZhbHVlcygpXSlcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiBzZXRQcm9qZWN0c0xvYWRpbmcoZmFsc2UpKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZGVsZXRlUHJvamVjdChwKSB7XG4gICAgaWYgKHAuY3VycmVudCkgcmV0dXJuIGZsYXNoKCdjYW5ub3QgZGVsZXRlIHRoZSBjdXJyZW50IHByb2plY3QgXHUwMEI3IHN3aXRjaCBhd2F5IGZpcnN0JylcbiAgICBjb25zdCBhcm1lZCA9IHJlZnMucHJvamVjdERlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQucm9vdCAhPT0gcC5yb290IHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMucHJvamVjdERlbGV0ZUFybSA9IHsgcm9vdDogcC5yb290LCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBkZWxldGUgXCIke3AucGF0aH1cIiBhbmQgaXRzICR7cC5jb3VudH0gJHtwLmNvdW50ID09PSAxID8gJ3Nlc3Npb24nIDogJ3Nlc3Npb25zJ31gKVxuICAgIH1cbiAgICByZWZzLnByb2plY3REZWxldGVBcm0gPSBudWxsXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGRlbGV0ZVByb2plY3REYXRhKHAucm9vdClcbiAgICAgIHNldFByb2plY3RzKChsaXN0KSA9PiBsaXN0LmZpbHRlcigoeCkgPT4geC5yb290ICE9PSBwLnJvb3QpKVxuICAgICAgZmxhc2goYGRlbGV0ZWQgJHtwLnBhdGh9IFx1MDBCNyAke3AuY291bnR9ICR7cC5jb3VudCA9PT0gMSA/ICdzZXNzaW9uJyA6ICdzZXNzaW9ucyd9IHJlbW92ZWRgKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoUHJvamVjdChtZXRhKSB7XG4gICAgaWYgKGJ1c3koKSkgcmV0dXJuIGZsYXNoKCdmaW5pc2ggb3IgaW50ZXJydXB0IHRoZSBjdXJyZW50IHR1cm4gZmlyc3QnKVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2aW91c01jcCA9IGJvb3QubWNwXG4gICAgICBjb25zdCBuZXh0ID0gYXdhaXQgYm9vdC5yZWJ1aWxkKG1ldGEuaGVhZGVyLnJvb3QpXG4gICAgICBwcmV2aW91c01jcC5jbG9zZUFsbCgpLmNhdGNoKCgpID0+IHt9KVxuICAgICAgcHJvY2Vzcy5jaGRpcihuZXh0LmN3ZClcbiAgICAgIE9iamVjdC5hc3NpZ24oYm9vdCwgbmV4dClcbiAgICAgIGJvb3QuZ2l0LnJldGFyZ2V0KG5leHQucm9vdClcbiAgICAgIHByb2Nlc3Muc3Rkb3V0LndyaXRlKGBcXHgxYl0wO3BpY28gXHUwMEI3ICR7bmV4dC5yb290LnNwbGl0KCcvJykucG9wKCl9XFx4MDdgKVxuICAgICAgbmV4dC5tY3AuY29ubmVjdEFsbCgpXG4gICAgICBzZXRNY3BTZXJ2ZXJzKG5leHQubWNwLmxpc3QoKSlcbiAgICAgIHNldFF1ZXVlZChbXSlcbiAgICAgIHNldEZpbGVMaXN0KFtdKVxuICAgICAgYXdhaXQgcmVzdW1lU2Vzc2lvbihtZXRhKVxuICAgICAgZmxhc2goYHN3aXRjaGVkIHRvICR7bmV4dC5kaXNwbGF5Q3dkfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgc3dpdGNoIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBkZWxldGVTZXNzaW9uTWV0YShtZXRhKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHJlZnMuc2Vzc2lvbj8uaWQgPT09IG1ldGEuaGVhZGVyLmlkXG4gICAgaWYgKGN1cnJlbnQgJiYgYnVzeSgpKSByZXR1cm4gZmxhc2goJ2ZpbmlzaCBvciBpbnRlcnJ1cHQgdGhlIGN1cnJlbnQgdHVybiBmaXJzdCcpXG4gICAgY29uc3QgYXJtZWQgPSByZWZzLmRlbGV0ZUFybVxuICAgIGlmICghYXJtZWQgfHwgYXJtZWQuZmlsZSAhPT0gbWV0YS5maWxlIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgIHJlZnMuZGVsZXRlQXJtID0geyBmaWxlOiBtZXRhLmZpbGUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgIHJldHVybiBmbGFzaChgY3RybCt4IGFnYWluIHRvIGRlbGV0ZSBcIiR7bWV0YS50aXRsZS5zbGljZSgwLCA1MCl9XCJgKVxuICAgIH1cbiAgICByZWZzLmRlbGV0ZUFybSA9IG51bGxcbiAgICBpZiAoY3VycmVudCkge1xuICAgICAgaWYgKGF3YWl0IGNvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbigpKSByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihtZXRhLmZpbGUpXG4gICAgICByZWZyZXNoU2Vzc2lvbnMocmVzdW1lU2NvcGUoKSlcbiAgICAgIGZsYXNoKCdzZXNzaW9uIGRlbGV0ZWQnKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZmxhc2goYGRlbGV0ZSBmYWlsZWQ6ICR7U3RyaW5nKGVyci5tZXNzYWdlIHx8IGVycikuc2xpY2UoMCwgODApfWApXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gcmVzdW1lU2Vzc2lvbihtZXRhKSB7XG4gICAgc2V0U2hvd1Jlc3VtZVBhbmVsKGZhbHNlKVxuICAgIHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpXG4gICAgaWYgKG1ldGEuaGVhZGVyLnJvb3QgIT09IGJvb3Qucm9vdCkgcmV0dXJuIHN3aXRjaFByb2plY3QobWV0YSlcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBoZWFkZXIsIGV2ZW50cyB9ID0gYXdhaXQgbG9hZFNlc3Npb24obWV0YS5maWxlKVxuICAgICAgcmVmcy5zZXNzaW9uID0gb3BlblNlc3Npb24oeyBmaWxlOiBtZXRhLmZpbGUsIGhlYWRlciB9KVxuICAgICAgcmVmcy5hbGxFdmVudHMgPSBbLi4uZXZlbnRzXVxuICAgICAgcmVmcy5wZXJzaXN0ZWQgPSBldmVudHMubGVuZ3RoXG4gICAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgICByZURlcml2ZSgpXG4gICAgICBjb25zdCBjYXRhbG9nTWF0Y2ggPSBtb2RlbHMuZmluZCgobSkgPT4gbS5uYW1lID09PSBkZXJpdmVkKCkubW9kZWwgJiYgbS5hdmFpbGFibGUgIT09IGZhbHNlKVxuICAgICAgY29uc3QgcmVzdG9yZWQgPSBkZXJpdmVkKCkubW9kZWxcbiAgICAgICAgJiYgKGNhdGFsb2dNYXRjaCB8fCBhZGhvY01vZGVsKGRlcml2ZWQoKS5tb2RlbCwgYm9vdC5wcm92aWRlcnMpKVxuICAgICAgaWYgKHJlc3RvcmVkKSB7XG4gICAgICAgIHNldE1vZGVsKHJlc3RvcmVkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0TW9kZWwoZGVmYXVsdE1vZGVsKCkpXG4gICAgICAgIGlmIChkZXJpdmVkKCkubW9kZWwpIGZsYXNoKGBtb2RlbCAke2Rlcml2ZWQoKS5tb2RlbH0gdW5hdmFpbGFibGUsIHVzaW5nICR7ZGVmYXVsdE1vZGVsKCkubmFtZX1gKVxuICAgICAgfVxuICAgICAgc2V0RWZmb3J0KGRlcml2ZWQoKS5lZmZvcnQgPT09IHVuZGVmaW5lZCA/IGRlZmF1bHRFZmZvcnQoKSA6IGRlcml2ZWQoKS5lZmZvcnQpXG4gICAgICBzZXRTZW50KHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubWFwKChlKSA9PiAoeyB0ZXh0OiByZWNhbGxUZXh0KGUpLCBhdDogaGVhZGVyLmNyZWF0ZWRBdCB9KSkpXG4gICAgICBzZXRIaXN0V2luZG93KEhJU1RPUllfV0lORE9XKVxuICAgICAgc2V0Rm9sbG93KHRydWUpXG4gICAgICBmbGFzaChgcmVzdW1lZCBcdTAwQjcgJHttZXRhLnR1cm5zfSAke21ldGEudHVybnMgPT09IDEgPyAndHVybicgOiAndHVybnMnfSBcdTAwQjcgJHt0aW1lQWdvKG1ldGEuYXQpfWApXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBmbGFzaChgcmVzdW1lIGZhaWxlZDogJHtTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCA4MCl9YClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvcGVuSGlzdG9yeVNlYXJjaCgpIHtcbiAgICBjb25zdCBzZXNzaW9uID0gc2VudCgpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhzZXNzaW9uKSlcbiAgICBzZXRTaG93SGlzdG9yeVBhbmVsKHRydWUpXG4gICAgc2V0SGlzdFNjb3BlKDApXG4gIH1cblxuICBmdW5jdGlvbiBkZWR1cGVQcm9tcHRzKHBvb2wpIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldCgpXG4gICAgY29uc3Qgb3V0ID0gW11cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIFsuLi5wb29sXS5zb3J0KChhLCBiKSA9PiBiLmF0IC0gYS5hdCkpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhlbnRyeS50ZXh0KSkgY29udGludWVcbiAgICAgIHNlZW4uYWRkKGVudHJ5LnRleHQpXG4gICAgICBvdXQucHVzaChlbnRyeSlcbiAgICB9XG4gICAgcmV0dXJuIG91dFxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc3dpdGNoSGlzdFNjb3BlKG5leHQpIHtcbiAgICBzZXRIaXN0U2NvcGUobmV4dClcbiAgICBpZiAobmV4dCA9PT0gMCkgcmV0dXJuIHNldEhpc3RQcm9tcHRzKGRlZHVwZVByb21wdHMoc2VudCgpKSlcbiAgICBjb25zdCBwcm9qZWN0ID0gYXdhaXQgbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpXG4gICAgaWYgKG5leHQgPT09IDEpIHJldHVybiBzZXRIaXN0UHJvbXB0cyhkZWR1cGVQcm9tcHRzKFsuLi5zZW50KCksIC4uLnByb2plY3RdKSlcbiAgICBjb25zdCBnbG9iYWwgPSBhd2FpdCBsb2FkR2xvYmFsUHJvbXB0cygpXG4gICAgc2V0SGlzdFByb21wdHMoZGVkdXBlUHJvbXB0cyhbLi4uc2VudCgpLCAuLi5wcm9qZWN0LCAuLi5nbG9iYWxdKSlcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1SZXdpbmQob3B0KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcmV3aW5kVGFyZ2V0KClcbiAgICBjb25zdCBzdGF0ZSA9IGRlcml2ZWQoKVxuICAgIGNvbnN0IHsgZWRpdHMgfSA9IHJld2luZFN0YXRzKHN0YXRlLCB0YXJnZXQuaW5kZXgpXG4gICAgY29uc3QgZWRpdHNMYWJlbCA9IGAke2VkaXRzLmxlbmd0aH0gJHtlZGl0cy5sZW5ndGggPT09IDEgPyAnZWRpdCcgOiAnZWRpdHMnfWBcbiAgICBsZXQgcmV2ZXJ0ZWQgPSBbXVxuICAgIGxldCBza2lwcGVkID0gW11cblxuICAgIGlmIChvcHQua2V5ID09PSAnYm90aCcgfHwgb3B0LmtleSA9PT0gJ2NvZGUnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXZlcnRFZGl0cyhlZGl0cylcbiAgICAgIHJldmVydGVkID0gcmVzdWx0LnJldmVydGVkXG4gICAgICBza2lwcGVkID0gcmVzdWx0LnNraXBwZWRcbiAgICB9XG5cbiAgICBsZXQgc3VtbWFyeVRleHQgPSBudWxsXG4gICAgaWYgKG9wdC5rZXkgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgY29uc3QgdGFpbCA9IHN0YXRlLnRyYW5zY3JpcHQuc2xpY2UodGFyZ2V0LmluZGV4KVxuICAgICAgY29uc3QgdGV4dCA9IHRhaWwuZmlsdGVyKChtKSA9PiBtLnRleHQpLm1hcCgobSkgPT4gYCR7bS5raW5kfTogJHttLnRleHR9YCkuam9pbignXFxuJylcbiAgICAgIGZsYXNoKCdzdW1tYXJpemluZy4uLicpXG4gICAgICBsZXQgYXV0aCA9IG51bGxcbiAgICAgIGlmIChtb2RlbCgpLnByb3ZpZGVyID09PSAnY29kZXgnKSBhdXRoID0gYXdhaXQgb3BlbmFpQ3JlZGVudGlhbHMoKS5jYXRjaCgoKSA9PiBudWxsKVxuICAgICAgc3VtbWFyeVRleHQgPSBhd2FpdCBzdW1tYXJpemVUZXh0KHsgdGV4dCwgbW9kZWxOYW1lOiBtb2RlbCgpLm5hbWUsIGF1dGggfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICBmbGFzaCgnc3VtbWFyeSBtb2RlbCBjYWxsIGZhaWxlZCBcdTAwQjcga2VwdCBhIGNydWRlIGRpZ2VzdCBvZiB0aGUgcmV3b3VuZCB0dXJucycpXG4gICAgICAgIHJldHVybiB0YWlsLmZpbHRlcigobSkgPT4gbS50ZXh0KS5zbGljZSgwLCAzKS5tYXAoKG0pID0+IG0udGV4dC5zcGxpdCgvXFxzKy8pLnNsaWNlKDAsIDYpLmpvaW4oJyAnKSkuam9pbignIFx1MDBCNyAnKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBldmVudCA9IG1ha2VFdmVudCgncmV3aW5kJywgeyB0YXJnZXQ6IHRhcmdldC5ldmVudElkLCBtb2RlOiBvcHQua2V5LCBzdW1tYXJ5VGV4dCwgcmV2ZXJ0ZWQsIHNraXBwZWQgfSlcbiAgICBwZXJzaXN0KGV2ZW50KVxuICAgIHJlZnMucmV3aW5kVW5kbyA9IHsgcmV3aW5kSWQ6IGV2ZW50LmlkLCBlZGl0czogZWRpdHMuZmlsdGVyKChlKSA9PiByZXZlcnRlZC5pbmNsdWRlcyhlLmNhbGxJZCkpIH1cbiAgICByZURlcml2ZSgpXG4gICAgaWYgKG9wdC5rZXkgIT09ICdjb2RlJykgc2V0SW5wdXQocmVjYWxsVGV4dCh0YXJnZXQpKVxuXG4gICAgY29uc3Qgc2tpcHBlZE5vdGUgPSBza2lwcGVkLmxlbmd0aCA/IGAgXHUwMEI3IHNraXBwZWQgJHtza2lwcGVkLmxlbmd0aH0gZHJpZnRlZGAgOiAnJ1xuICAgIGlmIChvcHQua2V5ID09PSAnY29kZScpIGZsYXNoKGByZXZlcnRlZCAke2VkaXRzTGFiZWx9LCBjb252ZXJzYXRpb24ga2VwdCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ3N1bW1hcnknKSBmbGFzaChgcmV3b3VuZCBhbmQgc3VtbWFyaXplZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBpZiAob3B0LmtleSA9PT0gJ2JvdGgnKSBmbGFzaChgcmV3b3VuZCwgJHtlZGl0c0xhYmVsfSByZXZlcnRlZCR7c2tpcHBlZE5vdGV9IFx1MDBCNyBjdHJsK3ogdG8gdW5kb2ApXG4gICAgZWxzZSBmbGFzaChgcmV3b3VuZCwgZmlsZSBjaGFuZ2VzIGtlcHQgXHUwMEI3IGN0cmwreiB0byB1bmRvYClcbiAgICBzZXRSZXdpbmRTdGVwKG51bGwpXG4gICAgc2V0UmV3aW5kVGFyZ2V0KG51bGwpXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1bmRvUmV3aW5kKCkge1xuICAgIGNvbnN0IHVuZG8gPSByZWZzLnJld2luZFVuZG9cbiAgICBpZiAoIXVuZG8pIHJldHVyblxuICAgIGNvbnN0IHsgc2tpcHBlZCB9ID0gYXdhaXQgcmVhcHBseUVkaXRzKHVuZG8uZWRpdHMpXG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ3Jld2luZF91bmRvJywgeyByZXdpbmRJZDogdW5kby5yZXdpbmRJZCB9KSlcbiAgICByZWZzLnJld2luZFVuZG8gPSBudWxsXG4gICAgcmVEZXJpdmUoKVxuICAgIGZsYXNoKHNraXBwZWQubGVuZ3RoID8gYHJld2luZCB1bmRvbmUgXHUwMEI3ICR7c2tpcHBlZC5sZW5ndGh9IGZpbGUocykgZHJpZnRlZGAgOiAncmV3aW5kIHVuZG9uZScpXG4gIH1cblxuICBmdW5jdGlvbiByZWNhbGxUZXh0KGVudHJ5KSB7XG4gICAgcmV0dXJuIGlucHV0VGV4dEZyb21Db250ZW50KGVudHJ5LmNvbnRlbnQgPz8gZW50cnkudGV4dCwge1xuICAgICAgYXR0YWNobWVudHM6IHJlZnMuYXR0YWNobWVudHMsXG4gICAgICBuZXh0SWQ6ICgpID0+ICsrcmVmcy5pbWFnZUNvdW50LFxuICAgIH0pXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBjb25maXJtRGVsZXRlQ3VycmVudFNlc3Npb24oKSB7XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHJlZnMuc2Vzc2lvblxuICAgIGlmICghc2Vzc2lvbikge1xuICAgICAgc2V0U2hvd0RlbGV0ZUNvbmZpcm0oZmFsc2UpXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHNlc3Npb24uZmx1c2goKVxuICAgICAgYXdhaXQgZGVsZXRlU2Vzc2lvbihzZXNzaW9uLmZpbGUpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSlcbiAgICAgIGZsYXNoKGBkZWxldGUgZmFpbGVkOiAke1N0cmluZyhlcnIubWVzc2FnZSB8fCBlcnIpLnNsaWNlKDAsIDgwKX1gKVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJlZnMuc2Vzc2lvbiA9IG51bGxcbiAgICByZWZzLmFsbEV2ZW50cyA9IFtdXG4gICAgcmVmcy5wZXJzaXN0ZWQgPSAwXG4gICAgcmVmcy5yZXdpbmRVbmRvID0gbnVsbFxuICAgIHNldFF1ZXVlZChbXSlcbiAgICBzZXRTZW50KFtdKVxuICAgIHNldE1vZGVsKGRlZmF1bHRNb2RlbCgpKVxuICAgIHNldEVmZm9ydChkZWZhdWx0RWZmb3J0KCkpXG4gICAgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSlcbiAgICByZURlcml2ZSgpXG4gICAgZmxhc2goJ3Nlc3Npb24gZGVsZXRlZCcpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGNvbnN0IGFueVBhbmVsID0gKCkgPT5cbiAgICBzaG93TW9kZWxQYW5lbCgpIHx8IHNob3dFZmZvcnRQYW5lbCgpIHx8IHNob3dUaGVtZVBhbmVsKCkgfHwgc2hvd0NvbmZpZ1BhbmVsKCkgfHwgc2hvd0RlbGV0ZUNvbmZpcm0oKSB8fCBzaG93TWVtb3J5UGFuZWwoKSB8fCBzaG93SGlzdG9yeVBhbmVsKCkgfHwgc2hvd1Jlc3VtZVBhbmVsKCkgfHwgc2hvd01jcFBhbmVsKCkgfHxcbiAgICBzaG93UHJvamVjdFBhbmVsKCkgfHwgc2hvd1NoZWxsc1BhbmVsKCkgfHwgc2hvd1dha2V1cHNQYW5lbCgpIHx8IHNob3dDb25uZWN0UGFuZWwoKSB8fFxuICAgIGluZm9QYW5lbCgpICE9PSBudWxsIHx8IHJld2luZFN0ZXAoKSAhPT0gbnVsbFxuXG4gIC8vIGV2ZXJ5IGZvY3VzLXRha2luZyBwYW5lbCBkaW1zIHRoZSBjb252ZXJzYXRpb24gYmVoaW5kIGl0OyB0aGUgdGhlbWVcbiAgLy8gcGlja2VyIGlzIHRoZSBvbmUgZXhlbXB0aW9uLCBzaW5jZSBpdHMgam9iIGlzIHByZXZpZXdpbmcgcGFsZXR0ZXMgb25cbiAgLy8gdGhlIHVuZGltbWVkIHVpXG4gIGNvbnN0IGRpbW1pbmdQYW5lbCA9ICgpID0+IGFueVBhbmVsKCkgJiYgIXNob3dUaGVtZVBhbmVsKClcblxuICBmdW5jdGlvbiBraWxsU2hlbGwoc2hlbGwpIHtcbiAgICBpZiAoc2hlbGwuc3RhdHVzICE9PSAncnVubmluZycpIHJldHVybiBmbGFzaChgc2hlbGwgJHtzaGVsbC5pZH0gYWxyZWFkeSBleGl0ZWRgKVxuICAgIGNvbnN0IGFybWVkID0gcmVmcy5zaGVsbEtpbGxBcm1cbiAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSBzaGVsbC5pZCB8fCBEYXRlLm5vdygpIC0gYXJtZWQuYXQgPiAzMDAwKSB7XG4gICAgICByZWZzLnNoZWxsS2lsbEFybSA9IHsgaWQ6IHNoZWxsLmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICByZXR1cm4gZmxhc2goYGN0cmwreCBhZ2FpbiB0byBraWxsIFwiJHtzaGVsbC5kZXNjcmlwdGlvbiB8fCBgc2hlbGwgJHtzaGVsbC5pZH1gfVwiYClcbiAgICB9XG4gICAgcmVmcy5zaGVsbEtpbGxBcm0gPSBudWxsXG4gICAgYm9vdC5zaGVsbHMua2lsbChzaGVsbC5pZCwgJ3VzZXInKVxuICB9XG5cbiAgY29uc3QgZWZmb3J0QXBwbGllcyA9ICgpID0+ICEhbW9kZWwoKS5lZmZvcnRcblxuICBmdW5jdGlvbiBzZXRTZXNzaW9uRWZmb3J0KG5leHQsIHsgYXNEZWZhdWx0ID0gZmFsc2UgfSA9IHt9KSB7XG4gICAgcGVyc2lzdChtYWtlRXZlbnQoJ2VmZm9ydCcsIHsgdG86IG5leHQgfSkpXG4gICAgc2V0RWZmb3J0KG5leHQpXG4gICAgaWYgKGFzRGVmYXVsdCkge1xuICAgICAgc2V0RGVmYXVsdEVmZm9ydChuZXh0KVxuICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0RWZmb3J0OiBuZXh0IH0pLmNhdGNoKCgpID0+IHt9KVxuICAgIH1cbiAgICBmbGFzaChgZWZmb3J0OiAke25leHQgPz8gJ2RlZmF1bHQnfSR7YXNEZWZhdWx0ID8gJyBcdTAwQjcgc2F2ZWQgYXMgZGVmYXVsdCcgOiAnJ31gKVxuICB9XG5cbiAgY29uc3QgZm0gPSB1c2VGb2N1cyh7IGluaXRpYWw6ICdpbnB1dCcgfSlcbiAgZm0uaXRlbSgnZmVlZCcpXG4gIGZtLml0ZW0oJ2lucHV0JylcbiAgdXNlRm9jdXNUcmFwKGFueVBhbmVsKCkgfHwgdmlldygpID09PSAnaGVscCcpXG4gIHVzZVNlbGVjdGlvbih7XG4gICAgb25Db3B5OiAodGV4dCkgPT4gZmxhc2goYGNvcGllZCAke3RleHQubGVuZ3RofSAke3RleHQubGVuZ3RoID09PSAxID8gJ2NoYXJhY3RlcicgOiAnY2hhcmFjdGVycyd9YCksXG4gIH0pXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScgJiYgYnVzeSgpICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpbnRlcnJ1cHQoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdjJykge1xuICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAgICAgaWYgKG5vdyAtIHJlZnMucXVpdEF0IDwgMTUwMCkge1xuICAgICAgICBib290LnNoZWxscy5raWxsQWxsKClcbiAgICAgICAgbWNwLnRlcm1pbmF0ZUFsbCgpXG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVmcy5xdWl0QXQgPSBub3dcbiAgICAgICAgY29uc3QgcnVubmluZyA9IGJvb3Quc2hlbGxzLnJ1bm5pbmcoKVxuICAgICAgICBmbGFzaChydW5uaW5nID8gYCR7cnVubmluZ30gJHtydW5uaW5nID09PSAxID8gJ3NoZWxsJyA6ICdzaGVsbHMnfSBydW5uaW5nIFx1MDBCNyBjdHJsK2MgYWdhaW4gdG8gZXhpdCBhbmQga2lsbCAke3J1bm5pbmcgPT09IDEgPyAnaXQnIDogJ3RoZW0nfWAgOiAnY3RybCtjIGFnYWluIHRvIGV4aXQnKVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdvJykge1xuICAgICAgc2V0VmVyYm9zZSgodikgPT4gIXYpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3InICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBpZiAoYnVzeSgpKSBmbGFzaCgnZmluaXNoIG9yIGludGVycnVwdCB0aGUgY3VycmVudCB0dXJuIGZpcnN0JylcbiAgICAgIGVsc2UgaWYgKHVzZXJFbnRyaWVzKGRlcml2ZWQoKSkubGVuZ3RoID09PSAwKSBmbGFzaCgnbm90aGluZyB0byByZXdpbmQgeWV0JylcbiAgICAgIGVsc2Ugc2V0UmV3aW5kU3RlcCgncGljaycpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHZpZXcoKSA9PT0gJ2NoYXQnICYmICFhbnlQYW5lbCgpKSB7XG4gICAgICBzZXRTaG93UmVzdW1lUGFuZWwodHJ1ZSlcbiAgICAgIHJlZnJlc2hTZXNzaW9ucyhyZXN1bWVTY29wZSgpKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd0JyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgc2V0U2hvd01vZGVsUGFuZWwodHJ1ZSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncCcgJiYgdmlldygpID09PSAnY2hhdCcgJiYgIWFueVBhbmVsKCkpIHtcbiAgICAgIG9wZW5Qcm9qZWN0UGFuZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdiJyAmJiB2aWV3KCkgPT09ICdjaGF0JyAmJiAhYW55UGFuZWwoKSkge1xuICAgICAgaWYgKCFlZmZvcnRBcHBsaWVzKCkpIGZsYXNoKGAke21vZGVsKCkubmFtZX0gZG9lcyBub3Qgc3VwcG9ydCBlZmZvcnQgY29udHJvbGApXG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbbnVsbCwgJ2xvdycsICdtZWRpdW0nLCAnaGlnaCcsICdtYXgnXVxuICAgICAgICBjb25zdCBuZXh0ID0gb3JkZXJbKG9yZGVyLmluZGV4T2YoZWZmb3J0KCkgPz8gbnVsbCkgKyAxKSAlIG9yZGVyLmxlbmd0aF1cbiAgICAgICAgc2V0U2Vzc2lvbkVmZm9ydChuZXh0KVxuICAgICAgfVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICdzJyAmJiBzaG93SGlzdG9yeVBhbmVsKCkpIHtcbiAgICAgIHN3aXRjaEhpc3RTY29wZSgoaGlzdFNjb3BlKCkgKyAxKSAlIEhJU1RPUllfU0NPUEVTLmxlbmd0aClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgc2hvd01lbW9yeVBhbmVsKCkpIHtcbiAgICAgIHNldE1lbVNjb3BlKChzKSA9PiAocyArIDEpICUgTUVNT1JZX1NDT1BFUy5sZW5ndGgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3MnICYmIHNob3dSZXN1bWVQYW5lbCgpKSB7XG4gICAgICBjb25zdCBuZXh0ID0gKHJlc3VtZVNjb3BlKCkgKyAxKSAlIFJFU1VNRV9TQ09QRVMubGVuZ3RoXG4gICAgICBzZXRSZXN1bWVTY29wZShuZXh0KVxuICAgICAgcmVmcmVzaFNlc3Npb25zKG5leHQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3onICYmIHJlZnMucmV3aW5kVW5kbyAmJiAhYnVzeSgpICYmIHZpZXcoKSA9PT0gJ2NoYXQnKSB7XG4gICAgICB1bmRvUmV3aW5kKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IGZtdEVsYXBzZWQgPSAocykgPT4gKHMgPCA2MCA/IGAke3N9c2AgOiBgJHtNYXRoLmZsb29yKHMgLyA2MCl9bSAke3MgJSA2MH1zYClcbiAgY29uc3QgZWxhcHNlZCA9IGZtdEVsYXBzZWQoYnVzeSgpID8gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHN0YXJ0ZWRBdCgpKSAvIDEwMDApKSA6IDApXG5cbiAgY29uc3Qgc2xhc2hRdWVyeSA9IGlucHV0KCkuc3RhcnRzV2l0aCgnLycpID8gaW5wdXQoKS5zbGljZSgxKSA6IG51bGxcbiAgY29uc3Qgc2hvd0NvbW1hbmRzID0gc2xhc2hRdWVyeSAhPT0gbnVsbCAmJiAhc2xhc2hRdWVyeS5pbmNsdWRlcygnICcpICYmICFhbnlQYW5lbCgpXG4gIGNvbnN0IG1hdGNoZWRDb21tYW5kcyA9ICFzaG93Q29tbWFuZHNcbiAgICA/IFtdXG4gICAgOiBjbWRDeWNsZSgpXG4gICAgICA/IGNtZEN5Y2xlKCkubWF0Y2hlc1xuICAgICAgOiBhbGxDb21tYW5kcy5maWx0ZXIoKGMpID0+IGMubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2xhc2hRdWVyeS50b0xvd2VyQ2FzZSgpKSlcblxuICBjb25zdCBhdE1hdGNoID0gaW5wdXQoKS5tYXRjaCgvKF58W1xccyhdKUAoW15cXHNAXSopJC8pXG4gIGNvbnN0IHNob3dGaWxlcyA9IGF0TWF0Y2ggIT09IG51bGwgJiYgIXNob3dDb21tYW5kcyAmJiAhZmlsZXNEaXNtaXNzZWQoKSAmJiAhYW55UGFuZWwoKVxuICBpZiAoc2hvd0ZpbGVzKSB7XG4gICAgbGlzdEZpbGVzKGN3ZCkudGhlbigoZmlsZXMpID0+IHtcbiAgICAgIGlmIChmaWxlcyAhPT0gZmlsZUxpc3QoKSkgc2V0RmlsZUxpc3QoZmlsZXMpXG4gICAgfSlcbiAgfVxuICBjb25zdCBtYXRjaGVkRmlsZXMgPSBzaG93RmlsZXNcbiAgICA/IGZpbGVMaXN0KClcbiAgICAgICAgLm1hcCgoZikgPT4gW2Z1enp5U2NvcmUoYXRNYXRjaFsyXSwgZiksIGZdKVxuICAgICAgICAuZmlsdGVyKChbc2NvcmVdKSA9PiBzY29yZSA+PSAwKVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgICAgIC5tYXAoKFssIGZdKSA9PiBmKVxuICAgIDogW11cblxuICBmdW5jdGlvbiBwaWNrRmlsZShmKSB7XG4gICAgY29uc3QgdiA9IGlucHV0KClcbiAgICBjb25zdCBhdCA9IHYubGFzdEluZGV4T2YoJ0AnKVxuICAgIGNvbnN0IG1lZGlhVHlwZSA9IG1lZGlhVHlwZUZvcihmKVxuICAgIGNvbnN0IGZ1bGwgPSBqb2luKGJvb3QuY3dkLCBmKVxuICAgIGlmIChtZWRpYVR5cGUgJiYgZXhpc3RzU3luYyhmdWxsKSkge1xuICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMkeysrcmVmcy5pbWFnZUNvdW50fV1gXG4gICAgICByZWZzLmF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoOiBmdWxsLCBtZWRpYVR5cGUgfSlcbiAgICAgIHNldElucHV0KHYuc2xpY2UoMCwgYXQpICsgcGxhY2Vob2xkZXIgKyAnICcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElucHV0KHYuc2xpY2UoMCwgYXQgKyAxKSArIGYgKyAnICcpXG4gICAgfVxuICAgIHNldEZpbGVJbmRleCgwKVxuICB9XG5cbiAgY29uc3QgY29tcEN0eCA9IGNvbXBsZXRpbmcoKSA/IGNvbXBsZXRpb25Db250ZXh0KHsgdmFsdWU6IGlucHV0KCksIHJlc29sdmU6IGNvbXBsZXRpb25Tb3VyY2UgfSkgOiBudWxsXG4gIGNvbnN0IHNob3dDb21wbGV0aW9uID0gISFjb21wQ3R4ICYmIGNvbXBDdHgubWF0Y2hlcy5sZW5ndGggPiAwICYmICFzaG93Q29tbWFuZHMgJiYgIXNob3dGaWxlcyAmJiAhYW55UGFuZWwoKVxuXG4gIGNvbnN0IHJld2luZEVudHJpZXMgPSAoKSA9PiB1c2VyRW50cmllcyhkZXJpdmVkKCkpXG4gIGNvbnN0IHJld2luZE9wdGlvbnMgPSAoKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHJld2luZFRhcmdldCgpXG4gICAgaWYgKCF0YXJnZXQpIHJldHVybiBbXVxuICAgIGNvbnN0IHsgbXNncywgZWRpdHMgfSA9IHJld2luZFN0YXRzKGRlcml2ZWQoKSwgdGFyZ2V0LmluZGV4KVxuICAgIGNvbnN0IGUgPSBlZGl0cy5sZW5ndGhcbiAgICBjb25zdCBlZGl0c0xhYmVsID0gYCR7ZX0gJHtlID09PSAxID8gJ2VkaXQnIDogJ2VkaXRzJ31gXG4gICAgY29uc3Qgb3B0cyA9IFtdXG4gICAgaWYgKGUgPiAwKSBvcHRzLnB1c2goeyBrZXk6ICdib3RoJywgbGFiZWw6ICdyZXN0b3JlIGNvZGUgYW5kIGNvbnZlcnNhdGlvbicsIGRlc2M6IGBjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyAke2VkaXRzTGFiZWx9IHJldmVydGVkYCB9KVxuICAgIG9wdHMucHVzaCh7XG4gICAgICBrZXk6ICdjaGF0JyxcbiAgICAgIGxhYmVsOiBlID4gMCA/ICdyZXN0b3JlIGNvbnZlcnNhdGlvbiBvbmx5JyA6ICdyZXN0b3JlIGNvbnZlcnNhdGlvbicsXG4gICAgICBkZXNjOiBlID4gMCA/ICdjaGF0IHJldHVybnMgdG8gdGhpcyBtZXNzYWdlIFx1MDBCNyBmaWxlIGNoYW5nZXMga2VwdCcgOiBgY2hhdCByZXR1cm5zIHRvIHRoaXMgbWVzc2FnZSBcdTAwQjcgZHJvcHMgJHttc2dzfSBlbnRyaWVzYCxcbiAgICB9KVxuICAgIGlmIChlID4gMCkgb3B0cy5wdXNoKHsga2V5OiAnY29kZScsIGxhYmVsOiAncmVzdG9yZSBjb2RlIG9ubHknLCBkZXNjOiBgY29udmVyc2F0aW9uIGtlcHQgXHUwMEI3ICR7ZWRpdHNMYWJlbH0gcmV2ZXJ0ZWRgIH0pXG4gICAgb3B0cy5wdXNoKHsga2V5OiAnc3VtbWFyeScsIGxhYmVsOiAncmV3aW5kIGFuZCBrZWVwIGEgc3VtbWFyeScsIGRlc2M6ICdkcm9wcGVkIGVudHJpZXMgY29sbGFwc2UgaW50byBhIG9uZS1saW5lIG5vdGUnIH0pXG4gICAgcmV0dXJuIG9wdHNcbiAgfSkoKVxuXG4gIGNvbnN0IHsgdXNhZ2VBY3RpdmU6IHVzYWdlIH0gPSBkZXJpdmVkKClcbiAgY29uc3QgY29udGV4dFBlcmNlbnQgPSBtb2RlbCgpLmNvbnRleHQgPiAwICYmIGRlcml2ZWQoKS5sYXN0UHJvbXB0VG9rZW5zID4gMCAmJiBkZXJpdmVkKCkubGFzdFByb21wdE1vZGVsID09PSBtb2RlbCgpLm5hbWVcbiAgICA/IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCgoZGVyaXZlZCgpLmxhc3RQcm9tcHRUb2tlbnMgLyBtb2RlbCgpLmNvbnRleHQpICogMTAwKSlcbiAgICA6IDBcbiAgc2hlbGxzVmVyc2lvbigpXG4gIGNvbnN0IGxpdmVTaGVsbHMgPSBib290LnNoZWxscy5saXN0KCkuZmlsdGVyKChzKSA9PiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnKVxuICBjb25zdCBwZW5kaW5nV2FrZXVwcyA9IGJvb3Qud2FrZXVwcy5wZW5kaW5nKClcbiAgZ2l0VmVyc2lvbigpXG4gIGNvbnN0IGdpdEluZm8gPSBnaXRGb290ZXIoKSA/IGJvb3QuZ2l0LnN0YXR1cygpIDogbnVsbFxuXG4gIGlmICh2aWV3KCkgPT09ICdoZWxwJykge1xuICAgIHJldHVybiA8SGVscCBjb21tYW5kcz17Q09NTUFORFN9IG9uQ2xvc2U9eygpID0+IHNldFZpZXcoJ2NoYXQnKX0gLz5cbiAgfVxuXG4gIGhpZ2hsaWdodFZlcnNpb24oKVxuXG4gIGNvbnN0IHRyYW5zY3JpcHQgPSBkZXJpdmVkKCkudHJhbnNjcmlwdFxuICBjb25zdCBoaWRkZW5Db3VudCA9IE1hdGgubWF4KDAsIHRyYW5zY3JpcHQubGVuZ3RoIC0gaGlzdFdpbmRvdygpKVxuICBjb25zdCB2aXNpYmxlSXRlbXMgPSBbLi4udHJhbnNjcmlwdC5zbGljZShoaWRkZW5Db3VudCksIC4uLm92ZXJsYXkoKV1cbiAgY29uc3QgaXRlbXMgPSBjb21wYWN0VG9vbEhpc3RvcnkoKSA/IGNvbXBhY3RUb29sUnVucyh2aXNpYmxlSXRlbXMsIHR1cm5QaGFzZSgpID09PSAndG9vbHMnKSA6IHZpc2libGVJdGVtc1xuXG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAnMTAwJScgfX0+XG4gICAgICB7dHJhbnNjcmlwdC5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGRpbTogZGltbWluZ1BhbmVsKCkgfX0+XG4gICAgICAgICAgPEVtcHR5U3RhdGUgdmVyc2lvbj17dmVyc2lvbn0gY2xvdWRzPXtjbG91ZHMoKX0gLz5cbiAgICAgICAgPC9ib3g+XG4gICAgICApIDogPFNjcm9sbEJveFxuICAgICAgICBzdHlsZT17eyBmbGV4R3JvdzogMSwgZGltOiBkaW1taW5nUGFuZWwoKSB9fVxuICAgICAgICBmb2N1c2VkPXtmbS5pcygnZmVlZCcpfVxuICAgICAgICBzY3JvbGxPZmZzZXQ9e2ZvbGxvdygpID8gMWU5IDogb2Zmc2V0KCl9XG4gICAgICAgIG9uU2Nyb2xsPXsobmV4dCwgbWV0YSkgPT4ge1xuICAgICAgICAgIHNldEZvbGxvdyghIW1ldGE/LmF0Qm90dG9tKVxuICAgICAgICAgIC8vIGJhY2sgYXQgdGhlIGJvdHRvbTogbG9hZGVkIGhpc3RvcnkgaXMgb2ZmLXNjcmVlbiwgc28gcmUtaGlkaW5nXG4gICAgICAgICAgLy8gaXQgaXMgaW52aXNpYmxlIGFuZCByZXN0b3JlcyB0aGUgc21hbGwgcmVuZGVyIHdpbmRvd1xuICAgICAgICAgIGlmIChtZXRhPy5hdEJvdHRvbSAmJiBoaXN0V2luZG93KCkgPiBISVNUT1JZX1dJTkRPVykgc2V0SGlzdFdpbmRvdyhISVNUT1JZX1dJTkRPVylcbiAgICAgICAgICBpZiAobmV4dCA9PT0gMCAmJiBoaWRkZW5Db3VudCA+IDApIHtcbiAgICAgICAgICAgIC8vIGtlZXAgdGhlIHZpZXcgYW5jaG9yZWQ6IGVzdGltYXRlIHRoZSByb3dzIHRoZSBuZXcgYmF0Y2ggYWRkc1xuICAgICAgICAgICAgLy8gYW5kIHNjcm9sbCBwYXN0IHRoZW0gc28gdGhlIGN1cnJlbnQgdG9wIGl0ZW0gc3RheXMgaW4gcGxhY2VcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkID0gTWF0aC5taW4oSElTVE9SWV9XSU5ET1csIGhpZGRlbkNvdW50KVxuICAgICAgICAgICAgY29uc3QgYXZnUm93cyA9IE1hdGgubWF4KDIsIE1hdGgucm91bmQoKG1ldGE/Lm1heE9mZnNldCB8fCAwKSAvIE1hdGgubWF4KDEsIGl0ZW1zLmxlbmd0aCkpKVxuICAgICAgICAgICAgc2V0SGlzdFdpbmRvdygodykgPT4gdyArIEhJU1RPUllfV0lORE9XKVxuICAgICAgICAgICAgc2V0T2Zmc2V0KGFkZGVkICogYXZnUm93cylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRPZmZzZXQobmV4dClcbiAgICAgICAgfX1cbiAgICAgICAgc2Nyb2xsYmFyXG4gICAgICA+XG4gICAgICAgIHtoaWRkZW5Db3VudCA+IDAgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgcGFkZGluZ1g6IDIgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjMwMyAke2hpZGRlbkNvdW50LnRvTG9jYWxlU3RyaW5nKCl9IG9sZGVyICR7aGlkZGVuQ291bnQgPT09IDEgPyAnbWVzc2FnZScgOiAnbWVzc2FnZXMnfSBcdTAwQjcgc2Nyb2xsIHRvIHRvcCB0byBsb2FkYH08L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIHtpdGVtcy5tYXAoKGl0ZW0sIGkpID0+IDxNZXNzYWdlIGtleT17aGlkZGVuQ291bnQgKyBpfSBpdGVtPXtpdGVtfSB2ZXJib3NlPXt2ZXJib3NlKCl9IC8+KX1cbiAgICAgICAge3N0cmVhbWluZygpICE9PSBudWxsICYmIHN0cmVhbWluZygpICE9PSAnJyAmJiAoXG4gICAgICAgICAgPE1lc3NhZ2Uga2V5PVwic3RyZWFtaW5nXCIgaXRlbT17eyBraW5kOiAnYXNzaXN0YW50JywgdGV4dDogYCR7c3RyZWFtaW5nKCl9XHUyNThCYCB9fSAvPlxuICAgICAgICApfVxuICAgICAgPC9TY3JvbGxCb3g+fVxuXG4gICAgICB7cXVldWVkKCkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge3F1ZXVlZCgpLm1hcCgocSwgaSkgPT4gKFxuICAgICAgICAgICAgPGJveCBrZXk9e2l9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eydcdTIwM0EgJ308L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PntxLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIHtpID09PSAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCwgZGltOiB0cnVlIH19PnsnICBwZW5kaW5nIFx1MDBCNyBcdTIxOTEgdG8gZWRpdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2JveD5cbiAgICAgICl9XG5cbiAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxLCBtYXJnaW5Ub3A6IHRyYW5zY3JpcHQubGVuZ3RoID09PSAwICYmIGNsb3VkcygpID8gMCA6IDEsIGRpbTogZGltbWluZ1BhbmVsKCkgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKSA/IGFjY2VudCgpIDogTVVURUQsIGJvbGQ6IHRydWUgfX0+eydcdTI3NkYnfTwvdGV4dD5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAge2Rlcml2ZWQoKS50aXRsZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBwb3NpdGlvbjogJ2Fic29sdXRlJywgdG9wOiAwLCByaWdodDogMCB9fT5cbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJnOiBmbS5pcygnaW5wdXQnKSAmJiAhYW55UGFuZWwoKSA/IGFjY2VudCgpIDogTVVURUQsIGNvbG9yOiAnYmxhY2snLCBib2xkOiB0cnVlIH19PntgICR7ZGVyaXZlZCgpLnRpdGxlfSBgfTwvdGV4dD5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgICAgPFRleHRBcmVhXG4gICAgICAgICAgY29sb3I9e0ZHfVxuICAgICAgICAgIGxpbmVDb3VudGVyXG4gICAgICAgICAgdmFsdWU9e2lucHV0KCl9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb252ZXJ0ZWQgPSBwbGFjZWhvbGRlcml6ZUltYWdlUGF0aHModiwge1xuICAgICAgICAgICAgICBhdHRhY2htZW50czogcmVmcy5hdHRhY2htZW50cyxcbiAgICAgICAgICAgICAgbmV4dElkOiAoKSA9PiArK3JlZnMuaW1hZ2VDb3VudCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZXRJbnB1dChjb252ZXJ0ZWQudGV4dClcbiAgICAgICAgICAgIHNldENtZEluZGV4KDApXG4gICAgICAgICAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgICAgICAgICAgc2V0RmlsZUluZGV4KDApXG4gICAgICAgICAgICBzZXRIaXN0SWR4KC0xKVxuICAgICAgICAgICAgc2V0RmlsZXNEaXNtaXNzZWQoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNhbmNlbD17KCkgPT4ge1xuICAgICAgICAgICAgaWYgKGJ1c3koKSkgaW50ZXJydXB0KClcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBzZXRDbWRDeWNsZShudWxsKVxuICAgICAgICAgICAgICBzZXRDb21wbGV0aW5nKGZhbHNlKVxuICAgICAgICAgICAgICBzZXRGaWxlc0Rpc21pc3NlZCh0cnVlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25TdWJtaXQ9e3NlbmR9XG4gICAgICAgICAgb25LZXlEb3duPXsoZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEgJiYgc2hvd0ZpbGVzICYmIG1hdGNoZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHBpY2tGaWxlKG1hdGNoZWRGaWxlc1tNYXRoLm1pbihmaWxlSW5kZXgoKSwgbWF0Y2hlZEZpbGVzLmxlbmd0aCAtIDEpXSlcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3RhYicgJiYgIWUuY3RybCAmJiAhZS5tZXRhICYmIHNob3dDb21tYW5kcyAmJiBtYXRjaGVkQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjb25zdCBjeWNsZSA9IGNtZEN5Y2xlKClcbiAgICAgICAgICAgICAgaWYgKCFjeWNsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4oY21kSW5kZXgoKSwgbWF0Y2hlZENvbW1hbmRzLmxlbmd0aCAtIDEpXG4gICAgICAgICAgICAgICAgc2V0Q21kQ3ljbGUoeyBtYXRjaGVzOiBtYXRjaGVkQ29tbWFuZHMgfSlcbiAgICAgICAgICAgICAgICBzZXRDbWRJbmRleChzdGFydClcbiAgICAgICAgICAgICAgICBzZXRJbnB1dCgnLycgKyBtYXRjaGVkQ29tbWFuZHNbc3RhcnRdLm5hbWUpXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IChjbWRJbmRleCgpICsgMSkgJSBjeWNsZS5tYXRjaGVzLmxlbmd0aFxuICAgICAgICAgICAgICAgIHNldENtZEluZGV4KG5leHQpXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoJy8nICsgY3ljbGUubWF0Y2hlc1tuZXh0XS5uYW1lKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdwYXN0ZScgJiYgZS50ZXh0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhdGhzID0gZXh0cmFjdEltYWdlUGF0aHMoZS50ZXh0KVxuICAgICAgICAgICAgICBpZiAocGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVycyA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSBgW0ltYWdlICMkeysrcmVmcy5pbWFnZUNvdW50fV1gXG4gICAgICAgICAgICAgICAgICByZWZzLmF0dGFjaG1lbnRzLnNldChwbGFjZWhvbGRlciwgeyBwYXRoLCBtZWRpYVR5cGU6IG1lZGlhVHlwZUZvcihwYXRoKSB9KVxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBjb25zdCBhdCA9IGUuY3Vyc29yID8/IGUudmFsdWUubGVuZ3RoXG4gICAgICAgICAgICAgICAgc2V0SW5wdXQoZS52YWx1ZS5zbGljZSgwLCBhdCkgKyBwbGFjZWhvbGRlcnMuam9pbignICcpICsgZS52YWx1ZS5zbGljZShhdCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ2JhY2tzcGFjZScgJiYgZS5jdXJzb3IgPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gZS52YWx1ZS5zbGljZSgwLCBlLmN1cnNvcikubWF0Y2goL1xcW0ltYWdlICNcXGQrXFxdJC8pXG4gICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHJlZnMuYXR0YWNobWVudHMuZGVsZXRlKG1hdGNoWzBdKVxuICAgICAgICAgICAgICAgIHNldElucHV0KGUudmFsdWUuc2xpY2UoMCwgZS5jdXJzb3IgLSBtYXRjaFswXS5sZW5ndGgpICsgZS52YWx1ZS5zbGljZShlLmN1cnNvcikpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGUua2V5ID09PSAndGFiJyAmJiAhZS5jdHJsICYmICFlLm1ldGEpIHtcbiAgICAgICAgICAgICAgY29uc3QgY3R4ID0gY29tcGxldGlvbkNvbnRleHQoeyB2YWx1ZTogZS52YWx1ZSwgcmVzb2x2ZTogY29tcGxldGlvblNvdXJjZSB9KVxuICAgICAgICAgICAgICBpZiAoIWN0eCkgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgICAgIGlmICghY29tcGxldGluZygpKSB7XG4gICAgICAgICAgICAgICAgc2V0Q29tcGxldGluZyh0cnVlKVxuICAgICAgICAgICAgICAgIHNldENvbXBJbmRleCgwKVxuICAgICAgICAgICAgICAgIGxpc3RGaWxlcyhjd2QpLnRoZW4oKGZpbGVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICBpZiAoZmlsZXMgIT09IGZpbGVMaXN0KCkpIHNldEZpbGVMaXN0KGZpbGVzKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3R4Lm1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGFjY2VwdENvbXBsZXRpb24oZS52YWx1ZSwgY3R4LCBjdHgubWF0Y2hlc1tNYXRoLm1pbihjb21wSW5kZXgoKSwgY3R4Lm1hdGNoZXMubGVuZ3RoIC0gMSldKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5jdHJsIHx8IGUubWV0YSB8fCBzaG93Q29tbWFuZHMgfHwgc2hvd0ZpbGVzKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ3VwJyAmJiBlLnZhbHVlID09PSAnJyAmJiBxdWV1ZWQoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHNldElucHV0KHF1ZXVlZCgpLmpvaW4oJ1xcbicpKVxuICAgICAgICAgICAgICBzZXRRdWV1ZWQoW10pXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBicm93c2luZyA9IGhpc3RJZHgoKSA+PSAwXG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICd1cCcgJiYgKGJyb3dzaW5nIHx8IGUudmFsdWUgPT09ICcnKSAmJiBoaXN0SWR4KCkgPCBzZW50KCkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpICsgMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KHNlbnQoKVtzZW50KCkubGVuZ3RoIC0gMSAtIG5dLnRleHQpXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdkb3duJyAmJiBicm93c2luZykge1xuICAgICAgICAgICAgICBjb25zdCBuID0gaGlzdElkeCgpIC0gMVxuICAgICAgICAgICAgICBzZXRIaXN0SWR4KG4pXG4gICAgICAgICAgICAgIHNldElucHV0KG4gPCAwID8gJycgOiBzZW50KClbc2VudCgpLmxlbmd0aCAtIDEgLSBuXS50ZXh0KVxuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgICAgfX1cbiAgICAgICAgICBzdWJtaXRPbkVudGVyXG4gICAgICAgICAgY2xlYXJPblN1Ym1pdFxuICAgICAgICAgIGZvY3VzZWQ9e2ZtLmlzKCdpbnB1dCcpICYmICFhbnlQYW5lbCgpfVxuICAgICAgICAgIG1heEhlaWdodD17OH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkFzayBhbnl0aGluZ1wiXG4gICAgICAgICAgY3Vyc29yPXt7IGJsaW5rOiB0cnVlLCBiZzogYWNjZW50KCksIGNvbG9yOiAnYmxhY2snIH19XG4gICAgICAgIC8+XG4gICAgICA8L2JveD5cblxuICAgICAge3Nob3dDb21tYW5kcyAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAge21hdGNoZWRDb21tYW5kcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgY29tbWFuZHM8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgICAgaXRlbXM9e21hdGNoZWRDb21tYW5kc31cbiAgICAgICAgICAgICAgc2VsZWN0ZWQ9e2NtZEluZGV4KCl9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDbWRJbmRleH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyhjKSA9PiBydW5Db21tYW5kKGMpfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtzaG93Q29tbWFuZHN9XG4gICAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KGMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IE1VVEVEIH19PntgLyR7Yy5uYW1lfWAucGFkRW5kKG1hdGNoZWRDb21tYW5kcy5yZWR1Y2UoKG0sIHgpID0+IE1hdGgubWF4KG0sIHgubmFtZS5sZW5ndGggKyAzKSwgMTIpKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gJyNjYmQ1ZTEnIDogRkFJTlQgfX0+e2MuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dGaWxlcyAmJiBtYXRjaGVkRmlsZXMubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXttYXRjaGVkRmlsZXN9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZmlsZUluZGV4KCl9XG4gICAgICAgICAgICBvblNlbGVjdD17c2V0RmlsZUluZGV4fVxuICAgICAgICAgICAgb25TdWJtaXQ9e3BpY2tGaWxlfVxuICAgICAgICAgICAgb25DYW5jZWw9eygpID0+IHNldEZpbGVzRGlzbWlzc2VkKHRydWUpfVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0ZpbGVzfVxuICAgICAgICAgICAgbWF4VmlzaWJsZT17NX1cbiAgICAgICAgICAgIHNjcm9sbG9mZj17Mn1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhmLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGR19TT0ZUIH19PntmfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dDb21wbGV0aW9uICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2NvbXBDdHgubWF0Y2hlc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtjb21wSW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRDb21wSW5kZXh9XG4gICAgICAgICAgICBvblN1Ym1pdD17KGNhbmRpZGF0ZSkgPT4gYWNjZXB0Q29tcGxldGlvbihpbnB1dCgpLCBjb21wQ3R4LCBjYW5kaWRhdGUpfVxuICAgICAgICAgICAgb25DYW5jZWw9e2Rpc21pc3NDb21wbGV0aW9ufVxuICAgICAgICAgICAgZm9jdXNlZD17c2hvd0NvbXBsZXRpb259XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgICAgc2Nyb2xsb2ZmPXsyfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KGNhbmRpZGF0ZSwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57YWN0aXZlID8gJ1x1MjAzQSAnIDogJyAgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkdfU09GVCB9fT57Y2FuZGlkYXRlfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAge3Nob3dNb2RlbFBhbmVsKCkgJiYgKFxuICAgICAgICA8TW9kZWxQYW5lbFxuICAgICAgICAgIG1vZGVscz17bW9kZWxzfVxuICAgICAgICAgIGN1cnJlbnQ9e21vZGVsKCkubmFtZX1cbiAgICAgICAgICBkZWZhdWx0TmFtZT17ZGVmYXVsdE1vZGVsKCkubmFtZX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TW9kZWxQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KG0pID0+IHtcbiAgICAgICAgICAgIGlmIChtLmF2YWlsYWJsZSA9PT0gZmFsc2UpIHJldHVybiBmbGFzaChgc2V0ICR7bS5rZXlIaW50fSBpbiB5b3VyIGVudmlyb25tZW50IHRvIHVzZSAke20ubmFtZX1gKVxuICAgICAgICAgICAgcGVyc2lzdChtYWtlRXZlbnQoJ21vZGVsX3N3aXRjaCcsIHsgZnJvbTogbW9kZWwoKS5uYW1lLCB0bzogbS5uYW1lIH0pKVxuICAgICAgICAgICAgc2V0TW9kZWwobSlcbiAgICAgICAgICAgIHNldERlZmF1bHRNb2RlbChtKVxuICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkZWZhdWx0TW9kZWw6IG0ubmFtZSB9KS5jYXRjaCgoKSA9PiB7fSlcbiAgICAgICAgICAgIHNldFNob3dNb2RlbFBhbmVsKGZhbHNlKVxuICAgICAgICAgICAgZmxhc2goYG1vZGVsIHNldCB0byAke20ubmFtZX0gXHUwMEI3IHNhdmVkIGFzIGRlZmF1bHRgKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01vZGVsUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dFZmZvcnRQYW5lbCgpICYmIChcbiAgICAgICAgPEVmZm9ydFBhbmVsXG4gICAgICAgICAgbGV2ZWxzPXtFRkZPUlRfTEVWRUxTfVxuICAgICAgICAgIGN1cnJlbnQ9e2VmZm9ydCgpID8/IG51bGx9XG4gICAgICAgICAgZGVmYXVsdExldmVsPXtkZWZhdWx0RWZmb3J0KCkgPz8gbnVsbH1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93RWZmb3J0UGFuZWwoKX1cbiAgICAgICAgICBvblBpY2s9eyhsKSA9PiB7XG4gICAgICAgICAgICBzZXRTZXNzaW9uRWZmb3J0KGwua2V5KVxuICAgICAgICAgICAgc2V0U2hvd0VmZm9ydFBhbmVsKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25QaWNrRGVmYXVsdD17KGwpID0+IHtcbiAgICAgICAgICAgIHNldFNlc3Npb25FZmZvcnQobC5rZXksIHsgYXNEZWZhdWx0OiB0cnVlIH0pXG4gICAgICAgICAgICBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RWZmb3J0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dUaGVtZVBhbmVsKCkgJiYgKFxuICAgICAgICA8VGhlbWVQYW5lbFxuICAgICAgICAgIHRoZW1lcz17dGhlbWVJdGVtcygpfVxuICAgICAgICAgIHByZWY9e3RoZW1lUHJlZigpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dUaGVtZVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodCkgPT4ge1xuICAgICAgICAgICAgc2V0U2hvd1RoZW1lUGFuZWwoZmFsc2UpXG4gICAgICAgICAgICBhcHBseVRoZW1lUHJlZih0LmtleSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uUHJldmlldz17KHQpID0+IHByZXZpZXdQYWxldHRlKHQua2V5KX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRTaG93VGhlbWVQYW5lbChmYWxzZSlcbiAgICAgICAgICAgIHByZXZpZXdQYWxldHRlKHRoZW1lUHJlZigpKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0NvbmZpZ1BhbmVsKCkgJiYgKFxuICAgICAgICA8Q29uZmlnUGFuZWxcbiAgICAgICAgICB2YWx1ZXM9e3sgY2xvdWRzOiBjbG91ZHMoKSwgY29tcGFjdFRvb2xzOiBjb21wYWN0VG9vbEhpc3RvcnkoKSwgZ2l0U3RhdHVzOiBnaXRGb290ZXIoKSB9fVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dDb25maWdQYW5lbCgpfVxuICAgICAgICAgIG9uQ2hhbmdlPXsobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSAnY2xvdWRzJykge1xuICAgICAgICAgICAgICBzZXRDbG91ZHModmFsdWUpXG4gICAgICAgICAgICAgIHdyaXRlQ29uZmlnKHsgYW5pbWF0aW9uOiB7IGNsb3VkczogdmFsdWUgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIGlmIChuYW1lID09PSAnZ2l0U3RhdHVzJykge1xuICAgICAgICAgICAgICBzZXRHaXRGb290ZXIodmFsdWUpXG4gICAgICAgICAgICAgIGJvb3QuZ2l0Rm9vdGVyID0gdmFsdWVcbiAgICAgICAgICAgICAgYm9vdC5naXQuc2V0RW5hYmxlZCh2YWx1ZSlcbiAgICAgICAgICAgICAgd3JpdGVDb25maWcoeyBkaXNwbGF5OiB7IGdpdFN0YXR1czogdmFsdWUgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0Q29tcGFjdFRvb2xIaXN0b3J5KHZhbHVlKVxuICAgICAgICAgICAgICB3cml0ZUNvbmZpZyh7IGRpc3BsYXk6IHsgY29tcGFjdFRvb2xIaXN0b3J5OiB2YWx1ZSB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93Q29uZmlnUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dEZWxldGVDb25maXJtKCkgJiYgKFxuICAgICAgICA8Q29uZmlybVBhbmVsXG4gICAgICAgICAgdGl0bGU9XCJEZWxldGUgY3VycmVudCBzZXNzaW9uP1wiXG4gICAgICAgICAgbWVzc2FnZT1cIlRoZSBjdXJyZW50IGNvbnZlcnNhdGlvbiBhbmQgaXRzIHBlcnNpc3RlZCBoaXN0b3J5IHdpbGwgYmUgcGVybWFuZW50bHkgZGVsZXRlZC5cIlxuICAgICAgICAgIGNvbmZpcm1MYWJlbD1cIkRlbGV0ZVwiXG4gICAgICAgICAgZm9jdXNlZD17c2hvd0RlbGV0ZUNvbmZpcm0oKX1cbiAgICAgICAgICBvbkNvbmZpcm09e2NvbmZpcm1EZWxldGVDdXJyZW50U2Vzc2lvbn1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RGVsZXRlQ29uZmlybShmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7c2hvd0hpc3RvcnlQYW5lbCgpICYmIChcbiAgICAgICAgPEhpc3RvcnlQYW5lbFxuICAgICAgICAgIHByb21wdHM9e2hpc3RQcm9tcHRzKCl9XG4gICAgICAgICAgc2NvcGVzPXtISVNUT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtoaXN0U2NvcGUoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93SGlzdG9yeVBhbmVsKCl9XG4gICAgICAgICAgb25QaWNrPXsodGV4dCkgPT4geyBzZXRJbnB1dCh0ZXh0KTsgc2V0U2hvd0hpc3RvcnlQYW5lbChmYWxzZSkgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93SGlzdG9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UmVzdW1lUGFuZWwoKSAmJiAoXG4gICAgICAgIDxSZXN1bWVQYW5lbFxuICAgICAgICAgIHNlc3Npb25zPXtyZXN1bWVTZXNzaW9ucygpfVxuICAgICAgICAgIHNjb3Blcz17UkVTVU1FX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXtyZXN1bWVTY29wZSgpfVxuICAgICAgICAgIGxvYWRpbmc9e3Jlc3VtZUxvYWRpbmcoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93UmVzdW1lUGFuZWwoKX1cbiAgICAgICAgICBjdXJyZW50SWQ9e3JlZnMuc2Vzc2lvbj8uaWR9XG4gICAgICAgICAgb25QaWNrPXsobWV0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGEuaGVhZGVyLmlkID09PSByZWZzLnNlc3Npb24/LmlkKSByZXR1cm4gZmxhc2goJ2FscmVhZHkgaW4gdGhpcyBzZXNzaW9uJylcbiAgICAgICAgICAgIHJlc3VtZVNlc3Npb24obWV0YSlcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVTZXNzaW9uTWV0YX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UmVzdW1lUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dNZW1vcnlQYW5lbCgpICYmIChcbiAgICAgICAgPE1lbW9yeVBhbmVsXG4gICAgICAgICAgbWVtb3JpZXM9e21lbW9yeUxpc3QoKS5maWx0ZXIoKG0pID0+IE1FTU9SWV9TQ09QRVNbbWVtU2NvcGUoKV0gPT09ICdhbGwnIHx8IG0uc2NvcGUgPT09IE1FTU9SWV9TQ09QRVNbbWVtU2NvcGUoKV0pfVxuICAgICAgICAgIHNjb3Blcz17TUVNT1JZX1NDT1BFU31cbiAgICAgICAgICBzY29wZUluZGV4PXttZW1TY29wZSgpfVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dNZW1vcnlQYW5lbCgpfVxuICAgICAgICAgIG9uRm9yZ2V0PXtmb3JnZXRNZW1vcnl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd01lbW9yeVBhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtpbmZvUGFuZWwoKSAmJiAoXG4gICAgICAgIDxJbmZvTGlzdFBhbmVsXG4gICAgICAgICAgdGl0bGU9e2luZm9QYW5lbCgpLnRpdGxlfVxuICAgICAgICAgIHJvd3M9e2luZm9QYW5lbCgpLnJvd3N9XG4gICAgICAgICAgb3ZlcnZpZXc9e2luZm9QYW5lbCgpLm92ZXJ2aWV3fVxuICAgICAgICAgIGZvY3VzZWQ9e2luZm9QYW5lbCgpICE9PSBudWxsfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEluZm9QYW5lbChudWxsKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93UHJvamVjdFBhbmVsKCkgJiYgKFxuICAgICAgICA8UHJvamVjdFBhbmVsXG4gICAgICAgICAgcHJvamVjdHM9e3Byb2plY3RzKCl9XG4gICAgICAgICAgbG9hZGluZz17cHJvamVjdHNMb2FkaW5nKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd1Byb2plY3RQYW5lbCgpfVxuICAgICAgICAgIG9uUGljaz17KHApID0+IHJlc3VtZVNlc3Npb24ocC5sYXRlc3QpfVxuICAgICAgICAgIG9uRGVsZXRlPXtkZWxldGVQcm9qZWN0fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQcm9qZWN0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dTaGVsbHNQYW5lbCgpICYmIChcbiAgICAgICAgPFNoZWxsc1BhbmVsXG4gICAgICAgICAgdmVyc2lvbj17c2hlbGxzVmVyc2lvbigpfVxuICAgICAgICAgIHNoZWxscz17Ym9vdC5zaGVsbHMubGlzdCgpfVxuICAgICAgICAgIHJlYWRPdXRwdXQ9eyhpZCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGJvb3Quc2hlbGxzLm91dHB1dChpZCwgeyB0YWlsOiAyMDAwIH0pXG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGZvY3VzZWQ9e3Nob3dTaGVsbHNQYW5lbCgpfVxuICAgICAgICAgIG9uS2lsbD17a2lsbFNoZWxsfVxuICAgICAgICAgIG9uRGlzbWlzcz17KHMpID0+IGJvb3Quc2hlbGxzLmRpc21pc3Mocy5pZCl9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1NoZWxsc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93Q29ubmVjdFBhbmVsKCkgJiYgKFxuICAgICAgICA8Q29ubmVjdFBhbmVsXG4gICAgICAgICAgcHJvdmlkZXJzPXthdXRoUHJvdmlkZXJzKCl9XG4gICAgICAgICAgZm9jdXNlZD17c2hvd0Nvbm5lY3RQYW5lbCgpfVxuICAgICAgICAgIG9uQ29ubmVjdD17Y29ubmVjdFByb3ZpZGVyfVxuICAgICAgICAgIG9uRGlzY29ubmVjdD17ZGlzY29ubmVjdFByb3ZpZGVyfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dDb25uZWN0UGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Nob3dXYWtldXBzUGFuZWwoKSAmJiAoXG4gICAgICAgIDxXYWtldXBzUGFuZWxcbiAgICAgICAgICB3YWtldXBzPXsoc2hlbGxzVmVyc2lvbigpLCBib290Lndha2V1cHMubGlzdCgpKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93V2FrZXVwc1BhbmVsKCl9XG4gICAgICAgICAgb25DYW5jZWw9eyh3KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhcm1lZCA9IHJlZnMud2FrZXVwQ2FuY2VsQXJtXG4gICAgICAgICAgICBpZiAoIWFybWVkIHx8IGFybWVkLmlkICE9PSB3LmlkIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgICAgICAgICAgcmVmcy53YWtldXBDYW5jZWxBcm0gPSB7IGlkOiB3LmlkLCBhdDogRGF0ZS5ub3coKSB9XG4gICAgICAgICAgICAgIHJldHVybiBmbGFzaChgYWdhaW4gdG8gY2FuY2VsIHdha2UtdXAgJHt3LmlkfSAoJHt3Lm5vdGUuc3BsaXQoJ1xcbicpWzBdLnNsaWNlKDAsIDQwKX0pYClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZnMud2FrZXVwQ2FuY2VsQXJtID0gbnVsbFxuICAgICAgICAgICAgYm9vdC53YWtldXBzLmNhbmNlbCh3LmlkKVxuICAgICAgICAgICAgZmxhc2goYGNhbmNlbGxlZCB3YWtlLXVwICR7dy5pZH1gKVxuICAgICAgICAgICAgbm90ZVN5c3RlbShcbiAgICAgICAgICAgICAgYFtzeXN0ZW0gbm90aWZpY2F0aW9uXSB0aGUgdXNlciBjYW5jZWxsZWQgc2NoZWR1bGVkIHdha2UtdXAgJHt3LmlkfSAobm90ZSB3YXM6ICR7dy5ub3RlLnJlcGxhY2UoL1xcbi9nLCAnICcpfSkuIFRoaXMgd2FzIGRlbGliZXJhdGU7IGRvIG5vdCByZXNjaGVkdWxlIGl0IHVubGVzcyBhc2tlZC5gLFxuICAgICAgICAgICAgICB7IHdha2U6IGZhbHNlIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93V2FrZXVwc1BhbmVsKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG5cbiAgICAgIHtzaG93TWNwUGFuZWwoKSAmJiAoXG4gICAgICAgIDxNY3BQYW5lbFxuICAgICAgICAgIHNlcnZlcnM9e21jcFNlcnZlcnMoKX1cbiAgICAgICAgICBmb2N1c2VkPXtzaG93TWNwUGFuZWwoKX1cbiAgICAgICAgICBvblRvZ2dsZT17KG5hbWUpID0+IG1jcC50b2dnbGUobmFtZSl9XG4gICAgICAgICAgb25SZWNvbm5lY3Q9eyhuYW1lKSA9PiBtY3AucmVjb25uZWN0KG5hbWUpfVxuICAgICAgICAgIG9uUmVtb3ZlPXsobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXJtZWQgPSByZWZzLm1jcFJlbW92ZUFybVxuICAgICAgICAgICAgaWYgKCFhcm1lZCB8fCBhcm1lZC5uYW1lICE9PSBuYW1lIHx8IERhdGUubm93KCkgLSBhcm1lZC5hdCA+IDMwMDApIHtcbiAgICAgICAgICAgICAgcmVmcy5tY3BSZW1vdmVBcm0gPSB7IG5hbWUsIGF0OiBEYXRlLm5vdygpIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZsYXNoKGBjdHJsK3ggYWdhaW4gdG8gcmVtb3ZlIFwiJHtuYW1lfVwiIGFuZCBpdHMgY29uZmlnYClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlZnMubWNwUmVtb3ZlQXJtID0gbnVsbFxuICAgICAgICAgICAgbWNwLnJlbW92ZShuYW1lKVxuICAgICAgICAgICAgZmxhc2goYHJlbW92ZWQgbWNwIHNlcnZlciAke25hbWV9YClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQWRkPXsobmFtZSwgY29tbWFuZCwgc2NvcGUpID0+IHtcbiAgICAgICAgICAgIG1jcC5hZGQobmFtZSwgY29tbWFuZCwgc2NvcGUpXG4gICAgICAgICAgICBmbGFzaChgYWRkZWQgJHtuYW1lfSAoJHtzY29wZX0pYClcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uRWRpdD17KG5hbWUsIGNvbW1hbmQpID0+IHtcbiAgICAgICAgICAgIG1jcC51cGRhdGUobmFtZSwgY29tbWFuZClcbiAgICAgICAgICAgIGZsYXNoKGB1cGRhdGVkICR7bmFtZX1gKVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25JbnZhbGlkPXtmbGFzaH1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93TWNwUGFuZWwoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge3Jld2luZFN0ZXAoKSA9PT0gJ3BpY2snICYmIChcbiAgICAgICAgPFJld2luZFBpY2tQYW5lbFxuICAgICAgICAgIGVudHJpZXM9e1suLi5yZXdpbmRFbnRyaWVzKCldLnJldmVyc2UoKX1cbiAgICAgICAgICBzdGF0cz17KGluZGV4KSA9PiByZXdpbmRTdGF0cyhkZXJpdmVkKCksIGluZGV4KX1cbiAgICAgICAgICBmb2N1c2VkPXtyZXdpbmRTdGVwKCkgPT09ICdwaWNrJ31cbiAgICAgICAgICBvblBpY2s9eyhlbnRyeSkgPT4geyBzZXRSZXdpbmRUYXJnZXQoZW50cnkpOyBzZXRSZXdpbmRTdGVwKCdhY3Rpb24nKSB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFJld2luZFN0ZXAobnVsbCl9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7cmV3aW5kU3RlcCgpID09PSAnYWN0aW9uJyAmJiByZXdpbmRUYXJnZXQoKSAmJiAoXG4gICAgICAgIDxSZXdpbmRBY3Rpb25QYW5lbFxuICAgICAgICAgIHRhcmdldD17cmV3aW5kVGFyZ2V0KCl9XG4gICAgICAgICAgb3B0aW9ucz17cmV3aW5kT3B0aW9uc31cbiAgICAgICAgICBmb2N1c2VkPXtyZXdpbmRTdGVwKCkgPT09ICdhY3Rpb24nfVxuICAgICAgICAgIG9uU3VibWl0PXtwZXJmb3JtUmV3aW5kfVxuICAgICAgICAgIG9uQmFjaz17KCkgPT4gc2V0UmV3aW5kU3RlcCgncGljaycpfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAge2xpdmVTaGVsbHMubGVuZ3RoID4gMCAmJiAhc2hvd1NoZWxsc1BhbmVsKCkgJiYgKFxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtsaXZlU2hlbGxzLnNsaWNlKDAsIFNIRUxMX1NUUklQX01BWCkubWFwKChzKSA9PiAoXG4gICAgICAgICAgICA8Ym94IGtleT17cy5pZH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57J1x1MjY5OSAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgJHtzLmlkfSBcdTAwQjcgYH08L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IEZHX1NPRlQgfX0+e3MuZGVzY3JpcHRpb24gfHwgcy5jb21tYW5kLnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCAgJHtEYXRlLm5vdygpIC0gcy5zdGFydGVkQXQgPCA2MDAwMCA/ICc8MW0nIDogdGltZUFnbyhzLnN0YXJ0ZWRBdCkucmVwbGFjZSgnIGFnbycsICcnKX1gfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkpfVxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XG4gICAgICAgICAgICAgIHtgICAke2xpdmVTaGVsbHMubGVuZ3RoID4gU0hFTExfU1RSSVBfTUFYID8gYCske2xpdmVTaGVsbHMubGVuZ3RoIC0gU0hFTExfU1RSSVBfTUFYfSBtb3JlIFx1MDBCNyBgIDogJyd9L3NoZWxsc2B9XG4gICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cblxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgcGFkZGluZ1g6IDIsIGdhcDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICB7YnVzeSgpXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8U2hpbW1lciBjb2xvcj17YWNjZW50KCl9IGhpZ2hsaWdodD17SElHSExJR0hUfSBkdXJhdGlvbj17MTUwMH0gcmV2ZXJzZT5cbiAgICAgICAgICAgICAgICB7Y29tcGFjdGluZygpXG4gICAgICAgICAgICAgICAgICA/IGNvbXBhY3RTdGF0dXMoKT8ucGhhc2UgPT09ICd3cml0aW5nJyA/IGBDb21wYWN0aW5nIFx1MDBCNyB3cml0aW5nICR7Y29tcGFjdFN0YXR1cygpLnNlY3Rpb259LzhgIDogJ0NvbXBhY3RpbmcgXHUwMEI3IGFuYWx5emluZydcbiAgICAgICAgICAgICAgICAgIDogdHVyblBoYXNlKCkgPT09ICd0aGlua2luZycgPyAnVGhpbmtpbmcnIDogdHVyblBoYXNlKCkgPT09ICd0b29scycgPyAnV29ya2luZycgOiAnUmVzcG9uZGluZyd9XG4gICAgICAgICAgICAgIDwvU2hpbW1lcj5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICgke2VsYXBzZWR9JHtjb21wYWN0U3RhdHVzKCkgPyBgIFx1MDBCNyBcdTIxOTMgJHtmbXRUb2tlbnMoTWF0aC5yb3VuZChjb21wYWN0U3RhdHVzKCkuY2hhcnMgLyA0KSl9IHRva2Vuc2AgOiAnJ30pIFx1MDBCNyBlc2MgdG8gaW50ZXJydXB0YH08L3RleHQ+XG4gICAgICAgICAgICAgIHtjb21wYWN0U3RhdHVzKCk/LnBoYXNlID09PSAnd3JpdGluZycgJiYgKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIG1hcmdpbkxlZnQ6IDEsIHdpZHRoOiAxNiB9fT5cbiAgICAgICAgICAgICAgICAgIDxQcm9ncmVzc0JhciB2YXJpYW50PVwidGhpblwiIHZhbHVlPXtjb21wYWN0U3RhdHVzKCkuc2VjdGlvbiAvIDh9IHdpZHRoPXsxNn0gcGVyY2VudGFnZT17ZmFsc2V9IGNvbG9yPXthY2NlbnQoKX0gLz5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgIClcbiAgICAgICAgICA6IDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2Jvb3QuZGlzcGxheUN3ZH08L3RleHQ+fVxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIHtwcm9jZXNzLmVudi5QSUNPX1BFUkYgJiYgKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGF0cyA9IHVzZUZyYW1lU3RhdHMoKVxuICAgICAgICAgIHJldHVybiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+e2BcdTIzRjEgJHsoc3RhdHMucmVuZGVyTXMgPz8gMCkudG9GaXhlZCgxKX1tcyBcdTAwQjcgJHtzdGF0cy5mcHN9ZnBzIFx1MDBCNyAke2Rlcml2ZWQoKS50cmFuc2NyaXB0Lmxlbmd0aH0gaXRlbXNgfTwvdGV4dD5cbiAgICAgICAgfSkoKX1cbiAgICAgICAge2dpdEluZm8/LmJyYW5jaCAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgZ2FwOiAxIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57Z2l0SW5mby5icmFuY2h9PC90ZXh0PlxuICAgICAgICAgICAge2dpdEluZm8uYWRkZWQgPiAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBHUkVFTiB9fT57YCske2dpdEluZm8uYWRkZWR9YH08L3RleHQ+fVxuICAgICAgICAgICAge2dpdEluZm8ucmVtb3ZlZCA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IFJFRCB9fT57YC0ke2dpdEluZm8ucmVtb3ZlZH1gfTwvdGV4dD59XG4gICAgICAgICAgPC9ib3g+XG4gICAgICAgICl9XG4gICAgICAgIHtwZW5kaW5nV2FrZXVwcyA+IDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUyM0YwICR7cGVuZGluZ1dha2V1cHN9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e21vZGVsKCkubmFtZX08L3RleHQ+XG4gICAgICAgIHtlZmZvcnRBcHBsaWVzKCkgJiYgZWZmb3J0KCkgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgXHUwMEI3ICR7ZWZmb3J0KCl9YH08L3RleHQ+fVxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyMTkxPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDxBbmltYXRlZFZhbHVlIHZhbHVlPXt1c2FnZS5wcm9tcHRUb2tlbnN9IGNvbG9yPXtNVVRFRH0gaGlnaGxpZ2h0PXthY2NlbnQoKX0gZm9ybWF0PXtjb21wYWN0TnVtYmVyfSAvPlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT4gaW48L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyMTkzPC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgIDxBbmltYXRlZFZhbHVlIHZhbHVlPXt1c2FnZS5jb21wbGV0aW9uVG9rZW5zfSBjb2xvcj17TVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17Y29tcGFjdE51bWJlcn0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+IG91dDwvdGV4dD5cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt1c2FnZS50aG91Z2h0VG9rZW5zID4gMCAmJiA8QW5pbWF0ZWRWYWx1ZSB2YWx1ZT17dXNhZ2UudGhvdWdodFRva2Vuc30gY29sb3I9e01VVEVEfSBoaWdobGlnaHQ9e2FjY2VudCgpfSBmb3JtYXQ9eyhuKSA9PiBgXHUyNzI2ICR7TWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygpfSB0aGlua2B9IC8+fVxuICAgICAgICB7Y29udGV4dFBlcmNlbnQgPiAwICYmIDxBbmltYXRlZFZhbHVlIHZhbHVlPXtjb250ZXh0UGVyY2VudH0gY29sb3I9e2NvbnRleHRQZXJjZW50ID49IDgwID8gUkVEIDogTVVURUR9IGhpZ2hsaWdodD17YWNjZW50KCl9IGZvcm1hdD17KG4pID0+IGBjdHggJHtNYXRoLnJvdW5kKG4pfSVgfSAvPn1cbiAgICAgIDwvYm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgYXBwZW5kRmlsZSwgcmVhZEZpbGUsIHJlYWRkaXIgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCdcbmltcG9ydCB7IHBpY29Ib21lLCBwcm9qZWN0RGlyLCBwcm9qZWN0SGlzdG9yeUZpbGUsIGVuc3VyZURpciB9IGZyb20gJy4vcGF0aHMuanMnXG5cbmNvbnN0IE1BWF9QUk9NUFRTX1BFUl9TQ09QRSA9IDEwMDBcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGVuZFByb21wdChyb290LCB0ZXh0KSB7XG4gIGVuc3VyZURpcihwcm9qZWN0RGlyKHJvb3QpKVxuICBhd2FpdCBhcHBlbmRGaWxlKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgSlNPTi5zdHJpbmdpZnkoeyB0ZXh0LCBhdDogRGF0ZS5ub3coKSB9KSArICdcXG4nKVxufVxuXG5mdW5jdGlvbiBwYXJzZVByb21wdExpbmVzKHRleHQpIHtcbiAgcmV0dXJuIHRleHRcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGxpbmUudHJpbSgpID8gSlNPTi5wYXJzZShsaW5lKSA6IG51bGxcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgIH0pXG4gICAgLmZpbHRlcihCb29sZWFuKVxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkUHJvbXB0cyhmaWxlLCBzY29wZSkge1xuICB0cnkge1xuICAgIGNvbnN0IGVudHJpZXMgPSBwYXJzZVByb21wdExpbmVzKGF3YWl0IHJlYWRGaWxlKGZpbGUsICd1dGYtOCcpKVxuICAgIHJldHVybiBlbnRyaWVzXG4gICAgICAuZmlsdGVyKChlKSA9PiB0eXBlb2YgZS50ZXh0ID09PSAnc3RyaW5nJyAmJiBlLnRleHQudHJpbSgpKVxuICAgICAgLnNsaWNlKC1NQVhfUFJPTVBUU19QRVJfU0NPUEUpXG4gICAgICAubWFwKChlKSA9PiAoeyB0ZXh0OiBlLnRleHQsIGF0OiBlLmF0IHx8IDAsIHNjb3BlIH0pKVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW11cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3RQcm9tcHRzKHJvb3QpIHtcbiAgcmV0dXJuIHJlYWRQcm9tcHRzKHByb2plY3RIaXN0b3J5RmlsZShyb290KSwgJ3Byb2plY3QnKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEdsb2JhbFByb21wdHMoKSB7XG4gIGNvbnN0IHByb2plY3RzRGlyID0gam9pbihwaWNvSG9tZSgpLCAncHJvamVjdHMnKVxuICBsZXQgcHJvamVjdHMgPSBbXVxuICB0cnkge1xuICAgIHByb2plY3RzID0gYXdhaXQgcmVhZGRpcihwcm9qZWN0c0RpcilcbiAgfSBjYXRjaCB7fVxuICBjb25zdCBuZXN0ZWQgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcm9qZWN0cy5tYXAoKHApID0+IHJlYWRQcm9tcHRzKGpvaW4ocHJvamVjdHNEaXIsIHAsICdoaXN0b3J5Lmpzb25sJyksICdldmVyeXdoZXJlJykpLFxuICApXG4gIHJldHVybiBuZXN0ZWQuZmxhdCgpLnNvcnQoKGEsIGIpID0+IGIuYXQgLSBhLmF0KS5zbGljZSgwLCBNQVhfUFJPTVBUU19QRVJfU0NPUEUpXG59XG4iLCAiaW1wb3J0IHsgcmVhZGRpciwgc3RhdCB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnXG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IHsgcGljb0hvbWUgfSBmcm9tICcuL3BhdGhzLmpzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2xvYmFsVG9vbHNEaXIoKSB7XG4gIHJldHVybiBqb2luKHBpY29Ib21lKCksICd0b29scycpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0VG9vbHNEaXIocm9vdCkge1xuICByZXR1cm4gam9pbihyb290LCAnLnBpY28nLCAndG9vbHMnKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZSh0b29sLCBmaWxlKSB7XG4gIGlmICghdG9vbCB8fCB0eXBlb2YgdG9vbCAhPT0gJ29iamVjdCcpIHRocm93IG5ldyBFcnJvcignZGVmYXVsdCBleHBvcnQgaXMgbm90IGEgdG9vbCBvYmplY3QnKVxuICBpZiAodHlwZW9mIHRvb2wubmFtZSAhPT0gJ3N0cmluZycgfHwgIXRvb2wubmFtZSkgdGhyb3cgbmV3IEVycm9yKCd0b29sLm5hbWUgbXVzdCBiZSBhIHN0cmluZycpXG4gIGlmICh0eXBlb2YgdG9vbC5kZXNjcmlwdGlvbiAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcigndG9vbC5kZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nJylcbiAgaWYgKHR5cGVvZiB0b29sLmV4ZWN1dGUgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcigndG9vbC5leGVjdXRlIG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIGlmICghdG9vbC5zY2hlbWEgfHwgdHlwZW9mIHRvb2wuc2NoZW1hICE9PSAnb2JqZWN0JykgdGhyb3cgbmV3IEVycm9yKCd0b29sLnNjaGVtYSBtdXN0IGJlIGFuIG9iamVjdCcpXG4gIHJldHVybiB7IC4uLnRvb2wsIF9maWxlOiBmaWxlIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbG9hZFRvb2woZmlsZSwgY29udGV4dCkge1xuICBjb25zdCB7IG10aW1lTXMgfSA9IGF3YWl0IHN0YXQoZmlsZSlcbiAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KGAke3BhdGhUb0ZpbGVVUkwoZmlsZSkuaHJlZn0/dj0ke210aW1lTXN9YClcbiAgY29uc3QgZXhwb3J0ZWQgPSBtb2R1bGUuZGVmYXVsdFxuICBjb25zdCB0b29sID0gdHlwZW9mIGV4cG9ydGVkID09PSAnZnVuY3Rpb24nID8gYXdhaXQgZXhwb3J0ZWQoY29udGV4dCkgOiBleHBvcnRlZFxuICByZXR1cm4gdmFsaWRhdGUodG9vbCwgZmlsZSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhbkRpcihkaXIsIGNvbnRleHQsIHNvdXJjZSkge1xuICBsZXQgbmFtZXMgPSBbXVxuICB0cnkge1xuICAgIG5hbWVzID0gYXdhaXQgcmVhZGRpcihkaXIpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB7IHRvb2xzOiBbXSwgZXJyb3JzOiBbXSB9XG4gIH1cbiAgY29uc3QgdG9vbHMgPSBbXVxuICBjb25zdCBlcnJvcnMgPSBbXVxuICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICBpZiAoIW5hbWUuZW5kc1dpdGgoJy5qcycpICYmICFuYW1lLmVuZHNXaXRoKCcubWpzJykpIGNvbnRpbnVlXG4gICAgY29uc3QgZmlsZSA9IGpvaW4oZGlyLCBuYW1lKVxuICAgIHRyeSB7XG4gICAgICB0b29scy5wdXNoKHsgLi4uKGF3YWl0IGxvYWRUb29sKGZpbGUsIGNvbnRleHQpKSwgc291cmNlIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnJvcnMucHVzaCh7IGZpbGUsIGVycm9yOiBTdHJpbmcoZXJyLm1lc3NhZ2UgfHwgZXJyKS5zbGljZSgwLCAyMDApIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHRvb2xzLCBlcnJvcnMgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2NhblVzZXJUb29scyh7IGN3ZCwgcm9vdCB9KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB7IGN3ZCwgcm9vdCB9XG4gIGNvbnN0IGdsb2JhbCA9IGF3YWl0IHNjYW5EaXIoZ2xvYmFsVG9vbHNEaXIoKSwgY29udGV4dCwgJ2dsb2JhbCcpXG4gIGNvbnN0IHByb2plY3QgPSBhd2FpdCBzY2FuRGlyKHByb2plY3RUb29sc0Rpcihyb290KSwgY29udGV4dCwgJ3Byb2plY3QnKVxuICBjb25zdCBieU5hbWUgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIFsuLi5nbG9iYWwudG9vbHMsIC4uLnByb2plY3QudG9vbHNdKSBieU5hbWUuc2V0KHRvb2wubmFtZSwgdG9vbClcbiAgcmV0dXJuIHsgdG9vbHM6IFsuLi5ieU5hbWUudmFsdWVzKCldLCBlcnJvcnM6IFsuLi5nbG9iYWwuZXJyb3JzLCAuLi5wcm9qZWN0LmVycm9yc10gfVxufVxuIiwgImltcG9ydCB7IHJlYWRGaWxlLCB3cml0ZUZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJ1xuXG5hc3luYyBmdW5jdGlvbiByZWFkQ3VycmVudChwYXRoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHJlYWRGaWxlKHBhdGgsICd1dGYtOCcpXG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldmVydEVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJldmVydGVkID0gW11cbiAgY29uc3Qgc2tpcHBlZCA9IFtdXG4gIGZvciAoY29uc3QgZWRpdCBvZiBbLi4uZWRpdHNdLnJldmVyc2UoKSkge1xuICAgIGNvbnN0IHsgcGF0aCwgYmVmb3JlLCBhZnRlciB9ID0gZWRpdC5yZXZlcnRcbiAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgcmVhZEN1cnJlbnQocGF0aClcbiAgICBpZiAoY3VycmVudCA9PT0gYWZ0ZXIpIHtcbiAgICAgIGF3YWl0IHdyaXRlRmlsZShwYXRoLCBiZWZvcmUsICd1dGYtOCcpXG4gICAgICByZXZlcnRlZC5wdXNoKGVkaXQuY2FsbElkKVxuICAgIH0gZWxzZSB7XG4gICAgICBza2lwcGVkLnB1c2goeyBwYXRoLCBjYWxsSWQ6IGVkaXQuY2FsbElkLCByZWFzb246ICdmaWxlIGNoYW5nZWQgc2luY2UgZWRpdCcgfSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmV2ZXJ0ZWQsIHNraXBwZWQgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhcHBseUVkaXRzKGVkaXRzKSB7XG4gIGNvbnN0IHJlYXBwbGllZCA9IFtdXG4gIGNvbnN0IHNraXBwZWQgPSBbXVxuICBmb3IgKGNvbnN0IGVkaXQgb2YgZWRpdHMpIHtcbiAgICBjb25zdCB7IHBhdGgsIGJlZm9yZSwgYWZ0ZXIgfSA9IGVkaXQucmV2ZXJ0XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IHJlYWRDdXJyZW50KHBhdGgpXG4gICAgaWYgKGN1cnJlbnQgPT09IGJlZm9yZSkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKHBhdGgsIGFmdGVyLCAndXRmLTgnKVxuICAgICAgcmVhcHBsaWVkLnB1c2goZWRpdC5jYWxsSWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNraXBwZWQucHVzaCh7IHBhdGgsIGNhbGxJZDogZWRpdC5jYWxsSWQsIHJlYXNvbjogJ2ZpbGUgY2hhbmdlZCBzaW5jZSByZXZlcnQnIH0pXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlYXBwbGllZCwgc2tpcHBlZCB9XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIHRyYW5zY3JpcHRUb01hcmtkb3duKHRyYW5zY3JpcHQsIHsgdGl0bGUgPSAncGljbyBzZXNzaW9uJyB9ID0ge30pIHtcbiAgY29uc3QgcGFydHMgPSBbYCMgJHt0aXRsZX1gLCAnJ11cbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyYW5zY3JpcHQpIHtcbiAgICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICAgIHBhcnRzLnB1c2goJyMjIFlvdScsICcnLCBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgcGFydHMucHVzaChpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fVxcblxcbiooaW50ZXJydXB0ZWQpKmAgOiBpdGVtLnRleHQsICcnKVxuICAgIH0gZWxzZSBpZiAoaXRlbS5raW5kID09PSAndG9vbCcpIHtcbiAgICAgIGNvbnN0IGxhYmVsID0gaXRlbS5kaWZmID8gYCAoKyR7aXRlbS5kaWZmLmFkZGl0aW9uc30gLSR7aXRlbS5kaWZmLmRlbGV0aW9uc30pYCA6ICcnXG4gICAgICBwYXJ0cy5wdXNoKGA+ICR7aXRlbS5zdGF0dXMgPT09ICdyZXZlcnRlZCcgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfSBcXGAke2l0ZW0ubmFtZX1cXGAgJHtpdGVtLnRpdGxlfSR7bGFiZWx9YCwgJycpXG4gICAgfSBlbHNlIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgICAgcGFydHMucHVzaChgPiBzdW1tYXJ5OiAke2l0ZW0udGV4dH1gLCAnJylcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ1xcbicpXG59XG4iLCAiaW1wb3J0IHsgZnV6enlTY29yZSB9IGZyb20gJy4vZnV6enkuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0aW9uQ29udGV4dCh7IHZhbHVlLCByZXNvbHZlIH0pIHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKCdcXG4nKSkgcmV0dXJuIG51bGxcbiAgY29uc3QgbSA9IHZhbHVlLm1hdGNoKC9eXFwvKFxcUyspICguKikkLylcbiAgaWYgKCFtKSByZXR1cm4gbnVsbFxuICBjb25zdCBzb3VyY2UgPSByZXNvbHZlKG1bMV0udG9Mb3dlckNhc2UoKSlcbiAgaWYgKCFzb3VyY2UgfHwgc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGxcbiAgY29uc3QgdG9rZW5zID0gbVsyXS5zcGxpdCgnICcpXG4gIGNvbnN0IHBhcnRpYWwgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdXG4gIGNvbnN0IG1hdGNoZXMgPSBzb3VyY2VcbiAgICAubWFwKChzKSA9PiBbZnV6enlTY29yZShwYXJ0aWFsLCBzKSwgc10pXG4gICAgLmZpbHRlcigoW3Njb3JlXSkgPT4gc2NvcmUgPj0gMClcbiAgICAuc29ydCgoYSwgYikgPT4gYlswXSAtIGFbMF0pXG4gICAgLm1hcCgoWywgc10pID0+IHMpXG4gIHJldHVybiB7IHBhcnRpYWwsIG1hdGNoZXMsIHN0YXJ0OiB2YWx1ZS5sZW5ndGggLSBwYXJ0aWFsLmxlbmd0aCB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUNvbXBsZXRpb24odmFsdWUsIGN0eCwgY2FuZGlkYXRlKSB7XG4gIHJldHVybiB2YWx1ZS5zbGljZSgwLCBjdHguc3RhcnQpICsgY2FuZGlkYXRlICsgJyAnXG59XG4iLCAiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5pbXBvcnQgZmcgZnJvbSAnZmFzdC1nbG9iJ1xuXG5jb25zdCBNQVhfRklMRVMgPSA1MDAwXG5jb25zdCBUVEwgPSA1MDAwXG5cbmxldCBjYWNoZWQgPSB7IGF0OiAwLCBjd2Q6IG51bGwsIGZpbGVzOiBbXSB9XG5cbmZ1bmN0aW9uIHJpcGdyZXBGaWxlcyhjd2QpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IFsnLS1maWxlcycsICctLWhpZGRlbicsICctLWdsb2InLCAnISoqLy5naXQvKionLCAnLS1zb3J0cj1tb2RpZmllZCddXG4gICAgZXhlY0ZpbGUoJ3JnJywgYXJncywgeyBjd2QsIG1heEJ1ZmZlcjogNTAgKiAxMDI0ICogMTAyNCB9LCAoZXJyLCBzdGRvdXQpID0+IHtcbiAgICAgIHJlc29sdmUoZXJyICYmICFzdGRvdXQgPyBudWxsIDogc3Rkb3V0LnNwbGl0KCdcXG4nKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgfSlcbiAgfSlcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RGaWxlcyhjd2QpIHtcbiAgaWYgKGNhY2hlZC5jd2QgPT09IGN3ZCAmJiBEYXRlLm5vdygpIC0gY2FjaGVkLmF0IDwgVFRMKSByZXR1cm4gY2FjaGVkLmZpbGVzXG4gIGxldCBmaWxlcyA9IGF3YWl0IHJpcGdyZXBGaWxlcyhjd2QpXG4gIGlmICghZmlsZXMpIHtcbiAgICBmaWxlcyA9IGF3YWl0IGZnKCcqKi8qJywge1xuICAgICAgY3dkLFxuICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgZG90OiB0cnVlLFxuICAgICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi8uZ2l0LyoqJ10sXG4gICAgfSkuY2F0Y2goKCkgPT4gW10pXG4gIH1cbiAgY2FjaGVkID0geyBhdDogRGF0ZS5ub3coKSwgY3dkLCBmaWxlczogZmlsZXMuc2xpY2UoMCwgTUFYX0ZJTEVTKSB9XG4gIHJldHVybiBjYWNoZWQuZmlsZXNcbn1cbiIsICJpbXBvcnQgeyBjb2RlVG9BTlNJIH0gZnJvbSAnQHNoaWtpanMvY2xpJ1xuaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgc2hpa2lUaGVtZSB9IGZyb20gJy4vdGhlbWUuanMnXG5cbmNvbnN0IExBTkdTID0ge1xuICBqczogJ2pzJywgbWpzOiAnanMnLCBjanM6ICdqcycsIGpzeDogJ2pzeCcsIHRzOiAndHMnLCB0c3g6ICd0c3gnLFxuICBqc29uOiAnanNvbicsIGpzb25sOiAnanNvbicsIG1kOiAnbWQnLCBweTogJ3B5dGhvbicsIHJiOiAncnVieScsIGdvOiAnZ28nLFxuICByczogJ3J1c3QnLCBjOiAnYycsIGg6ICdjJywgY3BwOiAnY3BwJywgamF2YTogJ2phdmEnLCBjc3M6ICdjc3MnLFxuICBodG1sOiAnaHRtbCcsIHZ1ZTogJ3Z1ZScsIHNoOiAnYmFzaCcsIGJhc2g6ICdiYXNoJywgenNoOiAnYmFzaCcsXG4gIHltbDogJ3lhbWwnLCB5YW1sOiAneWFtbCcsIHRvbWw6ICd0b21sJywgc3FsOiAnc3FsJywgc3ZlbHRlOiAnc3ZlbHRlJyxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxhbmdGb3JQYXRoKHBhdGgpIHtcbiAgY29uc3QgZXh0ID0gU3RyaW5nKHBhdGgpLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gTEFOR1NbZXh0XSB8fCAndHh0J1xufVxuXG5jb25zdCBjYWNoZSA9IG5ldyBNYXAoKVxuY29uc3QgcGVuZGluZyA9IG5ldyBTZXQoKVxuY29uc3QgZmFpbGVkID0gbmV3IFNldCgpXG5jb25zdCBbdmVyc2lvbiwgc2V0VmVyc2lvbl0gPSBjcmVhdGVTaWduYWwoMClcblxuZXhwb3J0IGNvbnN0IGhpZ2hsaWdodFZlcnNpb24gPSB2ZXJzaW9uXG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHQoY29kZSwgbGFuZykge1xuICBjb25zdCBzYWZlTGFuZyA9IGxhbmcgJiYgIWZhaWxlZC5oYXMobGFuZykgPyBsYW5nIDogJ3R4dCdcbiAgY29uc3QgdGhlbWUgPSBzaGlraVRoZW1lKClcbiAgcmV0dXJuIGNvZGVcbiAgICAuc3BsaXQoJ1xcbicpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9XFxuJHtzYWZlTGFuZ31cXG4ke2xpbmV9YFxuICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSByZXR1cm4gY2FjaGUuZ2V0KGtleSlcbiAgICAgIHdhcm0obGluZSwgc2FmZUxhbmcsIHRoZW1lLCBrZXkpXG4gICAgICByZXR1cm4gbGluZVxuICAgIH0pXG4gICAgLmpvaW4oJ1xcbicpXG59XG5cbmZ1bmN0aW9uIHdhcm0obGluZSwgbGFuZywgdGhlbWUsIGtleSkge1xuICBpZiAocGVuZGluZy5oYXMoa2V5KSkgcmV0dXJuXG4gIHBlbmRpbmcuYWRkKGtleSlcbiAgY29kZVRvQU5TSShsaW5lLCBsYW5nLCB0aGVtZSlcbiAgICAudGhlbigoYW5zaSkgPT4gY2FjaGUuc2V0KGtleSwgYW5zaS5yZXBsYWNlKC9cXG4kLywgJycpKSlcbiAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgZmFpbGVkLmFkZChsYW5nKVxuICAgICAgY2FjaGUuc2V0KGtleSwgbGluZSlcbiAgICB9KVxuICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgIHBlbmRpbmcuZGVsZXRlKGtleSlcbiAgICAgIHNldFZlcnNpb24oKHYpID0+IHYgKyAxKVxuICAgIH0pXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuXG5jb25zdCBQQUxFVFRFUyA9IHtcbiAgZGFyazoge1xuICAgIGRlc2M6ICdsaWdodCB0ZXh0IGZvciBkYXJrIHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzIyZDNlZScsXG4gICAgZmc6ICcjZTVlN2ViJyxcbiAgICBmZ1NvZnQ6ICcjOWNhM2FmJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnIzRiNTU2MycsXG4gICAgcGFuZWxCZzogJyMxZTFlMjInLFxuICAgIHNlbGVjdEJnOiAnIzM3NDE1MScsXG4gICAgcmVkOiAnI2Y4NzE3MScsXG4gICAgZ3JlZW46ICcjNGFkZTgwJyxcbiAgICBoaWdobGlnaHQ6ICcjZmZmZmZmJyxcbiAgICBzaGlraTogJ25vcmQnLFxuICB9LFxuICBsaWdodDoge1xuICAgIGRlc2M6ICdkYXJrIHRleHQgZm9yIGxpZ2h0IHRlcm1pbmFscycsXG4gICAgYWNjZW50OiAnIzBmOWQ2MycsXG4gICAgZmc6ICcjMWYyNDMwJyxcbiAgICBmZ1NvZnQ6ICcjNGI1NTYzJyxcbiAgICBtdXRlZDogJyM2YjcyODAnLFxuICAgIGZhaW50OiAnI2EzYThiMycsXG4gICAgcGFuZWxCZzogJyNlOWU5ZWUnLFxuICAgIHNlbGVjdEJnOiAnI2Q0ZDRkYycsXG4gICAgcmVkOiAnI2RjMjYyNicsXG4gICAgZ3JlZW46ICcjMTZhMzRhJyxcbiAgICBoaWdobGlnaHQ6ICcjMTExODI3JyxcbiAgICBzaGlraTogJ2dpdGh1Yi1saWdodCcsXG4gIH0sXG4gIG5vcmQ6IHtcbiAgICBkZXNjOiAnYXJjdGljIGJsdWVzIG9uIHBvbGFyIG5pZ2h0JyxcbiAgICBhY2NlbnQ6ICcjODhjMGQwJyxcbiAgICBmZzogJyNkOGRlZTknLFxuICAgIGZnU29mdDogJyNhYWIyYzQnLFxuICAgIG11dGVkOiAnIzdiODhhMScsXG4gICAgZmFpbnQ6ICcjNjE2ZTg4JyxcbiAgICBwYW5lbEJnOiAnIzNiNDI1MicsXG4gICAgc2VsZWN0Qmc6ICcjNDM0YzVlJyxcbiAgICByZWQ6ICcjYmY2MTZhJyxcbiAgICBncmVlbjogJyNhM2JlOGMnLFxuICAgIGhpZ2hsaWdodDogJyNlY2VmZjQnLFxuICAgIHNoaWtpOiAnbm9yZCcsXG4gIH0sXG59XG5cbmV4cG9ydCBsZXQgREVGQVVMVF9BQ0NFTlQgPSBQQUxFVFRFUy5kYXJrLmFjY2VudFxuZXhwb3J0IGxldCBGRyA9IFBBTEVUVEVTLmRhcmsuZmdcbmV4cG9ydCBsZXQgRkdfU09GVCA9IFBBTEVUVEVTLmRhcmsuZmdTb2Z0XG5leHBvcnQgbGV0IE1VVEVEID0gUEFMRVRURVMuZGFyay5tdXRlZFxuZXhwb3J0IGxldCBGQUlOVCA9IFBBTEVUVEVTLmRhcmsuZmFpbnRcbmV4cG9ydCBsZXQgUEFORUxfQkcgPSBQQUxFVFRFUy5kYXJrLnBhbmVsQmdcbmV4cG9ydCBsZXQgU0VMRUNUX0JHID0gUEFMRVRURVMuZGFyay5zZWxlY3RCZ1xuZXhwb3J0IGxldCBSRUQgPSBQQUxFVFRFUy5kYXJrLnJlZFxuZXhwb3J0IGxldCBHUkVFTiA9IFBBTEVUVEVTLmRhcmsuZ3JlZW5cbmV4cG9ydCBsZXQgSElHSExJR0hUID0gUEFMRVRURVMuZGFyay5oaWdobGlnaHRcblxubGV0IGN1cnJlbnRQYWxldHRlID0gJ2RhcmsnXG5sZXQgZXhwbGljaXRBY2NlbnQgPSBudWxsXG5cbmNvbnN0IFthY2NlbnRWYWx1ZSwgc2V0QWNjZW50VmFsdWVdID0gY3JlYXRlU2lnbmFsKERFRkFVTFRfQUNDRU5UKVxuXG5leHBvcnQgY29uc3QgYWNjZW50ID0gYWNjZW50VmFsdWVcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFjY2VudChjb2xvcikge1xuICBleHBsaWNpdEFjY2VudCA9IGNvbG9yIHx8IG51bGxcbiAgc2V0QWNjZW50VmFsdWUoZXhwbGljaXRBY2NlbnQgfHwgREVGQVVMVF9BQ0NFTlQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWxldHRlKG5hbWUpIHtcbiAgY3VycmVudFBhbGV0dGUgPSBQQUxFVFRFU1tuYW1lXSA/IG5hbWUgOiAnZGFyaydcbiAgY29uc3QgcCA9IFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXVxuICBERUZBVUxUX0FDQ0VOVCA9IHAuYWNjZW50XG4gIEZHID0gcC5mZ1xuICBGR19TT0ZUID0gcC5mZ1NvZnRcbiAgTVVURUQgPSBwLm11dGVkXG4gIEZBSU5UID0gcC5mYWludFxuICBQQU5FTF9CRyA9IHAucGFuZWxCZ1xuICBTRUxFQ1RfQkcgPSBwLnNlbGVjdEJnXG4gIFJFRCA9IHAucmVkXG4gIEdSRUVOID0gcC5ncmVlblxuICBISUdITElHSFQgPSBwLmhpZ2hsaWdodFxuICBzZXRBY2NlbnRWYWx1ZShleHBsaWNpdEFjY2VudCB8fCBwLmFjY2VudClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVOYW1lKCkge1xuICByZXR1cm4gY3VycmVudFBhbGV0dGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhbGV0dGVMaXN0KCkge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMoUEFMRVRURVMpLm1hcCgoW2tleSwgcF0pID0+ICh7IGtleSwgZGVzYzogcC5kZXNjIH0pKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hpa2lUaGVtZSgpIHtcbiAgcmV0dXJuIFBBTEVUVEVTW2N1cnJlbnRQYWxldHRlXS5zaGlraVxufVxuIiwgImV4cG9ydCBmdW5jdGlvbiBjb21wYWN0TnVtYmVyKHZhbHVlKSB7XG4gIGNvbnN0IG4gPSBNYXRoLnJvdW5kKHZhbHVlKVxuICBpZiAoTWF0aC5hYnMobikgPj0gMV8wMDBfMDAwKSByZXR1cm4gYCR7KG4gLyAxXzAwMF8wMDApLnRvRml4ZWQoMSl9bWBcbiAgaWYgKE1hdGguYWJzKG4pID49IDFfMDAwKSByZXR1cm4gYCR7KG4gLyAxXzAwMCkudG9GaXhlZCgxKX1rYFxuICByZXR1cm4gU3RyaW5nKG4pXG59XG4iLCAiaW1wb3J0IHsgZWFzZSwgbGluZWFyLCB1c2VBbmltYXRlZCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcblxuZnVuY3Rpb24gdG9SZ2IoY29sb3IpIHtcbiAgaWYgKGNvbG9yPy5zdGFydHNXaXRoKCcjJykgJiYgY29sb3IubGVuZ3RoID09PSA3KSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHBhcnNlSW50KGNvbG9yLnNsaWNlKDEsIDMpLCAxNiksXG4gICAgICBwYXJzZUludChjb2xvci5zbGljZSgzLCA1KSwgMTYpLFxuICAgICAgcGFyc2VJbnQoY29sb3Iuc2xpY2UoNSwgNyksIDE2KSxcbiAgICBdXG4gIH1cbiAgcmV0dXJuIFsxMjcsIDEyNywgMTI3XVxufVxuXG5mdW5jdGlvbiBtaXhDb2xvcihmcm9tLCB0bywgYW1vdW50KSB7XG4gIGNvbnN0IGEgPSB0b1JnYihmcm9tKVxuICBjb25zdCBiID0gdG9SZ2IodG8pXG4gIGNvbnN0IGNoYW5uZWxzID0gYS5tYXAoKHZhbHVlLCBpKSA9PiBNYXRoLnJvdW5kKHZhbHVlICsgKGJbaV0gLSB2YWx1ZSkgKiBhbW91bnQpKVxuICByZXR1cm4gYCMke2NoYW5uZWxzLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKX1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBbmltYXRlZFZhbHVlKHsgdmFsdWUsIGluaXRpYWwgPSB2YWx1ZSwgZHVyYXRpb24gPSAxMDAwLCBjb2xvciwgaGlnaGxpZ2h0LCBmb3JtYXQgPSBTdHJpbmcgfSkge1xuICBjb25zdCBkaXNwbGF5ZWQgPSB1c2VBbmltYXRlZChpbml0aWFsLCBlYXNlKGR1cmF0aW9uKSlcbiAgY29uc3QgZ2xvdyA9IHVzZUFuaW1hdGVkKDAsIGVhc2UoZHVyYXRpb24sIGxpbmVhcikpXG5cbiAgaWYgKHZhbHVlICE9PSBkaXNwbGF5ZWQuX2FuaW0udGFyZ2V0KSB7XG4gICAgZGlzcGxheWVkLnNldCh2YWx1ZSlcbiAgICBnbG93LnNuYXAoMSlcbiAgICBnbG93LnNldCgwKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogbWl4Q29sb3IoY29sb3IsIGhpZ2hsaWdodCwgZ2xvdygpKSB9fT5cbiAgICAgIHtmb3JtYXQoZGlzcGxheWVkKCkpfVxuICAgIDwvdGV4dD5cbiAgKVxufVxuIiwgImltcG9ydCB7IERpZmYsIGVhc2UsIEhvcml6b250YWxTY3JvbGxCb3gsIGxpbmVhciwgTWFya2Rvd24sIFNwaW5uZXIsIHVzZUFuaW1hdGVkIH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgUkVEIH0gZnJvbSAnLi90aGVtZS5qcydcbmltcG9ydCB7IGhpZ2hsaWdodCwgbGFuZ0ZvclBhdGggfSBmcm9tICcuL2hpZ2hsaWdodC5qcydcblxuZXhwb3J0IHsgZGVmYXVsdFRpdGxlIGFzIHVpVGl0bGUgfSBmcm9tICcuLi9jb3JlL3Rvb2xzL3JlY29yZGVyLmpzJ1xuXG5mdW5jdGlvbiBNYXJrZG93blNuaXBwZXQoeyB2YWx1ZSwgbGFuZ3VhZ2UsIGhpZ2hsaWdodDogaGlnaGxpZ2h0Q29kZSwgY29kZUJnIH0pIHtcbiAgY29uc3Qgc2hvd24gPSBoaWdobGlnaHRDb2RlID8gaGlnaGxpZ2h0Q29kZSh2YWx1ZSwgbGFuZ3VhZ2UpIDogdmFsdWVcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGJnOiBjb2RlQmcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgPHRleHQ+e3Nob3dufTwvdGV4dD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBDb2RlU25pcHBldCh7IHZhbHVlLCBsYW5ndWFnZSwgaGlnaGxpZ2h0OiBoaWdobGlnaHRDb2RlLCBjb2RlQmcgfSkge1xuICBjb25zdCBzaG93biA9IGhpZ2hsaWdodENvZGUgPyBoaWdobGlnaHRDb2RlKHZhbHVlLCBsYW5ndWFnZSkgOiB2YWx1ZVxuICBjb25zdCBjb250ZW50V2lkdGggPSBNYXRoLm1heCgwLCAuLi52YWx1ZS5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBbLi4ubGluZV0ubGVuZ3RoKSkgKyAyXG4gIHJldHVybiAoXG4gICAgPEhvcml6b250YWxTY3JvbGxCb3ggY29udGVudFdpZHRoPXtjb250ZW50V2lkdGh9IHN0eWxlPXt7IGJnOiBjb2RlQmcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAge3Nob3duLnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUsIGtleSkgPT4gKFxuICAgICAgICAgIDx0ZXh0IGtleT17a2V5fSBzdHlsZT17eyBvdmVyZmxvdzogJ25vd3JhcCcgfX0+e2xpbmUgfHwgJyAnfTwvdGV4dD5cbiAgICAgICAgKSl9XG4gICAgICA8L2JveD5cbiAgICA8L0hvcml6b250YWxTY3JvbGxCb3g+XG4gIClcbn1cblxuZnVuY3Rpb24gVHJhbnNjcmlwdENvZGVCbG9jayhwcm9wcykge1xuICBjb25zdCBsYW5ndWFnZSA9IHByb3BzLmxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpXG4gIGNvbnN0IENvbXBvbmVudCA9IGxhbmd1YWdlID09PSAnbWQnIHx8IGxhbmd1YWdlID09PSAnbWFya2Rvd24nID8gTWFya2Rvd25TbmlwcGV0IDogQ29kZVNuaXBwZXRcbiAgcmV0dXJuIDxDb21wb25lbnQgey4uLnByb3BzfSAvPlxufVxuXG5mdW5jdGlvbiBkaWZmUHJldmlld0xpbmVzKGRpZmYsIHJldmVydCkge1xuICBpZiAoZGlmZj8uaHVua3M/Lmxlbmd0aCkgcmV0dXJuIGRpZmYuaHVua3MucmVkdWNlKChzdW0sIGgpID0+IHN1bSArIGgubGluZXMubGVuZ3RoLCAwKVxuICAvLyBldmVudHMgcmVjb3JkZWQgYmVmb3JlIGNyZWF0ZWQtZmlsZSB3cml0ZXMgY2FycmllZCBodW5rczogc2l6ZSBmcm9tIHRoZSBjb250ZW50IGl0c2VsZlxuICByZXR1cm4gTWF0aC5tYXgoU3RyaW5nKHJldmVydD8uYWZ0ZXIgfHwgJycpLnNwbGl0KCdcXG4nKS5sZW5ndGgsIFN0cmluZyhyZXZlcnQ/LmJlZm9yZSB8fCAnJykuc3BsaXQoJ1xcbicpLmxlbmd0aCwgMilcbn1cblxuZnVuY3Rpb24gZm10RHVyYXRpb24obXMpIHtcbiAgaWYgKG1zIDwgNjAwMDApIHJldHVybiBgJHsobXMgLyAxMDAwKS50b0ZpeGVkKDIpfXNgXG4gIGNvbnN0IHNlY3MgPSBNYXRoLnJvdW5kKG1zIC8gMTAwMClcbiAgcmV0dXJuIGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG59XG5cbmZ1bmN0aW9uIGZtdFJ1bm5pbmcobXMpIHtcbiAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3IobXMgLyAxMDAwKVxuICByZXR1cm4gc2VjcyA8IDYwID8gYCR7c2Vjc31zYCA6IGAke01hdGguZmxvb3Ioc2VjcyAvIDYwKX1tICR7c2VjcyAlIDYwfXNgXG59XG5cbmZ1bmN0aW9uIG1peENvbG9yKGZyb20sIHRvLCBhbW91bnQpIHtcbiAgY29uc3QgcmdiID0gKGNvbG9yKSA9PiBjb2xvcj8uc3RhcnRzV2l0aCgnIycpICYmIGNvbG9yLmxlbmd0aCA9PT0gN1xuICAgID8gWzEsIDMsIDVdLm1hcCgoaSkgPT4gcGFyc2VJbnQoY29sb3Iuc2xpY2UoaSwgaSArIDIpLCAxNikpXG4gICAgOiBbMTI3LCAxMjcsIDEyN11cbiAgY29uc3QgYSA9IHJnYihmcm9tKVxuICBjb25zdCBiID0gcmdiKHRvKVxuICByZXR1cm4gYCMke2EubWFwKCh2YWx1ZSwgaSkgPT4gTWF0aC5yb3VuZCh2YWx1ZSArIChiW2ldIC0gdmFsdWUpICogYW1vdW50KS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YFxufVxuXG5mdW5jdGlvbiBUb29sR3JvdXAoeyBpdGVtLCB2ZXJib3NlIH0pIHtcbiAgY29uc3QgbGF0ZXN0Q2FsbElkID0gaXRlbS50b29scy5hdCgtMSk/LmNhbGxJZFxuICBjb25zdCBnbG93ID0gdXNlQW5pbWF0ZWQoMCwgZWFzZSg1MDAsIGxpbmVhcikpXG4gIGlmIChsYXRlc3RDYWxsSWQgIT09IGdsb3cuX2NhbGxJZCkge1xuICAgIGdsb3cuX2NhbGxJZCA9IGxhdGVzdENhbGxJZFxuICAgIGlmIChpdGVtLmFjdGl2ZSkge1xuICAgICAgZ2xvdy5zbmFwKDEpXG4gICAgICBnbG93LnNldCgwKVxuICAgIH1cbiAgfVxuXG4gIGlmICh2ZXJib3NlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgIHtpdGVtLnRvb2xzLm1hcCgodG9vbCwgaSkgPT4gPFRvb2xDYXJkIGtleT17aX0gey4uLnRvb2x9IHZlcmJvc2Ugc2hvd0V4cGFuZEhpbnQ9e2ZhbHNlfSAvPil9XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBjb25zdCBjb3VudHMgPSBuZXcgTWFwKClcbiAgZm9yIChjb25zdCB0b29sIG9mIGl0ZW0udG9vbHMpIGNvdW50cy5zZXQodG9vbC5uYW1lLCAoY291bnRzLmdldCh0b29sLm5hbWUpIHx8IDApICsgMSlcbiAgY29uc3QgZW50cmllcyA9IFsuLi5jb3VudHNdXG4gIGNvbnN0IHRvdGFsTXMgPSBpdGVtLnRvb2xzLnJlZHVjZSgoc3VtLCB0b29sKSA9PiBzdW0gKyAodG9vbC5kdXJhdGlvbk1zIHx8IDApLCAwKVxuICBjb25zdCBsYXRlc3ROYW1lID0gaXRlbS50b29scy5hdCgtMSk/Lm5hbWVcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcgfX0+XG4gICAgICAgIHtpdGVtLmFjdGl2ZSA/IDxTcGlubmVyIGNvbG9yPXthY2NlbnQoKX0gLz4gOiA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+XHUyNzEzPC90ZXh0Pn1cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgZmxleFdyYXA6ICd3cmFwJywgZmxleEdyb3c6IDEsIG1hcmdpblJpZ2h0OiAyIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBpdGVtLmFjdGl2ZSA/IEZHIDogTVVURUQgfX0+IENhbGxlZCA8L3RleHQ+XG4gICAgICAgICAge2VudHJpZXMubWFwKChbbmFtZSwgY291bnRdLCBpKSA9PiAoXG4gICAgICAgICAgICA8dGV4dCBrZXk9e25hbWV9IHN0eWxlPXt7IGNvbG9yOiBpdGVtLmFjdGl2ZSAmJiBuYW1lID09PSBsYXRlc3ROYW1lID8gbWl4Q29sb3IoRkcsIGFjY2VudCgpLCBnbG93KCkpIDogaXRlbS5hY3RpdmUgPyBGRyA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICB7YCR7aSA/ICcsICcgOiAnJ30ke25hbWV9JHtjb3VudCA9PT0gMSA/ICcnIDogYCAke2NvdW50fSB0aW1lc2B9YH1cbiAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIHt0b3RhbE1zID4gMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIGZsZXhTaHJpbms6IDAgfX0+e2ZtdER1cmF0aW9uKHRvdGFsTXMpfTwvdGV4dD59XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5mdW5jdGlvbiBUb29sQ2FyZCh7IG5hbWUsIHRpdGxlLCBzdGF0dXMsIGRpZmYsIHJldmVydCwgZnVsbE91dHB1dCwgZXJyb3IsIGJhY2tncm91bmQsIHZlcmJvc2UsIHNob3dFeHBhbmRIaW50ID0gdHJ1ZSwgc3RhcnRlZEF0LCBkdXJhdGlvbk1zIH0pIHtcbiAgY29uc3QgcnVubmluZyA9IHN0YXR1cyA9PT0gJ3J1bm5pbmcnXG4gIGNvbnN0IGludGVycnVwdGVkID0gc3RhdHVzID09PSAnaW50ZXJydXB0ZWQnXG4gIGNvbnN0IHJldmVydGVkID0gc3RhdHVzID09PSAncmV2ZXJ0ZWQnXG4gIGNvbnN0IGZhaWxlZCA9IHN0YXR1cyA9PT0gJ2Vycm9yJ1xuICBjb25zdCBvdXRMaW5lcyA9IGZ1bGxPdXRwdXQgPyBmdWxsT3V0cHV0LnNwbGl0KCdcXG4nKSA6IG51bGxcblxuICBjb25zdCBlbGFwc2VkID0gcnVubmluZyAmJiBzdGFydGVkQXQgPyBEYXRlLm5vdygpIC0gc3RhcnRlZEF0IDogMFxuICBjb25zdCB0b29rID0gIXJ1bm5pbmcgJiYgIWJhY2tncm91bmQgJiYgZHVyYXRpb25NcyAhPSBudWxsID8gZm10RHVyYXRpb24oZHVyYXRpb25NcykgOiBudWxsXG5cbiAgY29uc3QgaW5mbyA9IHJ1bm5pbmcgPyAoZWxhcHNlZCA+PSA1MDAwID8gYHJ1bm5pbmcgKCR7Zm10UnVubmluZyhlbGFwc2VkKX0pYCA6ICdydW5uaW5nJylcbiAgICA6IGludGVycnVwdGVkID8gJ2ludGVycnVwdGVkJ1xuICAgIDogcmV2ZXJ0ZWQgPyAncmV2ZXJ0ZWQnXG4gICAgOiBmYWlsZWQgPyBgZmFpbGVkJHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ31gXG4gICAgOiBiYWNrZ3JvdW5kID8gJ2JhY2tncm91bmQgXHUwMEI3IC9zaGVsbHMnXG4gICAgOiBkaWZmID8gYCske2RpZmYuYWRkaXRpb25zfSAtJHtkaWZmLmRlbGV0aW9uc30ke3Rvb2sgPyBgIFx1MDBCNyAke3Rvb2t9YCA6ICcnfWBcbiAgICA6IG91dExpbmVzID8gYCR7b3V0TGluZXMubGVuZ3RofSAke291dExpbmVzLmxlbmd0aCA9PT0gMSA/ICdsaW5lJyA6ICdsaW5lcyd9JHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ30ke3Nob3dFeHBhbmRIaW50ID8gJyBcdTAwQjcgY3RybCtvJyA6ICcnfWBcbiAgICA6IGBkb25lJHt0b29rID8gYCBcdTAwQjcgJHt0b29rfWAgOiAnJ31gXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICB7cnVubmluZ1xuICAgICAgICAgID8gPFNwaW5uZXIgY29sb3I9e2FjY2VudCgpfSAvPlxuICAgICAgICAgIDogPHRleHQgc3R5bGU9e3sgY29sb3I6IGludGVycnVwdGVkIHx8IGZhaWxlZCA/IFJFRCA6IHJldmVydGVkID8gTVVURUQgOiBhY2NlbnQoKSB9fT57aW50ZXJydXB0ZWQgPyAnXHUyNzE3JyA6IGZhaWxlZCA/ICdcdTI3MTcnIDogcmV2ZXJ0ZWQgPyAnXHUyMUE5JyA6ICdcdTI3MTMnfTwvdGV4dD59XG4gICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCR7bmFtZS5wYWRFbmQoNSl9IGB9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGRyB9fT57dGl0bGUgfHwgbmFtZX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7aW5mb31gfTwvdGV4dD5cbiAgICAgIDwvYm94PlxuICAgICAge2ZhaWxlZCAmJiBlcnJvciAmJiAoXG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2AgICR7ZXJyb3J9YH08L3RleHQ+XG4gICAgICApfVxuICAgICAge3JldmVydCAmJiAhcnVubmluZyAmJiAhcmV2ZXJ0ZWQgJiYgIShkaWZmICYmIGRpZmYuYWRkaXRpb25zID09PSAwICYmIGRpZmYuZGVsZXRpb25zID09PSAwKSAmJiAoXG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogTWF0aC5taW4oZGlmZlByZXZpZXdMaW5lcyhkaWZmLCByZXZlcnQpICsgMSwgMTIpLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgICAgPERpZmZcbiAgICAgICAgICAgIGJlZm9yZT17cmV2ZXJ0LmJlZm9yZX1cbiAgICAgICAgICAgIGFmdGVyPXtyZXZlcnQuYWZ0ZXJ9XG4gICAgICAgICAgICBsYW5ndWFnZT17bGFuZ0ZvclBhdGgocmV2ZXJ0LnBhdGgpfVxuICAgICAgICAgICAgaGlnaGxpZ2h0PXtoaWdobGlnaHR9XG4gICAgICAgICAgICBjb250ZXh0PXszfVxuICAgICAgICAgICAgZm9sZHM9e2ZhbHNlfVxuICAgICAgICAgICAgZm9jdXNlZD17ZmFsc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXI9e2ZhbHNlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICAgIHtvdXRMaW5lcyAmJiB2ZXJib3NlICYmICFydW5uaW5nICYmIChcbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57YCQgJHt0aXRsZX1gfTwvdGV4dD5cbiAgICAgICAgICB7b3V0TGluZXMuc2xpY2UoMCwgMjAwKS5tYXAoKGxpbmUsIGkpID0+IChcbiAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgKSl9XG4gICAgICAgICAge291dExpbmVzLmxlbmd0aCA+IDIwMCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2BcdTIwMjYgJHtvdXRMaW5lcy5sZW5ndGggLSAyMDB9IG1vcmUgbGluZXNgfTwvdGV4dD59XG4gICAgICAgIDwvYm94PlxuICAgICAgKX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVzc2FnZSh7IGl0ZW0sIHZlcmJvc2UgfSkge1xuICBpZiAoaXRlbS5raW5kID09PSAndG9vbC1ncm91cCcpIHJldHVybiA8VG9vbEdyb3VwIGl0ZW09e2l0ZW19IHZlcmJvc2U9e3ZlcmJvc2V9IC8+XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rvb2wnKSB7XG4gICAgcmV0dXJuIDxUb29sQ2FyZCB7Li4uaXRlbX0gdmVyYm9zZT17dmVyYm9zZX0gLz5cbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdzdW1tYXJ5Jykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57aXRlbS5zb3VyY2UgPT09ICdjb21wYWN0JyA/ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgY29udmVyc2F0aW9uIGNvbXBhY3RlZCBhYm92ZSB0aGlzIHBvaW50JyA6ICdcdTI3MjYgc3VtbWFyeSBcdTAwQjcgcmV3b3VuZCBjb252ZXJzYXRpb24nfTwvdGV4dD5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtsaW5lcy5sZW5ndGh9ICR7bGluZXMubGVuZ3RoID09PSAxID8gJ2xpbmUnIDogJ2xpbmVzJ30gXHUwMEI3IGN0cmwrb2B9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgICAge3ZlcmJvc2UgJiYgKFxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgICAgIHtsaW5lcy5zbGljZSgwLCA1MDApLm1hcCgobGluZSwgaSkgPT4gKFxuICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPiA1MDAgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgXHUyMDI2ICR7bGluZXMubGVuZ3RoIC0gNTAwfSBtb3JlIGxpbmVzYH08L3RleHQ+fVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApfVxuICAgICAgPC9ib3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGl0ZW0ua2luZCA9PT0gJ3Rob3VnaHRzJykge1xuICAgIGNvbnN0IGxpbmVzID0gaXRlbS50ZXh0LnNwbGl0KCdcXG4nKVxuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57J1x1MjcyNiB0aG91Z2h0cyd9PC90ZXh0PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake2xpbmVzLmxlbmd0aH0gJHtsaW5lcy5sZW5ndGggPT09IDEgPyAnbGluZScgOiAnbGluZXMnfSBcdTAwQjcgY3RybCtvYH08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgICB7dmVyYm9zZSAmJiAoXG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgICAge2xpbmVzLnNsaWNlKDAsIDMwMCkubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IEZHX1NPRlQsIGl0YWxpYzogdHJ1ZSB9fT57bGluZSB8fCAnICd9PC90ZXh0PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICB7bGluZXMubGVuZ3RoID4gMzAwICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YFx1MjAyNiAke2xpbmVzLmxlbmd0aCAtIDMwMH0gbW9yZSBsaW5lc2B9PC90ZXh0Pn1cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGlmIChpdGVtLmtpbmQgPT09ICdub3RpY2UnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjY5OSAke2l0ZW0udGV4dC5yZXBsYWNlKC9eXFxbc3lzdGVtIG5vdGlmaWNhdGlvblxcXVxccyovLCAnJyl9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAnc2tpbGwnKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHBhZGRpbmdYOiAyIH19PlxuICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQsIGl0YWxpYzogdHJ1ZSB9fT57YFx1MjcyNiBza2lsbDogJHtpdGVtLm5hbWV9YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICBpZiAoaXRlbS5raW5kID09PSAndXNlcicpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgPHRleHQ+IDwvdGV4dD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ1k6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PntpdGVtLnRleHR9PC90ZXh0PlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IHRleHQgPSBpdGVtLmludGVycnVwdGVkID8gYCR7aXRlbS50ZXh0fSAqKGludGVycnVwdGVkKSpgIDogaXRlbS50ZXh0XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIgfX0+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPE1hcmtkb3duIHRleHQ9e3RleHR9IGhpZ2hsaWdodD17aGlnaGxpZ2h0fSBjb2RlQmc9e251bGx9IGNvZGVCbG9jaz17VHJhbnNjcmlwdENvZGVCbG9ja30gLz5cbiAgICA8L2JveD5cbiAgKVxufVxuIiwgImltcG9ydCB7IGNyZWF0ZVNpZ25hbCwgdXNlSW50ZXJ2YWwsIHVzZU1vdXNlLCB1c2VSZXNpemUgfSBmcm9tICdAdHJlbmRyL2NvcmUnXG5pbXBvcnQgeyBhY2NlbnQsIEZBSU5UIH0gZnJvbSAnLi90aGVtZS5qcydcblxuZnVuY3Rpb24gRW1wdHlDbG91ZCh7IHdpZHRoLCBoZWlnaHQsIHZlcnNpb24gfSkge1xuICBjb25zdCBbcGhhc2UsIHNldFBoYXNlXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBbd2FrZSwgc2V0V2FrZV0gPSBjcmVhdGVTaWduYWwoW10pXG4gIGxldCBwcmV2aW91cyA9IG51bGxcblxuICB1c2VNb3VzZSgoZXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQuYWN0aW9uICE9PSAnbW92ZScgJiYgZXZlbnQuYWN0aW9uICE9PSAnZHJhZycpIHJldHVyblxuICAgIGNvbnN0IHggPSBldmVudC54XG4gICAgY29uc3QgeSA9IGV2ZW50LnlcbiAgICBpZiAoeCA8IDAgfHwgeCA+PSB3aWR0aCB8fCB5IDwgMCB8fCB5ID49IGhlaWdodCkgcmV0dXJuXG4gICAgY29uc3QgZHggPSBwcmV2aW91cyA/IHggLSBwcmV2aW91cy54IDogMFxuICAgIGNvbnN0IGR5ID0gcHJldmlvdXMgPyB5IC0gcHJldmlvdXMueSA6IDBcbiAgICBwcmV2aW91cyA9IHsgeCwgeSB9XG4gICAgY29uc3Qgc3BlZWQgPSBNYXRoLmh5cG90KGR4ICogMC41LCBkeSlcbiAgICBpZiAoc3BlZWQgPT09IDApIHJldHVyblxuICAgIHNldFdha2UocG9pbnRzID0+IFsuLi5wb2ludHMuc2xpY2UoLTIwKSwgeyB4LCB5LCBkeCwgZHksIHNwZWVkOiBNYXRoLm1pbig0LCBzcGVlZCksIGFnZTogMCB9XSlcbiAgfSlcblxuICB1c2VJbnRlcnZhbCgoKSA9PiB7XG4gICAgc2V0UGhhc2UodmFsdWUgPT4gdmFsdWUgKyAwLjE2KVxuICAgIHNldFdha2UocG9pbnRzID0+IHBvaW50cy5tYXAocG9pbnQgPT4gKHsgLi4ucG9pbnQsIGFnZTogcG9pbnQuYWdlICsgMSB9KSkuZmlsdGVyKHBvaW50ID0+IHBvaW50LmFnZSA8IDE4KSlcbiAgfSwgOTApXG5cbiAgY29uc3QgZ2x5cGhzID0gJyAgXHUwMEI3XHUwMEI3OjorKyoqXHUyNTkxXHUyNTkyJ1xuICBjb25zdCByb3dzID0gW11cbiAgY29uc3QgYmFzZSA9IGFjY2VudCgpXG4gIGNvbnN0IHJnYiA9IC9eIyhbMC05YS1mXXs2fSkkL2kuZXhlYyhiYXNlKVxuICBjb25zdCBuZWlnaGJvcmluZyA9IHJnYlxuICAgID8gYCMke1tcbiAgICAgIE1hdGgubWF4KDAsIHBhcnNlSW50KHJnYlsxXS5zbGljZSgwLCAyKSwgMTYpIC0gMTgpLFxuICAgICAgTWF0aC5taW4oMjU1LCBwYXJzZUludChyZ2JbMV0uc2xpY2UoMiwgNCksIDE2KSArIDgpLFxuICAgICAgTWF0aC5taW4oMjU1LCBwYXJzZUludChyZ2JbMV0uc2xpY2UoNCwgNiksIDE2KSArIDI0KSxcbiAgICBdLm1hcCh2YWx1ZSA9PiB2YWx1ZS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyl9YFxuICAgIDogYmFzZVxuXG4gIGZvciAobGV0IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHtcbiAgICBjb25zdCByb3cgPSBbXVxuICAgIGZvciAobGV0IHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgY29uc3QgcCA9IHBoYXNlKClcbiAgICAgIGNvbnN0IGJyb2FkID0gTWF0aC5zaW4oeCAqIDAuMDggKyBwKSArIE1hdGguc2luKHkgKiAwLjI5IC0gcCAqIDAuNykgKyBNYXRoLnNpbigoeCArIHkpICogMC4wNSArIHAgKiAwLjM1KVxuICAgICAgY29uc3Qgd2lzcHMgPSBNYXRoLnNpbih4ICogMC4xOSAtIHkgKiAwLjExIC0gcCAqIDAuNTUpICsgTWF0aC5zaW4oeCAqIDAuMDMgKyB5ICogMC40MyArIHAgKiAwLjQpXG4gICAgICBjb25zdCBwb2NrZXRzID0gTWF0aC5zaW4oeCAqIDAuMzEgKyBwICogMC44KSAqIE1hdGguc2luKHkgKiAwLjQ3IC0gcCAqIDAuMylcbiAgICAgIGxldCBicm9hZERpc3BsYWNlbWVudCA9IDBcbiAgICAgIGxldCB3aXNwRGlzcGxhY2VtZW50ID0gMFxuICAgICAgbGV0IGludGVyYWN0aW9uID0gMFxuICAgICAgZm9yIChjb25zdCBwb2ludCBvZiB3YWtlKCkpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gTWF0aC5oeXBvdChwb2ludC5keCAqIDAuNSwgcG9pbnQuZHkpIHx8IDFcbiAgICAgICAgY29uc3QgdXggPSBwb2ludC5keCAqIDAuNSAvIGxlbmd0aFxuICAgICAgICBjb25zdCB1eSA9IHBvaW50LmR5IC8gbGVuZ3RoXG4gICAgICAgIGNvbnN0IHJ4ID0gKHggLSBwb2ludC54KSAqIDAuNVxuICAgICAgICBjb25zdCByeSA9IHkgLSBwb2ludC55XG4gICAgICAgIGNvbnN0IGFsb25nID0gcnggKiB1eCArIHJ5ICogdXlcbiAgICAgICAgY29uc3QgYWNyb3NzID0gLXJ4ICogdXkgKyByeSAqIHV4XG4gICAgICAgIGNvbnN0IHRyYWlsaW5nID0gYWxvbmcgPD0gMiAmJiBhbG9uZyA+PSAtMTggLSBwb2ludC5zcGVlZCAqIDNcbiAgICAgICAgaWYgKCF0cmFpbGluZykgY29udGludWVcbiAgICAgICAgY29uc3QgYWdlID0gMSAtIHBvaW50LmFnZSAvIDE4XG4gICAgICAgIGNvbnN0IHRyYWlsID0gTWF0aC5leHAoLU1hdGgucG93KChhbG9uZyArIDQgKyBwb2ludC5hZ2UgKiAwLjM1KSAvICg3ICsgcG9pbnQuc3BlZWQgKiAyKSwgMikpXG4gICAgICAgIGNvbnN0IGNlbnRlciA9IE1hdGguZXhwKC0oYWNyb3NzICogYWNyb3NzKSAvIDUpXG4gICAgICAgIGNvbnN0IGVkZ2VzID0gTWF0aC5leHAoLU1hdGgucG93KE1hdGguYWJzKGFjcm9zcykgLSAzLjIsIDIpIC8gMylcbiAgICAgICAgY29uc3QgZm9yY2UgPSBhZ2UgKiB0cmFpbCAqICgwLjUgKyBwb2ludC5zcGVlZCAqIDAuNDUpXG4gICAgICAgIGNvbnN0IHJhZGlhbERpc3RhbmNlID0gTWF0aC5zcXJ0KHJ4ICogcnggKyByeSAqIHJ5KVxuICAgICAgICBjb25zdCByaXBwbGVFbnZlbG9wZSA9IE1hdGguZXhwKC0ocmFkaWFsRGlzdGFuY2UgKiByYWRpYWxEaXN0YW5jZSkgLyAoMzUgKyBwb2ludC5zcGVlZCAqIDEyKSlcbiAgICAgICAgY29uc3QgcmlwcGxlID0gTWF0aC5zaW4ocmFkaWFsRGlzdGFuY2UgKiAxLjM1IC0gcG9pbnQuYWdlICogMC43NSkgKiByaXBwbGVFbnZlbG9wZSAqIGFnZVxuICAgICAgICB3aXNwRGlzcGxhY2VtZW50ICs9IChlZGdlcyAqIDAuOSAtIGNlbnRlcikgKiBmb3JjZSAqIDEuNSArIHJpcHBsZSAqICgxLjIgKyBwb2ludC5zcGVlZCAqIDAuMjUpXG4gICAgICAgIGJyb2FkRGlzcGxhY2VtZW50ICs9IChlZGdlcyAqIDAuNDUgLSBjZW50ZXIgKiAwLjM1KSAqIGZvcmNlICogMC41NSArIHJpcHBsZSAqIDAuMjVcbiAgICAgICAgaW50ZXJhY3Rpb24gPSBNYXRoLm1heChpbnRlcmFjdGlvbiwgTWF0aC5hYnMocmlwcGxlKSAqICgwLjUgKyBwb2ludC5zcGVlZCAqIDAuMTUpKVxuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCAoXG4gICAgICAgIGJyb2FkICsgYnJvYWREaXNwbGFjZW1lbnQgKyAod2lzcHMgKyB3aXNwRGlzcGxhY2VtZW50KSAqIDAuNjUgKyBwb2NrZXRzICogMC44ICsgMy4yXG4gICAgICApIC8gNy40KSlcbiAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5taW4oZ2x5cGhzLmxlbmd0aCAtIDEsIE1hdGguZmxvb3IodmFsdWUgKiBnbHlwaHMubGVuZ3RoKSlcbiAgICAgIHJvdy5wdXNoKHsgZ2x5cGg6IGdseXBoc1tpbmRleF0sIGNvbG9yOiBpbnRlcmFjdGlvbiA+IDAuMTYgPyBuZWlnaGJvcmluZyA6IGJhc2UsIGRpbTogaW5kZXggPCA4IH0pXG4gICAgfVxuICAgIHJvd3MucHVzaChyb3cpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGZsZXhHcm93OiAxIH19PlxuICAgICAge3Jvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWwgPSBpID09PSAxID8gJ3BpY28nIDogaSA9PT0gMiA/IGB2JHt2ZXJzaW9ufWAgOiAnJ1xuICAgICAgICBjb25zdCBpbkJyYW5kQm94ID0gaSA+PSAxICYmIGkgPD0gMlxuICAgICAgICBjb25zdCBib3hTdGFydCA9IDFcbiAgICAgICAgY29uc3QgYm94V2lkdGggPSBgdiR7dmVyc2lvbn1gLmxlbmd0aCArIDJcbiAgICAgICAgY29uc3QgY2xvdWQgPSAoY2VsbHMpID0+IGNlbGxzLm1hcCgoY2VsbCwgeCkgPT4gKFxuICAgICAgICAgIDx0ZXh0IGtleT17eH0gc3R5bGU9e3sgY29sb3I6IGNlbGwuY29sb3IsIGRpbTogY2VsbC5kaW0gfX0+e2NlbGwuZ2x5cGh9PC90ZXh0PlxuICAgICAgICApKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxib3gga2V5PXtpfSBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgaGVpZ2h0OiAxLCBvdmVyZmxvdzogJ2NsaXAnIH19PlxuICAgICAgICAgICAge2luQnJhbmRCb3ggJiYgY2xvdWQocm93LnNsaWNlKDAsIGJveFN0YXJ0KSl9XG4gICAgICAgICAgICB7aW5CcmFuZEJveCAmJiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgd2lkdGg6IGJveFdpZHRoLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICB7bGFiZWwgJiYgPHRleHQgc3R5bGU9e3sgYm9sZDogaSA9PT0gMSwgY29sb3I6IGkgPT09IDEgPyBhY2NlbnQoKSA6IEZBSU5UIH19PntsYWJlbH08L3RleHQ+fVxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICB7Y2xvdWQocm93LnNsaWNlKGluQnJhbmRCb3ggPyBib3hTdGFydCArIGJveFdpZHRoIDogMCkpfVxuICAgICAgICAgIDwvYm94PlxuICAgICAgICApXG4gICAgICB9KX1cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRW1wdHlTdGF0ZSh7IHZlcnNpb24sIGNsb3VkcyA9IGZhbHNlIH0pIHtcbiAgY29uc3QgW3NpemUsIHNldFNpemVdID0gY3JlYXRlU2lnbmFsKHsgd2lkdGg6IHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMgfHwgODAsIGhlaWdodDogcHJvY2Vzcy5zdGRvdXQucm93cyB8fCAyNCB9KVxuICB1c2VSZXNpemUoc2V0U2l6ZSlcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCgxLCBzaXplKCkud2lkdGgpXG4gIGNvbnN0IGhlaWdodCA9IE1hdGgubWF4KDEsIHNpemUoKS5oZWlnaHQgLSA0KVxuICBpZiAoIWNsb3Vkcykge1xuICAgIHJldHVybiAoXG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGJvbGQ6IHRydWUsIGNvbG9yOiBhY2NlbnQoKSB9fT57JyAgcGljbyd9PC90ZXh0PlxuICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIHYke3ZlcnNpb259YH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIHdpZHRoLCBoZWlnaHQgfX0+XG4gICAgICA8RW1wdHlDbG91ZCB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fSB2ZXJzaW9uPXt2ZXJzaW9ufSAvPlxuICAgIDwvYm94PlxuICApXG59XG5cbiIsICJpbXBvcnQgeyBNYXJrZG93biwgU2Nyb2xsQm94LCB1c2VJbnB1dCB9IGZyb20gJ0B0cmVuZHIvY29yZSdcbmltcG9ydCB7IGFjY2VudCwgRkFJTlQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuXG5jb25zdCBIRUxQX1RFWFQgPSAoY29tbWFuZHMpID0+IGBwaWNvIGlzIGEgY29kaW5nIGFnZW50IGluIHlvdXIgdGVybWluYWwuIEl0IHJlYWRzLCBlZGl0cywgYW5kIHNlYXJjaGVzIGZpbGVzLCBydW5zIGNvbW1hbmRzLCBhbmQgc3RyZWFtcyBpdHMgd29yayBpbnRvIHRoaXMgdHJhbnNjcmlwdC5cblxuIyMgQ29tbWFuZHNcblxuVHlwZSBcXGAvXFxgIGluIHRoZSBjb21wb3NlciB0byBmaWx0ZXIgdGhlc2UgYXMgeW91IHR5cGUuXG5cbiR7Y29tbWFuZHMubWFwKChjKSA9PiBgLSBcXGAvJHtjLm5hbWV9XFxgIC0gJHtjLmRlc2N9YCkuam9pbignXFxuJyl9XG5cblR3byBraW5kcyBvZiB1c2VyLWRlZmluZWQgZW50cmllcyBqb2luIHRoaXMgbWVudTpcblxuLSAqKmNvbW1hbmRzKiogKFxcYH4vLnBpY28vY29tbWFuZHMvPG5hbWU+Lm1kXFxgIG9yIFxcYC5waWNvL2NvbW1hbmRzLzxuYW1lPi5tZFxcYCk6IHByb21wdCB0ZW1wbGF0ZXMgeW91IGludm9rZSBhcyBcXGAvPG5hbWU+IFthcmdzXVxcYC4gXFxgJEFSR1VNRU5UU1xcYCBpbiB0aGUgYm9keSBpcyByZXBsYWNlZCB3aXRoIHdoYXRldmVyIGZvbGxvd3MgdGhlIGNvbW1hbmQ7IHdpdGhvdXQgYSBwbGFjZWhvbGRlciwgYXJncyBhcmUgYXBwZW5kZWQuIFRoZSBtb2RlbCBuZXZlciBzZWVzIHRoZXNlIHVudGlsIHlvdSBydW4gb25lLlxuLSAqKnNraWxscyoqIChcXGB+Ly5waWNvL3NraWxscy88bmFtZT4vU0tJTEwubWRcXGAgb3IgXFxgLnBpY28vc2tpbGxzLzxuYW1lPi9TS0lMTC5tZFxcYCk6IGNhcGFiaWxpdGllcyB3aXRoIGEgbmFtZSBhbmQgZGVzY3JpcHRpb24uIFlvdSBjYW4gaW52b2tlIHRoZW0gbGlrZSBjb21tYW5kcywgYW5kIHRoZSBhZ2VudCBjYW4gYWxzbyBkaXNjb3ZlciBhbmQgbG9hZCB0aGVtIGl0c2VsZiB2aWEgdGhlIHNraWxsIHRvb2wuXG4tICoqdG9vbHMqKiAoXFxgfi8ucGljby90b29scy88bmFtZT4uanNcXGAgb3IgXFxgLnBpY28vdG9vbHMvPG5hbWU+LmpzXFxgKTogRVMgbW9kdWxlcyBkZWZhdWx0LWV4cG9ydGluZyBcXGB7IG5hbWUsIGRlc2NyaXB0aW9uLCBzY2hlbWEsIGV4ZWN1dGUgfVxcYCAob3IgYSBmYWN0b3J5IHJlY2VpdmluZyBcXGB7IGN3ZCwgcm9vdCB9XFxgKS4gVGhleSBqb2luIHRoZSBhZ2VudCdzIHRvb2xzZXQgYW5kIGFyZSByZXNjYW5uZWQgZXZlcnkgdHVybiwgc28gZWRpdHMgYXBwbHkgb24gdGhlIG5leHQgbWVzc2FnZS4gQXNrIHRoZSBhZ2VudCB0byBidWlsZCBvbmUgZm9yIHlvdTogdGhlIGJ1aWx0LWluIFxcYC9uZXctdG9vbFxcYCBza2lsbCB0ZWFjaGVzIGl0IHRoZSBmb3JtYXQuXG5cbkluIHRoZSBNQ1AgcGFuZWw6IGVudGVyIGVuYWJsZXMvZGlzYWJsZXMgYSBzZXJ2ZXIgKGRpc2FibGVkIGlzIHN0aWNreSBhY3Jvc3MgcmVzdGFydHMgLSBjb25maWcga2VwdCwgbm8gY29ubmVjdGlvbiwgbm8gdG9vbHMgb2ZmZXJlZCB0byB0aGUgbW9kZWwsIHBlciBwcm9qZWN0KSwgXFxgdFxcYCBsaXN0cyBpdHMgdG9vbHMsIFxcYHJcXGAgcmVjb25uZWN0cywgXFxgYVxcYCBhZGRzLCBcXGBjdHJsK3hcXGAgcmVtb3ZlcyAocHJlc3MgdHdpY2UpLiBVbmZpbHRlcmVkIGxpc3RzIChlZmZvcnQsIHJld2luZCBvcHRpb25zLCBNQ1ApIGFsc28gbW92ZSB3aXRoIFxcYGpcXGAvXFxga1xcYCBhbmQganVtcCB3aXRoIFxcYGdcXGAvXFxgR1xcYC5cblxuIyMgQ29tcG9zZXJcblxuLSBcXGBlbnRlclxcYCBzZW5kcywgXFxgc2hpZnQrZW50ZXJcXGAgaW5zZXJ0cyBhIG5ld2xpbmVcbi0gXFxgQFxcYCBvcGVucyBhIGZ1enp5IGZpbGUgcGlja2VyOyBlbnRlciBpbnNlcnRzIHRoZSBzZWxlY3RlZCBwYXRoXG4tIGRyYWcgYW4gaW1hZ2UgZmlsZSBpbnRvIHRoZSB0ZXJtaW5hbCB0byBhdHRhY2ggaXQ6IGl0IGFwcGVhcnMgaW5saW5lIGFzIFxcYFtJbWFnZSAjTl1cXGAsIGV4YWN0bHkgd2hlcmUgeW91ciBjdXJzb3IgaXMsIHNvIGltYWdlcyBjYW4gc2l0IGJldHdlZW4gc2VudGVuY2VzOyBiYWNrc3BhY2UgYWZ0ZXIgb25lIHJlbW92ZXMgdGhlIHdob2xlIGF0dGFjaG1lbnRcbi0gXFxgdGFiXFxgIGNvbXBsZXRlczogXFxgL3N1bW08dGFiPlxcYCBmaW5pc2hlcyB0aGUgY29tbWFuZCBuYW1lIGFuZCBjeWNsZXMgdGhyb3VnaCBtYXRjaGVzIG9uIHJlcGVhdDsgYWZ0ZXIgYW4gYXJndW1lbnQgc3BhY2UgaXQgY29tcGxldGVzIHZhbHVlcyAoXFxgL21vZGVsIGZsYTx0YWI+XFxgLCBcXGAvY29sb3IgPHRhYj5cXGAsIFxcYC9lZmZvcnQgPHRhYj5cXGApIGFuZCBmaWxlIHBhdGhzIGZvciBza2lsbHMgYW5kIGNvbW1hbmRzLiBLZWVwIHR5cGluZyB0byBuYXJyb3csIHRhYiBvciBlbnRlciBpbnNlcnRzXG4tIFxcYHVwXFxgIGFuZCBcXGBkb3duXFxgIG9uIGFuIGVtcHR5IGNvbXBvc2VyIHJlY2FsbCBtZXNzYWdlcyB5b3UgYWxyZWFkeSBzZW50XG4tIFxcYGN0cmwrclxcYCBvcGVucyByZXdpbmQgKHNhbWUgYXMgXFxgL3Jld2luZFxcYCk7IFxcYC9oaXN0b3J5XFxgIGZ1enp5LXNlYXJjaGVzIHlvdXIgb2xkIHByb21wdHMgYW5kIHB1dHMgdGhlIHNlbGVjdGVkIG9uZSBiYWNrIGluIHRoZSBjb21wb3NlclxuLSBcXGBjdHJsK3NcXGAgb3BlbnMgdGhlIHNlc3Npb24gcGlja2VyIChzYW1lIGFzIFxcYC9yZXN1bWVcXGApOyBcXGBjdHJsK3RcXGAgb3BlbnMgdGhlIG1vZGVsIHBpY2tlclxuLSBcXGBjdHJsK3BcXGAgc3dpdGNoZXMgcHJvamVjdHM6IHBpY2sgb25lIGFuZCBwaWNvIGp1bXBzIHRvIGl0cyBtb3N0IHJlY2VudCBzZXNzaW9uLCBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRvb2xzLCBjb250ZXh0LCBhbmQgTUNQIHNlcnZlcnMgdG8gbWF0Y2g7IFxcYGN0cmwreFxcYCB0d2ljZSBkZWxldGVzIGEgcHJvamVjdCdzIHBpY28gaGlzdG9yeSAoYWxsIGl0cyBzZXNzaW9ucyBhbmQgbWVtb3JpZXMpOyBcXGAvbmV3XFxgIHN0YXJ0cyBhIGZyZXNoIHNlc3Npb24gaW4gdGhlIGN1cnJlbnQgcHJvamVjdFxuLSBcXGBjdHJsK2JcXGAgY3ljbGVzIHRoaW5raW5nIGVmZm9ydCAoZGVmYXVsdCwgbG93LCBtZWRpdW0sIGhpZ2gsIG1heCkgb24gbW9kZWxzIHRoYXQgc3VwcG9ydCBpdDsgXFxgL2VmZm9ydFxcYCBvcGVucyB0aGUgZnVsbCBwaWNrZXJcbi0gaW5zaWRlIGEgc2VhcmNoIHBhbmVsLCBcXGBjdHJsK3NcXGAgY3ljbGVzIHRoZSBzY29wZSBpbnN0ZWFkOiB0aGlzIHNlc3Npb24sIHRoaXMgcHJvamVjdCwgb3IgZXZlcnl3aGVyZVxuLSBcXGAvcmV3aW5kXFxgIHJlc3RvcmVzIHRoZSBjb252ZXJzYXRpb24gdG8gYW4gZWFybGllciBtZXNzYWdlOyBhIHJld2luZCBjYW4gYmUgdW5kb25lIHdpdGggXFxgY3RybCt6XFxgXG4tIG1lc3NhZ2VzIHNlbnQgd2hpbGUgdGhlIGFnZW50IGlzIHJlc3BvbmRpbmcgcXVldWUgdXAgYWJvdmUgdGhlIGNvbXBvc2VyIGFuZCBhcmUgZGVsaXZlcmVkIGFzIG9uZSBtZXNzYWdlIHdoZW4gdGhlIHR1cm4gZmluaXNoZXM7IFxcYHVwXFxgIHB1bGxzIHRoZW0gYmFjayBmb3IgZWRpdGluZ1xuLSBcXGBlc2NcXGAgaW50ZXJydXB0cyBhIHN0cmVhbWluZyByZXNwb25zZSwgb3IgY2xlYXJzIHRoZSBjb21wb3NlciB3aGVuIGlkbGVcblxuIyMgTW92aW5nIGFyb3VuZFxuXG4tIFxcYHRhYlxcYCBzd2l0Y2hlcyBmb2N1cyBiZXR3ZWVuIHRoZSB0cmFuc2NyaXB0IGFuZCB0aGUgY29tcG9zZXJcbi0gd2l0aCB0aGUgdHJhbnNjcmlwdCBmb2N1c2VkLCBcXGB1cFxcYC9cXGBkb3duXFxgL1xcYGpcXGAvXFxga1xcYCBzY3JvbGwgYW5kIFxcYGdcXGAvXFxgR1xcYCBqdW1wIHRvIHRoZSBlbmRzXG4tIGxvbmcgc2Vzc2lvbnMgcmVuZGVyIG9ubHkgdGhlIG5ld2VzdCA1MCBtZXNzYWdlczsgc2Nyb2xsaW5nIHRvIHRoZSB2ZXJ5IHRvcCBsb2FkcyBvbGRlciBvbmVzIGluIGJhdGNoZXMgKHRoZSB0b3AgbGluZSBzaG93cyBob3cgbWFueSBhcmUgaGlkZGVuKVxuLSBcXGBjdHJsK29cXGAgZXhwYW5kcyBhbmQgY29sbGFwc2VzIHRvb2wgb3V0cHV0IGluIHRoZSB0cmFuc2NyaXB0XG4tIHRoZSBtb3VzZSB3aGVlbCBzY3JvbGxzOyBjbGljay1kcmFnIHNlbGVjdHMgdGV4dCBhbmQgY29waWVzIGl0IG9uIHJlbGVhc2Vcbi0gXFxgY3RybCtjXFxgIHR3aWNlIGV4aXRzXG5cbiMjIFNoZWxsc1xuXG5UaGUgYWdlbnQgY2FuIHJ1biBsb25nLWxpdmVkIHByb2Nlc3NlcyAoZGV2IHNlcnZlcnMsIHdhdGNoZXJzKSB3aXRoIFxcYGJhc2ggYmFja2dyb3VuZDogdHJ1ZVxcYCwgdGhlbiByZWFkIHRoZWlyIG91dHB1dCBhbmQgc3RvcCB0aGVtIGl0c2VsZi4gXFxgL3NoZWxsc1xcYCBsaXN0cyB0aGVtOiBlbnRlciBvcGVucyBhIGxpdmUgb3V0cHV0IHZpZXcsIGFuZCBcXGBjdHJsK3hcXGAgcmVtb3ZlcyB0aGUgc2VsZWN0ZWQgcm93IC0ga2lsbGluZyBhIHJ1bm5pbmcgc2hlbGwgKHByZXNzIHR3aWNlKSBvciBkaXNtaXNzaW5nIGEgZGVhZCBvbmUgKHNpbmdsZSBwcmVzcykuIEEgXFxgXHUyNjk5IE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcnVubmluZy4gV2hlbiBhIHNoZWxsIGV4aXRzIG9uIGl0cyBvd24sIHRoZSBhZ2VudCBpcyBub3RpZmllZCBhbmQgcmVzcG9uZHM7IHNoZWxscyBkaWUgd2l0aCBwaWNvLCBhbmQgcXVpdHRpbmcgd2FybnMgeW91IGlmIGFueSBhcmUgc3RpbGwgdXAuXG5cbiMjIFN1YnNjcmlwdGlvbnNcblxuXFxgL2Nvbm5lY3RcXGAgbGlzdHMgc3Vic2NyaXB0aW9uIHByb3ZpZGVycyB5b3UgY2FuIHNpZ24gaW4gd2l0aCBpbnN0ZWFkIG9mIEFQSSBrZXlzLiBPcGVuQUkgKENoYXRHUFQgLyBDb2RleCBwbGFuKSBzaWducyBpbiB0aHJvdWdoIHlvdXIgYnJvd3NlciB2aWEgT0F1dGg7IHRva2VucyBhcmUgc3RvcmVkIGluIFxcYH4vLnBpY28vYXV0aC5qc29uXFxgIGFuZCByZWZyZXNoZWQgYXV0b21hdGljYWxseSwgc28geW91IHNpZ24gaW4gb25jZS4gT25jZSBjb25uZWN0ZWQsIGNvZGV4IG1vZGVscyBhcHBlYXIgaW4gXFxgL21vZGVsXFxgLCBiaWxsZWQgdG8geW91ciBwbGFuLiBcXGBkXFxgIGluIHRoZSBwYW5lbCBkaXNjb25uZWN0cy5cblxuIyMgV2ViIHNlYXJjaFxuXG5XaXRoIGEgW2RyZWRnZV0oaHR0cHM6Ly9naXRodWIuY29tL2pvbmF0aGFucHllcnMvZHJlZGdlKSBlbmRwb2ludCBjb25maWd1cmVkLCB0aGUgYWdlbnQgZ2V0cyB0d28gZXh0cmEgdG9vbHM6IFxcYHdlYl9zZWFyY2hcXGAgKHJhbmtlZCByZXN1bHRzLCBHb29nbGUtc3R5bGUgb3BlcmF0b3JzKSBhbmQgXFxgd2ViX2ZldGNoXFxgIChhbnkgdXJsIGFzIGNsZWFuIHBhZ2luYXRlZCBtYXJrZG93biwgaW5jbHVkaW5nIHBkZiBhbmQgZG9jeCkuIENvbmZpZ3VyZSBpdCBhcyBcXGBcImRyZWRnZVwiOiB7IFwidXJsXCI6IFwiLi4uXCIsIFwiYXBpS2V5XCI6IFwiLi4uXCIgfVxcYCBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgLCBvciB3aXRoIFxcYERSRURHRV9VUkxcXGAgYW5kIFxcYERSRURHRV9BUElfS0VZXFxgLiBXaXRob3V0IGEgY29uZmlndXJlZCBlbmRwb2ludCB0aGUgdG9vbHMgYXJlIG5vdCBvZmZlcmVkIHRvIHRoZSBtb2RlbCBhdCBhbGwuXG5cbiMjIE1lbW9yeVxuXG5UaGUgYWdlbnQgc2F2ZXMgZHVyYWJsZSBmYWN0cyB3aXRoIHRoZSByZW1lbWJlciB0b29sOiBvbmUgZmlsZSBwZXIgbWVtb3J5IHVuZGVyIFxcYH4vLnBpY28vbWVtb3J5XFxgIChnbG9iYWwpIG9yIHRoZSBwcm9qZWN0J3MgZGlyZWN0b3J5IGluIFxcYH4vLnBpY28vcHJvamVjdHNcXGAuIE9ubHkgYSBvbmUtbGluZSBpbmRleCBpcyBpbiBpdHMgY29udGV4dDsgaXQgbG9hZHMgYSBzcGVjaWZpYyBtZW1vcnkgd2l0aCB0aGUgcmVjYWxsIHRvb2wgd2hlbiByZWxldmFudC4gXFxgL21lbW9yeVxcYCBsaXN0cyBldmVyeXRoaW5nIGl0IGtub3dzIHdpdGggYSBjb250ZW50IHByZXZpZXc6IFxcYGN0cmwrc1xcYCBjeWNsZXMgdGhlIHNjb3BlIGZpbHRlciAoYWxsLCBwcm9qZWN0LCBnbG9iYWwpIGFuZCBcXGBjdHJsK3hcXGAgdHdpY2UgZm9yZ2V0cyB0aGUgc2VsZWN0ZWQgbWVtb3J5LiBZb3UgY2FuIGFsc28gYXNrIHRoZSBhZ2VudCB0byByZW1lbWJlciwgZm9yZ2V0LCBvciBjbGVhbiB1cCBpdHMgbWVtb3JpZXMgaW4gcGxhaW4gbGFuZ3VhZ2UuXG5cbiMjIFdha2UtdXBzXG5cblRoZSBhZ2VudCBjYW4gc2NoZWR1bGUgb25lLXRpbWUgd2FrZS11cHMgZm9yIGl0c2VsZiB3aXRoIHRoZSBzY2hlZHVsZV93YWtldXAgdG9vbDogYWZ0ZXIgdGhlIGRlbGF5IGl0IHJlY2VpdmVzIGl0cyBvd24gbm90ZSBhcyBhIHN5c3RlbSBub3RpZmljYXRpb24gYW5kIGFjdHMgb24gaXQuIFJlY3VycmluZyBsb29wcyBhcmUganVzdCB0aGUgYWdlbnQgcmVzY2hlZHVsaW5nIGF0IHRoZSBlbmQgb2YgZWFjaCB3YWtlLXVwLiBcXGAvd2FrZXVwc1xcYCBsaXN0cyBwZW5kaW5nIG9uZXMgd2l0aCBsaXZlIGNvdW50ZG93bnM7IGVudGVyIG9yIFxcYGN0cmwreFxcYCBjYW5jZWxzIChwcmVzcyB0d2ljZSkuIEEgXFxgXHUyM0YwIE5cXGAgaW4gdGhlIGZvb3RlciBzaG93cyBob3cgbWFueSBhcmUgcGVuZGluZy4gV2FrZS11cHMgbGl2ZSBpbiBtZW1vcnkgYW5kIGFyZSBsb3N0IHdoZW4gcGljbyBleGl0cy5cblxuIyMgQXBwZWFyYW5jZVxuXG5waWNvIHBpY2tzIGEgbGlnaHQgb3IgZGFyayBwYWxldHRlIGF0IHN0YXJ0dXAgYnkgYXNraW5nIHRoZSB0ZXJtaW5hbCBmb3IgaXRzIGJhY2tncm91bmQgY29sb3IgKE9TQyAxMSksIHNvIGl0IG1hdGNoZXMgd2hhdGV2ZXIgdGhlbWUgeW91ciB0ZXJtaW5hbCB1c2VzLiBcXGAvdGhlbWVcXGAgb3BlbnMgYSBwaWNrZXIgdGhhdCBwcmV2aWV3cyBlYWNoIHRoZW1lIGFzIHlvdSBtb3ZlIGFuZCBwZXJzaXN0cyB5b3VyIGNob2ljZSBpbiBcXGB+Ly5waWNvL2NvbmZpZy5qc29uXFxgOyBcXGAvdGhlbWUgbGlnaHRcXGAsIFxcYC90aGVtZSBkYXJrXFxgLCBvciBcXGAvdGhlbWUgYXV0b1xcYCBhcHBsaWVzIG9uZSBkaXJlY3RseS4gXFxgL2NvbG9yXFxgIHRpbnRzIGEgc2luZ2xlIHNlc3Npb24ncyBhY2NlbnQgYW5kIGlzIGluZGVwZW5kZW50IG9mIHRoZSBwYWxldHRlLlxuXG4jIyBDb250ZXh0XG5cbnBpY28gcmVhZHMgQUdFTlRTLm1kIGZpbGVzIGF1dG9tYXRpY2FsbHk6IGEgZ2xvYmFsIG9uZSBmcm9tIH4vLnBpY28sIHRoZW4gZXZlcnkgYW5jZXN0b3Igb2YgeW91ciB3b3JraW5nIGRpcmVjdG9yeSB1cCB0byB0aGUgZ2l0IHJvb3QuIERlZXBlciBmaWxlcyB3aW4uIEFHRU5UUy5tZCBmaWxlcyBpbiBzdWJkaXJlY3RvcmllcyBsb2FkIGxhemlseSB0aGUgZmlyc3QgdGltZSBhIHRvb2wgdG91Y2hlcyB0aGF0IHN1YnRyZWUuIEluIGFueSBwcm9qZWN0IGRpcmVjdG9yeSB3aXRob3V0IGFuIEFHRU5UUy5tZCwgYSBDTEFVREUubWQgaXMgaG9ub3JlZCBhcyBhIGZhbGxiYWNrIHNvIGV4aXN0aW5nIHJlcG9zIHdvcmsgdW5jaGFuZ2VkOyBBR0VOVFMubWQgYWx3YXlzIHdpbnMgd2hlbiBib3RoIGV4aXN0LCBhbmQgdGhlIGZhbGxiYWNrIG5ldmVyIGFwcGxpZXMgdG8gdGhlIGdsb2JhbCBmaWxlLlxuXG5TZXNzaW9ucyBhcmUgc3RvcmVkIHVuZGVyIH4vLnBpY28gYXMganNvbmwgZXZlbnQgbG9nczsgXFxgL3Jlc3VtZVxcYCBmb2xkcyBvbmUgYmFjayBpbnRvIGV4YWN0bHkgdGhpcyB2aWV3LlxuXG5cXGAvY29udGV4dFxcYCBicmVha3MgZG93biB3aGF0IHRoZSBuZXh0IHJlcXVlc3Qgd2lsbCBjb250YWluIC0gc3lzdGVtIHByb21wdCwgdG9vbCBzY2hlbWFzLCBwcm9qZWN0IGluc3RydWN0aW9ucywgbWVtb3J5IGluZGV4LCBjb21wYWN0aW9uIHN1bW1hcnksIGFuZCBjb252ZXJzYXRpb24gLSB3aXRoIGFuIGVzdGltYXRlZCBzaXplIGZvciBlYWNoIHBpZWNlIG5leHQgdG8gdGhlIHByb3ZpZGVyLW1lYXN1cmVkIHRvdGFsLlxuXG5UaGUgZm9vdGVyJ3MgXFxgY3R4ICVcXGAgc2hvd3MgaG93IGZ1bGwgdGhlIG1vZGVsJ3MgY29udGV4dCBpcy4gQXQgODUlIHBpY28gYXV0by1jb21wYWN0czogdGhlIG9sZGVyIGNvbnZlcnNhdGlvbiBpcyBzdW1tYXJpemVkIGluIGEgc3RydWN0dXJlZCBmb3JtLCB0aGUgbW9zdCByZWNlbnQgdHVybnMgYXJlIGtlcHQgdmVyYmF0aW0sIGFuZCB0aGUgbW9kZWwgaXMgdG9sZCB3aGVyZSB0aGUgZnVsbCBzZXNzaW9uIGZpbGUgbGl2ZXMgc28gaXQgY2FuIHJlYWQgZXhhY3QgZGV0YWlscyBiYWNrIG9uIGRlbWFuZC4gTm90aGluZyB2aXNpYmxlIGNoYW5nZXMgaW4gdGhlIHRyYW5zY3JpcHQsIGFuZCByZXdpbmQgc3RpbGwgd29ya3MgYWNyb3NzIGl0LiBcXGAvY29tcGFjdFxcYCBydW5zIGl0IG1hbnVhbGx5IGFuZCB0YWtlcyBvcHRpb25hbCBmb2N1cyBpbnN0cnVjdGlvbnMgKFxcYC9jb21wYWN0IGZvY3VzIG9uIHRoZSBBUEkgY2hhbmdlc1xcYCkuIFNldCBcXGBcImF1dG9Db21wYWN0XCI6IGZhbHNlXFxgIGluIFxcYH4vLnBpY28vY29uZmlnLmpzb25cXGAgdG8gZGlzYWJsZSB0aGUgYXV0b21hdGljIHRyaWdnZXIuXG5cbi0tLVxuXG4qZXNjIHRha2VzIHlvdSBiYWNrIHRvIHRoZSBjb252ZXJzYXRpb24qYFxuXG5leHBvcnQgZnVuY3Rpb24gSGVscCh7IGNvbW1hbmRzLCBvbkNsb3NlIH0pIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBoZWlnaHQ6ICcxMDAlJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdZOiAxIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PnBpY28gXHUwMEI3IGhlbHA8L3RleHQ+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Plx1MjE5MVx1MjE5MyBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgPFNjcm9sbEJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSBmb2N1c2VkIHNjcm9sbGJhcj5cbiAgICAgICAgPE1hcmtkb3duIHRleHQ9e0hFTFBfVEVYVChjb21tYW5kcyl9IGNvZGVCZz17bnVsbH0gLz5cbiAgICAgIDwvU2Nyb2xsQm94PlxuICAgIDwvYm94PlxuICApXG59XG4iLCAiaW1wb3J0IHsgY3JlYXRlU2lnbmFsLCBCdXR0b24sIENoZWNrYm94LCBlYXNlLCBNZW51LCBQaWNrTGlzdCwgUmFkaW8sIFNjcm9sbEJveCwgVGV4dElucHV0LCB1c2VBbmltYXRlZCwgdXNlRm9jdXMsIHVzZUlucHV0LCB1c2VJbnRlcnZhbCwgdXNlTGF5b3V0IH0gZnJvbSAnQHRyZW5kci9jb3JlJ1xuaW1wb3J0IHsgYWNjZW50LCBGRywgRkdfU09GVCwgTVVURUQsIEZBSU5ULCBQQU5FTF9CRywgU0VMRUNUX0JHLCBSRUQgfSBmcm9tICcuL3RoZW1lLmpzJ1xuaW1wb3J0IHsgQW5pbWF0ZWRWYWx1ZSB9IGZyb20gJy4vYW5pbWF0ZWQtdmFsdWUuanN4J1xuaW1wb3J0IHsgaG9tZWRpciB9IGZyb20gJ25vZGU6b3MnXG5pbXBvcnQgeyBmdXp6eVNjb3JlIH0gZnJvbSAnLi9mdXp6eS5qcydcbmltcG9ydCB7IGZvcm1hdEh0dHBTZXJ2ZXJTcGVjLCBwYXJzZVNlcnZlclNwZWMsIHJlZGFjdFNlcnZlclNwZWMsIFJFREFDVEVEX0hFQURFUiB9IGZyb20gJy4uL2NvcmUvbWNwLmpzJ1xuXG5mdW5jdGlvbiBzaG9ydGVuSG9tZShwYXRoKSB7XG4gIGNvbnN0IGhvbWUgPSBob21lZGlyKClcbiAgcmV0dXJuIFN0cmluZyhwYXRoKS5zdGFydHNXaXRoKGhvbWUpID8gU3RyaW5nKHBhdGgpLnJlcGxhY2UoaG9tZSwgJ34nKSA6IFN0cmluZyhwYXRoKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGltZUFnbyhhdCkge1xuICBjb25zdCBzID0gTWF0aC5tYXgoMCwgTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIGF0KSAvIDEwMDApKVxuICBpZiAocyA8IDYwKSByZXR1cm4gYCR7c31zIGFnb2BcbiAgY29uc3QgbSA9IE1hdGguZmxvb3IocyAvIDYwKVxuICBpZiAobSA8IDYwKSByZXR1cm4gYCR7bX1tIGFnb2BcbiAgY29uc3QgaCA9IE1hdGguZmxvb3IobSAvIDYwKVxuICBpZiAoaCA8IDI0KSByZXR1cm4gYCR7aH1oIGFnb2BcbiAgcmV0dXJuIGAke01hdGguZmxvb3IoaCAvIDI0KX1kIGFnb2Bcbn1cblxuZnVuY3Rpb24gUGFuZWxGcmFtZSh7IHRpdGxlLCBoaW50LCByaWdodCwgY2hpbGRyZW4gfSkge1xuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSwgYmc6IFBBTkVMX0JHIH19PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgcGFkZGluZ1g6IDIsIHBhZGRpbmdUb3A6IDEgfX0+XG4gICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19Pnt0aXRsZX08L3RleHQ+XG4gICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSB9fSAvPlxuICAgICAgICAgIHtyaWdodH1cbiAgICAgICAgPC9ib3g+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57aGludH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBTRUxFQ1RfQkcsIG92ZXJmbG93OiAnY2xpcCcgfX0+eydcdTI1MDAnLnJlcGVhdChwcm9jZXNzLnN0ZG91dC5jb2x1bW5zIHx8IDgwKX08L3RleHQ+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgcGFkZGluZ0JvdHRvbTogMSB9fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpcm1QYW5lbCh7IHRpdGxlLCBtZXNzYWdlLCBjb25maXJtTGFiZWwgPSAnQ29uZmlybScsIGZvY3VzZWQsIG9uQ29uZmlybSwgb25DbG9zZSB9KSB7XG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ3JldHVybicpIHtcbiAgICAgIG9uQ29uZmlybSgpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPXt0aXRsZX0gaGludD17YGVudGVyOiAke2NvbmZpcm1MYWJlbC50b0xvd2VyQ2FzZSgpfSBcdTAwQjcgZXNjOiBjYW5jZWxgfT5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHIH19PnttZXNzYWdlfTwvdGV4dD5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IFJFRCwgYm9sZDogdHJ1ZSB9fT5UaGlzIGNhbm5vdCBiZSB1bmRvbmUuPC90ZXh0PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmZ1bmN0aW9uIENvbmZpZ0ZpZWxkKHsgZmllbGQsIHZhbHVlLCBmb2N1c2VkLCBmbSwgb25DaGFuZ2UgfSkge1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXQoKVxuICBmbS5pdGVtKGZpZWxkLm5hbWUsIGxheW91dClcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Cb3R0b206IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICA8Q2hlY2tib3ggY2hlY2tlZD17dmFsdWV9IGxhYmVsPXtmaWVsZC5sYWJlbH0gZm9jdXNlZD17Zm9jdXNlZH0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+XG4gICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57ZmllbGQucGF0aH08L3RleHQ+XG4gICAgICA8L2JveD5cbiAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgICAke2ZpZWxkLmRlc2N9YH08L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbmZpZ1BhbmVsKHsgdmFsdWVzLCBmb2N1c2VkLCBvbkNoYW5nZSwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiAnY2xvdWRzJyB9KVxuICBjb25zdCBmaWVsZHMgPSBbXG4gICAgeyBuYW1lOiAnY2xvdWRzJywgbGFiZWw6ICdDbG91ZCBhbmltYXRpb24nLCBkZXNjOiAnU2hvdyBhbmltYXRlZCBjbG91ZHMgb24gdGhlIGVtcHR5IHNjcmVlbicsIHBhdGg6ICdhbmltYXRpb24uY2xvdWRzJyB9LFxuICAgIHsgbmFtZTogJ2NvbXBhY3RUb29scycsIGxhYmVsOiAnQ29tcGFjdCB0b29sIGhpc3RvcnknLCBkZXNjOiAnU3VtbWFyaXplIGNvbnNlY3V0aXZlIHRvb2wgY2FsbHMgaW4gb25lIHJvdycsIHBhdGg6ICdkaXNwbGF5LmNvbXBhY3RUb29sSGlzdG9yeScgfSxcbiAgICB7IG5hbWU6ICdnaXRTdGF0dXMnLCBsYWJlbDogJ0dpdCBpbiBmb290ZXInLCBkZXNjOiAnU2hvdyBicmFuY2ggYW5kIGNoYW5nZWQgbGluZSBjb3VudHMgaW4gdGhlIGZvb3RlcicsIHBhdGg6ICdkaXNwbGF5LmdpdFN0YXR1cycgfSxcbiAgXVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ2VzY2FwZScpIHtcbiAgICAgIG9uQ2xvc2UoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIkNvbmZpZ3VyYXRpb25cIiBoaW50PVwidGFiOiBuZXh0IHNldHRpbmcgXHUwMEI3IHNwYWNlOiB0b2dnbGUgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgaGVpZ2h0OiAxMCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8U2Nyb2xsQm94IGZvY3VzZWQ9e2ZhbHNlfSBzY3JvbGxiYXIgZm9sbG93Rm9jdXM9e2ZtfSBmb2N1c1BhZGRpbmc9ezF9PlxuICAgICAgICAgIHtmaWVsZHMubWFwKChmaWVsZCkgPT4gKFxuICAgICAgICAgICAgPENvbmZpZ0ZpZWxkXG4gICAgICAgICAgICAgIGtleT17ZmllbGQubmFtZX1cbiAgICAgICAgICAgICAgZmllbGQ9e2ZpZWxkfVxuICAgICAgICAgICAgICB2YWx1ZT17dmFsdWVzW2ZpZWxkLm5hbWVdfVxuICAgICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkICYmIGZtLmlzKGZpZWxkLm5hbWUpfVxuICAgICAgICAgICAgICBmbT17Zm19XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IG9uQ2hhbmdlKGZpZWxkLm5hbWUsIHZhbHVlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY29wZVRhYnMoeyBzY29wZXMsIGFjdGl2ZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgIHtzY29wZXMubWFwKChzLCBpKSA9PiAoXG4gICAgICAgIDx0ZXh0IGtleT17c30gc3R5bGU9e3sgY29sb3I6IGkgPT09IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQsIGJvbGQ6IGkgPT09IGFjdGl2ZSB9fT57YCR7aSA+IDAgPyAnICAnIDogJyd9JHtzfWB9PC90ZXh0PlxuICAgICAgKSl9XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1vZGVsUGFuZWwoeyBtb2RlbHMsIGN1cnJlbnQsIGRlZmF1bHROYW1lLCBmb2N1c2VkLCBvblBpY2ssIG9uUGlja0RlZmF1bHQsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKG1vZGVsc1swXSB8fCBudWxsKVxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycgJiYgY3Vyc29yKCkpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoY3Vyc29yKCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU2VsZWN0IG1vZGVsXCIgaGludD1cImVudGVyOiB0aGlzIHNlc3Npb24gXHUwMEI3IGN0cmwrczogc2V0IGFzIGRlZmF1bHQgXHUwMEI3IGVzYzogY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXttb2RlbHN9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBtb2RlbHMuLi5cIlxuICAgICAgICAgIGZpbHRlcj17KHEsIG0pID0+IGZ1enp5U2NvcmUocSwgbS5uYW1lKSA+PSAwfVxuICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXtzZXRDdXJzb3J9XG4gICAgICAgICAgb25TdWJtaXQ9e29uUGlja31cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICBzY3JvbGxvZmY9ezF9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG0sIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb2ZmID0gbS5hdmFpbGFibGUgPT09IGZhbHNlXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBiZzogc2VsZWN0ZWQgPyAoZiA/IGFjY2VudCgpIDogU0VMRUNUX0JHKSA6IG51bGwsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBib2xkOiAhb2ZmLCBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogb2ZmID8gTVVURUQgOiBGRyB9fT57bS5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGN1cnJlbnQgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IGFjY2VudCgpIH19PnsnIFx1MjcxMyd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIHttLm5hbWUgPT09IGRlZmF1bHROYW1lICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT57JyBcdTAwQjcgZGVmYXVsdCd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBNVVRFRCB9fT5cbiAgICAgICAgICAgICAgICAgICAge29mZiA/IGBuZWVkcyAke20ua2V5SGludH1gIDogbS5wcmljZSA/IGAkJHttLnByaWNlLmlufSBpbiBcdTAwQjcgJCR7bS5wcmljZS5vdXR9IG91dGAgOiBtLnByb3ZpZGVyID09PSAnY29kZXgnID8gJ3N1YnNjcmlwdGlvbicgOiAncHJpY2UgdW5rbm93bid9XG4gICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IE1VVEVEIH19PnttLmRlc2N9PC90ZXh0PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIaXN0b3J5UGFuZWwoeyBwcm9tcHRzLCBzY29wZXMsIHNjb3BlSW5kZXgsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChwcm9tcHRzWzBdIHx8IG51bGwpXG4gIGNvbnN0IFtxdWVyeSwgc2V0UXVlcnldID0gY3JlYXRlU2lnbmFsKCcnKVxuICBjb25zdCBhbnlNYXRjaCA9IHByb21wdHMuc29tZSgocCkgPT4gZnV6enlTY29yZShxdWVyeSgpLCBwLnRleHQpID49IDApXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZVxuICAgICAgdGl0bGU9XCJTZWFyY2ggcHJvbXB0c1wiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGN0cmwrcyBzY29wZSBcdTAwQjcgZW50ZXIgdG8gZWRpdCBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAgPFBpY2tMaXN0XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17cHJvbXB0c31cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cImZpbHRlciBwcm9tcHRzLi4uXCJcbiAgICAgICAgICAgIGZpbHRlcj17KHEsIHApID0+IGZ1enp5U2NvcmUocSwgcC50ZXh0KSA+PSAwfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldFF1ZXJ5fVxuICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgb25TdWJtaXQ9eyhwKSA9PiBvblBpY2socC50ZXh0KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC50ZXh0LnJlcGxhY2UoL1xcbi9nLCAnICcpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogc2VsZWN0ZWQgPyAnYmxhY2snIDogRkFJTlQsIGRpbTogIXNlbGVjdGVkIH19PntgICAke3RpbWVBZ28ocC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge2FueU1hdGNoICYmIHByZXZpZXcoKSA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57cHJldmlldygpLnRleHQuc2xpY2UoMCwgMjAwMCl9PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgcHJvbXB0czwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmV3aW5kUGlja1BhbmVsKHsgZW50cmllcywgc3RhdHMsIGZvY3VzZWQsIG9uUGljaywgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtwcmV2aWV3LCBzZXRQcmV2aWV3XSA9IGNyZWF0ZVNpZ25hbChlbnRyaWVzWzBdIHx8IG51bGwpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlJld2luZCB0byBhIG1lc3NhZ2VcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGNob29zZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e2VudHJpZXN9XG4gICAgICAgICAgICBmb2N1c2VkPXtmb2N1c2VkfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVzc2FnZXMuLi5cIlxuICAgICAgICAgICAgZmlsdGVyPXsocSwgbSkgPT4gZnV6enlTY29yZShxLCBtLnRleHQpID49IDB9XG4gICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KG0pID0+IHNldFByZXZpZXcobSl9XG4gICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgb25DYW5jZWw9e29uQ2xvc2V9XG4gICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgIHJlbmRlckl0ZW09eyhtLCB7IHNlbGVjdGVkLCBmb2N1c2VkOiBmIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZHIH19PnttLnRleHQucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGQUlOVCwgZGltOiAhc2VsZWN0ZWQgfX0+e2AgICR7c3RhdHMobS5pbmRleCkubXNnc30gYWZ0ZXJgfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgcmV3aW5kaW5nIGhlcmUgZHJvcHMgJHtzdGF0cyhwcmV2aWV3KCkuaW5kZXgpLm1zZ3N9IGVudHJpZXNgfTwvdGV4dD5cbiAgICAgICAgICAgICAge3N0YXRzKHByZXZpZXcoKS5pbmRleCkuZWRpdHMubWFwKChtLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgPHRleHQga2V5PXtpfSBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgIFx1MjFBOSAke20udGl0bGV9YH08L3RleHQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkcgfX0+e3ByZXZpZXcoKS50ZXh0LnNsaWNlKDAsIDIwMDApfTwvdGV4dD5cbiAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWF0Y2hpbmcgbWVzc2FnZXM8L3RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9ib3g+XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJld2luZEFjdGlvblBhbmVsKHsgdGFyZ2V0LCBvcHRpb25zLCBmb2N1c2VkLCBvblN1Ym1pdCwgb25CYWNrIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBwYWRkaW5nWDogMiwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpLCBib2xkOiB0cnVlIH19PlJld2luZCBvcHRpb25zPC90ZXh0PlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PnsndG86ICd9PC90ZXh0PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt0YXJnZXQudGV4dC5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIDxNZW51XG4gICAgICAgICAgY291bnRlclxuICAgICAgICAgIGl0ZW1zPXtvcHRpb25zfVxuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgbWF4VmlzaWJsZT17NH1cbiAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICB2aW1LZXlzXG4gICAgICAgICAgb25TdWJtaXQ9e29uU3VibWl0fVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkJhY2t9XG4gICAgICAgICAgcmVuZGVySXRlbT17KG8sIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57by5sYWJlbH08L3RleHQ+XG4gICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7by5kZXNjfWB9PC90ZXh0PlxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PmVudGVyIHRvIGNvbmZpcm0gXHUwMEI3IGVzYyB0byBwaWNrIGEgZGlmZmVyZW50IG1lc3NhZ2U8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gdXNlRXNjYXBlKGZvY3VzZWQsIG9uQ2xvc2UpIHtcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKCkpIHJldHVyblxuICAgIGlmIChldmVudC5rZXkgPT09ICdlc2NhcGUnKSB7XG4gICAgICBvbkNsb3NlKClcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzdW1lUGFuZWwoeyBzZXNzaW9ucywgc2NvcGVzLCBzY29wZUluZGV4LCBsb2FkaW5nLCBmb2N1c2VkLCBjdXJyZW50SWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwoc2Vzc2lvbnNbMF0gfHwgbnVsbClcbiAgY29uc3Qgc2VsZWN0ZWRTZXNzaW9uID0gKCkgPT4ge1xuICAgIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHNlbGVjdGVkID0gcHJldmlldygpXG4gICAgcmV0dXJuIHNlc3Npb25zLmluY2x1ZGVzKHNlbGVjdGVkKSA/IHNlbGVjdGVkIDogbnVsbFxuICB9XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHNlbGVjdGVkID0gc2VsZWN0ZWRTZXNzaW9uKClcbiAgICBpZiAoZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBzZWxlY3RlZCkge1xuICAgICAgb25EZWxldGUoc2VsZWN0ZWQpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIlJlc3VtZSBhIHNlc3Npb25cIlxuICAgICAgaGludD1cIlx1MjE5MVx1MjE5MyB0byBtb3ZlIFx1MDBCNyBjdHJsK3Mgc2NvcGUgXHUwMEI3IGVudGVyIHRvIHJlc3VtZSBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCJcbiAgICAgIHJpZ2h0PXs8U2NvcGVUYWJzIHNjb3Blcz17c2NvcGVzfSBhY3RpdmU9e3Njb3BlSW5kZXh9IC8+fVxuICAgID5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGhlaWdodDogMTIsIG1hcmdpblRvcDogMSwgZ2FwOiAyIH19PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCB3aWR0aDogJzUwJScgfX0+XG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogTVVURUQgfX0+bG9hZGluZyBzZXNzaW9ucy4uLjwvdGV4dD5cbiAgICAgICAgICApIDogc2Vzc2lvbnMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8UGlja0xpc3RcbiAgICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgICBpdGVtcz17c2Vzc2lvbnN9XG4gICAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgIWxvYWRpbmd9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZmlsdGVyIHNlc3Npb25zLi4uXCJcbiAgICAgICAgICAgICAgZmlsdGVyPXsocSwgcykgPT4gZnV6enlTY29yZShxLCBzLnRpdGxlKSA+PSAwfVxuICAgICAgICAgICAgICBvbkN1cnNvckNoYW5nZT17KHMpID0+IHNldFByZXZpZXcocyl9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblBpY2t9XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsocywgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLmNvbG9yICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBzLmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cy50aXRsZS5yZXBsYWNlKC9cXG4vZywgJyAnKX08L3RleHQ+XG4gICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgIHtzLmhlYWRlci5pZCA9PT0gY3VycmVudElkICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBhY2NlbnQoKSwgZGltOiAhc2VsZWN0ZWQgfX0+IGN1cnJlbnQ8L3RleHQ+fVxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHt0aW1lQWdvKHMuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3NlbGVjdGVkU2Vzc2lvbigpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgJHtzZWxlY3RlZFNlc3Npb24oKS50dXJuc30gJHtzZWxlY3RlZFNlc3Npb24oKS50dXJucyA9PT0gMSA/ICd0dXJuJyA6ICd0dXJucyd9IFx1MDBCNyAke3RpbWVBZ28oc2VsZWN0ZWRTZXNzaW9uKCkuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQsIG92ZXJmbG93OiAndHJ1bmNhdGUnIH19PntzZWxlY3RlZFNlc3Npb24oKS5oZWFkZXIucm9vdH08L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGRyB9fT57c2VsZWN0ZWRTZXNzaW9uKCkudGl0bGUuc2xpY2UoMCwgNTAwKX08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHNlc3Npb25zPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZW1vcnlQYW5lbCh7IG1lbW9yaWVzLCBzY29wZXMsIHNjb3BlSW5kZXgsIGZvY3VzZWQsIG9uRm9yZ2V0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvckl0ZW0sIHNldEN1cnNvckl0ZW1dID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtwYW5lLCBzZXRQYW5lXSA9IGNyZWF0ZVNpZ25hbCgnbGlzdCcpXG4gIGNvbnN0IHByZXZpZXcgPSBtZW1vcmllcy5pbmNsdWRlcyhjdXJzb3JJdGVtKCkpID8gY3Vyc29ySXRlbSgpIDogbWVtb3JpZXNbMF0gfHwgbnVsbFxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAndGFiJyAmJiAhZXZlbnQuY3RybCAmJiAhZXZlbnQubWV0YSkge1xuICAgICAgc2V0UGFuZSgocCkgPT4gKHAgPT09ICdsaXN0JyA/ICdwcmV2aWV3JyA6ICdsaXN0JykpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnICYmIHByZXZpZXcpIHtcbiAgICAgIG9uRm9yZ2V0KHByZXZpZXcpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lXG4gICAgICB0aXRsZT1cIk1lbW9yeVwiXG4gICAgICBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IHRhYjogZm9jdXMgcHJldmlldyBcdTAwQjcgY3RybCtzIHNjb3BlIFx1MDBCNyBjdHJsK3ggZm9yZ2V0ICh0d2ljZSkgXHUwMEI3IGVzYyB0byBjbG9zZVwiXG4gICAgICByaWdodD17PFNjb3BlVGFicyBzY29wZXM9e3Njb3Blc30gYWN0aXZlPXtzY29wZUluZGV4fSAvPn1cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHttZW1vcmllcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gbWVtb3JpZXMgaGVyZSB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXttZW1vcmllc31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiBwYW5lKCkgPT09ICdsaXN0J31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgbWVtb3JpZXMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBtKSA9PiBmdXp6eVNjb3JlKHEsIGAke20ubmFtZX0gJHttLmRlc2NyaXB0aW9ufWApID49IDB9XG4gICAgICAgICAgICAgIG9uQ3Vyc29yQ2hhbmdlPXtzZXRDdXJzb3JJdGVtfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KCkgPT4ge319XG4gICAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzY3JvbGxiYXJcbiAgICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgICByZW5kZXJJdGVtPXsobSwgeyBzZWxlY3RlZCwgZm9jdXNlZDogZiB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JywgYmc6IHNlbGVjdGVkID8gKGYgPyBhY2NlbnQoKSA6IFNFTEVDVF9CRykgOiBudWxsLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57bS5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHttLnNjb3BlfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgZmxleEdyb3c6IDEsIGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAge3ByZXZpZXcgPyAoXG4gICAgICAgICAgICA8U2Nyb2xsQm94IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgcGFuZSgpID09PSAncHJldmlldyd9IHNjcm9sbGJhcj5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVELCBpdGFsaWM6IHRydWUgfX0+e3ByZXZpZXcuZGVzY3JpcHRpb24gfHwgJ25vIGRlc2NyaXB0aW9uJ308L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntwcmV2aWV3LmJvZHl9PC90ZXh0PlxuICAgICAgICAgICAgPC9TY3JvbGxCb3g+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBtZW1vcmllczwvdGV4dD5cbiAgICAgICAgICApfVxuICAgICAgICA8L2JveD5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gRWZmb3J0UGFuZWwoeyBsZXZlbHMsIGN1cnJlbnQsIGRlZmF1bHRMZXZlbCwgZm9jdXNlZCwgb25QaWNrLCBvblBpY2tEZWZhdWx0LCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2N1cnNvciwgc2V0Q3Vyc29yXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICBjb25zdCBpdGVtcyA9IGxldmVsc1xuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAncycpIHtcbiAgICAgIG9uUGlja0RlZmF1bHQoaXRlbXNbY3Vyc29yKCldKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgbGFiZWwgPSAobCkgPT4gKGwua2V5ID09PSBudWxsID8gJ2RlZmF1bHQnIDogbC5rZXkpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlRoaW5raW5nIGVmZm9ydFwiIGhpbnQ9XCJqL2sgdG8gbW92ZSBcdTAwQjcgZW50ZXI6IHRoaXMgc2Vzc2lvbiBcdTAwQjcgY3RybCtzOiBzZXQgYXMgZGVmYXVsdCBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2N1cnNvcigpfVxuICAgICAgICAgIG9uU2VsZWN0PXtzZXRDdXJzb3J9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyhsLCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57bGFiZWwobCkucGFkRW5kKE1hdGgubWF4KDEwLCBsYWJlbChsKS5sZW5ndGggKyAxKSl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2wuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIHtsLmtleSA9PT0gY3VycmVudCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57JyAgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgICB7bC5rZXkgPT09IGRlZmF1bHRMZXZlbCAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+eycgIFx1MDBCNyBkZWZhdWx0J308L3RleHQ+fVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gVGhlbWVQYW5lbCh7IHRoZW1lcywgcHJlZiwgZm9jdXNlZCwgb25QaWNrLCBvblByZXZpZXcsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbY3Vyc29yLCBzZXRDdXJzb3JdID0gY3JlYXRlU2lnbmFsKE1hdGgubWF4KDAsIHRoZW1lcy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSBwcmVmKSkpXG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZWxGcmFtZSB0aXRsZT1cIlRoZW1lXCIgaGludD1cImovayB0byBtb3ZlIGFuZCBwcmV2aWV3IFx1MDBCNyBlbnRlciB0byBhcHBseSBcdTAwQjcgZXNjOiBjbG9zZVwiPlxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICA8TWVudVxuICAgICAgICAgIGl0ZW1zPXt0aGVtZXN9XG4gICAgICAgICAgc2VsZWN0ZWQ9e2N1cnNvcigpfVxuICAgICAgICAgIG9uU2VsZWN0PXsoaSkgPT4ge1xuICAgICAgICAgICAgc2V0Q3Vyc29yKGkpXG4gICAgICAgICAgICBvblByZXZpZXcodGhlbWVzW2ldKVxuICAgICAgICAgIH19XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs2fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgIHJlbmRlckl0ZW09eyh0LCB7IGFjdGl2ZSB9KSA9PiAoXG4gICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBGRyB9fT57dC5rZXkucGFkRW5kKE1hdGgubWF4KDEwLCB0LmtleS5sZW5ndGggKyAxKSl9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3QuZGVzY308L3RleHQ+XG4gICAgICAgICAgICAgIHt0LmtleSA9PT0gcHJlZiAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWN0aXZlID8gYWNjZW50KCkgOiBNVVRFRCB9fT57JyAgXHUyNzEzJ308L3RleHQ+fVxuICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgLz5cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBDb250ZXh0T3ZlcnZpZXcoeyBvdmVydmlldyB9KSB7XG4gIGNvbnN0IHJldmVhbCA9IHVzZUFuaW1hdGVkKDAsIGVhc2UoNzAwKSlcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0KClcbiAgcmV2ZWFsLnNldCgxKVxuICBjb25zdCB3aWR0aCA9IE1hdGgubWF4KDEsIGxheW91dC53aWR0aCB8fCAxKVxuICBjb25zdCB2aXNpYmxlID0gTWF0aC5yb3VuZCh3aWR0aCAqIHJldmVhbCgpKVxuICBjb25zdCB0b3RhbCA9IG92ZXJ2aWV3LnNlZ21lbnRzLnJlZHVjZSgoc3VtLCBzZWdtZW50KSA9PiBzdW0gKyBzZWdtZW50LnRva2VucywgMClcbiAgbGV0IGJvdW5kYXJ5ID0gMFxuICBjb25zdCBjZWxscyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IG92ZXJ2aWV3LnNlZ21lbnRzLmZpbmQoKGl0ZW0pID0+IHtcbiAgICAgIGJvdW5kYXJ5ICs9IGl0ZW0udG9rZW5zIC8gdG90YWwgKiB3aWR0aFxuICAgICAgcmV0dXJuIGkgPCBib3VuZGFyeVxuICAgIH0pXG4gICAgYm91bmRhcnkgPSAwXG4gICAgY2VsbHMucHVzaChcbiAgICAgIDx0ZXh0IGtleT17aX0gc3R5bGU9e3sgY29sb3I6IGkgPj0gdmlzaWJsZSA/IFBBTkVMX0JHIDogc2VnbWVudD8uY29sb3IgfHwgRkFJTlQgfX0+XG4gICAgICAgIHtpID49IHZpc2libGUgPyAnICcgOiBzZWdtZW50ID8gJ1x1MjU4OCcgOiAnXHUyNTkxJ31cbiAgICAgIDwvdGV4dD4sXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PntjZWxsc308L2JveD5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGZsZXhXcmFwOiAnd3JhcCcgfX0+XG4gICAgICAgIHtvdmVydmlldy5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IChcbiAgICAgICAgICA8Ym94IGtleT17c2VnbWVudC5sYWJlbH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIG1hcmdpblJpZ2h0OiAyIH19PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlZ21lbnQuY29sb3IgfX0+XHUyNUEwPC90ZXh0PlxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PntgICR7c2VnbWVudC5sYWJlbH0gYH08L3RleHQ+XG4gICAgICAgICAgICA8QW5pbWF0ZWRWYWx1ZVxuICAgICAgICAgICAgICB2YWx1ZT17c2VnbWVudC50b2tlbnN9XG4gICAgICAgICAgICAgIGluaXRpYWw9ezB9XG4gICAgICAgICAgICAgIGR1cmF0aW9uPXsyMDAwfVxuICAgICAgICAgICAgICBjb2xvcj17RkFJTlR9XG4gICAgICAgICAgICAgIGhpZ2hsaWdodD17YWNjZW50KCl9XG4gICAgICAgICAgICAgIGZvcm1hdD17KHRva2VucykgPT4gdG9rZW5zIDwgMTAwMCA/IGAke01hdGgucm91bmQodG9rZW5zKX0gdG9rYCA6IGAkeyh0b2tlbnMgLyAxMDAwKS50b0ZpeGVkKDEpfWtgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgKSl9XG4gICAgICA8L2JveD5cbiAgICA8L2JveD5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gSW5mb0xpc3RQYW5lbCh7IHRpdGxlLCByb3dzLCBvdmVydmlldywgZm9jdXNlZCwgb25DbG9zZSB9KSB7XG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCBvbkNsb3NlKVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9e3RpdGxlfSBoaW50PVwiai9rIG9yIFx1MjE5MVx1MjE5MyB0byBzY3JvbGwgXHUwMEI3IGVzYyBjbG9zZVwiPlxuICAgICAge292ZXJ2aWV3ICYmIDxDb250ZXh0T3ZlcnZpZXcgb3ZlcnZpZXc9e292ZXJ2aWV3fSAvPn1cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTQsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3Jvd3MubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ub3RoaW5nIGhlcmUgeWV0PC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAge3Jvd3MubWFwKChyb3csIGkpID0+IChcbiAgICAgICAgICAgICAgPGJveCBrZXk9e2Ake3Jvdy5uYW1lfS0ke2l9YH0gc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogaSA9PT0gMCA/IDAgOiAxIH19PlxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycgfX0+XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e3Jvdy5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIHtyb3cubm90ZSAmJiA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e3Jvdy5ub3RlfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19Pntyb3cuZGVzYyB8fCAnbm8gZGVzY3JpcHRpb24nfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1Njcm9sbEJveD5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJvamVjdFBhbmVsKHsgcHJvamVjdHMsIGxvYWRpbmcsIGZvY3VzZWQsIG9uUGljaywgb25EZWxldGUsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbcHJldmlldywgc2V0UHJldmlld10gPSBjcmVhdGVTaWduYWwocHJvamVjdHNbMF0gfHwgbnVsbClcbiAgdXNlRXNjYXBlKCgpID0+IGZvY3VzZWQsIG9uQ2xvc2UpXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCkgcmV0dXJuXG4gICAgaWYgKGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcgJiYgcHJldmlldygpKSB7XG4gICAgICBvbkRlbGV0ZShwcmV2aWV3KCkpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiU3dpdGNoIHByb2plY3RcIiBoaW50PVwiXHUyMTkxXHUyMTkzIHRvIG1vdmUgXHUwMEI3IGVudGVyIHRvIGp1bXAgdG8gaXRzIGxhc3Qgc2Vzc2lvbiBcdTAwQjcgY3RybCt4IGRlbGV0ZSBcdTAwQjcgZXNjIHRvIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEyLCBtYXJnaW5Ub3A6IDEsIGdhcDogMiB9fT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgd2lkdGg6ICc1MCUnIH19PlxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IE1VVEVEIH19PmxvYWRpbmcgcHJvamVjdHMuLi48L3RleHQ+XG4gICAgICAgICAgKSA6IHByb2plY3RzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBrbm93biBwcm9qZWN0cyB5ZXQ8L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxQaWNrTGlzdFxuICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgIGl0ZW1zPXtwcm9qZWN0c31cbiAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZCAmJiAhbG9hZGluZ31cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJmaWx0ZXIgcHJvamVjdHMuLi5cIlxuICAgICAgICAgICAgICBmaWx0ZXI9eyhxLCBwKSA9PiBmdXp6eVNjb3JlKHEsIHAucGF0aCkgPj0gMH1cbiAgICAgICAgICAgICAgb25DdXJzb3JDaGFuZ2U9eyhwKSA9PiBzZXRQcmV2aWV3KHApfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25QaWNrfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgcmVuZGVySXRlbT17KHAsIHsgc2VsZWN0ZWQsIGZvY3VzZWQ6IGYgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ3JvdycsIGJnOiBzZWxlY3RlZCA/IChmID8gYWNjZW50KCkgOiBTRUxFQ1RfQkcpIDogbnVsbCwgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICAgICAgICB7cC5sYXRlc3QuY29sb3IgJiYgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IHAubGF0ZXN0LmNvbG9yIH19PnsnXHUyNUFBICd9PC90ZXh0Pn1cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzZWxlY3RlZCA/ICdibGFjaycgOiBGRyB9fT57cC5wYXRofTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHNlbGVjdGVkID8gJ2JsYWNrJyA6IEZBSU5ULCBkaW06ICFzZWxlY3RlZCB9fT57YCAgJHtwLmN1cnJlbnQgPyAnY3VycmVudCBcdTAwQjcgJyA6ICcnfSR7dGltZUFnbyhwLmxhdGVzdC5hdCl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBmbGV4R3JvdzogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICB7cHJldmlldygpID8gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZHLCBvdmVyZmxvdzogJ3RydW5jYXRlJyB9fT57cHJldmlldygpLnBhdGh9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2Ake3ByZXZpZXcoKS5jb3VudH0gJHtwcmV2aWV3KCkuY291bnQgPT09IDEgPyAnc2Vzc2lvbicgOiAnc2Vzc2lvbnMnfSBcdTAwQjcgJHt0aW1lQWdvKHByZXZpZXcoKS5sYXRlc3QuYXQpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dD4gPC90ZXh0PlxuICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkdfU09GVCwgb3ZlcmZsb3c6ICd0cnVuY2F0ZScgfX0+e2BsYXN0OiAke3ByZXZpZXcoKS5sYXRlc3QudGl0bGUucmVwbGFjZSgvXFxuL2csICcgJyl9YH08L3RleHQ+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHByb2plY3RzPC90ZXh0PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTaGVsbHNQYW5lbCh7IHZlcnNpb24sIHNoZWxscywgcmVhZE91dHB1dCwgZm9jdXNlZCwgb25LaWxsLCBvbkRpc21pc3MsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbdmlld2luZywgc2V0Vmlld2luZ10gPSBjcmVhdGVTaWduYWwobnVsbClcbiAgY29uc3QgW2luZGV4LCBzZXRJbmRleF0gPSBjcmVhdGVTaWduYWwoMClcbiAgY29uc3QgW2ZvbGxvdywgc2V0Rm9sbG93XSA9IGNyZWF0ZVNpZ25hbCh0cnVlKVxuICBjb25zdCBbb2Zmc2V0LCBzZXRPZmZzZXRdID0gY3JlYXRlU2lnbmFsKDApXG4gIHVzZUVzY2FwZSgoKSA9PiBmb2N1c2VkLCAoKSA9PiAodmlld2luZygpID8gc2V0Vmlld2luZyhudWxsKSA6IG9uQ2xvc2UoKSkpXG4gIHZvaWQgdmVyc2lvblxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gc2hlbGxzW01hdGgubWluKGluZGV4KCksIHNoZWxscy5sZW5ndGggLSAxKV0gfHwgbnVsbFxuXG4gIHVzZUlucHV0KChldmVudCkgPT4ge1xuICAgIGlmICghZm9jdXNlZCB8fCB2aWV3aW5nKCkpIHJldHVyblxuICAgIGNvbnN0IHMgPSBzZWxlY3RlZCgpXG4gICAgaWYgKHMgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4Jykge1xuICAgICAgaWYgKHMuc3RhdHVzID09PSAncnVubmluZycpIG9uS2lsbChzKVxuICAgICAgZWxzZSBvbkRpc21pc3MocylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuXG4gIGNvbnN0IHVwdGltZSA9IChzKSA9PiB7XG4gICAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3IoKChzLmVuZGVkQXQgfHwgRGF0ZS5ub3coKSkgLSBzLnN0YXJ0ZWRBdCkgLyAxMDAwKVxuICAgIHJldHVybiBzZWNzIDwgNjAgPyBgJHtzZWNzfXNgIDogYCR7TWF0aC5mbG9vcihzZWNzIC8gNjApfW0ke3NlY3MgJSA2MH1zYFxuICB9XG5cbiAgaWYgKHZpZXdpbmcoKSkge1xuICAgIGNvbnN0IG91dCA9IHJlYWRPdXRwdXQodmlld2luZygpKVxuICAgIGlmICghb3V0KSB7XG4gICAgICBzZXRWaWV3aW5nKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmVzID0gb3V0Lm91dHB1dCA/IG91dC5vdXRwdXQuc3BsaXQoJ1xcbicpIDogW11cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgICAgdGl0bGU9e2BzaGVsbCAke291dC5pZH0gXHUwMEI3ICR7b3V0LmNvbW1hbmQuc2xpY2UoMCwgNjApfWB9XG4gICAgICAgICAgaGludD17YCR7b3V0LnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gJ3J1bm5pbmcnIDogYGV4aXRlZCBcdTAwQjcgY29kZSAke291dC5leGl0Q29kZX1gfSBcdTAwQjcgJHtvdXQudG90YWxMaW5lc30gbGluZXMgXHUwMEI3IGovayBzY3JvbGwgXHUwMEI3IGVzYyBiYWNrYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIGhlaWdodDogMTYsIG1hcmdpblRvcDogMSwgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIHtsaW5lcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT5ubyBvdXRwdXQgeWV0PC90ZXh0PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFNjcm9sbEJveFxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGZsZXhHcm93OiAxIH19XG4gICAgICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgICAgICBzY3JvbGxPZmZzZXQ9e2ZvbGxvdygpID8gMWU5IDogb2Zmc2V0KCl9XG4gICAgICAgICAgICAgICAgb25TY3JvbGw9eyhuZXh0LCBtZXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZXRGb2xsb3coISFtZXRhPy5hdEJvdHRvbSlcbiAgICAgICAgICAgICAgICAgIHNldE9mZnNldChuZXh0KVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgc2Nyb2xsYmFyXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7bGluZXMubWFwKChsaW5lLCBpKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8dGV4dCBrZXk9e2l9IHN0eWxlPXt7IGNvbG9yOiBGR19TT0ZUIH19PntsaW5lIHx8ICcgJ308L3RleHQ+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9QYW5lbEZyYW1lPlxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTaGVsbHNcIiBoaW50PVwiai9rIHRvIG1vdmUgXHUwMEI3IGVudGVyIHZpZXcgb3V0cHV0IFx1MDBCNyBjdHJsK3gga2lsbCBvciBkaXNtaXNzIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAge3NoZWxscy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIGJhY2tncm91bmQgc2hlbGxzIFx1MDBCNyB0aGUgYWdlbnQgc3RhcnRzIHRoZW0gd2l0aCBiYXNoIGJhY2tncm91bmQ6IHRydWU8L3RleHQ+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPE1lbnVcbiAgICAgICAgICAgIGNvdW50ZXJcbiAgICAgICAgICAgIGl0ZW1zPXtzaGVsbHN9XG4gICAgICAgICAgICBzZWxlY3RlZD17aW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRJbmRleH1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs2fVxuICAgICAgICAgICAgdmltS2V5c1xuICAgICAgICAgICAgb25TdWJtaXQ9eyhzKSA9PiB7XG4gICAgICAgICAgICAgIHNldEZvbGxvdyh0cnVlKVxuICAgICAgICAgICAgICBzZXRPZmZzZXQoMClcbiAgICAgICAgICAgICAgc2V0Vmlld2luZyhzLmlkKVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogYWNjZW50KCkgfX0+e2FjdGl2ZSA/ICdcdTIwM0EgJyA6ICcgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBzLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8gYWNjZW50KCkgOiBzLmV4aXRDb2RlID09PSAwID8gTVVURUQgOiBSRUQgfX0+XG4gICAgICAgICAgICAgICAgICB7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/ICdcdTI2OTknIDogcy5leGl0Q29kZSA9PT0gMCA/ICdcdTI3MTMnIDogJ1x1MjcxNyd9XG4gICAgICAgICAgICAgICAgPC90ZXh0PlxuICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgICR7cy5pZC5wYWRFbmQoTWF0aC5tYXgoMywgcy5pZC5sZW5ndGggKyAxKSl9YH08L3RleHQ+XG4gICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxLCBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgIHtzLmRlc2NyaXB0aW9uICYmIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBGRyA6IEZHX1NPRlQgfX0+e2Ake3MuZGVzY3JpcHRpb259ICBgfTwvdGV4dD59XG4gICAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IHMuZGVzY3JpcHRpb24gPyBGQUlOVCA6IGFjdGl2ZSA/IEZHIDogRkdfU09GVCB9fT57cy5jb21tYW5kfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+e2AgICR7cy5zdGF0dXMgPT09ICdydW5uaW5nJyA/IGB1cCAke3VwdGltZShzKX1gIDogYGV4aXQgJHtzLmV4aXRDb2RlfSBcdTAwQjcgJHt1cHRpbWUocyl9YH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2JveD5cbiAgICA8L1BhbmVsRnJhbWU+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbm5lY3RQYW5lbCh7IHByb3ZpZGVycywgZm9jdXNlZCwgb25Db25uZWN0LCBvbkRpc2Nvbm5lY3QsIG9uQ2xvc2UgfSkge1xuICBjb25zdCBbaW5kZXgsIHNldEluZGV4XSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcblxuICBjb25zdCBzZWxlY3RlZCA9ICgpID0+IHByb3ZpZGVyc1tNYXRoLm1pbihpbmRleCgpLCBwcm92aWRlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcblxuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGNvbnN0IHAgPSBzZWxlY3RlZCgpXG4gICAgaWYgKHAgJiYgZXZlbnQuY3RybCAmJiBldmVudC5rZXkgPT09ICd4JyAmJiBwLmNvbm5lY3RlZCkge1xuICAgICAgb25EaXNjb25uZWN0KHApXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxQYW5lbEZyYW1lIHRpdGxlPVwiQ29ubmVjdCBhIHN1YnNjcmlwdGlvblwiIGhpbnQ9XCJlbnRlciBzaWduIGluIFx1MDBCNyBjdHJsK3ggZGlzY29ubmVjdCAodHdpY2UpIFx1MDBCNyBlc2MgY2xvc2VcIj5cbiAgICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgICAgPE1lbnVcbiAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgaXRlbXM9e3Byb3ZpZGVyc31cbiAgICAgICAgICBzZWxlY3RlZD17aW5kZXgoKX1cbiAgICAgICAgICBvblNlbGVjdD17c2V0SW5kZXh9XG4gICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICBtYXhWaXNpYmxlPXs1fVxuICAgICAgICAgIHZpbUtleXNcbiAgICAgICAgICBvblN1Ym1pdD17KHApID0+IG9uQ29ubmVjdChwKX1cbiAgICAgICAgICBvbkNhbmNlbD17b25DbG9zZX1cbiAgICAgICAgICByZW5kZXJJdGVtPXsocCwgeyBhY3RpdmUgfSkgPT4gKFxuICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHAuY29ubmVjdGVkID8gYWNjZW50KCkgOiBNVVRFRCB9fT57cC5jb25uZWN0ZWQgPyAnXHUyNUFBJyA6ICdcdTI1QUInfTwvdGV4dD5cbiAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtwLmxhYmVsfSAgYH08L3RleHQ+XG4gICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEsIGhlaWdodDogMSB9fT5cbiAgICAgICAgICAgICAgICA8dGV4dCBzdHlsZT17eyBvdmVyZmxvdzogJ3RydW5jYXRlJywgY29sb3I6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAge3AuY29ubmVjdGVkID8gYGNvbm5lY3RlZCR7cC5lbWFpbCA/IGAgYXMgJHtwLmVtYWlsfWAgOiAnJ31gIDogJ25vdCBjb25uZWN0ZWQnfVxuICAgICAgICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICApfVxuICAgICAgICAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9QYW5lbEZyYW1lPlxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBXYWtldXBzUGFuZWwoeyB3YWtldXBzLCBmb2N1c2VkLCBvbkNhbmNlbCwgb25DbG9zZSB9KSB7XG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt0aWNrLCBzZXRUaWNrXSA9IGNyZWF0ZVNpZ25hbCgwKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCwgb25DbG9zZSlcbiAgdXNlSW50ZXJ2YWwoKCkgPT4gc2V0VGljaygodCkgPT4gdCArIDEpLCAxMDAwKVxuICB2b2lkIHRpY2soKVxuXG4gIGNvbnN0IHNlbGVjdGVkID0gKCkgPT4gd2FrZXVwc1tNYXRoLm1pbihpbmRleCgpLCB3YWtldXBzLmxlbmd0aCAtIDEpXSB8fCBudWxsXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBjb25zdCB3ID0gc2VsZWN0ZWQoKVxuICAgIGlmICh3ICYmIGV2ZW50LmN0cmwgJiYgZXZlbnQua2V5ID09PSAneCcpIHtcbiAgICAgIG9uQ2FuY2VsKHcpXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgfSlcblxuICBjb25zdCBjb3VudGRvd24gPSAoYXQpID0+IHtcbiAgICBjb25zdCBzZWNzID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoYXQgLSBEYXRlLm5vdygpKSAvIDEwMDApKVxuICAgIGlmIChzZWNzIDwgNjApIHJldHVybiBgaW4gJHtzZWNzfXNgXG4gICAgY29uc3QgbWlucyA9IE1hdGguZmxvb3Ioc2VjcyAvIDYwKVxuICAgIGlmIChtaW5zIDwgNjApIHJldHVybiBgaW4gJHttaW5zfW0gJHtzZWNzICUgNjB9c2BcbiAgICByZXR1cm4gYGluICR7TWF0aC5mbG9vcihtaW5zIC8gNjApfWggJHttaW5zICUgNjB9bWBcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWUgdGl0bGU9XCJTY2hlZHVsZWQgd2FrZS11cHNcIiBoaW50PVwiai9rIHRvIG1vdmUgXHUwMEI3IGVudGVyIG9yIGN0cmwreCBjYW5jZWwgKHR3aWNlKSBcdTAwQjcgZXNjIGNsb3NlXCI+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHt3YWtldXBzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICA8dGV4dCBzdHlsZT17eyBjb2xvcjogRkFJTlQgfX0+bm8gcGVuZGluZyB3YWtlLXVwcyBcdTAwQjcgdGhlIGFnZW50IHNjaGVkdWxlcyB0aGVtIHdpdGggc2NoZWR1bGVfd2FrZXVwPC90ZXh0PlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxNZW51XG4gICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICBpdGVtcz17d2FrZXVwc31cbiAgICAgICAgICAgIHNlbGVjdGVkPXtpbmRleCgpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e3NldEluZGV4fVxuICAgICAgICAgICAgZm9jdXNlZD17Zm9jdXNlZH1cbiAgICAgICAgICAgIG1heFZpc2libGU9ezV9XG4gICAgICAgICAgICBpdGVtSGVpZ2h0PXsyfVxuICAgICAgICAgICAgZ2FwPXsxfVxuICAgICAgICAgICAgdmltS2V5c1xuICAgICAgICAgICAgb25TdWJtaXQ9eyh3KSA9PiBvbkNhbmNlbCh3KX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHcsIHsgYWN0aXZlIH0pID0+IChcbiAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY3RpdmUgPyBhY2NlbnQoKSA6IEZHIH19PntgXHUyM0YwICR7dy5pZH1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDxib3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gLz5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57Y291bnRkb3duKHcuYXQpfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBGQUlOVCB9fT57YCAgJHtuZXcgRGF0ZSh3LmF0KS50b0xvY2FsZVRpbWVTdHJpbmcoKX1gfTwvdGV4dD5cbiAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEsIGZsZXhEaXJlY3Rpb246ICdyb3cnIH19PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PnsnICAgICd9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBGR19TT0ZUIH19Pnt3Lm5vdGUucmVwbGFjZSgvXFxuL2csICcgJyl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5jb25zdCBNQ1BfU1RBVFVTID0ge1xuICBjb25uZWN0ZWQ6IHsgaWNvbjogJ1x1MjVBQScsIGNvbG9yOiBhY2NlbnQoKSB9LFxuICBjb25uZWN0aW5nOiB7IGljb246ICdcdTI1Q0MnLCBjb2xvcjogJyNmYmJmMjQnIH0sXG4gIGVycm9yOiB7IGljb246ICdcdTI3MTcnLCBjb2xvcjogUkVEIH0sXG4gIGRpc2FibGVkOiB7IGljb246ICdcdTI1QUInLCBjb2xvcjogRkFJTlQgfSxcbiAgaWRsZTogeyBpY29uOiAnXHUyNUFCJywgY29sb3I6IE1VVEVEIH0sXG59XG5cbmZ1bmN0aW9uIEZvcm1GaWVsZCh7IGxhYmVsLCBhY3RpdmUsIGNoaWxkcmVuIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkFJTlQgfX0+e2xhYmVsfTwvdGV4dD5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDx0ZXh0PiA8L3RleHQ+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZnVuY3Rpb24gTWNwU2VydmVyRm9ybSh7IGZvY3VzZWQsIHNlcnZlciwgb25TYXZlLCBvbkludmFsaWQsIG9uQ2FuY2VsIH0pIHtcbiAgY29uc3QgaW5pdGlhbCA9IHNlcnZlciA/IHBhcnNlU2VydmVyU3BlYyhzZXJ2ZXIuY29tbWFuZCkgOiBudWxsXG4gIGNvbnN0IGVkaXRpbmcgPSAhIXNlcnZlclxuICBjb25zdCBbbmFtZSwgc2V0TmFtZV0gPSBjcmVhdGVTaWduYWwoc2VydmVyPy5uYW1lIHx8ICcnKVxuICBjb25zdCBbc2NvcGUsIHNldFNjb3BlXSA9IGNyZWF0ZVNpZ25hbChzZXJ2ZXI/LnNjb3BlIHx8ICdnbG9iYWwnKVxuICBjb25zdCBbdHJhbnNwb3J0LCBzZXRUcmFuc3BvcnRdID0gY3JlYXRlU2lnbmFsKGluaXRpYWw/LnR5cGUgfHwgJ3N0ZGlvJylcbiAgY29uc3QgW3RhcmdldCwgc2V0VGFyZ2V0XSA9IGNyZWF0ZVNpZ25hbChpbml0aWFsPy50eXBlID09PSAnaHR0cCcgPyBpbml0aWFsLnVybCA6IHNlcnZlcj8uY29tbWFuZCB8fCAnJylcbiAgY29uc3QgaW5pdGlhbEhlYWRlcnMgPSBpbml0aWFsPy50eXBlID09PSAnaHR0cCdcbiAgICA/IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhpbml0aWFsLmhlYWRlcnMpLm1hcCgobmFtZSkgPT4gW25hbWUsIFJFREFDVEVEX0hFQURFUl0pKVxuICAgIDoge31cbiAgY29uc3QgW2hlYWRlcnMsIHNldEhlYWRlcnNdID0gY3JlYXRlU2lnbmFsKGZvcm1hdEh0dHBTZXJ2ZXJTcGVjKCcnLCBpbml0aWFsSGVhZGVycykudHJpbSgpKVxuXG4gIGNvbnN0IGZtID0gdXNlRm9jdXMoeyBpbml0aWFsOiBlZGl0aW5nID8gJ3RyYW5zcG9ydCcgOiAnbmFtZScgfSlcbiAgaWYgKCFlZGl0aW5nKSB7XG4gICAgZm0uaXRlbSgnbmFtZScpXG4gICAgZm0uaXRlbSgnc2NvcGUnKVxuICB9XG4gIGZtLml0ZW0oJ3RyYW5zcG9ydCcpXG4gIGZtLml0ZW0oJ3RhcmdldCcpXG4gIGlmICh0cmFuc3BvcnQoKSA9PT0gJ2h0dHAnKSBmbS5pdGVtKCdoZWFkZXJzJylcbiAgZm0uaXRlbSgnc2F2ZScpXG4gIGZtLml0ZW0oJ2NhbmNlbCcpXG5cbiAgdXNlSW5wdXQoKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFmb2N1c2VkKSByZXR1cm5cbiAgICBpZiAoZXZlbnQua2V5ID09PSAnZXNjYXBlJykge1xuICAgICAgb25DYW5jZWwoKVxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH0pXG5cbiAgY29uc3QgaHR0cCA9IHRyYW5zcG9ydCgpID09PSAnaHR0cCdcblxuICBjb25zdCBzdWJtaXQgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2VydmVyTmFtZSA9IG5hbWUoKS50cmltKClcbiAgICBjb25zdCB2YWx1ZSA9IHRhcmdldCgpLnRyaW0oKVxuICAgIGlmICghc2VydmVyTmFtZSB8fCAvXFxzLy50ZXN0KHNlcnZlck5hbWUpKSByZXR1cm4gb25JbnZhbGlkKCduYW1lIGlzIHJlcXVpcmVkIGFuZCBjYW5ub3QgY29udGFpbiBzcGFjZXMnKVxuICAgIGlmICghdmFsdWUpIHJldHVybiBvbkludmFsaWQoaHR0cCA/ICd1cmwgaXMgcmVxdWlyZWQnIDogJ2NvbW1hbmQgaXMgcmVxdWlyZWQnKVxuICAgIGlmIChodHRwICYmICEvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCd1cmwgbXVzdCBzdGFydCB3aXRoIGh0dHA6Ly8gb3IgaHR0cHM6Ly8nKVxuICAgIGlmICghaHR0cCAmJiAvXmh0dHBzPzpcXC9cXC8vLnRlc3QodmFsdWUpKSByZXR1cm4gb25JbnZhbGlkKCdhIHN0ZGlvIGNvbW1hbmQgY2Fubm90IHN0YXJ0IHdpdGggYSB1cmw7IHBpY2sgdGhlIGh0dHAgdHJhbnNwb3J0JylcbiAgICBjb25zdCBleHRyYSA9IGhlYWRlcnMoKS50cmltKClcbiAgICBsZXQgc3BlYyA9IGh0dHAgJiYgZXh0cmEgPyBgJHt2YWx1ZX0gJHtleHRyYX1gIDogdmFsdWVcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VTZXJ2ZXJTcGVjKHNwZWMpXG4gICAgICBpZiAocGFyc2VkLnR5cGUgPT09ICdodHRwJyAmJiBpbml0aWFsPy50eXBlID09PSAnaHR0cCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaGVhZGVyLCBoZWFkZXJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyc2VkLmhlYWRlcnMpKSB7XG4gICAgICAgICAgaWYgKGhlYWRlclZhbHVlID09PSBSRURBQ1RFRF9IRUFERVIgJiYgaW5pdGlhbC5oZWFkZXJzW2hlYWRlcl0gIT09IHVuZGVmaW5lZCkgcGFyc2VkLmhlYWRlcnNbaGVhZGVyXSA9IGluaXRpYWwuaGVhZGVyc1toZWFkZXJdXG4gICAgICAgIH1cbiAgICAgICAgc3BlYyA9IGZvcm1hdEh0dHBTZXJ2ZXJTcGVjKHBhcnNlZC51cmwsIHBhcnNlZC5oZWFkZXJzKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIG9uSW52YWxpZChlcnIubWVzc2FnZSlcbiAgICB9XG4gICAgb25TYXZlKHNlcnZlck5hbWUsIHNwZWMsIHNjb3BlKCkpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxib3ggc3R5bGU9e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsIG1hcmdpblRvcDogMSB9fT5cbiAgICAgIHshZWRpdGluZyAmJiAoXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCJuYW1lXCIgYWN0aXZlPXtmbS5pcygnbmFtZScpfT5cbiAgICAgICAgICA8Ym94IHN0eWxlPXt7IGJnOiBQQU5FTF9CRywgcGFkZGluZ1g6IDEgfX0+XG4gICAgICAgICAgICA8VGV4dElucHV0IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ25hbWUnKX0gcGxhY2Vob2xkZXI9XCJsaW5lYXJcIiBvbkNoYW5nZT17c2V0TmFtZX0gLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgeyFlZGl0aW5nICYmIChcbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cInNjb3BlXCIgYWN0aXZlPXtmbS5pcygnc2NvcGUnKX0+XG4gICAgICAgICAgPFJhZGlvIG9wdGlvbnM9e1snZ2xvYmFsJywgJ3Byb2plY3QnXX0gc2VsZWN0ZWQ9e3Njb3BlKCl9IG9uQ2hhbmdlPXtzZXRTY29wZX0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnc2NvcGUnKX0gLz5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cInRyYW5zcG9ydFwiIGFjdGl2ZT17Zm0uaXMoJ3RyYW5zcG9ydCcpfT5cbiAgICAgICAgPFJhZGlvIG9wdGlvbnM9e1snc3RkaW8nLCAnaHR0cCddfSBzZWxlY3RlZD17dHJhbnNwb3J0KCl9IG9uQ2hhbmdlPXtzZXRUcmFuc3BvcnR9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3RyYW5zcG9ydCcpfSAvPlxuICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICA8Rm9ybUZpZWxkIGxhYmVsPXtodHRwID8gJ3VybCcgOiAnY29tbWFuZCd9IGFjdGl2ZT17Zm0uaXMoJ3RhcmdldCcpfT5cbiAgICAgICAgPGJveCBzdHlsZT17eyBiZzogUEFORUxfQkcsIHBhZGRpbmdYOiAxIH19PlxuICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3RhcmdldCcpfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2h0dHAgPyAnaHR0cHM6Ly9tY3AubGluZWFyLmFwcC9tY3AnIDogJ25weCAteSBAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2VydmVyLWZpbGVzeXN0ZW0gL3RtcCd9XG4gICAgICAgICAgICBpbml0aWFsVmFsdWU9e3RhcmdldCgpfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3NldFRhcmdldH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2JveD5cbiAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAge2h0dHAgJiYgKFxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwiaGVhZGVycyBcdTAwQjcgb3B0aW9uYWxcIiBhY3RpdmU9e2ZtLmlzKCdoZWFkZXJzJyl9PlxuICAgICAgICAgIDxib3ggc3R5bGU9e3sgYmc6IFBBTkVMX0JHLCBwYWRkaW5nWDogMSB9fT5cbiAgICAgICAgICAgIDxUZXh0SW5wdXQgZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnaGVhZGVycycpfSBwbGFjZWhvbGRlcj0nQXV0aG9yaXphdGlvbj1cIkJlYXJlciAuLi5cIiBYLVRlYW09XCJjb3JlXCInIGluaXRpYWxWYWx1ZT17aGVhZGVycygpfSBvbkNoYW5nZT17c2V0SGVhZGVyc30gLz5cbiAgICAgICAgICA8L2JveD5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICApfVxuICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgPEJ1dHRvbiBsYWJlbD17ZWRpdGluZyA/ICdzYXZlJyA6ICdhZGQnfSBvblByZXNzPXtzdWJtaXR9IGZvY3VzZWQ9e2ZvY3VzZWQgJiYgZm0uaXMoJ3NhdmUnKX0gLz5cbiAgICAgICAgPHRleHQ+ICA8L3RleHQ+XG4gICAgICAgIDxCdXR0b24gbGFiZWw9XCJjYW5jZWxcIiBvblByZXNzPXtvbkNhbmNlbH0gZm9jdXNlZD17Zm9jdXNlZCAmJiBmbS5pcygnY2FuY2VsJyl9IHZhcmlhbnQ9XCJkaW1cIiAvPlxuICAgICAgPC9ib3g+XG4gICAgPC9ib3g+XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1jcFBhbmVsKHsgc2VydmVycywgZm9jdXNlZCwgb25Ub2dnbGUsIG9uUmVjb25uZWN0LCBvblJlbW92ZSwgb25BZGQsIG9uRWRpdCwgb25JbnZhbGlkLCBvbkNsb3NlIH0pIHtcbiAgY29uc3QgW2Zvcm0sIHNldEZvcm1dID0gY3JlYXRlU2lnbmFsKG51bGwpXG4gIGNvbnN0IFtpbmRleCwgc2V0SW5kZXhdID0gY3JlYXRlU2lnbmFsKDApXG4gIGNvbnN0IFt2aWV3aW5nLCBzZXRWaWV3aW5nXSA9IGNyZWF0ZVNpZ25hbChudWxsKVxuICB1c2VFc2NhcGUoKCkgPT4gZm9jdXNlZCAmJiAhZm9ybSgpLCAoKSA9PiAodmlld2luZygpID8gc2V0Vmlld2luZyhudWxsKSA6IG9uQ2xvc2UoKSkpXG5cbiAgY29uc3Qgc2VsZWN0ZWQgPSAoKSA9PiBzZXJ2ZXJzW01hdGgubWluKGluZGV4KCksIHNlcnZlcnMubGVuZ3RoIC0gMSldIHx8IG51bGxcbiAgY29uc3Qgdmlld2VkID0gKCkgPT4gc2VydmVycy5maW5kKChzKSA9PiBzLm5hbWUgPT09IHZpZXdpbmcoKSkgfHwgbnVsbFxuXG4gIGlmICh2aWV3aW5nKCkgJiYgdmlld2VkKCkpIHtcbiAgICBjb25zdCBzZXJ2ZXIgPSB2aWV3ZWQoKVxuICAgIGNvbnN0IGRlc2NyaWJlID0gKHQpID0+IHQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXlxcW1teXFxdXSpcXF1cXHMqLywgJycpLnRyaW0oKSB8fCAnbm8gZGVzY3JpcHRpb24nXG4gICAgcmV0dXJuIChcbiAgICAgIDxQYW5lbEZyYW1lXG4gICAgICAgIHRpdGxlPXtgTUNQIHNlcnZlcnMgXHUwMEI3ICR7c2VydmVyLm5hbWV9IFx1MDBCNyAke3NlcnZlci50b29scy5sZW5ndGh9ICR7c2VydmVyLnRvb2xzLmxlbmd0aCA9PT0gMSA/ICd0b29sJyA6ICd0b29scyd9YH1cbiAgICAgICAgaGludD1cImovayBvciBcdTIxOTFcdTIxOTMgdG8gc2Nyb2xsIFx1MDBCNyBlc2MgYmFjayB0byBzZXJ2ZXJzXCJcbiAgICAgID5cbiAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywgaGVpZ2h0OiAxNCwgbWFyZ2luVG9wOiAxIH19PlxuICAgICAgICAgIHtzZXJ2ZXIudG9vbHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIHRvb2xzIHJlcG9ydGVkIFx1MDBCNyBpcyB0aGUgc2VydmVyIGNvbm5lY3RlZD88L3RleHQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxTY3JvbGxCb3ggc3R5bGU9e3sgZmxleEdyb3c6IDEgfX0gZm9jdXNlZD17Zm9jdXNlZH0gc2Nyb2xsYmFyPlxuICAgICAgICAgICAgICB7c2VydmVyLnRvb2xzLm1hcCgodCwgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxib3gga2V5PXt0Lm5hbWV9IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IGkgPT09IDAgPyAwIDogMSB9fT5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBhY2NlbnQoKSB9fT57dC5uYW1lfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IGNvbG9yOiBNVVRFRCB9fT57ZGVzY3JpYmUodCl9PC90ZXh0PlxuICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU2Nyb2xsQm94PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvYm94PlxuICAgICAgPC9QYW5lbEZyYW1lPlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFBhbmVsRnJhbWVcbiAgICAgIHRpdGxlPVwiTUNQIHNlcnZlcnNcIlxuICAgICAgaGludD17Zm9ybSgpXG4gICAgICAgID8gJ3RhYiBtb3ZlcyBiZXR3ZWVuIGZpZWxkcyBcdTAwQjcgai9rICsgc3BhY2UgcGlja3MgYSByYWRpbyBvcHRpb24gXHUwMEI3IGVzYyBjYW5jZWxzJ1xuICAgICAgICA6ICdlbnRlciBlbmFibGUvZGlzYWJsZSBcdTAwQjcgdCB0b29scyBcdTAwQjcgZSBlZGl0IFx1MDBCNyByIHJlY29ubmVjdCBcdTAwQjcgYSBhZGQgXHUwMEI3IGN0cmwreCByZW1vdmUgKHR3aWNlKSBcdTAwQjcgZXNjIGNsb3NlJ31cbiAgICA+XG4gICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBtYXJnaW5Ub3A6IDEgfX0+XG4gICAgICAgIHtmb3JtKCkgPyAoXG4gICAgICAgICAgPE1jcFNlcnZlckZvcm1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBzZXJ2ZXI9e2Zvcm0oKSA9PT0gJ2FkZCcgPyBudWxsIDogZm9ybSgpfVxuICAgICAgICAgICAgb25TYXZlPXsobmFtZSwgc3BlYywgc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZvcm0oKSA9PT0gJ2FkZCcpIG9uQWRkKG5hbWUsIHNwZWMsIHNjb3BlKVxuICAgICAgICAgICAgICBlbHNlIG9uRWRpdChuYW1lLCBzcGVjKVxuICAgICAgICAgICAgICBzZXRGb3JtKG51bGwpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25JbnZhbGlkPXtvbkludmFsaWR9XG4gICAgICAgICAgICBvbkNhbmNlbD17KCkgPT4gc2V0Rm9ybShudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogc2VydmVycy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19Pm5vIE1DUCBzZXJ2ZXJzIGNvbmZpZ3VyZWQgXHUwMEI3IHByZXNzIGEgdG8gYWRkIG9uZTwvdGV4dD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgY291bnRlclxuICAgICAgICAgICAgaXRlbXM9e3NlcnZlcnN9XG4gICAgICAgICAgICBzZWxlY3RlZD17aW5kZXgoKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZXRJbmRleH1cbiAgICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgICBtYXhWaXNpYmxlPXs2fVxuICAgICAgICAgICAgdmltS2V5c1xuICAgICAgICAgICAgaXRlbUhlaWdodD17Mn1cbiAgICAgICAgICAgIG9uU3VibWl0PXsocykgPT4gb25Ub2dnbGUocy5uYW1lKX1cbiAgICAgICAgICAgIG9uQ2FuY2VsPXtvbkNsb3NlfVxuICAgICAgICAgICAgcmVuZGVySXRlbT17KHMsIHsgYWN0aXZlIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc3QgPSBNQ1BfU1RBVFVTW3Muc3RhdHVzXSB8fCBNQ1BfU1RBVFVTLmlkbGVcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4RGlyZWN0aW9uOiAncm93JyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjY2VudCgpIH19PnthY3RpdmUgPyAnXHUyMDNBICcgOiAnICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IHN0LmNvbG9yIH19PntzdC5pY29ufTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IGFjdGl2ZSA/IGFjY2VudCgpIDogRkcgfX0+e2AgJHtzLm5hbWUucGFkRW5kKE1hdGgubWF4KDE0LCBzLm5hbWUubGVuZ3RoICsgMSkpfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhHcm93OiAxLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgb3ZlcmZsb3c6ICd0cnVuY2F0ZScsIGNvbG9yOiBzLnN0YXR1cyA9PT0gJ2Vycm9yJyA/IFJFRCA6IE1VVEVEIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAge3Muc3RhdHVzID09PSAnZXJyb3InID8gcy5lcnJvciA6IHMuc3RhdHVzID09PSAnY29ubmVjdGVkJyA/IGAke3MudG9vbENvdW50fSB0b29sc2AgOiBzLnN0YXR1c31cbiAgICAgICAgICAgICAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvYm94PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgICA8Ym94IHN0eWxlPXt7IGZsZXhEaXJlY3Rpb246ICdyb3cnLCBoZWlnaHQ6IDEgfX0+XG4gICAgICAgICAgICAgICAgICAgIDx0ZXh0PnsnICAgICAnfTwvdGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPGJveCBzdHlsZT17eyBmbGV4R3JvdzogMSwgaGVpZ2h0OiAxIH19PlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0IHN0eWxlPXt7IG92ZXJmbG93OiAndHJ1bmNhdGUnLCBjb2xvcjogRkFJTlQgfX0+e3Nob3J0ZW5Ib21lKHJlZGFjdFNlcnZlclNwZWMocy5jb21tYW5kKSl9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgICA8L2JveD5cbiAgICAgICAgICAgICAgICAgICAgPHRleHQgc3R5bGU9e3sgY29sb3I6IEZBSU5UIH19PntgICAke3Muc2NvcGUgPT09ICdwcm9qZWN0JyA/ICdwcm9qZWN0JyA6ICdnbG9iYWwnfWB9PC90ZXh0PlxuICAgICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgICAgPC9ib3g+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvYm94PlxuICAgICAgeyFmb3JtKCkgJiYgKFxuICAgICAgICA8TWNwS2V5c1xuICAgICAgICAgIGZvY3VzZWQ9e2ZvY3VzZWR9XG4gICAgICAgICAgb25LZXk9eyhrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSBzZWxlY3RlZCgpXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnYScpIHNldEZvcm0oJ2FkZCcpXG4gICAgICAgICAgICBlbHNlIGlmIChzICYmIGtleSA9PT0gJ2UnKSBzZXRGb3JtKHMpXG4gICAgICAgICAgICBlbHNlIGlmIChzICYmIGtleSA9PT0gJ3InKSBvblJlY29ubmVjdChzLm5hbWUpXG4gICAgICAgICAgICBlbHNlIGlmIChzICYmIGtleSA9PT0gJ3JlbW92ZScpIG9uUmVtb3ZlKHMubmFtZSlcbiAgICAgICAgICAgIGVsc2UgaWYgKHMgJiYga2V5ID09PSAndCcpIHNldFZpZXdpbmcocy5uYW1lKVxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvUGFuZWxGcmFtZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBNY3BLZXlzKHsgZm9jdXNlZCwgb25LZXkgfSkge1xuICB1c2VJbnB1dCgoZXZlbnQpID0+IHtcbiAgICBpZiAoIWZvY3VzZWQpIHJldHVyblxuICAgIGlmIChldmVudC5jdHJsICYmIGV2ZW50LmtleSA9PT0gJ3gnKSB7XG4gICAgICBvbktleSgncmVtb3ZlJylcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKCFldmVudC5jdHJsICYmIFsnYScsICdlJywgJ3InLCAndCddLmluY2x1ZGVzKGV2ZW50LmtleSkpIHtcbiAgICAgIG9uS2V5KGV2ZW50LmtleSlcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICB9KVxuICByZXR1cm4gbnVsbFxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLGVBQWU7QUFTakIsU0FBUyxhQUFhLE1BQU0sUUFBUSxLQUFLO0FBQzlDLFFBQU1BLFFBQU8sQ0FBQztBQUNkLGFBQVcsS0FBSyxXQUFXO0FBQ3pCLFVBQU0sT0FBTyxFQUFFLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDckMsUUFBSSxLQUFNLENBQUFBLE1BQUssRUFBRSxFQUFFLElBQUksSUFBSSxJQUFJO0FBQUEsRUFDakM7QUFDQSxTQUFPQTtBQUNUO0FBRU8sU0FBUyxVQUFVQSxPQUFNO0FBQzlCLFVBQVFBLEtBQUk7QUFDWixTQUFPLE9BQU8sS0FBS0EsS0FBSTtBQUN6QjtBQUVPLFNBQVMsUUFBUSxZQUFZO0FBQ2xDLFNBQU8sVUFBVSxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxZQUFZLENBQUM7QUFDMUY7QUF6QkEsSUFFTTtBQUZOO0FBQUE7QUFFQSxJQUFNLFlBQVk7QUFBQSxNQUNoQixFQUFFLElBQUksVUFBVSxPQUFPLFVBQVUsS0FBSyxDQUFDLGtCQUFrQixtQkFBbUIsRUFBRTtBQUFBLE1BQzlFLEVBQUUsSUFBSSxhQUFhLE9BQU8sVUFBVSxLQUFLLENBQUMsbUJBQW1CLEVBQUU7QUFBQSxNQUMvRCxFQUFFLElBQUksVUFBVSxPQUFPLFVBQVUsS0FBSyxDQUFDLGdCQUFnQixFQUFFO0FBQUEsTUFDekQsRUFBRSxJQUFJLE9BQU8sT0FBTyxRQUFRLEtBQUssQ0FBQyxhQUFhLEVBQUU7QUFBQSxJQUNuRDtBQUFBO0FBQUE7OztBQ1BPLFNBQVMsVUFBVUMsU0FBUSxNQUFNO0FBQ3RDLFNBQU9BLFFBQU8sS0FB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QixPQUFPLFNBQVMsdUJBQXVCO0FBQUEsRUFDM0QsV0FBVyxPQUFPLFNBQVMsY0FBYztBQUFBLEVBQ3pDLE1BQU0sQ0FBQztBQUFBLEVBQ1A7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0EsY0FBYyxDQUFDLE9BQU87QUFBRSxnQkFBWTtBQUFBLEVBQUc7QUFBQSxFQUN2QyxjQUFjLENBQUMsT0FBTztBQUFFLGdCQUFZO0FBQUEsRUFBRztBQUFBLEVBQ3ZDLGlCQUFpQixDQUFDLE9BQU87QUFBRSxtQkFBZTtBQUFBLEVBQUc7QUFBQSxFQUM3QyxlQUFlLENBQUMsT0FBTztBQUFFLGlCQUFhO0FBQUEsRUFBRztBQUFBLEVBQ3pDLGtCQUFrQixDQUFDLE9BQU87QUFBRSxvQkFBZ0I7QUFBQSxFQUFHO0FBQUEsRUFDL0MsZ0JBQWdCLENBQUMsT0FBTztBQUFFLGtCQUFjO0FBQUEsRUFBRztBQUFBLEVBQzNDLFNBQVM7QUFDWDtBQUVBLElBQUksU0FBUyxLQUFLLElBQUk7QUFDdEIsSUFBSSxXQUFXLEtBQUssU0FBUztBQUU3QixJQUFNLE1BQU0sTUFBTSxNQUFNLGdCQUFBUCxLQUFDLE9BQUksTUFBWSxHQUFJLEVBQUUsT0FBTyxhQUFVLEtBQUssS0FBSyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7QUFDckcsS0FBSyxXQUFXLElBQUk7QUFDcEIsS0FBSyxJQUFJLFdBQVc7IiwKICAibmFtZXMiOiBbImtleXMiLCAibW9kZWxzIiwgIm1vZGVsIiwgImpvaW4iLCAicHJvdmlkZXJzIiwgImNhY2hlZCIsICJtb2RlbHMiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAiY2FjaGVGaWxlIiwgImNhY2hlZCIsICJUVEwiLCAibW9kZWxzIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJqb2luIiwgInJlc29sdmUiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImpvaW4iLCAiY29uZmlnIiwgImV4aXN0c1N5bmMiLCAiaG9tZWRpciIsICJkaXJuYW1lIiwgImpvaW4iLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJqb2luIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY2FuRGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJjb25maWciLCAic2NvcGUiLCAicGVuZGluZyIsICJyZWdpc3RyeSIsICJyZWFkRmlsZSIsICJyZWFkZGlyIiwgIndyaXRlRmlsZSIsICJqb2luIiwgInNjYW5EaXIiLCAic2NvcGUiLCAiaG9tZWRpciIsICJjb25maWciLCAic2hlbGxzIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAidW5saW5rIiwgImpvaW4iLCAic2NvcGUiLCAicGFyc2VBcmdzIiwgImNhbGwiLCAicmVhZEZpbGUiLCAicmVhZEZpbGUiLCAicmVzb2x2ZSIsICJNQVhfTElORVMiLCAibWtkaXIiLCAicmVhZEZpbGUiLCAid3JpdGVGaWxlIiwgImRpcm5hbWUiLCAicmVzb2x2ZSIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAicmVzb2x2ZSIsICJzaGVsbHMiLCAicmVzb2x2ZSIsICJleGVjRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgInJlc29sdmUiLCAiTUFYX1JFU1VMVFMiLCAic2hlbGxzIiwgIndha2V1cHMiLCAic2NvcGUiLCAiZXhlYyIsICJyZWFkRmlsZSIsICJ3cml0ZUZpbGUiLCAiam9pbiIsICJyZXNvbHZlIiwgImV4aXN0c1N5bmMiLCAiam9pbiIsICJtb2RlbHMiLCAicHJvdmlkZXJzIiwgImNoYXRncHQiLCAiY2F0YWxvZ0RhdGEiLCAiY29kZXhDcmVkcyIsICJjb25maWciLCAibW9kZWwiLCAiYm9vdCIsICJzaGVsbHMiLCAicmVhZEZpbGVTeW5jIiwgInJlc29sdmUiLCAidGhlbWUiLCAid2FrZXVwcyIsICJzcGF3biIsICJyZWFkRmlsZVN5bmMiLCAiZGlybmFtZSIsICJqb2luIiwgInJlc29sdmUiLCAiZXhpc3RzU3luYyIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJqb2luIiwgImNyZWF0ZVNpZ25hbCIsICJNZW51IiwgIlNjcm9sbEJveCIsICJ1c2VGb2N1cyIsICJ1c2VJbnB1dCIsICJhcHBlbmRGaWxlIiwgInJlYWRGaWxlIiwgInJlYWRkaXIiLCAiam9pbiIsICJzY29wZSIsICJyZWFkZGlyIiwgInN0YXQiLCAiam9pbiIsICJzY2FuRGlyIiwgInJlYWRGaWxlIiwgIndyaXRlRmlsZSIsICJyZXNvbHZlIiwgImV4ZWNGaWxlIiwgImZnIiwgIlRUTCIsICJyZXNvbHZlIiwgImNyZWF0ZVNpZ25hbCIsICJjcmVhdGVTaWduYWwiLCAidGhlbWUiLCAiaGlnaGxpZ2h0IiwgImVhc2UiLCAibGluZWFyIiwgInVzZUFuaW1hdGVkIiwgImpzeCIsICJtaXhDb2xvciIsICJ1c2VBbmltYXRlZCIsICJlYXNlIiwgImxpbmVhciIsICJmYWlsZWQiLCAiY3JlYXRlU2lnbmFsIiwgImpzeCIsICJqc3hzIiwgInZlcnNpb24iLCAiY3JlYXRlU2lnbmFsIiwgIk1hcmtkb3duIiwgImpzeCIsICJqc3hzIiwgIk1hcmtkb3duIiwgImNyZWF0ZVNpZ25hbCIsICJlYXNlIiwgIlNjcm9sbEJveCIsICJ1c2VBbmltYXRlZCIsICJ1c2VJbnB1dCIsICJ1c2VJbnRlcnZhbCIsICJob21lZGlyIiwgImpzeCIsICJqc3hzIiwgInVzZUlucHV0IiwgIlNjcm9sbEJveCIsICJtb2RlbHMiLCAiY3JlYXRlU2lnbmFsIiwgInVzZUFuaW1hdGVkIiwgImVhc2UiLCAidmVyc2lvbiIsICJzaGVsbHMiLCAicHJvdmlkZXJzIiwgIndha2V1cHMiLCAidXNlSW50ZXJ2YWwiLCAic2NvcGUiLCAibmFtZSIsICJqc3giLCAianN4cyIsICJib290IiwgInZlcnNpb24iLCAibW9kZWxzIiwgImNyZWF0ZVNpZ25hbCIsICJtb2RlbCIsICJkZWZhdWx0TW9kZWwiLCAiaXRlbXMiLCAidXNhZ2UiLCAiam9pbiIsICJ3cml0ZUZpbGUiLCAiaG9tZWRpciIsICJ1c2VGb2N1cyIsICJ1c2VJbnB1dCIsICJleGlzdHNTeW5jIiwgIlNjcm9sbEJveCIsICJNZW51IiwgInNjb3BlIiwgImpzeCIsICJyZWFkRmlsZVN5bmMiLCAiaXNEZXZJbnN0YWxsIiwgInJ1blVwZGF0ZSIsICJmZXRjaExhdGVzdFZlcnNpb24iLCAibmV3ZXJWZXJzaW9uIiwgImNvbm5lY3RPcGVuQUkiLCAicnVuSGVhZGxlc3MiXQp9Cg==
|